From 3dce2def2d3fc60c9253574f5db02a26d1e351ad Mon Sep 17 00:00:00 2001 From: liuchen864 <23082234@qq.com> Date: Thu, 14 Dec 2023 13:33:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=9B=B4=E6=8E=A5=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E9=80=80=E8=B4=A7=E7=94=9F=E6=88=90=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchasereturnRecordMainController.java | 12 +- .../PurchasereturnRecordMainCreateReqVO.java | 10 +- .../PurchasereturnRecordDetailConvert.java | 9 +- .../PurchasereturnRecordMainService.java | 8 ++ .../PurchasereturnRecordMainServiceImpl.java | 114 ++++++++++++++++++ 5 files changed, 144 insertions(+), 9 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRecord/PurchasereturnRecordMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRecord/PurchasereturnRecordMainController.java index e3e66ce3..7a81074e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRecord/PurchasereturnRecordMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRecord/PurchasereturnRecordMainController.java @@ -8,10 +8,7 @@ import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; 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.PurchasereturnRecordMainExcelVO; -import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordMainExportReqVO; -import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordMainPageReqVO; -import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordMainRespVO; +import com.win.module.wms.controller.purchasereturnRecord.vo.*; import com.win.module.wms.convert.purchasereturnRecord.PurchasereturnRecordMainConvert; import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnRecordDetailDO; import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnRecordMainDO; @@ -50,6 +47,13 @@ public class PurchasereturnRecordMainController { @Resource private AdminUserApi userApi; + @PostMapping("/create") + @Operation(summary = "创建采购退货记录") + @PreAuthorize("@ss.hasPermission('wms:purchasereturn-record-main:create')") + public CommonResult createPurchasereturnRecordMain(@Valid @RequestBody PurchasereturnRecordMainCreateReqVO createReqVO) { + return success(purchasereturnRecordMainService.createPurchasereturnRecordMain(createReqVO)); + } + @GetMapping("/page") @Operation(summary = "获得采购退货记录主分页") @PreAuthorize("@ss.hasPermission('wms:purchasereturn-record-main:query')") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRecord/vo/PurchasereturnRecordMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRecord/vo/PurchasereturnRecordMainCreateReqVO.java index 59ab25ac..311207ef 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRecord/vo/PurchasereturnRecordMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRecord/vo/PurchasereturnRecordMainCreateReqVO.java @@ -1,7 +1,12 @@ package com.win.module.wms.controller.purchasereturnRecord.vo; -import lombok.*; +import com.win.framework.excel.core.annotations.SubObject; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; @Schema(description = "管理后台 - 采购退货记录主创建 Request VO") @Data @@ -9,4 +14,7 @@ import io.swagger.v3.oas.annotations.media.Schema; @ToString(callSuper = true) public class PurchasereturnRecordMainCreateReqVO extends PurchasereturnRecordMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRecord/PurchasereturnRecordDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRecord/PurchasereturnRecordDetailConvert.java index 3fc14792..113446bd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRecord/PurchasereturnRecordDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRecord/PurchasereturnRecordDetailConvert.java @@ -1,16 +1,15 @@ package com.win.module.wms.convert.purchasereturnRecord; -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.purchasereturnRecord.vo.PurchasereturnRecordDetailExcelVO; import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordDetailRespVO; import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordDetailUpdateReqVO; +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.purchasereturnRecord.PurchasereturnRecordDetailDO; + +import java.util.List; /** * 采购退货记录子 Convert @@ -34,4 +33,6 @@ public interface PurchasereturnRecordDetailConvert { 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/purchasereturnRecord/PurchasereturnRecordMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRecord/PurchasereturnRecordMainService.java index 910283cf..4ea1a952 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRecord/PurchasereturnRecordMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRecord/PurchasereturnRecordMainService.java @@ -2,6 +2,7 @@ package com.win.module.wms.service.purchasereturnRecord; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordMainCreateReqVO; import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordMainExportReqVO; import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordMainPageReqVO; import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnRecordMainDO; @@ -15,6 +16,13 @@ import java.util.List; */ public interface PurchasereturnRecordMainService { + /** + * 创建采购退货记录 + * @param createReqVO 采购退货记录主 + * @return id + */ + Long createPurchasereturnRecordMain(PurchasereturnRecordMainCreateReqVO createReqVO); + /** * 获得采购退货记录主分页 * diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRecord/PurchasereturnRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRecord/PurchasereturnRecordMainServiceImpl.java index a6435902..0789194e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRecord/PurchasereturnRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRecord/PurchasereturnRecordMainServiceImpl.java @@ -2,16 +2,39 @@ package com.win.module.wms.service.purchasereturnRecord; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +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.purchasereturnRecord.vo.PurchasereturnRecordMainCreateReqVO; import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordMainExportReqVO; import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordMainPageReqVO; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.convert.purchasereturnRecord.PurchasereturnRecordDetailConvert; +import com.win.module.wms.convert.purchasereturnRecord.PurchasereturnRecordMainConvert; +import com.win.module.wms.dal.dataobject.balance.BalanceDO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnRecordDetailDO; import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnRecordMainDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; +import com.win.module.wms.dal.mysql.balance.BalanceMapper; +import com.win.module.wms.dal.mysql.purchasereturnRecord.PurchasereturnRecordDetailMapper; import com.win.module.wms.dal.mysql.purchasereturnRecord.PurchasereturnRecordMainMapper; +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 org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; +import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; + /** * 采购退货记录主 Service 实现类 * @@ -23,6 +46,97 @@ public class PurchasereturnRecordMainServiceImpl implements PurchasereturnRecord @Resource private PurchasereturnRecordMainMapper purchasereturnRecordMainMapper; + @Resource + private PurchasereturnRecordDetailMapper purchasereturnRecordDetailMapper; + @Resource + private TransactionService transactionService; + @Resource + private BalanceMapper balanceMapper; + @Resource + private TrendsApi trendsApi; + @Resource + private JobUtils jobUtils; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private AdminUserApi userApi; + + @Override + @Transactional + public Long createPurchasereturnRecordMain(PurchasereturnRecordMainCreateReqVO createReqVO) { + PurchasereturnRecordMainDO mainDO = PurchasereturnRecordMainConvert.INSTANCE.convert(createReqVO); + List subDOList = PurchasereturnRecordDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + mainDO.setNumber(number); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasereturnRecord"); + mainDO.setBusinessType(businesstypeDO.getCode()); + purchasereturnRecordMainMapper.insert(mainDO); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + for (PurchasereturnRecordDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDO.getId()); + detailDO.setNumber(number); + //添加库存事务入list + TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); + BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn); + //查询库存余额 + BalanceDO balanceDO = balanceMapper.getBalanceQty(detailDO.getFromPackingNumber(), detailDO.getItemCode(), detailDO.getFromBatch(), detailDO.getInventoryStatus(), detailDO.getFromLocationCode()); + //添加库存事务出list + 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); + //判断businesstypeDO.getInTransactionType()是否为空,不为空时增加入库存事务 + if(businesstypeDO.getInTransactionType() != null && !businesstypeDO.getInTransactionType().isEmpty()) { + //增加业务入类型 + 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(balanceDO.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); + } + } + purchasereturnRecordDetailMapper.insertBatch(subDOList); + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //增加操作记录 + trendsApi.createTrends(mainDO.getId(), "purchasereturnRecordMain", "增加了采购退货记录", TrendsTypeEnum.CREATE); + // 返回 + return mainDO.getId(); + } @Override public PageResult getPurchasereturnRecordMainPage(PurchasereturnRecordMainPageReqVO pageReqVO) {