diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordDetailBaseVO.java index c3e8eff2..b05521c5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordDetailBaseVO.java @@ -107,4 +107,7 @@ public class RepleinshRecordDetailBaseVO { @Schema(description = "到批次") private String toBatch; + @Schema(description = "主表ID") + private Long masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordDetailCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordDetailCreateReqVO.java index d9ef80e7..5dec9470 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordDetailCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordDetailCreateReqVO.java @@ -3,10 +3,14 @@ package com.win.module.wms.controller.repleinshRecord.vo; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; +import java.util.Map; + @Schema(description = "管理后台 - 补料记录子创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class RepleinshRecordDetailCreateReqVO extends RepleinshRecordDetailBaseVO { - + @Schema(description = "子表记录数据") + private List> recordList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRecord/RepleinshRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRecord/RepleinshRecordMainServiceImpl.java index 1a7cec55..1fd2c7b6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRecord/RepleinshRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRecord/RepleinshRecordMainServiceImpl.java @@ -7,8 +7,10 @@ import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.issueRecord.vo.IssueRecordDetailCreateReqVO; import com.win.module.wms.controller.repleinshRecord.vo.*; import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.convert.issueRecord.IssueRecordDetailConvert; import com.win.module.wms.convert.purchasereturnRecord.PurchasereturnRecordDetailConvert; import com.win.module.wms.convert.repleinshRecord.RepleinshRecordDetailConvert; import com.win.module.wms.dal.dataobject.balance.BalanceDO; @@ -86,7 +88,7 @@ public class RepleinshRecordMainServiceImpl implements RepleinshRecordMainServic // 插入 AdminUserRespDTO userRespDTO = userApi.getUser(getLoginUserId()); RepleinshRecordMainDO mainDO = RepleinshRecordMainConvert.INSTANCE.convert(createReqVO); - List subDOList = RepleinshRecordDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); + List subDOListVO = createReqVO.getSubList(); String number = serialNumberApi.generateCode(RuleCodeEnum.REPLEINMENT_RECORD.getCode()); mainDO.setNumber(number); mainDO.setDepartmentCode(String.valueOf(userRespDTO.getDeptId())); @@ -109,7 +111,8 @@ public class RepleinshRecordMainServiceImpl implements RepleinshRecordMainServic repleinshRecordMainMapper.insert(mainDO); //库存事务 List transactionCreateReqVOList = new ArrayList<>(); - for (RepleinshRecordDetailDO detailDO : subDOList) { + for (RepleinshRecordDetailCreateReqVO detailDO : subDOListVO) { + List> recordList = detailDO.getRecordList(); detailDO.setMasterId(mainDO.getId()); detailDO.setNumber(number); LocationDO locationDOFrom = locationService.selectLocation(detailDO.getFromLocationCode()); @@ -136,55 +139,67 @@ public class RepleinshRecordMainServiceImpl implements RepleinshRecordMainServic } else { throw exception(ITEMBASIC_NOT_EXISTS); } - //查询库存余额 - BalanceDO balanceDO = balanceMapper.getBalanceQty(detailDO.getFromPackingNumber(), detailDO.getItemCode(), detailDO.getFromBatch(), detailDO.getInventoryStatus(), detailDO.getFromLocationCode()); - if (balanceDO == null) { - throw exception(BALANCE_NOT_EXISTS); - } - // 库存事务——入 - TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); - BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn); - transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode()); - TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); - transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction()); - transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode()); - transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId())); - transactionCreateReqVOIn.setBatch(detailDO.getToBatch()); - transactionCreateReqVOIn.setPackingNumber(detailDO.getToPackingNumber()); - transactionCreateReqVOIn.setInventoryStatus(detailDO.getInventoryStatus()); - transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode()); - transactionCreateReqVOIn.setSinglePrice(balanceDO.getSinglePrice()); - transactionCreateReqVOIn.setAmount(balanceDO.getAmount()); - transactionCreateReqVOIn.setArriveDate(balanceDO.getArriveDate()); - transactionCreateReqVOIn.setProduceDate(balanceDO.getProduceDate()); - transactionCreateReqVOIn.setExpireDate(balanceDO.getExpireDate()); - transactionCreateReqVOIn.setWarehouseCode(mainDO.getFromWarehouseCode()); - transactionCreateReqVOIn.setRecordNumber(number); - transactionCreateReqVOIn.setId(null); - transactionCreateReqVOList.add(transactionCreateReqVOIn); - // 库存事务——出 - TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); - BeanUtils.copyProperties(detailDO, transactionCreateReqVOOut); - transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode()); - TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); - transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); - transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); - transactionCreateReqVOOut.setRecordNumber(number); - transactionCreateReqVOOut.setInventoryStatus(detailDO.getInventoryStatus()); - transactionCreateReqVOOut.setWorker(String.valueOf(userRespDTO.getId())); - transactionCreateReqVOOut.setBatch(detailDO.getFromBatch()); - transactionCreateReqVOOut.setPackingNumber(detailDO.getFromPackingNumber()); - transactionCreateReqVOOut.setLocationCode(detailDO.getFromLocationCode()); - transactionCreateReqVOOut.setSinglePrice(balanceDO.getSinglePrice()); - transactionCreateReqVOOut.setAmount(balanceDO.getAmount()); - transactionCreateReqVOOut.setArriveDate(balanceDO.getArriveDate()); - transactionCreateReqVOOut.setProduceDate(balanceDO.getProduceDate()); - transactionCreateReqVOOut.setExpireDate(balanceDO.getExpireDate()); - transactionCreateReqVOOut.setWarehouseCode(mainDO.getFromWarehouseCode()); - transactionCreateReqVOOut.setId(null); - transactionCreateReqVOList.add(transactionCreateReqVOOut); + recordList.forEach( recordListItem -> { + // record 相关数据 + String toInventoryStatus = recordListItem.get("toInventoryStatus").toString(); + String fromPackingNumber = recordListItem.get("fromPackingNumber").toString(); + String fromBatch = recordListItem.get("fromBatch").toString(); + String toPackingNumber = recordListItem.get("toPackingNumber").toString(); + String toBatch = recordListItem.get("toBatch").toString(); + String fromLocationCode = recordListItem.get("fromLocationCode").toString(); + String toLocationCode = recordListItem.get("toLocationCode").toString(); + //查询库存余额 + List inventoryStatusList = new ArrayList<>(); + inventoryStatusList.add(toInventoryStatus); + List balanceDO = jobUtils.selectlocationReturnManagementAccuracyToBalance(detailDO.getItemCode(),fromPackingNumber,fromBatch,fromLocationCode,inventoryStatusList); + if (balanceDO == null || balanceDO.size() == 0) { + throw exception(BALANCE_NOT_EXISTS); + } + // 库存事务——入 + TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); + BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn); + transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode()); + TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction()); + transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode()); + transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId())); + transactionCreateReqVOIn.setBatch(toBatch); + transactionCreateReqVOIn.setPackingNumber(toPackingNumber); + transactionCreateReqVOIn.setInventoryStatus(toInventoryStatus); + transactionCreateReqVOIn.setLocationCode(toLocationCode); + transactionCreateReqVOIn.setSinglePrice(balanceDO.get(0).getSinglePrice()); + transactionCreateReqVOIn.setAmount(balanceDO.get(0).getAmount()); + transactionCreateReqVOIn.setArriveDate(balanceDO.get(0).getArriveDate()); + transactionCreateReqVOIn.setProduceDate(balanceDO.get(0).getProduceDate()); + transactionCreateReqVOIn.setExpireDate(balanceDO.get(0).getExpireDate()); + transactionCreateReqVOIn.setWarehouseCode(mainDO.getFromWarehouseCode()); + transactionCreateReqVOIn.setRecordNumber(number); + transactionCreateReqVOIn.setId(null); + transactionCreateReqVOList.add(transactionCreateReqVOIn); + // 库存事务——出 + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + BeanUtils.copyProperties(detailDO, transactionCreateReqVOOut); + transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode()); + TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); + transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); + transactionCreateReqVOOut.setRecordNumber(number); + transactionCreateReqVOOut.setInventoryStatus(toInventoryStatus); + transactionCreateReqVOOut.setWorker(String.valueOf(userRespDTO.getId())); + transactionCreateReqVOOut.setBatch(fromBatch); + transactionCreateReqVOOut.setPackingNumber(fromPackingNumber); + transactionCreateReqVOOut.setLocationCode(fromLocationCode); + transactionCreateReqVOOut.setSinglePrice(balanceDO.get(0).getSinglePrice()); + transactionCreateReqVOOut.setAmount(balanceDO.get(0).getAmount()); + transactionCreateReqVOOut.setArriveDate(balanceDO.get(0).getArriveDate()); + transactionCreateReqVOOut.setProduceDate(balanceDO.get(0).getProduceDate()); + transactionCreateReqVOOut.setExpireDate(balanceDO.get(0).getExpireDate()); + transactionCreateReqVOOut.setWarehouseCode(mainDO.getFromWarehouseCode()); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOList.add(transactionCreateReqVOOut); + }); } - repleinshRecordDetailMapper.insertBatch(subDOList); + repleinshRecordDetailMapper.insertBatch(RepleinshRecordDetailConvert.INSTANCE.convertList03(subDOListVO)); //增加库存事务 transactionService.createTransaction(transactionCreateReqVOList); //增加操作记录