From f1833fc02a5c8fa966330fa550b6601770acd5f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Tue, 19 Dec 2023 08:48:54 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=A1=A5=E6=96=99=20?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E5=88=9B=E5=BB=BA=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 1 + .../RepleinshRecordMainController.java | 9 ++ .../vo/RepleinshRecordMainCreateReqVO.java | 7 + .../RepleinshRecordDetailConvert.java | 4 + .../production/ProductionMainServiceImpl.java | 4 + .../RepleinshRecordMainServiceImpl.java | 141 +++++++++++++++++- 6 files changed, 163 insertions(+), 3 deletions(-) diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index 4cf22b4e..f1843fd9 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java @@ -650,6 +650,7 @@ public interface ErrorCodeConstants { ErrorCode PRODUCTION_MAIN_CANNOT_AGREE = new ErrorCode(1_001_101_012, "生产计划状态不支持审批通过"); ErrorCode PRODUCTION_MAIN_CANNOT_PUBLISH = new ErrorCode(1_001_101_013, "生产计划状态不支持发布"); ErrorCode PRODUCTION_MAIN_CANNOT_RESETTING = new ErrorCode(1_001_101_014, "生产计划状态不支持重置"); + ErrorCode PRODUCTION_MAIN_CANNOT_ERROR = new ErrorCode(1_001_101_015, "根据【车间】【生产线】未查询到相关工位信息"); //制品收货申请主ErrorCode ErrorCode PRODUCTRECEIPT_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_102_000, "制品收货申请主不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/RepleinshRecordMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/RepleinshRecordMainController.java index 30358332..1c81600d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/RepleinshRecordMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/RepleinshRecordMainController.java @@ -4,6 +4,7 @@ import com.win.framework.common.pojo.CustomConditions; import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordMainCreateReqVO; import com.win.module.wms.dal.dataobject.repleinshRecord.RepleinshRecordDetailDO; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.repleinshRecord.RepleinshRecordDetailService; @@ -49,6 +50,14 @@ public class RepleinshRecordMainController { @Resource private AdminUserApi userApi; + + @PostMapping("/create") + @Operation(summary = "创建补料记录记录") + @PreAuthorize("@ss.hasPermission('wms:repleinsh-record-main:create')") + public CommonResult createRepleinshRecordMain(@Valid @RequestBody RepleinshRecordMainCreateReqVO createReqVO) { + return success(repleinshRecordMainService.createRepleinshRecordMain(createReqVO)); + } + @PostMapping("/senior") @Operation(summary = "高级搜索获得补料记录主信息分页") @PreAuthorize("@ss.hasPermission('wms:RepleinshRecordMain:query')") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordMainCreateReqVO.java index 10d42a0a..cea13f24 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordMainCreateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.repleinshRecord.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordDetailCreateReqVO; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 补料记录主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class RepleinshRecordMainCreateReqVO extends RepleinshRecordMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRecord/RepleinshRecordDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRecord/RepleinshRecordDetailConvert.java index 6408f29d..05a8e0e8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRecord/RepleinshRecordDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRecord/RepleinshRecordDetailConvert.java @@ -4,10 +4,12 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordDetailCreateReqVO; import com.win.module.wms.controller.repleinshRecord.vo.RepleinshRecordDetailCreateReqVO; import com.win.module.wms.controller.repleinshRecord.vo.RepleinshRecordDetailExcelVO; import com.win.module.wms.controller.repleinshRecord.vo.RepleinshRecordDetailRespVO; import com.win.module.wms.controller.repleinshRecord.vo.RepleinshRecordDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnRecordDetailDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.repleinshRecord.RepleinshRecordDetailDO; @@ -34,4 +36,6 @@ public interface RepleinshRecordDetailConvert { List convertList02(List list); + List convertList03(List list); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java index cbab9e36..c4425acf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java @@ -561,7 +561,11 @@ public class ProductionMainServiceImpl implements ProductionMainService { queryWrapper.eq("workshop_code",mainDO.getWorkshop()); queryWrapper.eq("production_line_code",mainDO.getProductionLine()); List workstationDOList = workstationMapper.selectList(queryWrapper); + if (workstationDOList == null || workstationDOList.size() == 0) { + throw exception(PRODUCTION_MAIN_CANNOT_ERROR); + } preparetoissueDetailCreateReqVO.setWorkStation(workstationDOList.get(0).getCode()); + preparetoissueDetailCreateReqVO.setToLocationCode(workstationDOList.get(0).getRawLocationCode()); } preparetoissueMainCreateReqVO.setSubList(preparetoissueDetailCreateReqVOList); preparetoissueMainService.createPreparetoissueMain(preparetoissueMainCreateReqVO); 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 987048b9..cea00a01 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 @@ -1,12 +1,37 @@ package com.win.module.wms.service.repleinshRecord; import com.win.framework.common.pojo.CustomConditions; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; +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.repleinshRecord.vo.*; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.convert.purchasereturnRecord.PurchasereturnRecordDetailConvert; +import com.win.module.wms.convert.repleinshRecord.RepleinshRecordDetailConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; +import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnRecordDetailDO; +import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO; +import com.win.module.wms.dal.dataobject.repleinshRecord.RepleinshRecordDetailDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; +import com.win.module.wms.dal.mysql.repleinshRecord.RepleinshRecordDetailMapper; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.service.recordsetting.RecordsettingService; +import com.win.module.wms.service.transaction.TransactionService; +import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.*; import com.win.module.wms.dal.dataobject.repleinshRecord.RepleinshRecordMainDO; @@ -16,6 +41,7 @@ import com.win.module.wms.convert.repleinshRecord.RepleinshRecordMainConvert; import com.win.module.wms.dal.mysql.repleinshRecord.RepleinshRecordMainMapper; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static com.win.module.wms.enums.ErrorCodeConstants.*; /** @@ -27,16 +53,125 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class RepleinshRecordMainServiceImpl implements RepleinshRecordMainService { + @Resource + private TransactionService transactionService; + @Resource + private RepleinshRecordDetailMapper repleinshRecordDetailMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private LocationService locationService; + @Resource + private RecordsettingService recordsettingService; + @Resource + private TrendsApi trendsApi; + @Resource + private JobUtils jobUtils; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private AdminUserApi userApi; @Resource private RepleinshRecordMainMapper repleinshRecordMainMapper; @Override public Long createRepleinshRecordMain(RepleinshRecordMainCreateReqVO createReqVO) { // 插入 - RepleinshRecordMainDO repleinshRecordMain = RepleinshRecordMainConvert.INSTANCE.convert(createReqVO); - repleinshRecordMainMapper.insert(repleinshRecordMain); + AdminUserRespDTO userRespDTO = userApi.getUser(getLoginUserId()); + RepleinshRecordMainDO mainDO = RepleinshRecordMainConvert.INSTANCE.convert(createReqVO); + List subDOList = RepleinshRecordDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); + String number = serialNumberApi.generateCode(RuleCodeEnum.REPLEINMENT_RECORD.getCode()); + mainDO.setNumber(number); + mainDO.setDepartmentCode(String.valueOf(userRespDTO.getDeptId())); + mainDO.setExecuteTime(LocalDateTime.now()); + mainDO.setActiveDate(LocalDateTime.now()); + mainDO.setAvailable("TRUE"); + // 业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentRecord"); + mainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + mainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + mainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); + mainDO.setInTransactionType(businesstypeDO.getInTransactionType()); + mainDO.setBusinessType(businesstypeDO.getCode()); + // 接口类型 + RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("RepleinmentRecord"); + mainDO.setInterfaceType(recordsettingDO.getInterfaceType()); + repleinshRecordMainMapper.insert(mainDO); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + for (RepleinshRecordDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDO.getId()); + detailDO.setNumber(number); + LocationDO locationDOFrom = locationService.selectLocation(detailDO.getFromLocationCode()); + if(locationDOFrom != null) { + detailDO.setFromAreaCode(locationDOFrom.getAreaCode()); + detailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode()); + } else { + throw exception(LOCATION_NOT_EXISTS); + } + LocationDO locationDOTo = locationService.selectLocation(detailDO.getToLocationCode()); + if(locationDOFrom != null) { + detailDO.setToAreaCode(locationDOTo.getAreaCode()); + detailDO.setToLocationGroupCode(locationDOTo.getLocationGroupCode()); + } else { + throw exception(LOCATION_NOT_EXISTS); + } + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); + if (itembasicDO != null) { + detailDO.setItemName(itembasicDO.getName()); + detailDO.setItemDesc1(itembasicDO.getDesc1()); + detailDO.setItemDesc2(itembasicDO.getDesc2()); + detailDO.setProjectCode(itembasicDO.getProject()); + detailDO.setUom(itembasicDO.getUom()); + } else { + throw exception(ITEMBASIC_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(BigDecimal.ZERO); + transactionCreateReqVOIn.setAmount(BigDecimal.ZERO); + 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(BigDecimal.ZERO); + transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); + transactionCreateReqVOOut.setWarehouseCode(mainDO.getFromWarehouseCode()); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOList.add(transactionCreateReqVOOut); + } + repleinshRecordDetailMapper.insertBatch(subDOList); + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //增加操作记录 + trendsApi.createTrends(mainDO.getId(), "repleinshRecordMain", "增加了补料记录", TrendsTypeEnum.CREATE); // 返回 - return repleinshRecordMain.getId(); + return mainDO.getId(); } @Override public PageResult getRepleinshRecordMainSenior(CustomConditions conditions) {