diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseInventoryCheckController.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseInventoryCheckController.java index 32f40ca0..27de0cc0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseInventoryCheckController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseInventoryCheckController.java @@ -9,6 +9,7 @@ import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.system.domain.BaseEvectionForm; import com.ruoyi.system.domain.SysSalesOrderChild; import com.ruoyi.system.domain.Vo.OutsourceQuoteVO; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseInventoryCheckVo; import com.ruoyi.warehouse.domain.VO.WarehouseInventoryCheckVO; import com.ruoyi.warehouse.domain.VO.WarehouseMaterialVO; import com.ruoyi.warehouse.domain.WarehouseInventoryCheckDetail; @@ -95,18 +96,20 @@ public class WarehouseInventoryCheckController extends BaseController @Log(title = "仓库库存盘点", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody - public AjaxResult export(WarehouseInventoryCheck warehouseInventoryCheck,String ids) + public AjaxResult export(WarehouseInventoryCheckVO warehouseInventoryCheck,String ids) { if (StringUtils.isEmpty(ids)){ - WarehouseInventoryCheckDetail checkDetail = new WarehouseInventoryCheckDetail(); - List list = checkDetailService.selectWarehouseInventoryCheckDetailList(checkDetail); - ExcelUtil util = new ExcelUtil(WarehouseInventoryCheckDetail.class); - return util.exportExcel(list, "仓库库存盘点数据"); + + List list = warehouseInventoryCheckService.selectWarehouseInventoryCheckListByObject(warehouseInventoryCheck); + List exportWarehouseInventoryCheckVos = warehouseInventoryCheckService.exportWarehouseInventoryCheckList(list); + ExcelUtil util = new ExcelUtil(ExportWarehouseInventoryCheckVo.class); + return util.exportExcel(exportWarehouseInventoryCheckVos, "仓库库存盘点数据"); }else { String[] checkCodes = ids.split(","); - List list = checkDetailMapper.selectWarehouseInventoryCheckDetailByCodes(checkCodes); - ExcelUtil util = new ExcelUtil(WarehouseInventoryCheckDetail.class); - return util.exportExcel(list, ids); + List list = warehouseInventoryCheckService.selectInventoryCheckListByCodes(checkCodes); + List exportWarehouseInventoryCheckVos = warehouseInventoryCheckService.exportWarehouseInventoryCheckList(list); + ExcelUtil util = new ExcelUtil(ExportWarehouseInventoryCheckVo.class); + return util.exportExcel(exportWarehouseInventoryCheckVos, "仓库库存盘点数据"); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseInventoryCheckVo.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseInventoryCheckVo.java new file mode 100644 index 00000000..127673cd --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseInventoryCheckVo.java @@ -0,0 +1,80 @@ +package com.ruoyi.warehouse.domain.VO; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import lombok.Data; + +import java.util.Date; + +/** +* 导出库存盘点明细 +* */ +@Data +public class ExportWarehouseInventoryCheckVo { + + /** 库存盘点单号 */ + @Excel(name = "库存盘点单号") + private String inventoryCheckCode; + + /** 库存盘点人名 */ + @Excel(name = "库存盘点人名") + private String inventoryCheckName; + + /** 仓库号 */ + @Excel(name = "仓库号") + private String warehouseCode; + + /** 仓库名称 */ + @Excel(name = "仓库名称") + private String warehouseName; + + /** 库存盘点日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "库存盘点日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date inventoryCheckDate; + + /** 物料数合计 */ + @Excel(name = "物料数合计") + private Integer materialTotal; + + /** 数量合计 */ + @Excel(name = "数量合计") + private Integer numTotal; + + + + /** 料号 */ + @Excel(name = "料号") + private String materialNo; + + /** 物料名称 */ + @Excel(name = "物料名称") + private String materialName; + + /** 物料单位 */ + @Excel(name = "单位") + private String materialUnit; + + /** 物料描述 */ + @Excel(name = "物料描述") + private String materialDescribe; + + /** 库存盘点数量 */ + @Excel(name = "盘点数量") + private Integer inventoryCheckNum; + + /** 当时库存账上数量 */ + @Excel(name = "当时库存账上数量") + private Integer inventoryAccountNum; + + /** 批号 */ + @Excel(name = "批号") + private Integer batchNumber; + + + /** 仓库存放地址 */ + @Excel(name = "仓库存放地址") + private String warehouseStoreAddress; + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseInventoryCheckDetailMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseInventoryCheckDetailMapper.java index 6f43c3e8..9fce7a77 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseInventoryCheckDetailMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseInventoryCheckDetailMapper.java @@ -92,4 +92,10 @@ public interface WarehouseInventoryCheckDetailMapper * 根据盘点单号批量查找盘点详情信息 * */ List selectWarehouseInventoryCheckDetailByCodes(String[] inventoryCheckCodes); + + /** + * 根据盘点单号批量查找盘点详情信息 + * */ + List selectWarehouseInventoryCheckDetailByCodeList(List collectInventoryCheckCodes); + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseInventoryCheckMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseInventoryCheckMapper.java index 8f914297..cff176e7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseInventoryCheckMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseInventoryCheckMapper.java @@ -30,6 +30,7 @@ public interface WarehouseInventoryCheckMapper */ public List selectWarehouseInventoryCheckList(WarehouseInventoryCheck warehouseInventoryCheck); + /** * 新增仓库库存盘点 * @@ -79,4 +80,9 @@ public interface WarehouseInventoryCheckMapper public int restoreWarehouseInventoryCheckById(Long inventoryCheckId); public String findMaxRoundCode(@Param("prefix") String prefix); + + /** + * 根据盘点单号批量查找库存盘点 + * */ + List selectInventoryCheckListByCodes(String[] checkCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseInventoryCheckService.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseInventoryCheckService.java index 5722aab0..7fc84ffe 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseInventoryCheckService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseInventoryCheckService.java @@ -2,6 +2,7 @@ package com.ruoyi.warehouse.service; import java.util.List; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseInventoryCheckVo; import com.ruoyi.warehouse.domain.VO.WarehouseInventoryCheckVO; import com.ruoyi.warehouse.domain.WarehouseInventoryCheck; import com.ruoyi.warehouse.domain.VO.WarehouseMaterialVO; @@ -33,6 +34,16 @@ public interface IWarehouseInventoryCheckService */ public List selectWarehouseInventoryCheckList(WarehouseInventoryCheck warehouseInventoryCheck); + + /** + * 查询仓库库存盘点列表 + * + * @param warehouseInventoryCheck 仓库库存盘点 + * @return 仓库库存盘点集合 + */ + public List selectWarehouseInventoryCheckListByObject(WarehouseInventoryCheck warehouseInventoryCheck); + + /** * 新增仓库库存盘点 * @@ -76,4 +87,14 @@ public interface IWarehouseInventoryCheckService * 库存盘点详情 * */ int detailWarehouseInventoryCheck(WarehouseInventoryCheck warehouseInventoryCheck); + + /** + * 导出库存盘点列表明细 + * */ + List exportWarehouseInventoryCheckList(List list); + + /** + * 根据盘点单号批量查找库存盘点 + * */ + List selectInventoryCheckListByCodes(String[] checkCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryCheckServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryCheckServiceImpl.java index 947808ac..3fe679a0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryCheckServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryCheckServiceImpl.java @@ -3,11 +3,14 @@ package com.ruoyi.warehouse.service.impl; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; import com.github.pagehelper.Page; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.page.PageDomain; import com.ruoyi.common.core.page.TableSupport; +import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.BusinessException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; @@ -18,6 +21,7 @@ import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.service.impl.SysRoleServiceImpl; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseInventoryCheckVo; import com.ruoyi.warehouse.domain.VO.WarehouseInventoryCheckVO; import com.ruoyi.warehouse.domain.VO.WarehouseMaterialVO; import com.ruoyi.warehouse.domain.WarehouseInventoryCheckDetail; @@ -57,6 +61,9 @@ public class WarehouseInventoryCheckServiceImpl implements IWarehouseInventoryCh @Autowired private SysRoleServiceImpl roleService; + @Autowired + private RedisCache redisCache; + @Autowired private TaskService taskService; @@ -159,24 +166,27 @@ public class WarehouseInventoryCheckServiceImpl implements IWarehouseInventoryCh return returnList; } + + @Override + public List selectWarehouseInventoryCheckListByObject(WarehouseInventoryCheck warehouseInventoryCheck) { + return warehouseInventoryCheckMapper.selectWarehouseInventoryCheckList(warehouseInventoryCheck); + } + /** * 新增仓库库存盘点 * * @param warehouseInventoryCheck 仓库库存盘点 * @return 结果 */ - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public int insertWarehouseInventoryCheck(WarehouseInventoryCheck warehouseInventoryCheck) { String loginName = ShiroUtils.getLoginName(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - String prefix = "KCPD" + simpleDateFormat.format(new Date()).replace("-", ""); - String maxCode = warehouseInventoryCheckMapper.findMaxRoundCode(prefix); + String inventoryCheckCode = redisCache.generateBillNo("KCPD"); - String newCode = generateCode(prefix,maxCode); - warehouseInventoryCheck.setInventoryCheckCode(newCode); + warehouseInventoryCheck.setInventoryCheckCode(inventoryCheckCode); warehouseInventoryCheck.setCreateTime(DateUtils.getNowDate()); warehouseInventoryCheck.setCreateBy(loginName); @@ -188,7 +198,7 @@ public class WarehouseInventoryCheckServiceImpl implements IWarehouseInventoryCh warehouseInventoryCheck.setMaterialTotal(inventoryCheckDetails.size()); for (WarehouseInventoryCheckDetail tempInventoryCheckDetail : inventoryCheckDetails) { WarehouseInventoryCheckDetail inventoryCheckDetail = new WarehouseInventoryCheckDetail(); - inventoryCheckDetail.setInventoryCheckCode(newCode); + inventoryCheckDetail.setInventoryCheckCode(inventoryCheckCode); inventoryCheckDetail.setInventoryCheckName(warehouseInventoryCheck.getInventoryCheckName()); inventoryCheckDetail.setMaterialNo(tempInventoryCheckDetail.getMaterialNo()); inventoryCheckDetail.setMaterialName(tempInventoryCheckDetail.getMaterialName()); @@ -445,26 +455,62 @@ public class WarehouseInventoryCheckServiceImpl implements IWarehouseInventoryCh /** - *库存盘点单号生成规则 - *系统自动生成,按照特定编码,编码暂用【KCPD+年月日+001】, - *自增长,如:KCPD20231111001,KCPD20231111002 - * - */ - public static String generateCode(String prefix, String maxCode){ - if (StringUtils.isEmpty(maxCode)){ - return prefix + "001"; - } + * 根据盘点单号批量查找库存盘点 + * */ + @Override + public List selectInventoryCheckListByCodes(String[] checkCodes) { + return warehouseInventoryCheckMapper.selectInventoryCheckListByCodes(checkCodes); + } - //解析并递增编号 - int sequence = Integer.parseInt(maxCode.substring(4)) + 1; + /** + * 导出库存盘点列表明细 + * */ + @Override + public List exportWarehouseInventoryCheckList(List list) { + // 获取所有的库存盘点单号 + List collectInventoryCheckCodes = list.stream() + .map(WarehouseInventoryCheckVO::getInventoryCheckCode) + .collect(Collectors.toList()); + + // 根据库存盘点单号查询对应的物料详情列表 + List warehouseInventoryCheckDetails = inventoryCheckDetailMapper.selectWarehouseInventoryCheckDetailByCodeList(collectInventoryCheckCodes); + + // 创建一个 WarehouseInventoryCheckVO 的 Map,键为库存盘点单号 + Map warehouseInventoryCheckVOMap = list.stream() + .collect(Collectors.toMap(WarehouseInventoryCheckVO::getInventoryCheckCode, Function.identity())); + + // 初始化导出列表 + List exportWarehouseInventoryCheckVos = new ArrayList<>(); + + for (WarehouseInventoryCheckDetail detail : warehouseInventoryCheckDetails) { + ExportWarehouseInventoryCheckVo exportVo = new ExportWarehouseInventoryCheckVo(); + + // 从 WarehouseInventoryCheckDetail 填充数据 + exportVo.setMaterialNo(detail.getMaterialNo()); + exportVo.setMaterialName(detail.getMaterialName()); + exportVo.setMaterialUnit(detail.getMaterialUnit()); + exportVo.setMaterialDescribe(detail.getMaterialDescribe()); + exportVo.setInventoryCheckNum(detail.getInventoryCheckNum()); + exportVo.setInventoryAccountNum(detail.getInventoryAccountNum()); + exportVo.setBatchNumber(detail.getBatchNumber()); + exportVo.setWarehouseStoreAddress(detail.getWarehouseStoreAddress()); + + // 从 WarehouseInventoryCheckVO 填充数据,通过库存盘点单号进行关联 + WarehouseInventoryCheckVO checkVO = warehouseInventoryCheckVOMap.get(detail.getInventoryCheckCode()); + if (checkVO != null) { + exportVo.setInventoryCheckCode(checkVO.getInventoryCheckCode()); + exportVo.setInventoryCheckName(checkVO.getInventoryCheckName()); + exportVo.setWarehouseCode(checkVO.getWarehouseCode()); + exportVo.setWarehouseName(checkVO.getWarehouseName()); + exportVo.setInventoryCheckDate(checkVO.getInventoryCheckDate()); + exportVo.setMaterialTotal(checkVO.getMaterialTotal()); + exportVo.setNumTotal(checkVO.getNumTotal()); + } - //检查序列号是否溢出 - if (sequence > 999){ - throw new BusinessException("当前编号已达到最大值999,请检查或调整策略"); + // 添加到结果列表 + exportWarehouseInventoryCheckVos.add(exportVo); } - //格式化序列号,自动补零至三位 - DecimalFormat df = new DecimalFormat("000"); - return prefix + df.format(sequence); + return exportWarehouseInventoryCheckVos; } } diff --git a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryCheckDetailMapper.xml b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryCheckDetailMapper.xml index e167ae9c..f26fb784 100644 --- a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryCheckDetailMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryCheckDetailMapper.xml @@ -155,4 +155,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryCheckMapper.xml b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryCheckMapper.xml index 48208b88..217d0945 100644 --- a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryCheckMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryCheckMapper.xml @@ -46,7 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + + + + + insert into warehouse_inventory_check @@ -181,4 +192,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + \ No newline at end of file