From 4c0e784f8b54b6e1ab95197f051e93c2d2d9e2a5 Mon Sep 17 00:00:00 2001 From: chenfang Date: Tue, 19 Dec 2023 12:07:00 +0800 Subject: [PATCH 1/2] =?UTF-8?q?PDA=E7=9B=B4=E6=8E=A5=E7=94=9F=E6=88=90?= =?UTF-8?q?=E8=AE=B0=E5=BD=95---=E6=88=90=E5=93=81=E5=8F=91=E8=B4=A7/?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E9=80=80=E8=B4=A7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomerreturnRecordMainCreateReqVO.java | 8 +- .../DeliverRecordMainController.java | 12 +- .../vo/DeliverRecordMainCreateReqVO.java | 7 +- ...InventorychangeRecordDetailController.java | 8 +- .../InventorymoveRecordMainCreateReqVO.java | 7 +- .../InventorymoveRequestMainController.java | 20 +++ .../vo/InventorymoveRequestMainRespVO.java | 5 + .../CustomerreturnRecordDetailConvert.java | 2 + .../DeliverRecordDetailConvert.java | 2 + .../InventorymoveRecordMainConvert.java | 8 +- .../CustomerreturnRecordMainServiceImpl.java | 113 +++++++++++++++ .../CustomerreturnRequestMainServiceImpl.java | 21 +-- .../deliverJob/DeliverJobMainServiceImpl.java | 1 + .../DeliverRecordMainServiceImpl.java | 133 ++++++++++++++++- .../InventorychangeRecordMainServiceImpl.java | 4 +- ...InventorychangeRequestMainServiceImpl.java | 3 +- .../InventorymoveJobMainServiceImpl.java | 18 +-- .../InventorymoveRecordMainServiceImpl.java | 134 +++++++++++++++++- .../InventorymoveRequestMainServiceImpl.java | 34 +++-- .../com/win/module/wms/util/JobUtils.java | 3 +- 20 files changed, 494 insertions(+), 49 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainCreateReqVO.java index 9b29039a..fe57029a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainCreateReqVO.java @@ -1,12 +1,18 @@ package com.win.module.wms.controller.customerreturnRecord.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordDetailCreateReqVO; 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 CustomerreturnRecordMainCreateReqVO extends CustomerreturnRecordMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/DeliverRecordMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/DeliverRecordMainController.java index 29e0491b..1ca4d7a3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/DeliverRecordMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/DeliverRecordMainController.java @@ -52,12 +52,12 @@ public class DeliverRecordMainController { @Resource private AdminUserApi userApi; -// @PostMapping("/create") -// @Operation(summary = "创建发货记录主") -// @PreAuthorize("@ss.hasPermission('wms:deliver-record-main:create')") -// public CommonResult createDeliverRecordMain(@Valid @RequestBody DeliverRecordMainCreateReqVO createReqVO) { -// return success(deliverRecordMainService.createDeliverRecordMain(createReqVO)); -// } + @PostMapping("/create") + @Operation(summary = "创建发货记录主") + @PreAuthorize("@ss.hasPermission('wms:deliver-record-main:create')") + public CommonResult createDeliverRecordMain(@Valid @RequestBody DeliverRecordMainCreateReqVO createReqVO) { + return success(deliverRecordMainService.createDeliverRecordMain(createReqVO)); + } // // @PutMapping("/update") // @Operation(summary = "更新发货记录主") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainCreateReqVO.java index 1903be60..a331a448 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainCreateReqVO.java @@ -1,12 +1,17 @@ package com.win.module.wms.controller.deliverRecord.vo; +import com.win.framework.excel.core.annotations.SubObject; 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 DeliverRecordMainCreateReqVO extends DeliverRecordMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/InventorychangeRecordDetailController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/InventorychangeRecordDetailController.java index 70de96d9..da8ddd73 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/InventorychangeRecordDetailController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/InventorychangeRecordDetailController.java @@ -89,7 +89,13 @@ public class InventorychangeRecordDetailController { @PreAuthorize("@ss.hasPermission('wms:inventorychange-record-detail:query')") public CommonResult> getInventorychangeRecordDetailPage(@Valid InventorychangeRecordDetailPageReqVO pageVO) { PageResult pageResult = inventorychangeRecordDetailService.getInventorychangeRecordDetailPage(pageVO); - return success(InventorychangeRecordDetailConvert.INSTANCE.convertPage(pageResult)); + PageResult result = InventorychangeRecordDetailConvert.INSTANCE.convertPage(pageResult); + for(InventorychangeRecordDetailRespVO vo : result.getList()) { + AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); + //后端创建个字段作为前端展示的虚拟字段 + vo.setCreator(user.getNickname()); + } + return success(result); } @PostMapping("/senior") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainCreateReqVO.java index d51b48bb..c4818c15 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainCreateReqVO.java @@ -1,12 +1,17 @@ package com.win.module.wms.controller.inventorymoveRecord.vo; +import com.win.framework.excel.core.annotations.SubObject; 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 InventorymoveRecordMainCreateReqVO extends InventorymoveRecordMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/InventorymoveRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/InventorymoveRequestMainController.java index 550e3378..483dcb3f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/InventorymoveRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/InventorymoveRequestMainController.java @@ -10,6 +10,7 @@ import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.dept.DeptApi; import com.win.module.system.api.user.AdminUserApi; import com.win.module.wms.controller.inventorymoveRequest.vo.*; +import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestDetailConvert; import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; @@ -123,6 +124,25 @@ public class InventorymoveRequestMainController { } return success(result); } + + @GetMapping("/getInventorymoveRequestById") + @Operation(summary = "APP获得库存转移主子表明细列表") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:query')") + public CommonResult getInventorymoveRequestById(@RequestParam("id") Long id) { + InventorymoveRequestMainDO inventorymoveRequestMain = inventorymoveRequestMainService.getInventorymoveRequestMain(id); + InventorymoveRequestMainRespVO result = InventorymoveRequestMainConvert.INSTANCE.convert(inventorymoveRequestMain); + if(result==null) { + return success(result); + }; +// InventorymoveRequestDetailExportReqVO reqVO = new InventorymoveRequestDetailExportReqVO(); +// reqVO.setMasterId(result.getId()); + List inventorymoveRequestDetailList = inventorymoveRequestDetailService.selectList(result.getId()); + List vos = InventorymoveRequestDetailConvert.INSTANCE.convertList02(inventorymoveRequestDetailList); + result.setSubList(vos); + return success(result); + } + @GetMapping("/export-excel") @Operation(summary = "导出库存转移申请 Excel") @PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:export')") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainRespVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainRespVO.java index 9794df32..ffc3ec80 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainRespVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainRespVO.java @@ -3,10 +3,15 @@ package com.win.module.wms.controller.inventorymoveRequest.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.util.List; + @Schema(description = "管理后台 - 库存转移申请主 Response VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class InventorymoveRequestMainRespVO extends InventorymoveRequestMainBaseVO { + @Schema(description = " 库存转移申请子表request_inventorymove_detail", requiredMode = Schema.RequiredMode.REQUIRED) + private List subList; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordDetailConvert.java index 93b58d67..c1f2ff3b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordDetailConvert.java @@ -34,4 +34,6 @@ public interface CustomerreturnRecordDetailConvert { 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/convert/deliverRecord/DeliverRecordDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRecord/DeliverRecordDetailConvert.java index 91ce7a76..f8399cb0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRecord/DeliverRecordDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRecord/DeliverRecordDetailConvert.java @@ -34,4 +34,6 @@ public interface DeliverRecordDetailConvert { 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/convert/inventorymoveRecord/InventorymoveRecordMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRecord/InventorymoveRecordMainConvert.java index 3279a352..a17d0a25 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRecord/InventorymoveRecordMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRecord/InventorymoveRecordMainConvert.java @@ -3,11 +3,7 @@ package com.win.module.wms.convert.inventorymoveRecord; import java.util.*; import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainCreateReqVO; -import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainExcelVO; -import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainRespVO; -import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainUpdateReqVO; +import com.win.module.wms.controller.inventorymoveRecord.vo.*; import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordDetailDO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -46,4 +42,6 @@ public interface InventorymoveRecordMainConvert { @Mapping(source = "detailDO.createTime", target = "createTimeDetail"), }) InventorymoveRecordMainExcelVO convert(InventorymoveRecordMainDO mainDO, InventorymoveRecordDetailDO detailDO); + + List convertList03(List list); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordMainServiceImpl.java index 74261a7d..16f7c22c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordMainServiceImpl.java @@ -1,12 +1,36 @@ package com.win.module.wms.service.customerreturnRecord; 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.customerreturnRecord.vo.CustomerreturnRecordMainCreateReqVO; import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordMainExportReqVO; import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordMainPageReqVO; import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordMainUpdateReqVO; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.convert.customerreturnRecord.CustomerreturnRecordDetailConvert; +import com.win.module.wms.convert.customerreturnRecord.CustomerreturnRecordMainConvert; +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.customerreturnRecord.CustomerreturnRecordDetailDO; +import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordMainDO; +import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; +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.customerreturnRecord.CustomerreturnRecordDetailMapper; +import com.win.module.wms.service.location.LocationService; +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.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.util.*; @@ -18,6 +42,7 @@ import com.win.module.wms.convert.customerreturnRecord.CustomerreturnRecordMainC import com.win.module.wms.dal.mysql.customerreturnRecord.CustomerreturnRecordMainMapper; 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.*; /** @@ -31,12 +56,100 @@ public class CustomerreturnRecordMainServiceImpl implements CustomerreturnRecord @Resource private CustomerreturnRecordMainMapper customerreturnRecordMainMapper; + @Resource + private CustomerreturnRecordDetailMapper customerreturnRecordDetailMapper; + @Resource + private TransactionService transactionService; + @Resource + private BalanceMapper balanceMapper; + @Resource + private TrendsApi trendsApi; + @Resource + private JobUtils jobUtils; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private AdminUserApi userApi; + @Resource + private LocationService locationService; @Override + @Transactional public Long createCustomerreturnRecordMain(CustomerreturnRecordMainCreateReqVO createReqVO) { // 插入 CustomerreturnRecordMainDO customerreturnRecordMain = CustomerreturnRecordMainConvert.INSTANCE.convert(createReqVO); customerreturnRecordMainMapper.insert(customerreturnRecordMain); + CustomerreturnRecordMainDO mainDO = CustomerreturnRecordMainConvert.INSTANCE.convert(createReqVO); + List subDOList = CustomerreturnRecordDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); + String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_RECORD.getCode()); + mainDO.setNumber(number); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerreturnRecord"); + mainDO.setBusinessType(businesstypeDO.getCode()); + mainDO.setAvailable("TRUE"); + customerreturnRecordMainMapper.insert(mainDO); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + for (CustomerreturnRecordDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDO.getId().toString()); + detailDO.setNumber(number); + //由PDA给值进行赋值 + LocationDO fromLocationDO = locationService.selectLocation(detailDO.getFromLocationCode()); + detailDO.setFromLocationGroupCode(fromLocationDO.getLocationGroupCode()); + detailDO.setFromAreaCode(fromLocationDO.getAreaCode()); + LocationDO toLocationDO = locationService.selectLocation(detailDO.getToLocationCode()); + detailDO.setToLocationGroupCode(toLocationDO.getLocationGroupCode()); + detailDO.setToAreaCode(toLocationDO.getAreaCode()); + detailDO.setInterfaceType(mainDO.getInterfaceType()); + //添加库存事务入list + TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); + BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn); + //添加库存事务出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(detailDO.getSinglePrice()); + transactionCreateReqVOOut.setAmount(detailDO.getAmount()); + 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(detailDO.getInventoryStatus()); + transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode()); + transactionCreateReqVOIn.setSinglePrice(detailDO.getSinglePrice()); + transactionCreateReqVOIn.setAmount(detailDO.getAmount()); + transactionCreateReqVOIn.setWarehouseCode(mainDO.getToWarehouseCode()); + transactionCreateReqVOIn.setRecordNumber(number); + transactionCreateReqVOIn.setId(null); + //待确定库存事务信息 + transactionCreateReqVOList.add(transactionCreateReqVOIn); + } + } + customerreturnRecordDetailMapper.insertBatch(subDOList); + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //增加操作记录 + trendsApi.createTrends(mainDO.getId(), "customerreturnRecordMain", "增加了客户退货记录", TrendsTypeEnum.CREATE); // 返回 return customerreturnRecordMain.getId(); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java index 21d418de..ae49cacf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java @@ -26,6 +26,8 @@ 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.customerreturnJob.CustomerreturnJobDetailDO; import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobMainDO; +import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordDetailDO; +import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordMainDO; import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestDetailDO; import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; @@ -301,18 +303,21 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque //增加业务类型 BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRecord"); customerreturnRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); - customerreturnRecordMainMapper.insert(CustomerreturnRecordMainConvert.INSTANCE.convert(customerreturnRecordMainCreateReqVO)); + CustomerreturnRecordMainDO recordMainDO = CustomerreturnRecordMainConvert.INSTANCE.convert(customerreturnRecordMainCreateReqVO); + customerreturnRecordMainMapper.insert(recordMainDO); for(CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { //记录子表数据 同名属性同名赋值 CustomerreturnRecordDetailCreateReqVO customerreturnRecordDetailCreateReqVO = new CustomerreturnRecordDetailCreateReqVO(); - BeanUtils.copyProperties(customerreturnRequestDetailDO, customerreturnRecordDetailCreateReqVO); - customerreturnRecordDetailCreateReqVO.setFromBatch(customerreturnRequestDetailDO.getBatch()); - customerreturnRecordDetailCreateReqVO.setMasterId(customerreturnRequestDetailDO.getId().toString()); - customerreturnRecordDetailCreateReqVO.setId(null); - customerreturnRecordDetailCreateReqVO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); - customerreturnRecordDetailCreateReqVO.setCreateTime(null); - customerreturnRecordDetailMapper.insert(CustomerreturnRecordDetailConvert.INSTANCE.convert(customerreturnRecordDetailCreateReqVO)); + CustomerreturnRecordDetailDO recordDetailDO = CustomerreturnRecordDetailConvert.INSTANCE.convert(customerreturnRecordDetailCreateReqVO); + BeanUtils.copyProperties(customerreturnRequestDetailDO, recordDetailDO); + recordDetailDO.setFromBatch(customerreturnRequestDetailDO.getBatch()); + recordDetailDO.setMasterId(customerreturnRequestDetailDO.getId().toString()); + recordDetailDO.setId(null); + recordDetailDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); + recordDetailDO.setCreateTime(null); + customerreturnRecordDetailMapper.insert(recordDetailDO); } + trendsApi.createTrends(recordMainDO.getId(), "CustomerRejectJob", "客户退货申请生成客户退货记录", TrendsTypeEnum.CREATE); return; } //生成客户退货任务 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainServiceImpl.java index 31eb2f3f..1a055d11 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainServiceImpl.java @@ -258,6 +258,7 @@ public class DeliverJobMainServiceImpl implements DeliverJobMainService { @Override @Transactional public String executeDeliverJobMain(DeliverJobMainUpdateReqVO deliverJobMainUpdateReqVO) { + BigDecimal zero = BigDecimal.ZERO; //查询数据 DeliverJobMainDO deliverJobMainDO = this.validateDeliverJobMainExists(deliverJobMainUpdateReqVO.getId()); List subList = deliverJobDetailService.selectList(deliverJobMainDO.getId()); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordMainServiceImpl.java index 3e65ee4e..650ce1ed 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordMainServiceImpl.java @@ -2,16 +2,38 @@ package com.win.module.wms.service.deliverRecord; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.deliverRecord.vo.DeliverRecordMainCreateReqVO; import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainExportReqVO; import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainPageReqVO; import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainUpdateReqVO; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.convert.deliverRecord.DeliverRecordDetailConvert; +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.deliverRecord.DeliverRecordDetailDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; +import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO; +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.deliverRecord.DeliverRecordDetailMapper; +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.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.*; import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordMainDO; @@ -21,6 +43,7 @@ import com.win.module.wms.convert.deliverRecord.DeliverRecordMainConvert; import com.win.module.wms.dal.mysql.deliverRecord.DeliverRecordMainMapper; 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.*; /** @@ -34,15 +57,119 @@ public class DeliverRecordMainServiceImpl implements DeliverRecordMainService { @Resource private DeliverRecordMainMapper deliverRecordMainMapper; - @Resource private DeliverRecordDetailMapper deliverRecordDetailMapper; - + @Resource + private TransactionService transactionService; + @Resource + private BalanceMapper balanceMapper; + @Resource + private TrendsApi trendsApi; + @Resource + private JobUtils jobUtils; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private AdminUserApi userApi; + @Resource + private RecordsettingService recordsettingService; + @Resource + private LocationService locationService; + @Override + @Transactional public Long createDeliverRecordMain(DeliverRecordMainCreateReqVO createReqVO) { // 插入 DeliverRecordMainDO deliverRecordMain = DeliverRecordMainConvert.INSTANCE.convert(createReqVO); - deliverRecordMainMapper.insert(deliverRecordMain); + DeliverRecordMainDO mainDO = DeliverRecordMainConvert.INSTANCE.convert(createReqVO); + List subDOList = DeliverRecordDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); + String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_RECORD.getCode()); + mainDO.setNumber(number); + mainDO.setExecuteTime(LocalDateTime.now()); + mainDO.setActiveDate(LocalDateTime.now()); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRecord"); + mainDO.setBusinessType(businesstypeDO.getCode()); + mainDO.setFromLocationTypes(businesstypeDO.getCode()); + mainDO.setFromAreaCodes(businesstypeDO.getCode()); + mainDO.setToLocationTypes(businesstypeDO.getCode()); + mainDO.setToAreaCodes(businesstypeDO.getCode()); + mainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); + mainDO.setInTransactionType(businesstypeDO.getInTransactionType()); + RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("DeliverRecord"); + mainDO.setInterfaceType(recordsettingDO.getInterfaceType()); + //由PDA给值进行赋值 + mainDO.setCustomerDeliverNumber(deliverRecordMain.getCustomerDeliverNumber()); + mainDO.setCarrierCode(deliverRecordMain.getCarrierCode()); + mainDO.setTransferMode(deliverRecordMain.getTransferMode()); + mainDO.setVehiclePlateNumber(deliverRecordMain.getVehiclePlateNumber()); + mainDO.setFromWarehouseCode(deliverRecordMain.getFromWarehouseCode()); + mainDO.setToWarehouseCode(deliverRecordMain.getToWarehouseCode()); + mainDO.setAvailable("TRUE"); + deliverRecordMainMapper.insert(mainDO); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + for (DeliverRecordDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDO.getId().toString()); + detailDO.setNumber(number); + //由PDA给值进行赋值 + LocationDO fromLocationDO = locationService.selectLocation(detailDO.getFromLocationCode()); + detailDO.setFromLocationGroupCode(fromLocationDO.getLocationGroupCode()); + detailDO.setFromAreaCode(fromLocationDO.getAreaCode()); + LocationDO toLocationDO = locationService.selectLocation(detailDO.getToLocationCode()); + detailDO.setToLocationGroupCode(toLocationDO.getLocationGroupCode()); + detailDO.setToAreaCode(toLocationDO.getAreaCode()); + detailDO.setInterfaceType(mainDO.getInterfaceType()); + detailDO.setAvailable("TRUE"); + //添加库存事务入list + TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); + BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn); + //添加库存事务出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.getBatch()); + transactionCreateReqVOOut.setPackingNumber(detailDO.getPackingNumber()); + transactionCreateReqVOOut.setLocationCode(detailDO.getFromLocationCode()); + transactionCreateReqVOOut.setSinglePrice(detailDO.getSinglePrice()); + transactionCreateReqVOOut.setAmount(detailDO.getAmount()); + 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.getBatch()); + transactionCreateReqVOIn.setPackingNumber(detailDO.getPackingNumber()); + transactionCreateReqVOIn.setInventoryStatus(detailDO.getInventoryStatus()); + transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode()); + transactionCreateReqVOIn.setSinglePrice(detailDO.getSinglePrice()); + transactionCreateReqVOIn.setAmount(detailDO.getAmount()); + transactionCreateReqVOIn.setWarehouseCode(mainDO.getToWarehouseCode()); + transactionCreateReqVOIn.setRecordNumber(number); + transactionCreateReqVOIn.setId(null); + //待确定库存事务信息 + transactionCreateReqVOList.add(transactionCreateReqVOIn); + } + } + deliverRecordDetailMapper.insertBatch(subDOList); + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //增加操作记录 + trendsApi.createTrends(mainDO.getId(), "deliverRecordMain", "增加了发货记录", TrendsTypeEnum.CREATE); // 返回 return deliverRecordMain.getId(); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainServiceImpl.java index 93745fee..1d688b19 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainServiceImpl.java @@ -5,9 +5,10 @@ import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRec import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainExportReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainPageReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainUpdateReqVO; -import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; import org.springframework.stereotype.Service; import javax.annotation.Resource; + +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.util.*; @@ -34,6 +35,7 @@ public class InventorychangeRecordMainServiceImpl implements InventorychangeReco private InventorychangeRecordMainMapper inventorychangeRecordMainMapper; @Override + @Transactional public Long createInventorychangeRecordMain(InventorychangeRecordMainCreateReqVO createReqVO) { // 插入 InventorychangeRecordMainDO inventorychangeRecordMain = InventorychangeRecordMainConvert.INSTANCE.convert(createReqVO); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java index 4748c880..3e451746 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java @@ -485,7 +485,6 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq } String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); inventorychangeRequestMainDO.setNumber(number); - inventorychangeRequestMainDO.setDepartmentCode(userApi.getUser(Long.valueOf(inventorychangeRequestMainDO.getCreator())).getDeptId().toString()); inventorychangeRequestMainMapper.insert(inventorychangeRequestMainDO); for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { inventorychangeRequestDetailDO.setNumber(inventorychangeRequestMainDO.getNumber()); @@ -586,7 +585,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq inventorychangeRequestDetailDO.setFromQty(balanceDO.getQty()); inventorychangeRequestDetailDO.setToQty(balanceDO.getQty()); inventorychangeRequestDetailDO.setQty(balanceDO.getQty()); - inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + inventorychangeRequestDetailDO.setFromArriveDate(balanceDO.getArriveDate()); inventorychangeRequestDetailDO.setFromProduceDate(balanceDO.getProduceDate()); inventorychangeRequestDetailDO.setFromExpireDate(balanceDO.getExpireDate()); inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate()); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java index 31294698..61589cd1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java @@ -295,7 +295,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ // 匹配任务子表与参数中子表 if (DetailUpdateItem.getId().equals(subListItem.getId())) { List> recordList = DetailUpdateItem.getRecordList(); - recordList.forEach(recordLstItem -> {InventorymoveRecordDetailDO inventorymoveRecordDetailDO = new InventorymoveRecordDetailDO(); + recordList.forEach(recordListItem -> {InventorymoveRecordDetailDO inventorymoveRecordDetailDO = new InventorymoveRecordDetailDO(); BeanUtils.copyProperties(DetailUpdateItem, inventorymoveRecordDetailDO); inventorymoveRecordDetailDO.setJobDetailId(DetailUpdateItem.getId().toString()); inventorymoveRecordDetailDO.setId(null); @@ -306,18 +306,18 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ inventorymoveRecordDetailDO.setNumber(inventorymoveRecordMainDO.getNumber()); inventorymoveRecordDetailDO.setInterfaceType(inventorymoveRecordMainDO.getInterfaceType()); inventorymoveRecordDetailDO.setMasterId(inventorymoveRecordMainDO.getId().toString()); - inventorymoveRecordDetailDO.setQty(new BigDecimal(recordLstItem.get("handleQty"))); - inventorymoveRecordDetailDO.setToPackingNumber(recordLstItem.get("toPackingNumber")==null?"":recordLstItem.get("toPackingNumber")); - inventorymoveRecordDetailDO.setToContainerNumber(recordLstItem.get("toContainerNumber")==null?"":recordLstItem.get("toContainerNumber")); - inventorymoveRecordDetailDO.setToBatch(recordLstItem.get("toBatch")==null?"":recordLstItem.get("toBatch")); - inventorymoveRecordDetailDO.setToLocationCode(recordLstItem.get("toLocationCode")); - LocationDO toLocationDO = locationService.selectLocation(recordLstItem.get("toLocationCode")); + inventorymoveRecordDetailDO.setQty(new BigDecimal(recordListItem.get("handleQty"))); + inventorymoveRecordDetailDO.setToPackingNumber(recordListItem.get("toPackingNumber")==null?"":recordListItem.get("toPackingNumber")); + inventorymoveRecordDetailDO.setToContainerNumber(recordListItem.get("toContainerNumber")==null?"":recordListItem.get("toContainerNumber")); + inventorymoveRecordDetailDO.setToBatch(recordListItem.get("toBatch")==null?"":recordListItem.get("toBatch")); + inventorymoveRecordDetailDO.setToLocationCode(recordListItem.get("toLocationCode")); + LocationDO toLocationDO = locationService.selectLocation(recordListItem.get("toLocationCode")); inventorymoveRecordDetailDO.setToAreaCode(toLocationDO.getAreaCode()); inventorymoveRecordDetailDO.setToLocationGroupCode(toLocationDO.getLocationGroupCode()); LocationDO fromLocationDO = locationService.selectLocation(inventorymoveRecordDetailDO.getFromLocationCode()); inventorymoveRecordDetailDO.setFromAreaCode(fromLocationDO.getAreaCode()); inventorymoveRecordDetailDO.setFromLocationGroupCode(fromLocationDO.getLocationGroupCode()); - inventorymoveRecordDetailDO.setToInventoryStatus(recordLstItem.get("toInventoryStatus")); + inventorymoveRecordDetailDO.setToInventoryStatus(recordListItem.get("toInventoryStatus")); inventorymoveRecordDetailDO.setFromPackingNumber(DetailUpdateItem.getPackingNumber()); inventorymoveRecordDetailDO.setFromContainerNumber(DetailUpdateItem.getContainerNumber()); inventorymoveRecordDetailDO.setFromAreaCode(inventorymoveJobMainDO.getFromAreaCodes()); @@ -343,7 +343,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ transactionCreateReqVO.setContainerNumber(DetailUpdateItem.getContainerNumber()); transactionCreateReqVO.setInventoryStatus(DetailUpdateItem.getInventoryStatus()); transactionCreateReqVO.setAmount(BigDecimal.ZERO); - transactionCreateReqVO.setLocationCode(recordLstItem.get("toLocationCode").toString()); + transactionCreateReqVO.setLocationCode(recordListItem.get("toLocationCode").toString()); transactionCreateReqVOList.add(transactionCreateReqVO); // 出动作 TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java index 0e3dbb4e..c7d8bda1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java @@ -1,11 +1,31 @@ package com.win.module.wms.service.inventorymoveRecord; 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.inventorymoveRecord.vo.InventorymoveRecordMainCreateReqVO; import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainExportReqVO; import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainPageReqVO; import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainUpdateReqVO; -import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.convert.inventorymoveRecord.InventorymoveRecordDetailConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordDetailDO; +import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; +import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO; +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.inventorymoveRecord.InventorymoveRecordDetailMapper; +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; @@ -19,6 +39,7 @@ import com.win.module.wms.convert.inventorymoveRecord.InventorymoveRecordMainCon import com.win.module.wms.dal.mysql.inventorymoveRecord.InventorymoveRecordMainMapper; 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.*; /** @@ -32,12 +53,121 @@ public class InventorymoveRecordMainServiceImpl implements InventorymoveRecordMa @Resource private InventorymoveRecordMainMapper inventorymoveRecordMainMapper; - + @Resource + private InventorymoveRecordDetailMapper inventorymoveRecordDetailMapper; + @Resource + private TransactionService transactionService; + @Resource + private BalanceMapper balanceMapper; + @Resource + private TrendsApi trendsApi; + @Resource + private JobUtils jobUtils; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private AdminUserApi userApi; + @Resource + private LocationService locationService; + @Resource + private RecordsettingService recordsettingService; @Override public Long createInventorymoveRecordMain(InventorymoveRecordMainCreateReqVO createReqVO) { + String number = ""; + RecordsettingDO recordsettingDO = null; + BusinesstypeDO businesstypeDO = null; // 插入 InventorymoveRecordMainDO inventorymoveRecordMain = InventorymoveRecordMainConvert.INSTANCE.convert(createReqVO); inventorymoveRecordMainMapper.insert(inventorymoveRecordMain); + // 插入 + InventorymoveRecordMainDO nventorymoveRecordMain = InventorymoveRecordMainConvert.INSTANCE.convert(createReqVO); + inventorymoveRecordMainMapper.insert(nventorymoveRecordMain); + InventorymoveRecordMainDO mainDO = InventorymoveRecordMainConvert.INSTANCE.convert(createReqVO); + List subDOList = InventorymoveRecordMainConvert.INSTANCE.convertList03(createReqVO.getSubList()); + if("HoldToOkRequest".equals(mainDO.getBusinessType())){ + number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_RECORD.getCode()); + recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToOkRecord"); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRecord"); + } else if("OkToHoldRequest".equals(mainDO.getBusinessType())){ + number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_RECORD.getCode()); + recordsettingDO = recordsettingService.selectRecordsettingExist("OkToHoldRecord"); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRecord"); + } else if("HoldToScrapRequest".equals(mainDO.getBusinessType())){ + number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_RECORD.getCode()); + recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToScrapRecord"); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRecord"); + } else if("ScrapToHoldRequest".equals(mainDO.getBusinessType())){ + number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_RECORD.getCode()); + recordsettingDO = recordsettingService.selectRecordsettingExist("ScrapToHoldRecord"); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRecord"); + } else if("OkToScrapRequest".equals(mainDO.getBusinessType())){ + number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode()); + recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord"); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord"); + } + mainDO.setNumber(number); + mainDO.setBusinessType(businesstypeDO.getCode()); + mainDO.setAvailable("TRUE"); + inventorymoveRecordMainMapper.insert(mainDO); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + for (InventorymoveRecordDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDO.getId().toString()); + detailDO.setNumber(number); + //由PDA给值进行赋值 + LocationDO fromLocationDO = locationService.selectLocation(detailDO.getFromLocationCode()); + detailDO.setFromLocationGroupCode(fromLocationDO.getLocationGroupCode()); + detailDO.setFromAreaCode(fromLocationDO.getAreaCode()); + LocationDO toLocationDO = locationService.selectLocation(detailDO.getToLocationCode()); + detailDO.setToLocationGroupCode(toLocationDO.getLocationGroupCode()); + detailDO.setToAreaCode(toLocationDO.getAreaCode()); + detailDO.setInterfaceType(mainDO.getInterfaceType()); + //添加库存事务入list + TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); + BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn); + //添加库存事务出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.getFromInventoryStatus()); + transactionCreateReqVOOut.setWorker(String.valueOf(userRespDTO.getId())); + transactionCreateReqVOOut.setBatch(detailDO.getFromBatch()); + transactionCreateReqVOOut.setPackingNumber(detailDO.getFromPackingNumber()); + transactionCreateReqVOOut.setLocationCode(detailDO.getFromLocationCode()); + 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(detailDO.getToInventoryStatus()); + transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode()); + transactionCreateReqVOIn.setWarehouseCode(mainDO.getToWarehouseCode()); + transactionCreateReqVOIn.setRecordNumber(number); + transactionCreateReqVOIn.setId(null); + //待确定库存事务信息 + transactionCreateReqVOList.add(transactionCreateReqVOIn); + } + } + inventorymoveRecordDetailMapper.insertBatch(subDOList); + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //增加操作记录 + trendsApi.createTrends(mainDO.getId(), "inventorymoveRecordMain", "增加了库存转移记录", TrendsTypeEnum.CREATE); // 返回 return inventorymoveRecordMain.getId(); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java index c6530318..7cd689e1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java @@ -2,6 +2,7 @@ package com.win.module.wms.service.inventorymoveRequest; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; @@ -23,6 +24,8 @@ import com.win.module.wms.convert.inventorymoveRecord.InventorymoveRecordMainCon import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestDetailConvert; import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordDetailDO; +import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordMainDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO; import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO; @@ -643,18 +646,33 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest } inventorymoveRecordMainCreateReqVO.setNumber(number); inventorymoveRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); + inventorymoveRecordMainCreateReqVO.setOutTransactionType(businesstypeDO.getOutTransactionType()); + inventorymoveRecordMainCreateReqVO.setInTransactionType(businesstypeDO.getInTransactionType()); inventorymoveRecordMainCreateReqVO.setInterfaceType(recordsettingDO.getInterfaceType()); - inventorymoveRecordMainMapper.insert(InventorymoveRecordMainConvert.INSTANCE.convert(inventorymoveRecordMainCreateReqVO)); + inventorymoveRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now()); + inventorymoveRecordMainCreateReqVO.setActiveDate(LocalDateTime.now()); + inventorymoveRecordMainCreateReqVO.setAvailable("TRUE"); + InventorymoveRecordMainDO recordMainDO = InventorymoveRecordMainConvert.INSTANCE.convert(inventorymoveRecordMainCreateReqVO); + inventorymoveRecordMainMapper.insert(recordMainDO); for (InventorymoveRequestDetailDO inventorymoveRequestDetailDO : detailDOList) { InventorymoveRecordDetailCreateReqVO inventorymoveRecordDetailCreateReqVO = new InventorymoveRecordDetailCreateReqVO(); - BeanUtils.copyProperties(inventorymoveRequestDetailDO, inventorymoveRecordDetailCreateReqVO); - inventorymoveRecordDetailCreateReqVO.setId(null); - inventorymoveRecordDetailCreateReqVO.setCreator(null); - inventorymoveRecordDetailCreateReqVO.setCreateTime(null); - inventorymoveRecordDetailCreateReqVO.setNumber(number); - inventorymoveRecordDetailMapper.insert(InventorymoveRecordDetailConvert.INSTANCE.convert(inventorymoveRecordDetailCreateReqVO)); + InventorymoveRecordDetailDO recordDetailDO = InventorymoveRecordDetailConvert.INSTANCE.convert(inventorymoveRecordDetailCreateReqVO); + BeanUtils.copyProperties(inventorymoveRequestDetailDO, recordDetailDO); + recordDetailDO.setId(null); + recordDetailDO.setCreator(null); + recordDetailDO.setCreateTime(null); + recordDetailDO.setNumber(number); + recordDetailDO.setMasterId(recordMainDO.getId().toString()); + LocationDO fromLocation = locationService.selectLocation(recordDetailDO.getFromLocationCode()); + recordDetailDO.setFromAreaCode(fromLocation.getAreaCode()); + recordDetailDO.setFromLocationGroupCode(fromLocation.getLocationGroupCode()); + LocationDO toLocationDO = locationService.selectLocation(recordDetailDO.getToLocationCode()); + recordDetailDO.setToAreaCode(toLocationDO.getAreaCode()); + recordDetailDO.setToLocationGroupCode(toLocationDO.getLocationGroupCode()); + recordDetailDO.setInterfaceType(recordsettingDO.getInterfaceType()); + inventorymoveRecordDetailMapper.insert(recordDetailDO); } - trendsApi.createTrends(InventorymoveRecordMainConvert.INSTANCE.convert(inventorymoveRecordMainCreateReqVO).getId(), recordsettingDO.getCode(), "库存转移申请生成库存转移记录", TrendsTypeEnum.CREATE); + trendsApi.createTrends(recordMainDO.getId(), recordsettingDO.getCode(), "库存转移申请生成库存转移记录", TrendsTypeEnum.CREATE); return; } InventorymoveJobMainDO inventorymoveJobMainDO = InventorymoveJobMainConvert.INSTANCE.convert(mainDO); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java index 31f511b1..80c748fc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java @@ -885,7 +885,8 @@ public class JobUtils { queryWrapperExpectout.isNotNull("packing_number"); if (balanceDO.getPackingNumber() != null && !balanceDO.getPackingNumber().equals("")) queryWrapperExpectout.eq("packing_number", balanceDO.getPackingNumber()); if (balanceDO.getBatch() != null && !balanceDO.getBatch().equals("")) queryWrapperExpectout.eq("batch", balanceDO.getBatch()); - queryWrapperExpectout.groupBy("item_code","packing_number", "batch"); +// queryWrapperExpectout.groupBy("item_code","packing_number", "batch"); + queryWrapperExpectout.groupBy("item_code"); ExpectoutDO expectoutDO = expectoutMapper.selectOne(queryWrapperExpectout); BigDecimal countQtyExpectout = new BigDecimal(0.000000); if (expectoutDO != null) { From c4f6d2593a9b507c5486ce6551d2f6e4b1745465 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 14:17:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=88=B6=E5=93=81=E6=94=B6=E8=B4=A7=20?= =?UTF-8?q?=E5=9B=9E=E5=86=B2=E8=AE=B0=E5=BD=95=20qty=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productreceiptJob/ProductreceiptJobMainServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java index a215a7ab..da3fdc67 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java @@ -437,6 +437,7 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe WorkstationDO workstationDO = workstationService.selectWorkstationExist(productreceiptRecordDetailDO.getWorkStationCode(),productreceiptRecordMainDO.getWorkshopCode(),productreceiptRecordDetailDO.getProductionlineCode()); backflushRecordDetailbDO.setFromLocationCode(workstationDO.getRawLocationCode()); // 根据 from_location_code 查询库存余额 +// TODO: 如果按批次 查询批次获取库存余额 排序批次 如果第一条批次不够数量 需要扣除第二条余额 库存事务出的动作要存2条 List inventoryStatus = new ArrayList(); inventoryStatus.add("OK"); List balanceDOList = balanceService.selectNumber(backflushRequestDetailbDO.getItemCode(),inventoryStatus,workstationDO.getRawLocationCode()); @@ -445,6 +446,9 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe backflushRecordDetailbDO.setInventoryStatus("OK"); backflushRecordDetailbDO.setFromAreaCode(balanceDOList.get(0).getAreaCode()); backflushRecordDetailbDO.setFromLocationGroupCode(balanceDOList.get(0).getLocationGroupCode()); + // 消耗数量 = 成品数量 * bom数量 + BigDecimal qty = productreceiptRecordDetailDO.getQty().multiply(backflushRecordDetailbDO.getQty()); + backflushRecordDetailbDO.setQty(qty); backflushRecordDetailbDOList.add(backflushRecordDetailbDO); //添加库存事务list // 出动作 @@ -465,6 +469,7 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe transactionCreateReqVO.setAmount(BigDecimal.ZERO); transactionCreateReqVO.setWarehouseCode(""); transactionCreateReqVO.setLocationCode(backflushRecordDetailbDO.getFromLocationCode()); + transactionCreateReqVO.setQty(qty); transactionCreateReqVOList.add(transactionCreateReqVO); // 判断 物品 是否为 下线结算物品 创建 下线结算记录 if (itembasicService.isOfflines(backflushRecordDetailbDO.getItemCode())) {