package com.huaheng.pc.config.container.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.huaheng.common.utils.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.huaheng.common.constant.QuantityConstant; import com.huaheng.common.support.Convert; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.poi.ExcelUtil; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.aspectj.lang.annotation.Log; import com.huaheng.framework.aspectj.lang.constant.BusinessType; import com.huaheng.framework.web.controller.BaseController; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.framework.web.page.PageDomain; import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; import com.huaheng.pc.common.JasperPrint.Print; import com.huaheng.pc.config.container.domain.Container; import com.huaheng.pc.config.container.service.ContainerService; import com.huaheng.pc.config.location.domain.Location; import com.huaheng.pc.config.location.service.LocationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.sql.DataSource; import java.util.List; @Api(tags={"容器操作类"}) @Controller @RequestMapping("/config/container") public class ContainerController extends BaseController { private String prefix = "config/container"; @Resource private ContainerService containerService; @Resource private LocationService locationService; @Resource private DataSource dataSource; @Resource private Print print; @RequiresPermissions("config:container:view") @GetMapping() public String container() { return prefix + "/container"; } /** * 查询库位列表 */ @ApiOperation(value="查看容器列表", notes="根据容器编号、库位编码、容器状态、容器类型、创建时间获取库位的详细信息", httpMethod = "POST") @RequiresPermissions("config:container:list") @Log(title = "配置-库存资料-库位管理", operating = "查看库位列表", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list( @ApiParam(name="location",value="容器编号、库位编码、容器状态、容器类型") Container container, @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin, @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd) { LambdaQueryWrapper<Container> lambdaQueryWrapper = Wrappers.lambdaQueryNoWarehouse(); PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Container::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), Container::getCreated, createdEnd) .like(StringUtils.isNotNull(container.getCode()) && StringUtils.isNotEmpty(container.getCode()), Container::getCode, container.getCode()) .eq(StringUtils.isNotEmpty(container.getGoodsShelfNo()), Container::getGoodsShelfNo, container.getGoodsShelfNo()) .eq(StringUtils.isNotEmpty(container.getStatus()), Container::getStatus, container.getStatus()) .eq(StringUtils.isNotEmpty(container.getContainerType()), Container::getContainerType, container.getContainerType()) .eq(StringUtils.isNotEmpty(container.getCompanyCode()), Container::getCompanyCode, container.getCompanyCode()) .eq(StringUtils.isNotEmpty(ShiroUtils.getWarehouseCode()), Container::getWarehouseCode, ShiroUtils.getWarehouseCode()) .like(StringUtils.isNotNull(container.getLocationCode())&&StringUtils.isNotEmpty(container.getLocationCode()), Container::getLocationCode, container.getLocationCode()) .eq(Container::getEnable,true) .orderByDesc(Container::getId); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ /*使用分页查询*/ Page<Container> page = new Page<>(pageNum, pageSize); IPage<Container> iPage = containerService.page(page, lambdaQueryWrapper); return getMpDataTable(iPage.getRecords(), iPage.getTotal()); } else { List<Container> list = containerService.list(lambdaQueryWrapper); return getDataTable(list); } } @PostMapping("/emptyContainer") @ResponseBody public TableDataInfo emptyContainer(String containerType) { LambdaQueryWrapper<Container> lambdaQueryWrapper = Wrappers.lambdaQuery(); PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); lambdaQueryWrapper .eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_EMPTY) .isNotNull(Container::getLocationCode) .eq(StringUtils.isNotEmpty(containerType),Container::getContainerType,containerType) .ne(Container::getLocationCode, "") .eq(Container::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(Container::getEnable,true) .orderByDesc(Container::getId); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ /*使用分页查询*/ Page<Container> page = new Page<>(pageNum, pageSize); IPage<Container> iPage = containerService.page(page, lambdaQueryWrapper); return getMpDataTable(iPage.getRecords(), iPage.getTotal()); } else { List<Container> list = containerService.list(lambdaQueryWrapper); return getDataTable(list); } } /** * 新增容器 */ @GetMapping("/add") public String add() { return prefix + "/add"; } /** * 新增保存容器 */ @ApiOperation(value="新增容器", notes="根据容器类型、数量批量新增容器", httpMethod = "POST") @RequiresPermissions("config:container:add") @Log(title = "配置-库存资料-容器", operating = "新增容器", action = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave( @ApiParam(name = "containerType", value = "容器类型", required = true)String containerType, @ApiParam(name = "quantity", value = "数量", required = true)Integer quantity) { AjaxResult result = containerService.insertContainer(containerType, quantity); result.setData(null); return result; } /** * 修改容器 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Integer id, ModelMap mmap) { Container container = containerService.getById(id); mmap.put("container", container); return prefix + "/edit"; } /** * 修改保存容器 */ @ApiOperation(value="修改容器", notes="修改容器", httpMethod = "POST") @RequiresPermissions("config:container:edit") @Log(title = "配置-库存资料-容器", operating = "修改容器", action = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave( @ApiParam(name = "Container", value = "容器实体", required = true) Container container) { String locationCode = container.getLocationCode(); if (StringUtils.isNotEmpty(locationCode)) { Location location = locationService.getLocationByCode(locationCode); if (location == null) { return AjaxResult.error("库位编码输入错误"); } } boolean success = containerService.updateById(container); return toAjax(success); } /** * 删除容器 */ @ApiOperation(value="删除容器", notes="根据id批量删除容器,参数示例1,2,3", httpMethod = "POST") @RequiresPermissions("config:container:remove") @Log(title = "配置-库存资料-容器", operating = "删除容器", action = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody public AjaxResult remove(String ids) { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("id不能为空"); } for (Integer id : Convert.toIntArray(ids)) { Container container = containerService.getById(id); if (QuantityConstant.STATUS_CONTAINER_EMPTY.equals(container.getStatus()) && StringUtils.isEmpty(container.getLocationCode())) { container.setEnable(false); container.setLastUpdatedBy(ShiroUtils.getLoginName()); containerService.updateById(container); } else { return AjaxResult.error("容器(" + container.getCode() + ")不是空,或者已在货架上,不能删除成功!"); } } return AjaxResult.success("删除成功!"); } @PostMapping("/importData") @ResponseBody public AjaxResult importData(MultipartFile file) throws Exception { ExcelUtil<Container> util = new ExcelUtil<>(Container.class); List<Container> containerList = util.importExcel(file.getInputStream()); String operName = ShiroUtils.getLoginName(); Boolean updateSupport = false; String message = containerService.importContainer(containerList, updateSupport, operName); return AjaxResult.success(message); } @GetMapping("/importTemplate") @ResponseBody public AjaxResult importTemplate() { ExcelUtil<Container> util = new ExcelUtil<>(Container.class); return util.importTemplateExcel("容器"); } @RequiresPermissions("config:container:print") @Log(title = "配置-库存资料-容器条码", operating = "容器条码打印", action = BusinessType.OTHER) @GetMapping("/print/{ids}") public void print (@PathVariable("ids") Integer[] ids, ModelMap mmap) // arg1:物料id arg2:会话对象不需要直接返回 { print.jasperPrint(ids, prefix);// 不用返回json打印 } }