diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectJob/vo/InspectJobDetailUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectJob/vo/InspectJobDetailUpdateReqVO.java index cd16b550..84dbe703 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectJob/vo/InspectJobDetailUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectJob/vo/InspectJobDetailUpdateReqVO.java @@ -3,6 +3,7 @@ package com.win.module.wms.controller.inspectJob.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import javax.validation.constraints.NotNull; import java.math.BigDecimal; @Schema(description = "管理后台 - 检验任务子更新 Request VO") @@ -35,4 +36,8 @@ public class InspectJobDetailUpdateReqVO extends InspectJobDetailBaseVO { @Schema(description = "检验结果") private String inspectResult; + @Schema(description = "到库存状态", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "到库存状态不能为空") + private String toInventoryStatus; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/PurchasereceiptRecordMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/PurchasereceiptRecordMainController.java index 07504ea1..445f1fde 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/PurchasereceiptRecordMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/PurchasereceiptRecordMainController.java @@ -19,6 +19,7 @@ import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.purchasereceiptRecord.PurchasereceiptRecordDetailService; import com.win.module.wms.service.purchasereceiptRecord.PurchasereceiptRecordMainService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; @@ -120,4 +121,15 @@ public class PurchasereceiptRecordMainController { return resultList; } + @PutMapping("/generateInspectRequest") + @Operation(summary = "生成检验申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:purchasereceipt-record-main:generate')") + public CommonResult generateInspectRequest(@RequestParam("id") Long id) { + PurchasereceiptRecordMainDO mainDO = purchasereceiptRecordMainService.getPurchasereceiptRecordMainById(id); + List subList = purchasereceiptRecordDetailService.selectList(id); + int result = purchasereceiptRecordMainService.generateInspectRequest(mainDO, subList); + return success(result > 0); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java index f0283aac..b4c54aa0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java @@ -209,19 +209,33 @@ public class InspectJobMainServiceImpl implements InspectJobMainService { inspectRecordDetailDO.setUpdater(null); inspectRecordDetailDO.setUpdateTime(null); inspectRecordDetailDOList.add(inspectRecordDetailDO); - //添加库存事务list - TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); - BeanUtils.copyProperties(inspectRecordDetailDO, transactionCreateReqVO); - //增加业务类型 + //添加库存事务入list + TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); + BeanUtils.copyProperties(inspectRecordDetailDO, transactionCreateReqVOIn); + //增加业务入类型 BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectReceiptJob"); - transactionCreateReqVO.setBusinessType(businesstypeDO.getCode()); - TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); - transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); - transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); - transactionCreateReqVO.setRecordNumber(number); - transactionCreateReqVO.setId(null); + transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode()); + TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction()); + transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode()); + transactionCreateReqVOIn.setRecordNumber(number); + transactionCreateReqVOIn.setInventoryStatus(inspectJobDetailUpdateReqVO.getToInventoryStatus()); + transactionCreateReqVOIn.setId(null); //待确定库存事务信息 - transactionCreateReqVOList.add(transactionCreateReqVO); + transactionCreateReqVOList.add(transactionCreateReqVOIn); + //添加库存事务出list + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + BeanUtils.copyProperties(inspectRecordDetailDO, transactionCreateReqVOOut); + //增加业务出类型 + transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode()); + TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); + transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); + transactionCreateReqVOOut.setRecordNumber(number); + transactionCreateReqVOOut.setInventoryStatus(inspectJobDetailUpdateReqVO.getInventoryStatus()); + transactionCreateReqVOOut.setId(null); + //待确定库存事务信息 + transactionCreateReqVOList.add(transactionCreateReqVOOut); } if(!inspectRecordDetailDOList.isEmpty()) { inspectRecordDetailMapper.insertBatch(inspectRecordDetailDOList); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainService.java index 54e55105..077279fb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainService.java @@ -16,6 +16,14 @@ import java.util.List; */ public interface PurchasereceiptRecordMainService { + /** + * 通过id获取采购收货记录主 + * + * @param id id + * @return 分页列表 + */ + PurchasereceiptRecordMainDO getPurchasereceiptRecordMainById(Long id); + /** * 获得用高级搜索采购收货记录主分页列表 * @@ -59,4 +67,13 @@ public interface PurchasereceiptRecordMainService { * @return */ PurchasereceiptRecordDetailDO selectPurchasereceiptExist(String ppoNumber,String psupplierCode, String pNumber,String ppoLine, String pitemCode); + + /** + * 生成检验任务 + * @param mainDO 采购收货记录主 + * @param detailDOList 采购收货记录子 + * @return + */ + int generateInspectRequest(PurchasereceiptRecordMainDO mainDO, List detailDOList); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java index 8665c2c1..312bf18f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java @@ -1,20 +1,38 @@ package com.win.module.wms.service.purchasereceiptRecord; import cn.hutool.core.exceptions.UtilException; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailCreateReqVO; +import com.win.module.wms.controller.inspectRequest.vo.InspectRequestMainCreateReqVO; import com.win.module.wms.controller.purchasereceiptRecord.vo.PurchasereceiptRecordMainExportReqVO; import com.win.module.wms.controller.purchasereceiptRecord.vo.PurchasereceiptRecordMainPageReqVO; +import com.win.module.wms.controller.rule.vo.RuleRespVO; +import com.win.module.wms.dal.dataobject.documentSwitch.SwitchDO; import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO; import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordMainDO; +import com.win.module.wms.dal.mysql.purchasereceiptJob.PurchasereceiptJobMainMapper; import com.win.module.wms.dal.mysql.purchasereceiptRecord.PurchasereceiptRecordDetailMapper; import com.win.module.wms.dal.mysql.purchasereceiptRecord.PurchasereceiptRecordMainMapper; +import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptRequestMainMapper; +import com.win.module.wms.service.documentSwitch.SwitchService; +import com.win.module.wms.service.inspectRequest.InspectRequestMainService; +import com.win.module.wms.service.rule.RuleService; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 采购收货记录主 Service 实现类 @@ -30,6 +48,23 @@ public class PurchasereceiptRecordMainServiceImpl implements PurchasereceiptReco @Resource private PurchasereceiptRecordDetailMapper purchasereceiptRecordDetailMapper; + @Resource + private PurchasereceiptJobMainMapper purchasereceiptJobMainMapper; + @Resource + private PurchasereceiptRequestMainMapper purchasereceiptRequestMainMapper; + @Resource + private RuleService ruleService; + @Resource + private SwitchService switchService; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private InspectRequestMainService inspectRequestMainService; + + @Override + public PurchasereceiptRecordMainDO getPurchasereceiptRecordMainById(Long id) { + return purchasereceiptRecordMainMapper.selectById(id); + } @Override public PageResult getPurchasereceiptRecordMainSenior(CustomConditions conditions) { @@ -75,4 +110,79 @@ public class PurchasereceiptRecordMainServiceImpl implements PurchasereceiptReco throw new UtilException( "采购收货记录无效" + pNumber + "无效"); } } + + @Override + public int generateInspectRequest(PurchasereceiptRecordMainDO mainDO, List detailDOList) { + int result = 0; + RuleRespVO ruleRespVO = ruleService.inspect(mainDO.getSupplierCode(), null); + //上架申请子 + List inspectRequestDetailCreateReqVOList = new ArrayList<>(); + JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration()); + SwitchDO switchDO1 = switchService.selectSwitchExist("CreateInspectRequestAfterPurchaseReceiptRecordCreated"); + SwitchDO switchDO2 = switchService.selectSwitchExist("ExemptItemCreatePutawayRequestAfterPurchaseReceiptRecordCreated"); + //采购收货记录 生成后 创建 到货检验申请 + if(switchDO1.getEffectiveSetValue().equals("TRUE") && !"EXAMPT".equals(String.valueOf(jsonObject.get("InspectType")))) { + //按零件号和批次分组 + Map> listMap = new HashMap<>(); + for(PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO : detailDOList) { + //采购收货记录 生成后免检物品 创建 上架申请 + if(switchDO2.getEffectiveSetValue().equals("TRUE")) { + InspectRequestDetailCreateReqVO inspectRequestDetailCreateReqVO = new InspectRequestDetailCreateReqVO(); + BeanUtils.copyProperties(purchasereceiptRecordDetailDO, inspectRequestDetailCreateReqVO); + inspectRequestDetailCreateReqVO.setId(null); + inspectRequestDetailCreateReqVOList.add(inspectRequestDetailCreateReqVO); + } + String key = purchasereceiptRecordDetailDO.getItemCode() + "_" + purchasereceiptRecordDetailDO.getFromBatch(); + List list = listMap.get(key); + if(list == null) { + list = new ArrayList<>(); + } + list.add(purchasereceiptRecordDetailDO); + listMap.put(key, list); + } + //组装到货检验数据 + for(String mapKey : listMap.keySet()) { + List purchasereceiptRecordDetailDOList1 = listMap.get(mapKey); + //创建主表信息 + PurchasereceiptRecordDetailDO recordDetailDO = purchasereceiptRecordDetailDOList1.get(0); + InspectRequestMainCreateReqVO inspectRequestMainCreateReqVO = new InspectRequestMainCreateReqVO(); + String inspectRecordNumber = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_RECORD.getCode()); + inspectRequestMainCreateReqVO.setNumber(inspectRecordNumber); + inspectRequestMainCreateReqVO.setPurchaseReceiptRecordNumber(mainDO.getNumber()); + inspectRequestMainCreateReqVO.setSupplierCode(mainDO.getSupplierCode()); + inspectRequestMainCreateReqVO.setItemCode(recordDetailDO.getItemCode()); + inspectRequestMainCreateReqVO.setBatch(recordDetailDO.getFromBatch()); + inspectRequestMainCreateReqVO.setPoNumber(recordDetailDO.getPoNumber()); + inspectRequestMainCreateReqVO.setPoLine(recordDetailDO.getPoLine()); + inspectRequestMainCreateReqVO.setUom(recordDetailDO.getUom()); + inspectRequestMainCreateReqVO.setReceiveQty(BigDecimal.ZERO); + inspectRequestMainCreateReqVO.setFromWarehouseCode(mainDO.getToWarehouseCode()); + //创建子表信息 + for(PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO : purchasereceiptRecordDetailDOList1) { + InspectRequestDetailCreateReqVO inspectRequestDetailCreateReqVO = new InspectRequestDetailCreateReqVO(); + BeanUtils.copyProperties(purchasereceiptRecordDetailDO, inspectRequestDetailCreateReqVO); + inspectRequestDetailCreateReqVO.setPackingNumber(purchasereceiptRecordDetailDO.getFromPackingNumber()); + inspectRequestDetailCreateReqVO.setContainerNumber(purchasereceiptRecordDetailDO.getFromContainerNumber()); + inspectRequestDetailCreateReqVO.setInventoryStatus(purchasereceiptRecordDetailDO.getInventoryStatus()); + inspectRequestDetailCreateReqVO.setFromLocationCode(purchasereceiptRecordDetailDO.getFromLocationCode()); + inspectRequestDetailCreateReqVO.setItemCode(purchasereceiptRecordDetailDO.getItemCode()); + inspectRequestDetailCreateReqVO.setItemName(purchasereceiptRecordDetailDO.getItemName()); + inspectRequestDetailCreateReqVO.setItemDesc1(purchasereceiptRecordDetailDO.getItemDesc1()); + inspectRequestDetailCreateReqVO.setItemDesc2(purchasereceiptRecordDetailDO.getItemDesc2()); + inspectRequestDetailCreateReqVO.setProjectCode(purchasereceiptRecordDetailDO.getProjectCode()); + inspectRequestDetailCreateReqVO.setQty(purchasereceiptRecordDetailDO.getQty()); + inspectRequestDetailCreateReqVO.setUom(purchasereceiptRecordDetailDO.getUom()); + //合计数量 + inspectRequestMainCreateReqVO.setReceiveQty(inspectRequestMainCreateReqVO.getReceiveQty().add(inspectRequestDetailCreateReqVO.getQty())); + inspectRequestDetailCreateReqVOList.add(inspectRequestDetailCreateReqVO); + } + inspectRequestMainCreateReqVO.setSubList(inspectRequestDetailCreateReqVOList); + //创建检验申请 + inspectRequestMainService.createInspectRequestMain(inspectRequestMainCreateReqVO); + result++; + } + } + return result; + } + }