From 174d13f34accff3a0e48a886bb2a503c8bb6327a Mon Sep 17 00:00:00 2001 From: chenfang Date: Tue, 28 Nov 2023 13:30:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=90=E5=93=81=E5=8F=91=E8=B4=A7=E7=94=B3?= =?UTF-8?q?=E8=AF=B7/=E4=BB=BB=E5=8A=A1/=E8=AE=B0=E5=BD=95=20=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/DictTypeConstants.java | 2 + .../module/wms/enums/ErrorCodeConstants.java | 4 +- .../vo/CustomerreturnJobDetailBaseVO.java | 2 +- .../vo/CustomerreturnJobDetailPageReqVO.java | 3 + .../vo/CustomerreturnJobMainBaseVO.java | 2 + .../vo/CustomerreturnRecordMainBaseVO.java | 2 + .../vo/CustomerreturnRecordMainExcelVO.java | 2 +- .../deliverJob/DeliverJobMainController.java | 99 +++- .../deliverJob/vo/DeliverJobDetailBaseVO.java | 14 + .../vo/DeliverJobDetailPageReqVO.java | 3 + .../vo/DeliverJobDetailUpdateReqVO.java | 5 + .../deliverJob/vo/DeliverJobMainBaseVO.java | 2 + .../deliverJob/vo/DeliverJobMainExcelVO.java | 78 ++- .../vo/DeliverJobMainUpdateReqVO.java | 5 + .../DeliverPlanMainController.java | 19 +- .../vo/DeliverPlanMainImportVO.java | 8 +- .../DeliverRecordMainController.java | 109 ++-- .../vo/DeliverRecordMainBaseVO.java | 2 + .../vo/DeliverRecordMainExcelVO.java | 115 +++- .../DeliverRequestMainController.java | 69 ++- .../vo/DeliverRequestDetailBaseVO.java | 3 - .../vo/DeliverRequestDetailPageReqVO.java | 3 + .../vo/DeliverRequestImportVO.java | 24 +- .../vo/DeliverRequestMainExcelVO.java | 68 +++ .../expectout/vo/ExpectoutBaseVO.java | 1 - .../CustomerreturnRecordMainConvert.java | 3 +- .../deliverJob/DeliverJobDetailConvert.java | 2 + .../deliverJob/DeliverJobMainConvert.java | 18 + .../DeliverRecordMainConvert.java | 17 + .../DeliverRequestMainConvert.java | 18 +- .../DeliverRequestDetailDO.java | 18 +- .../deliverRequest/DeliverRequestMainDO.java | 9 +- .../CustomerreturnJobDetailMapper.java | 1 + .../deliverJob/DeliverJobDetailMapper.java | 5 + .../deliverJob/DeliverJobMainMapper.java | 19 +- .../DeliverRecordDetailMapper.java | 4 + .../DeliverRequestDetailMapper.java | 5 + .../DeliverRequestMainMapper.java | 9 +- .../CustomerreturnRequestMainServiceImpl.java | 6 +- .../deliverJob/DeliverJobDetailService.java | 1 + .../DeliverJobDetailServiceImpl.java | 5 + .../deliverJob/DeliverJobMainService.java | 28 + .../deliverJob/DeliverJobMainServiceImpl.java | 233 +++++++- .../DeliverPlanMainServiceImpl.java | 37 +- .../DeliverRecordDetailService.java | 1 + .../DeliverRecordDetailServiceImpl.java | 5 + .../DeliverRequestDetailService.java | 2 + .../DeliverRequestDetailServiceImpl.java | 85 ++- .../DeliverRequestMainService.java | 16 + .../DeliverRequestMainServiceImpl.java | 540 +++++++++++++----- 50 files changed, 1472 insertions(+), 259 deletions(-) diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java index 89fd43c5..c78717cc 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java @@ -79,4 +79,6 @@ public interface DictTypeConstants { String INSPECT_RESULT = "inspect_result";//检验结果 String COUNT_DIMENSION = "count_dimension"; // 盘点范围类型 String COUNT_TYPE = "count_type"; + String JOB_STATUS = "job_status";//任务状态 + String JOB_STAGE_STATUS = "job_stage_status";//任务阶段状态 } 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 8d7a9091..fdbf026b 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 @@ -749,6 +749,7 @@ public interface ErrorCodeConstants { ErrorCode DELIVER_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_119_005, "发货申请状态不支持审批同意"); ErrorCode DELIVER_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_119_006, "发货申请状态不支持处理"); ErrorCode DELIVER_REQUEST_CANNOT_ABORT = new ErrorCode(1_000_119_007, "发货申请状态不支持审批拒绝"); + ErrorCode DELIVER_REQUEST_CANNOT_RE_ADD = new ErrorCode(1_000_119_007, "发货申请状态不支持重新添加"); //发货任务ErrorCode ErrorCode DELIVER_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_120_000, "发货任务主不存在{}"); @@ -775,14 +776,13 @@ public interface ErrorCodeConstants { ErrorCode CUSTOMERRETURN_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_124_000, "客户退货申请不存在"); ErrorCode CUSTOMERRETURN_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_124_001, "客户退货申请子不存在"); ErrorCode CUSTOMERRETURN_REQUEST_NOT_EXISTS = new ErrorCode(1_000_124_002, "客户退货申请不存在"); - ErrorCode CUSTOMERRETURN_REQUEST_STATUS_NOT_NEW = new ErrorCode(1_000_124_003, "客户退货不是新增状态"); + ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_RE_ADD = new ErrorCode(1_000_124_003, "客户退货状态不支持重新添加"); ErrorCode CUSTOMERRETURN_REQUEST_JOB_EXISTS = new ErrorCode(1_000_124_004, "客户退货存在采购收货任务单"); ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_124_005, "客户退货状态不支持关闭"); ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_124_006, "客户退货状态不支持提交"); ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_124_007, "客户退货状态不支持审批同意"); ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_124_008, "客户退货状态不支持处理"); ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_ABORT = new ErrorCode(1_000_124_009, "客户退货状态不支持审批拒绝"); - ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_RE_ADD = new ErrorCode(1_000_124_010, "客户退货状态不支持重新添加"); //客户退货任务ErrorCode ErrorCode CUSTOMERRETURN_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_125_000, "客户退货任务主不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailBaseVO.java index 966b78de..bc6f6712 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailBaseVO.java @@ -90,7 +90,7 @@ public class CustomerreturnJobDetailBaseVO { @Schema(description = "到器具号") private String toContainerNumber; - @Schema(description = "到际批次") + @Schema(description = "到批次") private String toBatch; @Schema(description = "到库存状态") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailPageReqVO.java index c74a7e62..ba88b6bd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailPageReqVO.java @@ -78,4 +78,7 @@ public class CustomerreturnJobDetailPageReqVO extends PageParam { @Schema(description = "创建者Id") private String creator; + @Schema(description = "主表Id") + private String masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobMainBaseVO.java index efb969dd..b8ab8d16 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.customerreturnJob.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -113,6 +114,7 @@ public class CustomerreturnJobMainBaseVO { private String toLocationTypes; @Schema(description = "单据号") + @OnlyOne private String number; @Schema(description = "业务类型") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainBaseVO.java index 7f6563bd..7de85ff2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.customerreturnRecord.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -85,6 +86,7 @@ public class CustomerreturnRecordMainBaseVO { private String interfaceType; @Schema(description = "单据号") + @OnlyOne private String number; @Schema(description = "业务类型") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java index 3d7997f3..e8cf1587 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java @@ -205,7 +205,7 @@ public class CustomerreturnRecordMainExcelVO { private String interfaceTypeDetail; @ExcelProperty("任务明细ID") - private String jobDetailId; + private String jobDetailIdDetail; @ExcelProperty("从包装号") private String fromPackingNumber; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/DeliverJobMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/DeliverJobMainController.java index f6abfb5a..c9eab9e3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/DeliverJobMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/DeliverJobMainController.java @@ -1,10 +1,12 @@ package com.win.module.wms.controller.deliverJob; 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.convert.deliverJob.DeliverJobDetailConvert; import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobDetailDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.deliverJob.DeliverJobDetailService; import jodd.util.StringUtil; import org.springframework.web.bind.annotation.*; @@ -119,13 +121,63 @@ public class DeliverJobMainController { HttpServletResponse response) throws IOException { List list = deliverJobMainService.getDeliverJobMainList(exportReqVO); // 导出 Excel - List datas = DeliverJobMainConvert.INSTANCE.convertList02(list); - for(DeliverJobMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "发货任务.xls", "数据", DeliverJobMainExcelVO.class, resultList,mapDropDown); + } + + @GetMapping("/export-excel-senior") + @Operation(summary = "导出客户收货记录 Excel") + @PreAuthorize("@ss.hasPermission('wms:deliver-record-main:export')") + @OperateLog(type = EXPORT) + public void exportDeliverJobMainSeniorExcel(@Valid DeliverJobMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = deliverJobMainService.getDeliverJobMainList(exportReqVO); + // 导出 Excel + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "发货任务.xls", "数据", DeliverJobMainExcelVO.class, resultList,mapDropDown); + } + + private List getExcelVo(List list, Map mapDropDown) { + String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE); + mapDropDown.put(8, transferMode); + String[] jobStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.JOB_STATUS); + mapDropDown.put(14, jobStatus); + String[] jobStageStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.JOB_STAGE_STATUS); + mapDropDown.put(18, jobStageStatus); + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(26, locationType); + mapDropDown.put(27, locationType); + String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(35, trueFalse); + mapDropDown.put(36, trueFalse); + mapDropDown.put(37, trueFalse); + mapDropDown.put(38, trueFalse); + mapDropDown.put(39, trueFalse); + mapDropDown.put(40, trueFalse); + mapDropDown.put(41, trueFalse); + mapDropDown.put(42, trueFalse); + mapDropDown.put(43, trueFalse); + mapDropDown.put(44, trueFalse); + mapDropDown.put(45, trueFalse); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(50, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(61, uom); + List resultList = new ArrayList<>(); + // 导出 + for(DeliverJobMainDO mainDO : list) { + List subList = deliverJobDetailService.selectList(mainDO.getId()); + for(DeliverJobDetailDO detailDO : subList) { + DeliverJobMainExcelVO vo = DeliverJobMainConvert.INSTANCE.convert(mainDO, detailDO); + vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname()); + vo.setCreatorDetail(userApi.getUser(Long.valueOf(vo.getCreatorDetail())).getNickname()); + vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname()); + resultList.add(vo); + } } - ExcelUtils.write(response, "发货任务主.xls", "数据", DeliverJobMainExcelVO.class, datas); + return resultList; } @GetMapping("/getDeliverJobById") @@ -161,4 +213,39 @@ public class DeliverJobMainController { return success(countByStatus); } + @PutMapping("/accept") + @Operation(summary = "承接客户退货任务") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:deliver-job-main:accept')") + public CommonResult acceptDeliverJobMain(@RequestParam("id") Long id) { + Integer count = deliverJobMainService.acceptDeliverJobMain(id); + return success(count > 0); + } + + @PutMapping("/abandon") + @Operation(summary = "取消承接客户退货任务") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:deliver-job-main:abandon')") + public CommonResult abandonDeliverJobMain(@RequestParam("id") Long id) { + Integer count = deliverJobMainService.abandonDeliverJobMain(id); + return success(count > 0); + } + + @PutMapping("/close") + @Operation(summary = "关闭客户退货任务主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:deliver-job-main:close')") + public CommonResult closeDeliverJobMain(@RequestParam("id") Long id) { + Integer count = deliverJobMainService.closeDeliverJobMain(id); + return success(count > 0); + } + + @PutMapping("/execute") + @Operation(summary = "执行客户退货任务主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:deliver-job-main:execute')") + public CommonResult executeDeliverJobMain(@Valid @RequestBody DeliverJobMainUpdateReqVO updateReqVO) { + Integer count = deliverJobMainService.executeDeliverJobMain(updateReqVO); + return success(count > 0); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailBaseVO.java index e7401cb9..c8b45448 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailBaseVO.java @@ -81,4 +81,18 @@ public class DeliverJobDetailBaseVO { @Schema(description = "创建者Id") private String creator; + @Schema(description = "到包装号") + private String toPackingNumber; + + @Schema(description = "到器具号") + private String toContainerNumber; + + @Schema(description = "到批次") + private String toBatch; + + @Schema(description = "实际数量") + private BigDecimal handleQty; + + @Schema(description = "到库存状态") + private String toInventoryStatus; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailPageReqVO.java index 94801356..c3366b4a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailPageReqVO.java @@ -77,4 +77,7 @@ public class DeliverJobDetailPageReqVO extends PageParam { @Schema(description = "创建者Id") private String creator; + @Schema(description = "主表id") + private String masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailUpdateReqVO.java index 6882aafb..984fd80d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobDetailUpdateReqVO.java @@ -3,10 +3,15 @@ package com.win.module.wms.controller.deliverJob.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.util.List; +import java.util.Map; + @Schema(description = "管理后台 - 发货任务子更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class DeliverJobDetailUpdateReqVO extends DeliverJobDetailBaseVO { + @Schema(description = "子表记录数据") + private List> recordLst; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainBaseVO.java index 1f606400..a214878a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.deliverJob.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -107,6 +108,7 @@ public class DeliverJobMainBaseVO { private String toLocationTypes; @Schema(description = "单据号") + @OnlyOne private String number; @Schema(description = "业务类型") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainExcelVO.java index f170fa64..f05bc545 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainExcelVO.java @@ -1,7 +1,9 @@ package com.win.module.wms.controller.deliverJob.vo; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.*; +import java.math.BigDecimal; import java.time.LocalDateTime; import com.alibaba.excel.annotation.ExcelProperty; @@ -17,6 +19,9 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class DeliverJobMainExcelVO { + @ExcelProperty("单据号") + private String number; + @ExcelProperty("申请单号") private String requestNumber; @@ -42,8 +47,7 @@ public class DeliverJobMainExcelVO { @DictFormat("transfer_mode") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String transferMode; - @ExcelProperty(value = "车牌号", converter = DictConvert.class) - @DictFormat("vehicle_plate_number") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty("车牌号") private String vehiclePlateNumber; @ExcelProperty("从仓库代码") @@ -53,9 +57,11 @@ public class DeliverJobMainExcelVO { private String toWarehouseCode; @ExcelProperty("申请时间") + @ColumnWidth(value = 22) private LocalDateTime requestTime; @ExcelProperty("要求截止时间") + @ColumnWidth(value = 22) private LocalDateTime requestDueTime; @ExcelProperty(value = "状态", converter = DictConvert.class) @@ -63,9 +69,11 @@ public class DeliverJobMainExcelVO { private String status; @ExcelProperty("过期时间") + @ColumnWidth(value = 22) private LocalDateTime expiredTime; @ExcelProperty("最后更新时间") + @ColumnWidth(value = 22) private LocalDateTime updateTime; @ExcelProperty("最后更新者Id") @@ -88,12 +96,14 @@ public class DeliverJobMainExcelVO { private String acceptUserId; @ExcelProperty("承接时间") + @ColumnWidth(value = 22) private LocalDateTime acceptTime; @ExcelProperty("完成人用户ID") private String completeUserId; @ExcelProperty("完成时间") + @ColumnWidth(value = 22) private LocalDateTime completeTime; @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) @@ -104,9 +114,6 @@ public class DeliverJobMainExcelVO { @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String toLocationTypes; - @ExcelProperty("单据号") - private String number; - @ExcelProperty("业务类型") private String businessType; @@ -114,6 +121,7 @@ public class DeliverJobMainExcelVO { private String remark; @ExcelProperty("创建时间") + @ColumnWidth(value = 22) private LocalDateTime createTime; @ExcelProperty("创建者id") @@ -161,4 +169,64 @@ public class DeliverJobMainExcelVO { @ExcelProperty("允许修改箱码") private String allowModifyPackingNumber; + @ExcelProperty("销售订单号") + private String soNumber; + + @ExcelProperty("销售订单行") + private String soLine; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String inventoryStatus; + + @ExcelProperty("货主代码") + private String ownerCode; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String uom; + + @ExcelProperty("备注") + private String remarkDetail; + + @ExcelProperty("创建时间") + @ColumnWidth(value = 22) + private LocalDateTime createTimeDetail; + + @ExcelProperty("创建者Id") + private String creatorDetail; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainUpdateReqVO.java index b958570e..cfe483b7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverJob/vo/DeliverJobMainUpdateReqVO.java @@ -3,10 +3,15 @@ package com.win.module.wms.controller.deliverJob.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import javax.validation.Valid; +import java.util.List; + @Schema(description = "管理后台 - 发货任务主更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class DeliverJobMainUpdateReqVO extends DeliverJobMainBaseVO { + @Schema(description = "子表数据") + private List<@Valid DeliverJobDetailUpdateReqVO> subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/DeliverPlanMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/DeliverPlanMainController.java index 3d121002..af1b4ad1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/DeliverPlanMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/DeliverPlanMainController.java @@ -152,6 +152,12 @@ public class DeliverPlanMainController { @PreAuthorize("@ss.hasPermission('wms:deliver-plan-main:query')") public CommonResult> getDeliverPlanMainPage(@Valid DeliverPlanMainPageReqVO pageVO) { PageResult pageResult = deliverPlanMainService.getDeliverPlanMainPage(pageVO); + PageResult result = DeliverPlanMainConvert.INSTANCE.convertPage(pageResult); + for(DeliverPlanMainRespVO vo : result.getList()) { + //后端创建个字段作为前端展示的虚拟字段 + vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname()); + vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname()); + } return success(DeliverPlanMainConvert.INSTANCE.convertPage(pageResult)); } @PostMapping("/senior") @@ -161,7 +167,6 @@ public class DeliverPlanMainController { PageResult pageResult = deliverPlanMainService.getDeliverPlanMainSenior(conditions); PageResult result = DeliverPlanMainConvert.INSTANCE.convertPage(pageResult); for(DeliverPlanMainRespVO vo : result.getList()) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); //后端创建个字段作为前端展示的虚拟字段 vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname()); vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname()); @@ -176,14 +181,8 @@ public class DeliverPlanMainController { HttpServletResponse response) throws IOException { List list = deliverPlanMainService.getDeliverPlanMainList(exportReqVO); // 导出 Excel - List datas = DeliverPlanMainConvert.INSTANCE.convertList02(list); Map mapDropDown = new HashMap<>(); List resultList = this.getExcelVo(list, mapDropDown); - for(DeliverPlanMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } ExcelUtils.write(response, "发货计划主.xls", "数据", DeliverPlanMainExcelVO.class, resultList,mapDropDown); } @@ -197,7 +196,7 @@ public class DeliverPlanMainController { Map mapDropDown = new HashMap<>(); List resultList = this.getExcelVo(list, mapDropDown); // 导出 Excel - ExcelUtils.write(response, "采购收货申请主.xlsx", "数据", DeliverPlanMainExcelVO.class, resultList, mapDropDown); + ExcelUtils.write(response, "采购收货申请.xlsx", "数据", DeliverPlanMainExcelVO.class, resultList, mapDropDown); } private List getExcelVo(List list, Map mapDropDown) { @@ -214,8 +213,8 @@ public class DeliverPlanMainController { List subList = deliverPlanDetailService.selectListByID(mainDO.getId()); for(DeliverPlanDetailDO detailDO : subList) { DeliverPlanMainExcelVO vo = DeliverPlanMainConvert.INSTANCE.convert(mainDO, detailDO); - AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); - vo.setCreator(user.getNickname()); + vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname()); + vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname()); resultList.add(vo); } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainImportVO.java index 75e7585c..921d39b8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainImportVO.java @@ -1,6 +1,7 @@ package com.win.module.wms.controller.deliverPlan.vo; import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.convert.DictConvert; import com.win.module.wms.enums.DictTypeConstants; @@ -10,6 +11,7 @@ import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.math.BigDecimal; +import java.time.LocalDateTime; /** @@ -33,10 +35,12 @@ public class DeliverPlanMainImportVO { private String planDate; @ExcelProperty("开始日期") - private String beginTime; + @ColumnWidth(value = 21) + private LocalDateTime beginTime; @ExcelProperty("结束日期") - private String endTime; + @ColumnWidth(value = 21) + private LocalDateTime endTime; //子表数据 @ExcelProperty("销售订单号") 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 07638b8c..5d28577c 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 @@ -1,9 +1,17 @@ package com.win.module.wms.controller.deliverRecord; 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.deliverRecord.vo.DeliverRecordMainExcelVO; +import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainExportReqVO; import com.win.module.wms.controller.deliverRecord.vo.*; +import com.win.module.wms.convert.deliverRecord.DeliverRecordMainConvert; +import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; +import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordMainDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.deliverRecord.DeliverRecordDetailService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -26,8 +34,6 @@ import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*; -import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordMainDO; -import com.win.module.wms.convert.deliverRecord.DeliverRecordMainConvert; import com.win.module.wms.service.deliverRecord.DeliverRecordMainService; @Tag(name = "管理后台 - 发货记录主") @@ -38,33 +44,35 @@ public class DeliverRecordMainController { @Resource private DeliverRecordMainService deliverRecordMainService; + @Resource + private DeliverRecordDetailService deliverRecordDetailService; @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)); - } - - @PutMapping("/update") - @Operation(summary = "更新发货记录主") - @PreAuthorize("@ss.hasPermission('wms:deliver-record-main:update')") - public CommonResult updateDeliverRecordMain(@Valid @RequestBody DeliverRecordMainUpdateReqVO updateReqVO) { - deliverRecordMainService.updateDeliverRecordMain(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除发货记录主") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('wms:deliver-record-main:delete')") - public CommonResult deleteDeliverRecordMain(@RequestParam("id") Long id) { - deliverRecordMainService.deleteDeliverRecordMain(id); - return success(true); - } +// @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 = "更新发货记录主") +// @PreAuthorize("@ss.hasPermission('wms:deliver-record-main:update')") +// public CommonResult updateDeliverRecordMain(@Valid @RequestBody DeliverRecordMainUpdateReqVO updateReqVO) { +// deliverRecordMainService.updateDeliverRecordMain(updateReqVO); +// return success(true); +// } +// +// @DeleteMapping("/delete") +// @Operation(summary = "删除发货记录主") +// @Parameter(name = "id", description = "编号", required = true) +// @PreAuthorize("@ss.hasPermission('wms:deliver-record-main:delete')") +// public CommonResult deleteDeliverRecordMain(@RequestParam("id") Long id) { +// deliverRecordMainService.deleteDeliverRecordMain(id); +// return success(true); +// } @GetMapping("/get") @Operation(summary = "获得发货记录主") @@ -113,13 +121,50 @@ public class DeliverRecordMainController { HttpServletResponse response) throws IOException { List list = deliverRecordMainService.getDeliverRecordMainList(exportReqVO); // 导出 Excel - List datas = DeliverRecordMainConvert.INSTANCE.convertList02(list); - for(DeliverRecordMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "发货记录主.xls", "数据", DeliverRecordMainExcelVO.class, datas); + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "发货记录.xls", "数据", DeliverRecordMainExcelVO.class, resultList,mapDropDown); } + @GetMapping("/export-excel-senior") + @Operation(summary = "导出客户收货记录 Excel") + @PreAuthorize("@ss.hasPermission('wms:deliver-record-main:export')") + @OperateLog(type = EXPORT) + public void exportDeliverRecordMainSeniorExcel(@Valid DeliverRecordMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = deliverRecordMainService.getDeliverRecordMainList(exportReqVO); + // 导出 Excel + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "发货记录.xls", "数据", DeliverRecordMainExcelVO.class, resultList,mapDropDown); + } + + private List getExcelVo(List list, Map mapDropDown) { + String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE); + mapDropDown.put(8, transferMode); + String[] interfaceTypeDetail = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INTERFACE_TYPE); + mapDropDown.put(19, interfaceTypeDetail); + mapDropDown.put(59, interfaceTypeDetail); + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(25, locationType); + mapDropDown.put(27, locationType); + String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(30, available); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(35, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(57, uom); + List resultList = new ArrayList<>(); + // 导出 + for(DeliverRecordMainDO mainDO : list) { + List subList = deliverRecordDetailService.selectList(mainDO.getId()); + for(DeliverRecordDetailDO detailDO : subList) { + DeliverRecordMainExcelVO vo = DeliverRecordMainConvert.INSTANCE.convert(mainDO, detailDO); + vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname()); + vo.setCreatorDetail(userApi.getUser(Long.valueOf(vo.getCreatorDetail())).getNickname()); + resultList.add(vo); + } + } + return resultList; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainBaseVO.java index 67cd94fe..080fbc20 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.deliverRecord.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -85,6 +86,7 @@ public class DeliverRecordMainBaseVO { private String interfaceType; @Schema(description = "单据号") + @OnlyOne private String number; @Schema(description = "业务类型") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainExcelVO.java index ded9b085..b9f2ab3c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRecord/vo/DeliverRecordMainExcelVO.java @@ -1,7 +1,10 @@ package com.win.module.wms.controller.deliverRecord.vo; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + +import java.math.BigDecimal; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; @@ -22,6 +25,10 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class DeliverRecordMainExcelVO { + + @ExcelProperty("单据号") + private String number; + @ExcelProperty("申请单号") private String requestNumber; @@ -47,8 +54,7 @@ public class DeliverRecordMainExcelVO { @DictFormat("transfer_mode") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String transferMode; - @ExcelProperty(value = "车牌号", converter = DictConvert.class) - @DictFormat("vehicle_plate_number") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty("车牌号") private String vehiclePlateNumber; @ExcelProperty("从仓库代码") @@ -64,15 +70,19 @@ public class DeliverRecordMainExcelVO { private String inTransactionType; @ExcelProperty("执行时间") + @ColumnWidth(value = 22) private LocalDateTime executeTime; @ExcelProperty("生效日期") + @ColumnWidth(value = 22) private LocalDateTime activeDate; @ExcelProperty("申请时间") + @ColumnWidth(value = 22) private LocalDateTime requestTime; @ExcelProperty("截止时间") + @ColumnWidth(value = 22) private LocalDateTime dueTime; @ExcelProperty("部门") @@ -82,9 +92,6 @@ public class DeliverRecordMainExcelVO { @DictFormat("interface_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String interfaceType; - @ExcelProperty("单据号") - private String number; - @ExcelProperty("业务类型") private String businessType; @@ -92,6 +99,7 @@ public class DeliverRecordMainExcelVO { private String remark; @ExcelProperty("创建时间") + @ColumnWidth(value = 22) private LocalDateTime createTime; @ExcelProperty("创建者Id") @@ -117,7 +125,102 @@ public class DeliverRecordMainExcelVO { @ExcelProperty("从月台代码") private String fromDockCode; - @ExcelProperty("是否可用") + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat("true_false") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String available; + @ExcelProperty("销售订单号") + private String soNumber; + + @ExcelProperty("销售订单行") + private String soLine; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String inventoryStatus; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + + @ExcelProperty("从器具号") + private String fromContainerNumber; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("从库位组代码") + private String fromLocationGroupCode; + + @ExcelProperty("从库区代码") + private String fromAreaCode; + + @ExcelProperty("到货主代码") + private String toOwnerCode; + + @ExcelProperty("到器具号") + private String toContainerNumber; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("到库位组代码") + private String toLocationGroupCode; + + @ExcelProperty("到库区代码") + private String toAreaCode; + + @ExcelProperty("单价") + private BigDecimal singlePrice; + + @ExcelProperty("金额") + private BigDecimal amount; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("备注") + private String remarkDetail; + + @ExcelProperty("创建时间") + @ColumnWidth(value = 22) + private LocalDateTime createTimeDetail; + + @ExcelProperty("创建者Id") + private String creatorDetail; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String uom; + + @ExcelProperty("代码") + private String codeDetail; + + @ExcelProperty(value = "接口类型", converter = DictConvert.class) + @DictFormat("interface_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String interfaceTypeDetail; + + @ExcelProperty("任务明细ID") + private String jobDetailId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/DeliverRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/DeliverRequestMainController.java index 8690a32d..3de3f719 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/DeliverRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/DeliverRequestMainController.java @@ -5,7 +5,12 @@ import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ConvertUtil; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainExcelVO; +import com.win.module.wms.controller.rule.vo.RuleRespVO; +import com.win.module.wms.convert.deliverPlan.DeliverPlanMainConvert; import com.win.module.wms.convert.deliverRequest.DeliverRequestDetailConvert; +import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO; +import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.deliverRequest.DeliverRequestDetailService; @@ -126,13 +131,22 @@ public class DeliverRequestMainController { HttpServletResponse response) throws IOException { List list = deliverRequestMainService.getDeliverRequestMainList(exportReqVO); // 导出 Excel - List datas = DeliverRequestMainConvert.INSTANCE.convertList02(list); - for(DeliverRequestMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "发货申请主.xls", "数据", DeliverRequestMainExcelVO.class, datas); + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "发货申请.xls", "数据", DeliverRequestMainExcelVO.class, resultList,mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出发货计划主 Excel") + @PreAuthorize("@ss.hasPermission('wms:deliver-request-main:export')") + @OperateLog(type = EXPORT) + public void exportPurchasereceiptRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = deliverRequestMainService.getDeliverPlanMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "发货申请.xlsx", "数据", DeliverRequestMainExcelVO.class, resultList, mapDropDown); } @GetMapping("/getDeliverRequestById") @@ -160,7 +174,7 @@ public class DeliverRequestMainController { List list = new ArrayList<>(); Map mapDropDown = new HashMap<>(); String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); - mapDropDown.put(7, uom); + mapDropDown.put(6, uom); // 输出 ExcelUtils.write(response, "发货申请导入模板.xlsx", "发料申请信息列表", DeliverRequestImportVO.class, list, mapDropDown); } @@ -188,4 +202,43 @@ public class DeliverRequestMainController { } return success(returnMap); } + + private List getExcelVo(List list, Map mapDropDown) { + String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE); + mapDropDown.put(5, transferMode); + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(9, locationType); + mapDropDown.put(22, locationType); + String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS); + mapDropDown.put(19, requestStatus); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(32, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(43, uom); + List resultList = new ArrayList<>(); + // 导出 + for(DeliverRequestMainDO mainDO : list) { + List subList = deliverRequestDetailService.selectListByID(mainDO.getId()); + for(DeliverRequestDetailDO detailDO : subList) { + DeliverRequestMainExcelVO vo = DeliverRequestMainConvert.INSTANCE.convert(mainDO, detailDO); + AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); + vo.setCreator(user.getNickname()); + resultList.add(vo); + } + } + return resultList; + } + + @GetMapping("/page111") + public HashMap demo(){ + String batch = "BatchType\":\"1\", \"BatchFormat\":\"yyyyMMdd\", \"BatchDirection\":\"0\""; + HashMap batchRuleMap = new HashMap<>(); + String result = batch.replace("\"", ""); + String[] split = result.split(","); + for (String s : split) { + String[] split1 = s.split(":"); + batchRuleMap.put(split1[0],split1[1]); + } + return batchRuleMap; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestDetailBaseVO.java index ad166bdf..ef0ef5dc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestDetailBaseVO.java @@ -2,11 +2,8 @@ package com.win.module.wms.controller.deliverRequest.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; import java.time.LocalDateTime; import java.math.BigDecimal; -import java.time.LocalDateTime; -import javax.validation.constraints.*; import org.springframework.format.annotation.DateTimeFormat; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestDetailPageReqVO.java index 13fbd106..9dc06691 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestDetailPageReqVO.java @@ -85,4 +85,7 @@ public class DeliverRequestDetailPageReqVO extends PageParam { @Schema(description = "从货主代码") private String fromOwnerCode; + @Schema(description = "主表id") + private String masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestImportVO.java index f1a62524..24dd79cc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestImportVO.java @@ -1,10 +1,13 @@ package com.win.module.wms.controller.deliverRequest.vo; import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.convert.DictConvert; import com.win.module.wms.enums.DictTypeConstants; import java.math.BigDecimal; +import java.time.LocalDateTime; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -29,17 +32,19 @@ public class DeliverRequestImportVO { @ExcelProperty("客户") private String customerCode; - @ExcelProperty("计划日期") - private String planDate; - + @ExcelProperty("截止时间") + @ColumnWidth(value = 21) + private LocalDateTime dueTime; + @ExcelProperty("发货计划单号") + private String deliverPlanNumber; //子表数据 - @ExcelProperty("销售订单号") - private String soNumber; - - @ExcelProperty("销售订单行") - private BigDecimal soLine; +// @ExcelProperty("销售订单号") +// private String soNumber; +// +// @ExcelProperty("销售订单行") +// private BigDecimal soLine; @ExcelProperty("物品代码") private String itemCode; @@ -51,5 +56,6 @@ public class DeliverRequestImportVO { @DictFormat(DictTypeConstants.UOM) private String uom; - + @ExcelProperty("客户月台") + private String customerDockCode; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainExcelVO.java index ded5857d..0fef6388 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainExcelVO.java @@ -2,6 +2,8 @@ package com.win.module.wms.controller.deliverRequest.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + +import java.math.BigDecimal; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; @@ -113,4 +115,70 @@ public class DeliverRequestMainExcelVO { @ExcelProperty("直接生成记录") private String directCreateRecord; + //子表导出数据 +// @ExcelProperty("销售订单号") +// private String soNumber; +// +// @ExcelProperty("销售订单行") +// private String soLine; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String inventoryStatus; + + @ExcelProperty("到货主代码") + private String toOwnerCode; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("备注") + private String remarkDetail; + + @ExcelProperty("创建时间") + private LocalDateTime createTimeDetail; + + @ExcelProperty("创建者用户名") + private String creatorDetail; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String uom; + + @ExcelProperty("最后更新时间") + private LocalDateTime updateTimeDetail; + + @ExcelProperty("最后更新者用户名") + private String updaterDetail; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/expectout/vo/ExpectoutBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/expectout/vo/ExpectoutBaseVO.java index 252d7450..7103f5b0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/expectout/vo/ExpectoutBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/expectout/vo/ExpectoutBaseVO.java @@ -25,7 +25,6 @@ public class ExpectoutBaseVO { private String businessType; @Schema(description = "包装号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "包装号不能为空") private String packingNumber; @Schema(description = "物料代码", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordMainConvert.java index 7726f954..de71296b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordMainConvert.java @@ -46,7 +46,8 @@ public interface CustomerreturnRecordMainConvert { @Mapping(source = "detailDO.createTime", target = "createTimeDetail"), @Mapping(source = "detailDO.creator", target = "creatorDetail"), @Mapping(source = "detailDO.interfaceType", target = "interfaceTypeDetail"), - @Mapping(source = "detailDO.code", target = "code"), + @Mapping(source = "mainDO.code", target = "code"), + @Mapping(source = "detailDO.jobDetailId", target = "jobDetailIdDetail"), }) CustomerreturnRecordMainExcelVO convert(CustomerreturnRecordMainDO mainDO, CustomerreturnRecordDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverJob/DeliverJobDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverJob/DeliverJobDetailConvert.java index 2592f8ae..f2e130a8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverJob/DeliverJobDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverJob/DeliverJobDetailConvert.java @@ -8,6 +8,7 @@ import com.win.module.wms.controller.deliverJob.vo.DeliverJobDetailCreateReqVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobDetailExcelVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobDetailRespVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobDetailDO; @@ -34,4 +35,5 @@ public interface DeliverJobDetailConvert { List convertList02(List list); + DeliverJobDetailDO convert(DeliverRequestDetailDO deliverRequestDetailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverJob/DeliverJobMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverJob/DeliverJobMainConvert.java index d2b11237..a0ba48a4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverJob/DeliverJobMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverJob/DeliverJobMainConvert.java @@ -8,7 +8,11 @@ import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainCreateReqVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainExcelVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainRespVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobDetailDO; +import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobMainDO; @@ -34,4 +38,18 @@ public interface DeliverJobMainConvert { List convertList02(List list); + DeliverJobMainDO convert(DeliverRequestMainDO mainDO); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + @Mapping(source = "detailDO.remark", target = "remarkDetail"), + @Mapping(source = "detailDO.createTime", target = "createTimeDetail"), + @Mapping(source = "detailDO.creator", target = "creatorDetail"), + }) + DeliverJobMainExcelVO convert(DeliverJobMainDO mainDO, DeliverJobDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRecord/DeliverRecordMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRecord/DeliverRecordMainConvert.java index 20e04dee..d3fa08d8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRecord/DeliverRecordMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRecord/DeliverRecordMainConvert.java @@ -8,7 +8,10 @@ import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainCreateReq import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainExcelVO; import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainRespVO; import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordMainDO; @@ -34,4 +37,18 @@ public interface DeliverRecordMainConvert { List convertList02(List list); + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.interfaceType", target = "interfaceType"), + @Mapping(source = "detailDO.remark", target = "remarkDetail"), + @Mapping(source = "detailDO.createTime", target = "createTimeDetail"), + @Mapping(source = "detailDO.creator", target = "creatorDetail"), + @Mapping(source = "detailDO.interfaceType", target = "interfaceTypeDetail"), + @Mapping(source = "detailDO.code", target = "code"), + @Mapping(source = "detailDO.available", target = "available"), + }) + DeliverRecordMainExcelVO convert(DeliverRecordMainDO mainDO, DeliverRecordDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRequest/DeliverRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRequest/DeliverRequestMainConvert.java index 2c4b4674..e650138b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRequest/DeliverRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRequest/DeliverRequestMainConvert.java @@ -41,8 +41,22 @@ public interface DeliverRequestMainConvert { DeliverRequestMainDO convert(DeliverRequestMainBaseVO bean); @Mappings({ - @Mapping(source = "mainVo.number", target = "number"), + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "detailDo.createTime", target = "createTimeDetail"), + @Mapping(source = "detailDo.creator", target = "creatorDetail"), + @Mapping(source = "detailDo.updateTime", target = "updateTimeDetail"), + @Mapping(source = "detailDo.updater", target = "updaterDetail"), + @Mapping(source = "detailDo.remark", target = "remarkDetail"), }) - DeliverRequestImportErrorVO convert(DeliverRequestMainCreateReqVO mainVo, DeliverRequestDetailDO detailDo); + DeliverRequestMainExcelVO convert(DeliverRequestMainDO mainDO, DeliverRequestDetailDO detailDo); + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + }) + DeliverRequestImportErrorVO convert(DeliverRequestMainCreateReqVO mainDO, DeliverRequestDetailDO detailDo); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java index a8202580..caf820ee 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java @@ -1,5 +1,6 @@ package com.win.module.wms.dal.dataobject.deliverRequest; +import com.sun.xml.bind.v2.TODO; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -33,7 +34,7 @@ public class DeliverRequestDetailDO extends BaseDO { /** * 销售订单号 */ - @NotBlank +// @NotBlank private String soNumber; /** * 销售订单行 @@ -42,7 +43,7 @@ public class DeliverRequestDetailDO extends BaseDO { /** * 包装号 */ - + @NotBlank private String packingNumber; /** * 器具号 @@ -51,14 +52,14 @@ public class DeliverRequestDetailDO extends BaseDO { /** * 批次 */ - + @NotBlank private String batch; /** * 库存状态 * * 枚举 {@link TODO inventory_status 对应的类} */ - + @NotBlank private String inventoryStatus; /** * 到货主代码 @@ -67,6 +68,7 @@ public class DeliverRequestDetailDO extends BaseDO { /** * 到库位代码 */ + @NotBlank private String toLocationCode; /** * 主表ID @@ -84,6 +86,10 @@ public class DeliverRequestDetailDO extends BaseDO { * 地点ID */ private Long siteId; + /** + * 物品代码 + */ + private String itemCode; /** * 物品名称 */ @@ -114,10 +120,6 @@ public class DeliverRequestDetailDO extends BaseDO { * 并发乐观锁 */ private String concurrencyStamp; - /** - * 物品代码 - */ - private String itemCode; /** * 从货主代码 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java index 0626c394..aae3c99c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java @@ -1,5 +1,6 @@ package com.win.module.wms.dal.dataobject.deliverRequest; +import com.sun.xml.bind.v2.TODO; import lombok.*; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; @@ -42,6 +43,7 @@ public class DeliverRequestMainDO extends BaseDO { /** * 客户月台代码 */ + @NotBlank private String customerDockCode; /** * 承运商 @@ -62,7 +64,7 @@ public class DeliverRequestMainDO extends BaseDO { /** * 从仓库代码 */ - + @NotBlank private String fromWarehouseCode; /** * 到仓库代码 @@ -142,6 +144,7 @@ public class DeliverRequestMainDO extends BaseDO { /** * 到库区范围 */ + @NotBlank private String toAreaCodes; /** * 从月台代码 @@ -154,22 +157,18 @@ public class DeliverRequestMainDO extends BaseDO { /** * 自动提交 */ - @NotBlank private String autoCommit; /** * 自动通过 */ - @NotBlank private String autoAgree; /** * 自动执行 */ - @NotBlank private String autoExecute; /** * 直接生成记录 */ - @NotBlank private String directCreateRecord; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobDetailMapper.java index 018aa497..5b541b25 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobDetailMapper.java @@ -22,6 +22,7 @@ public interface CustomerreturnJobDetailMapper extends BaseMapperX selectPage(CustomerreturnJobDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eq(CustomerreturnJobDetailDO::getMasterId,reqVO.getMasterId()) .eqIfPresent(CustomerreturnJobDetailDO::getSoNumber, reqVO.getSoNumber()) .eqIfPresent(CustomerreturnJobDetailDO::getSoLine, reqVO.getSoLine()) .eqIfPresent(CustomerreturnJobDetailDO::getPackingNumber, reqVO.getPackingNumber()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverJob/DeliverJobDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverJob/DeliverJobDetailMapper.java index 3016352a..834846a0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverJob/DeliverJobDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverJob/DeliverJobDetailMapper.java @@ -22,6 +22,7 @@ public interface DeliverJobDetailMapper extends BaseMapperX default PageResult selectPage(DeliverJobDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eq(DeliverJobDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(DeliverJobDetailDO::getSoNumber, reqVO.getSoNumber()) .eqIfPresent(DeliverJobDetailDO::getSoLine, reqVO.getSoLine()) .eqIfPresent(DeliverJobDetailDO::getPackingNumber, reqVO.getPackingNumber()) @@ -73,4 +74,8 @@ public interface DeliverJobDetailMapper extends BaseMapperX .orderByDesc(DeliverJobDetailDO::getId)); } + default List selectList(Long masterId){ + return selectList(new LambdaQueryWrapperX() + .eq(DeliverJobDetailDO::getMasterId,masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverJob/DeliverJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverJob/DeliverJobMainMapper.java index b1c94573..012a3586 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverJob/DeliverJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverJob/DeliverJobMainMapper.java @@ -10,7 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainExportReqVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainPageReqVO; import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobMainDO; -import com.win.module.wms.dal.dataobject.productdismantleJob.ProductdismantleJobMainDO; +import com.win.module.wms.enums.order.OrderStatusEnum; import org.apache.ibatis.annotations.Mapper; /** @@ -136,4 +136,21 @@ public interface DeliverJobMainMapper extends BaseMapperX { } + default Long selectByRequestNumber(String number){ + return selectCount(new LambdaQueryWrapperX() + .eq(DeliverJobMainDO::getRequestNumber,number) + .ne(DeliverJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); + } + + /** + * 根据类型数和申请单号组查询任务数量 + * @param types + * @param requestNumber + * @return + */ + default Long selectListCount(Collection types, String requestNumber) { + return selectCount(new LambdaQueryWrapperX() + .in(DeliverJobMainDO::getStatus, types) + .eq(DeliverJobMainDO::getRequestNumber, requestNumber)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRecord/DeliverRecordDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRecord/DeliverRecordDetailMapper.java index 62c6127b..70132eef 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRecord/DeliverRecordDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRecord/DeliverRecordDetailMapper.java @@ -94,4 +94,8 @@ public interface DeliverRecordDetailMapper extends BaseMapperX selectList(Long masterId){ + return selectList(new LambdaQueryWrapperX() + .eq(DeliverRecordDetailDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestDetailMapper.java index 8d9c8f31..c439743d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestDetailMapper.java @@ -22,6 +22,7 @@ public interface DeliverRequestDetailMapper extends BaseMapperX selectPage(DeliverRequestDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eq(DeliverRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(DeliverRequestDetailDO::getSoNumber, reqVO.getSoNumber()) .eqIfPresent(DeliverRequestDetailDO::getSoLine, reqVO.getSoLine()) .eqIfPresent(DeliverRequestDetailDO::getPackingNumber, reqVO.getPackingNumber()) @@ -53,6 +54,7 @@ public interface DeliverRequestDetailMapper extends BaseMapperX selectList(DeliverRequestDetailExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() + .eq(DeliverRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(DeliverRequestDetailDO::getSoNumber, reqVO.getSoNumber()) .eqIfPresent(DeliverRequestDetailDO::getSoLine, reqVO.getSoLine()) .eqIfPresent(DeliverRequestDetailDO::getPackingNumber, reqVO.getPackingNumber()) @@ -78,4 +80,7 @@ public interface DeliverRequestDetailMapper extends BaseMapperX selectList(Long masterId){ + return selectList(new LambdaQueryWrapperX().eq(DeliverRequestDetailDO::getMasterId,masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestMainMapper.java index b3bffe62..a4c3e014 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestMainMapper.java @@ -10,8 +10,6 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainExportReqVO; import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainPageReqVO; import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; -import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; -import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; import com.win.module.wms.enums.order.OrderStatusEnum; import org.apache.ibatis.annotations.Mapper; @@ -104,4 +102,11 @@ public interface DeliverRequestMainMapper extends BaseMapperX selectSeniorList(CustomConditions conditions){ + return selectList(QueryWrapperUtils.structure(conditions)); + } + + default DeliverRequestMainDO selectByNumber(String number) { + return selectOne(DeliverRequestMainDO::getNumber, number); + } } 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 4ccafa47..bed2f654 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 @@ -5,7 +5,6 @@ import cn.hutool.core.exceptions.UtilException; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.util.validation.ValidationUtils; -import com.win.framework.web.core.util.WebFrameworkUtils; import com.win.module.infra.api.trends.TrendsApi; import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.dict.DictDataApi; @@ -278,6 +277,9 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque private void generateJob(CustomerreturnRequestMainDO mainDO, List detailDOList) { //跳过任务直接生成记录 if("TRUE".equals(mainDO.getDirectCreateRecord())) { + //如果直接生成记录 修改申请状态为已完成 + mainDO.setStatus("8"); + customerreturnRequestMainMapper.updateById(mainDO); CustomerreturnRecordMainCreateReqVO customerreturnRecordMainCreateReqVO = new CustomerreturnRecordMainCreateReqVO(); BeanUtils.copyProperties(mainDO, customerreturnRecordMainCreateReqVO); //记录主表数据 同名属性同名赋值 @@ -349,7 +351,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque customerreturnJobDetailDO.setUpdateTime(null); customerreturnJobDetailDO.setMasterId(customerreturnJobMainDO.getId()); customerreturnJobDetailDOList.add(customerreturnJobDetailDO); - //预计入 + //预计出 ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); BeanUtils.copyProperties(customerreturnJobDetailDO, expectinCreateReqVO); expectinCreateReqVO.setJobNumber(number); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobDetailService.java index 62c1beb8..dc40f4e9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobDetailService.java @@ -79,4 +79,5 @@ public interface DeliverJobDetailService { */ List getDeliverJobDetailList(DeliverJobDetailExportReqVO exportReqVO); + List selectList(Long masterId); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobDetailServiceImpl.java index 9661ad3d..4f0a227a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobDetailServiceImpl.java @@ -5,6 +5,7 @@ import com.win.module.wms.controller.deliverJob.vo.DeliverJobDetailCreateReqVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobDetailExportReqVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobDetailPageReqVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobDetailDO; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -87,4 +88,8 @@ public class DeliverJobDetailServiceImpl implements DeliverJobDetailService { return deliverJobDetailMapper.selectList(exportReqVO); } + @Override + public List selectList(Long masterId) { + return deliverJobDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainService.java index c0d561a7..7fe9fdae 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainService.java @@ -116,4 +116,32 @@ public interface DeliverJobMainService { * @return */ Map getCountByStatus(@Nullable Collection types); + + /** + * 关闭 + * @param id + * @return + */ + public Integer closeDeliverJobMain(Long id); + + /** + * 承接 + * @param id + * @return + */ + public Integer acceptDeliverJobMain(Long id); + + /** + * 取消 + * @param id + * @return + */ + public Integer abandonDeliverJobMain(Long id); + + /** + * 执行 + * @param updateReqVO + * @return + */ + public Integer executeDeliverJobMain(DeliverJobMainUpdateReqVO updateReqVO); } 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 5e745c46..fb16244d 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 @@ -1,28 +1,61 @@ package com.win.module.wms.service.deliverJob; 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.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.deliverJob.vo.DeliverJobDetailUpdateReqVO; +import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainUpdateReqVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainCreateReqVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainExportReqVO; import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainPageReqVO; -import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainUpdateReqVO; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobDetailDO; +import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobMainDO; +import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; +import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordMainDO; +import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; import com.win.module.wms.dal.dataobject.sale.SaleDetailDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; +import com.win.module.wms.dal.mysql.deliverRecord.DeliverRecordDetailMapper; +import com.win.module.wms.dal.mysql.deliverRecord.DeliverRecordMainMapper; +import com.win.module.wms.dal.mysql.deliverRequest.DeliverRequestMainMapper; +import com.win.module.wms.enums.job.JobStatusEnum; +import com.win.module.wms.enums.job.JobStatusState; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.deliverJob.DeliverJobDetailService; +import com.win.module.wms.service.expectout.ExpectoutService; +import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.purchase.PurchaseMainService; import com.win.module.wms.service.sale.SaleMainService; +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.math.BigDecimal; +import java.time.LocalDateTime; import java.util.*; -import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobMainDO; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.convert.deliverJob.DeliverJobMainConvert; import com.win.module.wms.dal.mysql.deliverJob.DeliverJobMainMapper; 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.*; /** @@ -42,6 +75,29 @@ public class DeliverJobMainServiceImpl implements DeliverJobMainService { @Resource private SaleMainService saleMainService; + @Resource + private AdminUserApi userApi; + @Resource + private TrendsApi trendsApi; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private JobUtils jobUtils; + @Resource + private DeliverJobDetailService deliverJobDetailService; + @Resource + private DeliverRecordMainMapper deliverRecordMainMapper; + @Resource + private DeliverRecordDetailMapper deliverRecordDetailMapper; + @Resource + private DeliverRequestMainMapper deliverRequestMainMapper; + @Resource + private ExpectoutService expectoutService; + @Resource + private TransactionService transactionService; + @Resource + private LocationService locationService; + @Override public Long createDeliverJobMain(DeliverJobMainCreateReqVO createReqVO) { // 插入 @@ -68,10 +124,12 @@ public class DeliverJobMainServiceImpl implements DeliverJobMainService { deliverJobMainMapper.deleteById(id); } - private void validateDeliverJobMainExists(Long id) { - if (deliverJobMainMapper.selectById(id) == null) { + private DeliverJobMainDO validateDeliverJobMainExists(Long id) { + DeliverJobMainDO deliverJobMainDO = deliverJobMainMapper.selectById(id); + if (deliverJobMainDO == null) { throw exception(DELIVER_JOB_MAIN_NOT_EXISTS); } + return deliverJobMainDO; } @Override @@ -129,4 +187,171 @@ public class DeliverJobMainServiceImpl implements DeliverJobMainService { map.put("count", l.intValue()); return map; } + + @Override + @Transactional + public Integer acceptDeliverJobMain(Long id) { + DeliverJobMainDO deliverJobMainDO = this.validateDeliverJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(deliverJobMainDO.getStatus()); + if(!jobStatusState.accept()) { + throw exception(DELIVER_JOB_MAIN_STATUS_ERROR); + } + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + deliverJobMainDO.setStatus(jobStatusState.getState().getCode()); + deliverJobMainDO.setAcceptUserId(String.valueOf(userId)); + deliverJobMainDO.setAcceptUserName(userRespDTO.getNickname()); + deliverJobMainDO.setAcceptTime(LocalDateTime.now()); + trendsApi.createTrends(id, "deliverJob", "承接了发货任务", TrendsTypeEnum.UPDATE); + return deliverJobMainMapper.updateById(deliverJobMainDO); + } + + @Override + @Transactional + public Integer abandonDeliverJobMain(Long id) { + DeliverJobMainDO deliverJobMainDO = this.validateDeliverJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(deliverJobMainDO.getStatus()); + if(!jobStatusState.cancelAccept()) { + throw exception(DELIVER_JOB_MAIN_STATUS_ERROR); + } + deliverJobMainDO.setStatus(jobStatusState.getState().getCode()); + deliverJobMainDO.setAcceptUserId(null); + deliverJobMainDO.setAcceptUserName(null); + deliverJobMainDO.setAcceptTime(null); + trendsApi.createTrends(id, "deliverJob", "取消了发货任务", TrendsTypeEnum.UPDATE); + return deliverJobMainMapper.updateById(deliverJobMainDO); + } + + @Override + @Transactional + public Integer closeDeliverJobMain(Long id) { + DeliverJobMainDO deliverJobMainDO = this.validateDeliverJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(deliverJobMainDO.getStatus()); + if(!jobStatusState.close()) { + throw exception(DELIVER_JOB_MAIN_STATUS_ERROR); + } + deliverJobMainDO.setStatus(jobStatusState.getState().getCode()); + trendsApi.createTrends(id, "deliverJob", "关闭了发货任务", TrendsTypeEnum.UPDATE); + return deliverJobMainMapper.updateById(deliverJobMainDO); + } + + @Override + @Transactional + public Integer executeDeliverJobMain(DeliverJobMainUpdateReqVO deliverJobMainUpdateReqVO) { + //查询数据 + DeliverJobMainDO deliverJobMainDO = this.validateDeliverJobMainExists(deliverJobMainUpdateReqVO.getId()); + List subList = deliverJobDetailService.selectList(deliverJobMainDO.getId()); + JobStatusState jobStatusState = new JobStatusState(deliverJobMainDO.getStatus()); + boolean flag = jobStatusState.execute(); + if(!flag) { + throw new ServiceException(DELIVER_JOB_MAIN_STATUS_ERROR); + } + //更新完成信息 + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + deliverJobMainDO.setStatus(jobStatusState.getState().getCode()); + deliverJobMainDO.setCompleteTime(LocalDateTime.now()); + deliverJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId())); + deliverJobMainDO.setCompleteUserName(userRespDTO.getNickname()); + //更新任务表状态 + int result = deliverJobMainMapper.updateById(deliverJobMainDO); + //创建客户收货记录主表 + DeliverRecordMainDO deliverRecordMainDO = new DeliverRecordMainDO(); + BeanUtils.copyProperties(deliverJobMainDO, deliverRecordMainDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_JOB.getCode()); + deliverRecordMainDO.setNumber(number); + deliverRecordMainDO.setJobNumber(deliverJobMainDO.getNumber()); + deliverRecordMainDO.setId(null); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverJob"); + deliverRecordMainDO.setBusinessType(businesstypeDO.getCode()); + deliverRecordMainMapper.insert(deliverRecordMainDO); + List deliverJobDetailUpdateReqVOList = deliverJobMainUpdateReqVO.getSubList(); + //退货记录子 + List deliverRecordDetailDOList = new ArrayList<>(); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + subList.forEach(subListItem -> { +// DeliverJobDetailUpdateReqVO DetailUpdateItem = null; +// for (DeliverJobDetailUpdateReqVO deliverJobDetailUpdateReqVO : deliverJobDetailUpdateReqVOList) { +// if (deliverJobDetailDO.getId().equals(deliverJobDetailUpdateReqVO.getId())) { +// DetailUpdateItem = deliverJobDetailUpdateReqVO; +// break; +// } +// } + deliverJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> { + // 匹配任务子表与参数中子表 + if (DetailUpdateItem.getId().equals(subListItem.getId())) { + List> recordLst = DetailUpdateItem.getRecordLst(); + recordLst.forEach(recordLstItem -> { + DeliverRecordDetailDO deliverRecordDetailDO = new DeliverRecordDetailDO(); + BeanUtils.copyProperties(DetailUpdateItem, deliverRecordDetailDO); + deliverRecordDetailDO.setJobDetailId(DetailUpdateItem.getId().toString()); + deliverRecordDetailDO.setId(null); + deliverRecordDetailDO.setCreator(null); + deliverRecordDetailDO.setCreateTime(null); + deliverRecordDetailDO.setUpdater(null); + deliverRecordDetailDO.setUpdateTime(null); + deliverRecordDetailDO.setNumber(number); + deliverRecordDetailDO.setMasterId(deliverRecordMainDO.getId().toString()); + // 根据recordLst 进行赋值子表部分数据 + deliverRecordDetailDO.setQty(new BigDecimal(recordLstItem.get("handleQty").toString())); + deliverRecordDetailDO.setPackingNumber(recordLstItem.get("toPackingNumber").toString()); + deliverRecordDetailDO.setToContainerNumber(recordLstItem.get("toContainerNumber").toString()); + deliverRecordDetailDO.setBatch(recordLstItem.get("toBatch").toString()); + deliverRecordDetailDO.setToLocationCode(recordLstItem.get("toLocationCode").toString()); + deliverRecordDetailDO.setInventoryStatus(recordLstItem.get("toInventoryStatus").toString()); + deliverRecordDetailDO.setToContainerNumber(DetailUpdateItem.getToContainerNumber()); + // 根据 to库位 查询 库位组 库区 + LocationDO locationDO = locationService.selectLocation(recordLstItem.get("toLocationCode").toString()); + deliverRecordDetailDO.setToLocationGroupCode(locationDO.getLocationGroupCode()); + deliverRecordDetailDO.setToAreaCode(locationDO.getAreaCode()); + // 根据 from库位 查询 库位组 库区 + LocationDO locationDOFrom = locationService.selectLocation(subListItem.getFromLocationCode()); + deliverRecordDetailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode()); + deliverRecordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode()); + deliverRecordDetailDOList.add(deliverRecordDetailDO); + //添加库存事务list + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(deliverRecordDetailDO, transactionCreateReqVO); + //增加业务类型 + transactionCreateReqVO.setBusinessType(businesstypeDO.getCode()); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVO.setBusinessType(deliverRecordMainDO.getBusinessType()); + transactionCreateReqVO.setLocationCode(deliverRecordDetailDO.getFromLocationCode()); + transactionCreateReqVO.setOwnerCode(deliverRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVO.setRecordNumber(number); + transactionCreateReqVO.setBatch(deliverRecordDetailDO.getBatch()); + transactionCreateReqVO.setPackingNumber(deliverRecordDetailDO.getPackingNumber()); + transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVO.setId(null); + transactionCreateReqVO.setAmount(BigDecimal.ZERO); + transactionCreateReqVOList.add(transactionCreateReqVO); + }); + } + }); + }); + deliverRecordDetailMapper.insertBatch(deliverRecordDetailDOList); + List typeList = new ArrayList<>(); + typeList.add(JobStatusEnum.PENDING.getCode()); + typeList.add(JobStatusEnum.PROCESSING.getCode()); + Long count = deliverJobMainMapper.selectListCount(typeList, deliverJobMainDO.getRequestNumber()); + DeliverRequestMainDO deliverRequestMainDO = deliverRequestMainMapper.selectByNumber(deliverJobMainDO.getRequestNumber()); + //申请单下所有任务全部完成 + if(count == 0) { + deliverRequestMainDO.setStatus(RequestStatusEnum.COMPLETED.getCode()); + deliverRequestMainMapper.updateById(deliverRequestMainDO); + } else if(deliverRequestMainDO.getStatus().equals(RequestStatusEnum.HANDLING.getCode())) {//部分完成 + deliverRequestMainDO.setStatus(RequestStatusEnum.PARTIAL.getCode()); + deliverRequestMainMapper.updateById(deliverRequestMainDO); + } + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //移除预计出 + expectoutService.deleteExpectoutByJobNumber(deliverJobMainDO.getNumber()); + //变更记录 + trendsApi.createTrends(deliverJobMainDO.getId(), "deliverJob", "执行了发货任务", TrendsTypeEnum.UPDATE); + return result; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java index 13ea4f07..51438278 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java @@ -5,6 +5,7 @@ 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; +import com.win.framework.common.util.validation.ValidationUtils; import com.win.module.infra.api.trends.TrendsApi; import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.dict.DictDataApi; @@ -38,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import javax.validation.Validator; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; @@ -85,9 +87,11 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { private RequestsettingService requestsettingService; @Resource private DictDataApi dictDataApi; - + @Resource + private Validator validator; @Override + @Transactional public Long createDeliverPlanMain(DeliverPlanMainCreateReqVO createReqVO) { RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverPlan"); DeliverPlanMainDO deliverPlanMainDO = validatorToCreate(createReqVO); @@ -142,10 +146,26 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { detailDOQueryWrapper.eq("itembasic",pitemCode); detailDOQueryWrapper.eq("available","TRUE"); deliverPlanDetailDO = deliverPlanDetailMapper.selectOne(detailDOQueryWrapper); +// 如果已发货数量=计划数量,更新计划明细状态为(开放 => 关闭) deliverPlanDetailDO.setShippedQty(pshippedQty); if(deliverPlanDetailDO.getPlanQty() == deliverPlanDetailDO.getShippedQty()){ deliverPlanDetailDO.setAvailable("FALSE"); } +// 如果全部明细状态为(关闭),更新计划状态为(已接受 => 完成) + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("master_id",deliverPlanMainDO.getId()); + List deliverPlanDetailDOS = deliverPlanDetailMapper.selectList(queryWrapper); + int size = deliverPlanDetailDOS.size(); + int count = 0 ; + for (DeliverPlanDetailDO planDetailDO : deliverPlanDetailDOS) { + if("FALSE".equals(planDetailDO.getAvailable())){ + count++; + } + } + if(count == size){ + deliverPlanMainDO.setStatus("7"); + deliverPlanMainMapper.updateById(deliverPlanMainDO); + } } ifDetailAllFinish(deliverPlanMainDO); } @@ -311,6 +331,7 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { } @Override + @Transactional public List importDeliverPlanMainList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { throw exception(DELIVERPLAN_MAIN_IMPORT_LIST_IS_EMPTY); @@ -326,7 +347,7 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { boolean flag = true; for (DeliverPlanDetailDO detailDO : subDOList) { String messageDetail = validateDeliverPlanDetailImport(detailDO, mainDo, businesstypeDO); - if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { DeliverPlanMainImportErrorVO importErrorVO = DeliverPlanMainConvert.INSTANCE.convert(createReqVO, detailDO); importErrorVO.setImportStatus("失败"); messageMain = messageMain + messageDetail; @@ -341,7 +362,7 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { if (businesstypeDO != null) { mainDo.setBusinessType(businesstypeDO.getCode()); } - String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_PLAN.getCode()); mainDo.setNumber(number); deliverPlanMainMapper.insert(mainDo); for (DeliverPlanDetailDO detailDO : subDOList) { @@ -382,6 +403,11 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { } catch (ServiceException ex) { messageMain += ex.getMessage() + ","; } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } return messageMain; } @@ -409,6 +435,11 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { // } catch (ServiceException ex) { // messageDetail += ex.getMessage() + ","; // } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } return messageDetail; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordDetailService.java index 6fb9cc0a..704e0ca3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordDetailService.java @@ -80,4 +80,5 @@ public interface DeliverRecordDetailService { */ List getDeliverRecordDetailList(DeliverRecordDetailExportReqVO exportReqVO); + List selectList(Long masterId); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordDetailServiceImpl.java index 68599956..28d3c7f7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordDetailServiceImpl.java @@ -5,6 +5,7 @@ import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordDetailCreateR import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordDetailExportReqVO; import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordDetailPageReqVO; import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordDetailDO; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -88,4 +89,8 @@ public class DeliverRecordDetailServiceImpl implements DeliverRecordDetailServic return deliverRecordDetailMapper.selectList(exportReqVO); } + @Override + public List selectList(Long masterId) { + return deliverRecordDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestDetailService.java index abf6ae49..e1632f7a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestDetailService.java @@ -8,6 +8,7 @@ import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailCreat import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailExportReqVO; import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailPageReqVO; import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO; import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO; import com.win.framework.common.pojo.PageResult; @@ -81,4 +82,5 @@ public interface DeliverRequestDetailService { */ List getDeliverRequestDetailList(DeliverRequestDetailExportReqVO exportReqVO); + List selectListByID(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestDetailServiceImpl.java index b4237788..62b74961 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestDetailServiceImpl.java @@ -1,14 +1,21 @@ package com.win.module.wms.service.deliverRequest; 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.dict.DictDataApi; +import com.win.module.system.api.dict.dto.DictDataRespDTO; import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailCreateReqVO; import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailExportReqVO; import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailPageReqVO; import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.service.itembasic.ItembasicService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; +import java.math.BigDecimal; import java.util.*; import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO; @@ -31,12 +38,21 @@ public class DeliverRequestDetailServiceImpl implements DeliverRequestDetailServ @Resource private DeliverRequestDetailMapper deliverRequestDetailMapper; + @Resource + private DictDataApi dictDataApi; + @Resource + private ItembasicService itembasicService; + @Resource + private TrendsApi trendsApi; @Override public Long createDeliverRequestDetail(DeliverRequestDetailCreateReqVO createReqVO) { // 插入 DeliverRequestDetailDO deliverRequestDetail = DeliverRequestDetailConvert.INSTANCE.convert(createReqVO); + validateDetailMethod(deliverRequestDetail); deliverRequestDetailMapper.insert(deliverRequestDetail); + trendsApi.createTrends(deliverRequestDetail.getId(), "deliverRequestDetail", "增加了发货申请子表", TrendsTypeEnum.CREATE); + // 返回 return deliverRequestDetail.getId(); } @@ -48,20 +64,25 @@ public class DeliverRequestDetailServiceImpl implements DeliverRequestDetailServ // 更新 DeliverRequestDetailDO updateObj = DeliverRequestDetailConvert.INSTANCE.convert(updateReqVO); deliverRequestDetailMapper.updateById(updateObj); + trendsApi.createTrends(updateObj.getId(), "deliverRequestDetail", "修改了发货申请子表", TrendsTypeEnum.UPDATE); + } @Override public void deleteDeliverRequestDetail(Long id) { // 校验存在 - validateDeliverRequestDetailExists(id); + DeliverRequestDetailDO deliverRequestDetailDO = validateDeliverRequestDetailExists(id); + trendsApi.createTrends(deliverRequestDetailDO.getId(), "deliverRequestDetail", "删除了发货申请子表", TrendsTypeEnum.DELETE); // 删除 deliverRequestDetailMapper.deleteById(id); } - private void validateDeliverRequestDetailExists(Long id) { - if (deliverRequestDetailMapper.selectById(id) == null) { + private DeliverRequestDetailDO validateDeliverRequestDetailExists(Long id) { + DeliverRequestDetailDO deliverRequestDetailDO = deliverRequestDetailMapper.selectById(id); + if (deliverRequestDetailDO == null) { throw exception(DELIVER_REQUEST_DETAIL_NOT_EXISTS); } + return deliverRequestDetailDO; } @Override @@ -89,4 +110,62 @@ public class DeliverRequestDetailServiceImpl implements DeliverRequestDetailServ return deliverRequestDetailMapper.selectList(exportReqVO); } + @Override + public List selectListByID(Long masterId){ + return deliverRequestDetailMapper.selectList(masterId); + } + + private DeliverRequestDetailDO validateDetailMethod(DeliverRequestDetailDO deliverRequestDetailDO) { + ItembasicDO itembasicDO = validatorItem(deliverRequestDetailDO); + deliverRequestDetailDO.setItemDesc1(itembasicDO.getDesc1()); + deliverRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); + deliverRequestDetailDO.setItemName(itembasicDO.getName()); + deliverRequestDetailDO.setProjectCode(itembasicDO.getProject()); + Isuom(itembasicDO.getUom(),deliverRequestDetailDO.getUom()); +// SaleDetailDO saleDetailDO =validatorSale(deliverRequestDetailDO.getSoNumber(),deliverRequestDetailDO.getSoLine(),deliverRequestDetailDO.getItemCode()); +// if(saleDetailDO!=null) { +// Isqty(saleDetailDO.getShippedQty(), deliverRequestDetailDO.getQty(), saleDetailDO.getOrderQty(), deliverRequestDetailDO.getSoNumber(), deliverRequestDetailDO.getSoLine(), deliverRequestDetailDO.getItemCode()); +// } + return deliverRequestDetailDO; + } + + /** + * 校验物品信息并赋值 + * @param detailDo + * @return + */ + private ItembasicDO validatorItem(DeliverRequestDetailDO detailDo) { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setProjectCode(itembasicDO.getProject()); + return itembasicDO; + } + + public String Isuom(String uom1, String uom2) { + DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1); + String value = dictDataRespDTO.getLabel(); + DictDataRespDTO dictDataRespDTO1 = dictDataApi.selectDictValue(uom2); + String value2 = dictDataRespDTO1.getLabel(); + if(value2.equals(value)){ + return "ture"; + }else { + throw exception(UOM_ERROR, value2); + } + } + + public String Isqty(BigDecimal shippedqty, BigDecimal detailqty, BigDecimal orderqty, String sonumber, String soline, String itemcode) { + BigDecimal resultqty = orderqty.subtract(shippedqty); + if( resultqty.compareTo(detailqty)>0 ) + return "TURE"; + else{ + throw exception(QTY_ERROR, detailqty,sonumber,soline,itemcode,resultqty); + } + } + +// private SaleDetailDO validatorSale(String SoNumber,String SoLine,String ItemCode ){ +// SaleDetailDO saleDetailDO =deliverJobMainService.saleDetailExist(SoNumber,SoLine,ItemCode ); +// return saleDetailDO; +// } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainService.java index cabaaabf..227ce945 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainService.java @@ -7,6 +7,7 @@ import com.win.framework.common.pojo.CustomConditions; import com.win.module.wms.controller.deliverRequest.vo.*; import com.win.module.wms.controller.issueRequest.vo.IssueRequestImportErrorVO; import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainCreateReqVO; +import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; import com.win.framework.common.pojo.PageResult; @@ -81,6 +82,21 @@ public interface DeliverRequestMainService { List getDeliverRequestMainList(DeliverRequestMainExportReqVO exportReqVO); + /** + * 获得发货计划主列表, 用于 Excel 导出 + * + * @param conditions 查询条件 + * @return 发货计划主列表 + */ + List getDeliverPlanMainList(CustomConditions conditions); + + public List importDeliverRequestList(List datas, Integer mode, boolean updatePart); + public Integer closeDeliverRequestMain(Long id); + public Integer reAddDeliverRequestMain(Long id); + public Integer submitDeliverRequestMain(Long id); + public Integer agreeDeliverRequestMain(Long id); + public Integer handleDeliverRequestMain(Long id); + public Integer abortDeliverRequestMain(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java index 7c7f6351..330a7d96 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java @@ -1,8 +1,7 @@ package com.win.module.wms.service.deliverRequest; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.exceptions.UtilException; -import com.win.framework.common.exception.ErrorCode; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.util.validation.ValidationUtils; import com.win.framework.dict.core.util.DictFrameworkUtils; @@ -11,36 +10,51 @@ import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.dict.DictDataApi; import com.win.module.system.api.dict.dto.DictDataRespDTO; import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.deliverRequest.vo.*; -import com.win.module.wms.controller.issueRequest.vo.*; +import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO; import com.win.module.wms.convert.deliverRequest.DeliverRequestDetailConvert; -import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert; -import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; +import com.win.module.wms.convert.deliverJob.DeliverJobDetailConvert; +import com.win.module.wms.convert.deliverJob.DeliverJobMainConvert; +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.customerdock.CustomerdockDO; import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO; -import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; -import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; +import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobDetailDO; +import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobMainDO; +import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.sale.SaleDetailDO; +import com.win.module.wms.dal.mysql.balance.BalanceMapper; +import com.win.module.wms.dal.mysql.customerreturnJob.CustomerreturnJobDetailMapper; +import com.win.module.wms.dal.mysql.deliverJob.DeliverJobDetailMapper; +import com.win.module.wms.dal.mysql.deliverJob.DeliverJobMainMapper; import com.win.module.wms.dal.mysql.deliverRequest.DeliverRequestDetailMapper; +import com.win.module.wms.dal.mysql.expectout.ExpectoutMapper; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.job.JobStatusEnum; import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.enums.request.RequestStatusState; import com.win.module.wms.service.customer.*; +import com.win.module.wms.service.customerdock.*; +import com.win.module.wms.service.expectout.ExpectoutService; import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.jobsetting.JobsettingService; import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.rule.RuleService; import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.validation.Validator; import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; -import java.math.BigDecimal; + import java.time.LocalDateTime; import java.util.*; -import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.convert.deliverRequest.DeliverRequestMainConvert; import com.win.module.wms.dal.mysql.deliverRequest.DeliverRequestMainMapper; @@ -61,7 +75,10 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService private DeliverRequestMainMapper deliverRequestMainMapper; @Resource - private DeliverRequestDetailMapper deliverRequestDetailMapper; + private DeliverRequestDetailMapper deliverRequestDetailMapper; + + @Resource + private DeliverJobMainMapper deliverJobMainMapper; @Resource private JobUtils jobUtils; @Resource @@ -69,6 +86,9 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService @Resource private SerialNumberApi serialNumberApi; + @Resource + private AdminUserApi userApi; + @Resource private Validator validator; @@ -80,109 +100,69 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService @Resource private CustomerService customerService; + @Resource + private CustomerdockService customerdockService; + + @Resource + private CustomerreturnJobDetailMapper customerreturnJobDetailMapper; @Resource private RequestsettingService requestsettingService; + @Resource + private ExpectoutService expectoutService; + @Resource private DeliverJobMainService deliverJobMainService; + @Resource + private DeliverJobDetailMapper deliverJobDetailMapper; + + @Resource + private RuleService ruleService; + + @Resource + private JobsettingService jobsettingService; + + @Resource + private BalanceMapper balanceMapper; + + @Resource + private ExpectoutMapper expectoutMapper; + @Override + @Transactional public Long createDeliverRequestMain(DeliverRequestMainCreateReqVO createReqVO) { // 插入 RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverRequest"); - DeliverRequestMainDO deliverRequestMain = validatorToCreate(createReqVO,requestsettingDO); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequest"); + DeliverRequestMainDO deliverRequestMain = validatorToCreate(createReqVO,businesstypeDO,requestsettingDO); //调用自动执行方法 if(RequestStatusEnum.HANDLING.getCode().equals(deliverRequestMain.getStatus())) { - + generateJob(deliverRequestMain,deliverRequestDetailMapper.selectList(deliverRequestMain.getId())); } trendsApi.createTrends(requestsettingDO.getId(), "DeliverRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE); return deliverRequestMain.getId(); } - private DeliverRequestMainDO validatorToCreate(DeliverRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { - BusinesstypeDO businesstypeDO = new BusinesstypeDO(); - DeliverRequestMainDO deliverRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); - List subList = createReqVO.getSubList(); - List subDOList = DeliverRequestDetailConvert.INSTANCE.convertList03(subList); - for (DeliverRequestDetailDO deliverRequestDetailDO : subDOList) { - validateDetailMethod(deliverRequestDetailDO); - } - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); - deliverRequestMainDO.setNumber(number); - deliverRequestMainMapper.insert(deliverRequestMainDO); - for (DeliverRequestDetailDO deliverRequestDetailDO : subDOList) { - deliverRequestDetailDO.setMasterId(deliverRequestMainDO.getId()); - deliverRequestDetailDO.setNumber(deliverRequestMainDO.getNumber()); - } - deliverRequestDetailMapper.insertBatch(subDOList); - return deliverRequestMainDO; - } - - private DeliverRequestMainDO validateMainMethod(DeliverRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){ - DeliverRequestMainDO deliverRequestMainDO = DeliverRequestMainConvert.INSTANCE.convert(baseVO); - deliverRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - deliverRequestMainDO.setRequestTime(LocalDateTime.now()); - requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverRequest"); - deliverRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); - deliverRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); - deliverRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); - deliverRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequest"); - deliverRequestMainDO.setBusinessType(businesstypeDO.getCode()); - deliverRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); - deliverRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); - deliverRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); - deliverRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); - return deliverRequestMainDO; - } - - private DeliverRequestDetailDO validateDetailMethod(DeliverRequestDetailDO deliverRequestDetailDO) { - ItembasicDO itembasicDO = validatoritemcode(deliverRequestDetailDO.getItemCode()); - deliverRequestDetailDO.setItemDesc1(itembasicDO.getDesc1()); - deliverRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); - deliverRequestDetailDO.setItemName(itembasicDO.getName()); - deliverRequestDetailDO.setProjectCode(itembasicDO.getProject()); - Isuom(itembasicDO.getUom(),deliverRequestDetailDO.getUom()); - SaleDetailDO saleDetailDO =validatorSale(deliverRequestDetailDO.getSoNumber(),deliverRequestDetailDO.getSoLine(),deliverRequestDetailDO.getItemCode()); - if(saleDetailDO!=null) { - Isqty(saleDetailDO.getShippedQty(), deliverRequestDetailDO.getQty(), saleDetailDO.getOrderQty(), deliverRequestDetailDO.getSoNumber(), deliverRequestDetailDO.getSoLine(), deliverRequestDetailDO.getItemCode()); - } - return deliverRequestDetailDO; - } @Override + @Transactional public void updateDeliverRequestMain(DeliverRequestMainUpdateReqVO updateReqVO) { RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverRequest"); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequest"); // 校验存在 validateDeliverRequestMainExists(updateReqVO.getId()); // 更新 - DeliverRequestMainDO deliverRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); - if(RequestStatusEnum.HANDLING.getCode().equals(deliverRequestMainDO.getStatus())) { - - } - trendsApi.createTrends(requestsettingDO.getId(), "DeliverRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE); - } - private DeliverRequestMainDO validatorToUpdate(DeliverRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { - BusinesstypeDO businesstypeDO = new BusinesstypeDO(); DeliverRequestMainDO deliverRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); - //子表校验 - List subList = updateReqVO.getSubList(); - if(subList!=null){ - List subDOList = DeliverRequestDetailConvert.INSTANCE.convertList03(subList); - for (DeliverRequestDetailDO issueRequestDetailDO : subDOList) { - validateDetailMethod(issueRequestDetailDO); - deliverRequestDetailMapper.updateBatch(subDOList); - } - } deliverRequestMainMapper.updateById(deliverRequestMainDO); - return deliverRequestMainDO; + if(RequestStatusEnum.HANDLING.getCode().equals(deliverRequestMainDO.getStatus())) { + generateJob(deliverRequestMainDO,deliverRequestDetailMapper.selectList(deliverRequestMainDO.getId())); + } + trendsApi.createTrends(requestsettingDO.getId(), "DeliverRequest", "修改了制品上架申请", TrendsTypeEnum.UPDATE); } - - - - @Override + @Transactional public void deleteDeliverRequestMain(Long id) { // 校验存在 validateDeliverRequestMainExists(id); @@ -190,10 +170,12 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService deliverRequestMainMapper.deleteById(id); } - private void validateDeliverRequestMainExists(Long id) { - if (deliverRequestMainMapper.selectById(id) == null) { + private DeliverRequestMainDO validateDeliverRequestMainExists(Long id) { + DeliverRequestMainDO deliverRequestMainDO = deliverRequestMainMapper.selectById(id); + if (deliverRequestMainDO == null) { throw exception(DELIVER_REQUEST_MAIN_NOT_EXISTS); } + return deliverRequestMainDO; } @Override @@ -220,30 +202,225 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService public List getDeliverRequestMainList(DeliverRequestMainExportReqVO exportReqVO) { return deliverRequestMainMapper.selectList(exportReqVO); } - public String Isuom(String uom1, String uom2) { - DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1); - String value = dictDataRespDTO.getLabel(); - DictDataRespDTO dictDataRespDTO1 = dictDataApi.selectDictValue(uom2); - String value2 = dictDataRespDTO1.getLabel(); - if(value2.equals(value)){ - return "ture"; - }else { - throw exception(UOM_ERROR, value2); + + @Override + public List getDeliverPlanMainList(CustomConditions conditions) { + return deliverRequestMainMapper.selectSeniorList(conditions); + } + +// @Override + @Override + public Integer closeDeliverRequestMain(Long id) { + // 校验存在存在下级单据 + DeliverRequestMainDO mainDO = validateDeliverRequestMainExists(id); + Long count = deliverJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(DELIVER_REQUEST_JOB_EXISTS); } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.close(); + if(!flag) { + throw new ServiceException(DELIVER_REQUEST_CANNOT_CLOSE); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "deliverRequest", "关闭了发货申请", TrendsTypeEnum.UPDATE); + return deliverRequestMainMapper.updateById(mainDO); } - public String Isqty(BigDecimal shippedqty, BigDecimal detailqty, BigDecimal orderqty,String sonumber,String soline,String itemcode) { - BigDecimal resultqty = orderqty.subtract(shippedqty); - if( resultqty.compareTo(detailqty)>0 ) - return "TURE"; - else{ - throw exception(QTY_ERROR, detailqty,sonumber,soline,itemcode,resultqty); + + @Override + @Transactional + public Integer reAddDeliverRequestMain(Long id) { + // 校验存在存在下级单据 + DeliverRequestMainDO mainDO = validateDeliverRequestMainExists(id); + Long count = deliverJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(DELIVER_REQUEST_JOB_EXISTS); } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.reAdd(); + if(!flag) { + throw new ServiceException(DELIVER_REQUEST_CANNOT_RE_ADD); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "deliverRequest", "打开了发货申请", TrendsTypeEnum.UPDATE); + return deliverRequestMainMapper.updateById(mainDO); } + +// @Override + @Transactional + @Override + public Integer submitDeliverRequestMain(Long id) { + DeliverRequestMainDO mainDO = validateDeliverRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); + if(!flag) { + throw new ServiceException(DELIVER_REQUEST_CANNOT_SUBMIT); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, deliverRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "deliverRequest", "提交了发货申请", TrendsTypeEnum.UPDATE); + return deliverRequestMainMapper.updateById(mainDO); + } + +// @Override + @Transactional + @Override + public Integer agreeDeliverRequestMain(Long id) { + // 校验存在 + DeliverRequestMainDO mainDO = validateDeliverRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.agree(mainDO.getAutoExecute()); + if(!flag) { + throw new ServiceException(DELIVER_REQUEST_CANNOT_AGREE); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, deliverRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "deliverRequest", "审批同意了发货申请", TrendsTypeEnum.UPDATE); + return deliverRequestMainMapper.updateById(mainDO); + } + +// @Override + @Transactional + @Override + public Integer handleDeliverRequestMain(Long id) { + // 校验存在 + DeliverRequestMainDO mainDO = validateDeliverRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.handle(); + if(!flag) { + throw new ServiceException(DELIVER_REQUEST_CANNOT_HANDLE); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用执行方法 + this.generateJob(mainDO, deliverRequestDetailMapper.selectList(mainDO.getId())); + trendsApi.createTrends(id, "deliverRequest", "执行了发货申请", TrendsTypeEnum.UPDATE); + return deliverRequestMainMapper.updateById(mainDO); + } + +// @Override + @Transactional + @Override + public Integer abortDeliverRequestMain(Long id) { + // 校验存在 + DeliverRequestMainDO mainDO = validateDeliverRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.refused(); + if(!flag) { + throw new ServiceException(DELIVER_REQUEST_CANNOT_ABORT); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + trendsApi.createTrends(id, "deliverRequest", "审批拒绝了发货申请", TrendsTypeEnum.UPDATE); + return deliverRequestMainMapper.updateById(mainDO); + } + + /** + * 生成采购收货任务,不要改动事务传播方式,否则会有事务问题 + * @param mainDO 采购收货主 + * @param detailDOList 采购收货子 + */ + private void generateJob(DeliverRequestMainDO mainDO, List detailDOList) { + DeliverJobMainDO deliverJobMainDO = DeliverJobMainConvert.INSTANCE.convert(mainDO); + BeanUtils.copyProperties(mainDO, deliverJobMainDO); + deliverJobMainDO.setRequestNumber(mainDO.getNumber()); + deliverJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_JOB.getCode()); + deliverJobMainDO.setNumber(number); + deliverJobMainDO.setId(null); + deliverJobMainDO.setRequestTime(mainDO.getRequestTime()); + deliverJobMainDO.setRequestDueTime(mainDO.getDueTime()); + deliverJobMainDO.setCreator(null); + deliverJobMainDO.setCreateTime(null); + deliverJobMainDO.setUpdater(null); + deliverJobMainDO.setUpdateTime(null); + // 获取任务单据设置 + JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("DeliverJob"); + deliverJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); + deliverJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); + deliverJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); + deliverJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); + deliverJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); + deliverJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); + deliverJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); + deliverJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); + deliverJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); + deliverJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverJob"); + deliverJobMainDO.setBusinessType(businesstypeDO.getCode()); + deliverJobMainMapper.insert(deliverJobMainDO); + List expectpoutCreateReqVOList = new ArrayList<>(); + List deliverJobDetailDOList = new ArrayList<>(); + detailDOList.forEach(item -> { + // 根据批次策略/下架策略 返回 库存余额DO + List balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),"OK",item.getProjectCode(),item.getQty()); + // 根据 查询出所需数据 解析成 任务子表数据 + balanceDOListJob.forEach(balanceDOItem -> { + DeliverJobDetailDO deliverJobDetailDo = new DeliverJobDetailDO(); + BeanUtils.copyProperties(item, deliverJobDetailDo); + deliverJobDetailDo.setId(null); + deliverJobDetailDo.setCreateTime(null); + deliverJobDetailDo.setCreator(null); + deliverJobDetailDo.setUpdateTime(null); + deliverJobDetailDo.setUpdater(null); + deliverJobDetailDo.setProjectCode(item.getProjectCode()); + deliverJobDetailDo.setPackingNumber(balanceDOItem.getPackingNumber()); + deliverJobDetailDo.setContainerNumber(balanceDOItem.getContainerNumber()); + deliverJobDetailDo.setBatch(balanceDOItem.getBatch()); + deliverJobDetailDo.setFromLocationCode(balanceDOItem.getLocationCode()); + deliverJobDetailDo.setToLocationCode(item.getToLocationCode()); + deliverJobDetailDo.setItemCode(item.getItemCode()); + deliverJobDetailDo.setItemName(item.getItemName()); + deliverJobDetailDo.setItemDesc1(item.getItemDesc1()); + deliverJobDetailDo.setItemDesc2(item.getItemDesc2()); + deliverJobDetailDo.setProjectCode(item.getProjectCode()); + deliverJobDetailDo.setQty(item.getQty()); + deliverJobDetailDo.setUom(item.getUom()); + deliverJobDetailDo.setNumber(deliverJobMainDO.getNumber()); + deliverJobDetailDo.setMasterId(deliverJobMainDO.getId()); + deliverJobDetailDo.setInventoryStatus(item.getInventoryStatus()); + deliverJobDetailDOList.add(deliverJobDetailDo); + //预计出 + ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO(); + BeanUtils.copyProperties(deliverJobDetailDo, expectoutCreateReqVO); + expectoutCreateReqVO.setJobNumber(number); + expectoutCreateReqVO.setBusinessType(deliverJobMainDO.getBusinessType()); + expectoutCreateReqVO.setLocationCode(deliverJobDetailDo.getFromLocationCode()); + expectoutCreateReqVO.setBatch(deliverJobDetailDo.getBatch()); + expectoutCreateReqVO.setOwnerCode(deliverJobDetailDo.getOwnerCode()); + expectoutCreateReqVO.setQty(deliverJobDetailDo.getQty()); + expectoutCreateReqVO.setInventoryStatus("OK"); + expectpoutCreateReqVOList.add(expectoutCreateReqVO); + }); + }); + deliverJobDetailMapper.insertBatch(deliverJobDetailDOList); + //增加预计入 + expectoutService.createExpectout(expectpoutCreateReqVOList); + trendsApi.createTrends(deliverJobMainDO.getId(), "DeliverJob", "成品发货申请生成成品发货任务", TrendsTypeEnum.CREATE); + } + private String validateDeliverRequestMainImport(DeliverRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { StringBuilder message = new StringBuilder(); - - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - mainDo.setRequestTime(LocalDateTime.now()); + try{ + validatorcustomercode(mainDo.getCustomerCode()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + CustomerdockDO customerdockDO = validatorcustomerDockCode(mainDo.getCustomerCode(),mainDo.getCustomerDockCode()); + if(customerdockDO == null){ + message.append("未查找到客户" + mainDo.getCustomerCode() + "与" + "客户月台" + mainDo.getCustomerDockCode() + "相关的数据"); + }else { + mainDo.setToWarehouseCode(customerdockDO.getWarehouseCode()); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverRequest"); if (requestsettingDO == null) { message.append("未查找到发料申请的相关申请设置"); @@ -252,8 +429,10 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(mainDo.getAutoCommit(), mainDo.getAutoAgree(), mainDo.getAutoExecute()); + mainDo.setStatus(requestStatusState.getState().getCode()); } - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequest"); if(businesstypeDO == null){ message.append("根据单据设置未查找到发料申请的相关业务类型"); }else { @@ -270,26 +449,9 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService } return message.toString(); } - private void validatorcustomercode(String code){ - customerService.selectCustomerExist(code); - } - private ItembasicDO validatoritemcode(String code){ - ItembasicDO itembasicDO = itembasicService.selectItembasic(code); - return itembasicDO; - } - - private SaleDetailDO validatorSale(String SoNumber,String SoLine,String ItemCode ){ - SaleDetailDO saleDetailDO =deliverJobMainService.saleDetailExist(SoNumber,SoLine,ItemCode ); - return saleDetailDO; - } - private String validateIssueRequestDetailImport(DeliverRequestDetailDO detailDo, DeliverRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + private String validateIssueRequestDetailImport(DeliverRequestDetailDO detailDo) { StringBuilder message = new StringBuilder(); - try{ - validatorcustomercode(mainDo.getCustomerCode()); - } catch (Exception ex) { - message.append(ex.getMessage()).append(","); - } try { ItembasicDO itembasicDO = validatoritemcode(detailDo.getItemCode()); detailDo.setItemDesc1(itembasicDO.getDesc1()); @@ -304,18 +466,19 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService }catch (Exception ex) { message.append(ex.getMessage()).append(","); } - try{ - SaleDetailDO saleDetailDO =validatorSale(detailDo.getSoNumber(),detailDo.getSoLine(),detailDo.getItemCode()); - if(saleDetailDO!=null) { - try { - Isqty(saleDetailDO.getShippedQty(), detailDo.getQty(), saleDetailDO.getOrderQty(), detailDo.getSoNumber(), detailDo.getSoLine(), detailDo.getItemCode()); - } catch (Exception ex) { - message.append(ex.getMessage()).append(","); - } - } - }catch (Exception ex) { - message.append(ex.getMessage()).append(","); - } + //TODO 暂时滞后 等待销售订单开发后再启动 +// try{ +// SaleDetailDO saleDetailDO = validatorSale(detailDo.getSoNumber(),detailDo.getSoLine(),detailDo.getItemCode()); +// if(saleDetailDO!=null) { +// try { +// Isqty(saleDetailDO.getShippedQty(), detailDo.getQty(), saleDetailDO.getOrderQty(), detailDo.getSoNumber(), detailDo.getSoLine(), detailDo.getItemCode()); +// } catch (Exception ex) { +// message.append(ex.getMessage()).append(","); +// } +// } +// }catch (Exception ex) { +// message.append(ex.getMessage()).append(","); +// } try { ValidationUtils.validate(validator, detailDo); } catch (Exception ex) { @@ -324,9 +487,6 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService return message.toString(); } - - - @Override @Transactional public List importDeliverRequestList(List datas, Integer mode, boolean updatePart){ @@ -335,7 +495,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequest"); DeliverRequestMainDO mainDo = DeliverRequestMainConvert.INSTANCE.convert(createReqVO); String messageMain = validateDeliverRequestMainImport(mainDo, businesstypeDO); List subList = createReqVO.getSubList(); @@ -343,7 +503,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService // 是否有错误数据 boolean flag = true; for (DeliverRequestDetailDO detailDO : subDOList) { - String messageDetail = validateIssueRequestDetailImport(detailDO, mainDo, businesstypeDO); + String messageDetail = validateIssueRequestDetailImport(detailDO); if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { DeliverRequestImportErrorVO importErrorVO = DeliverRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); importErrorVO.setImportStatus("失败"); @@ -357,7 +517,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService if (flag) { String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); mainDo.setNumber(number); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "1")); deliverRequestMainMapper.insert(mainDo); for (DeliverRequestDetailDO detailDO : subDOList) { detailDO.setMasterId(mainDo.getId()); @@ -369,4 +529,100 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService return errorList; } + private DeliverRequestMainDO validatorToCreate(DeliverRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { + DeliverRequestMainDO deliverRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); + List subList = createReqVO.getSubList(); + List subDOList = DeliverRequestDetailConvert.INSTANCE.convertList03(subList); + for (DeliverRequestDetailDO deliverRequestDetailDO : subDOList) { + validateDetailMethod(deliverRequestDetailDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_REQUEST.getCode()); + deliverRequestMainDO.setNumber(number); + deliverRequestMainDO.setRequestTime(LocalDateTime.now()); + deliverRequestMainMapper.insert(deliverRequestMainDO); + for (DeliverRequestDetailDO deliverRequestDetailDO : subDOList) { + deliverRequestDetailDO.setMasterId(deliverRequestMainDO.getId()); + deliverRequestDetailDO.setNumber(deliverRequestMainDO.getNumber()); + } + deliverRequestDetailMapper.insertBatch(subDOList); + return deliverRequestMainDO; + } + + private DeliverRequestMainDO validateMainMethod(DeliverRequestMainBaseVO baseVO ,BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){ + DeliverRequestMainDO deliverRequestMainDO = DeliverRequestMainConvert.INSTANCE.convert(baseVO); + validatorcustomercode(deliverRequestMainDO.getCustomerCode()); + CustomerdockDO customerdockDO = validatorcustomerDockCode(deliverRequestMainDO.getCustomerCode(),deliverRequestMainDO.getCustomerDockCode()); + if(customerdockDO == null){ + deliverRequestMainDO.setToWarehouseCode(null); + }else { + deliverRequestMainDO.setToWarehouseCode(customerdockDO.getWarehouseCode()); + } + deliverRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); + deliverRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); + deliverRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); + deliverRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(deliverRequestMainDO.getAutoCommit(), deliverRequestMainDO.getAutoAgree(), deliverRequestMainDO.getAutoExecute()); + deliverRequestMainDO.setStatus(requestStatusState.getState().getCode()); + deliverRequestMainDO.setBusinessType(businesstypeDO.getCode()); + deliverRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + deliverRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + deliverRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + deliverRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + return deliverRequestMainDO; + } + + private DeliverRequestDetailDO validateDetailMethod(DeliverRequestDetailDO deliverRequestDetailDO) { + ItembasicDO itembasicDO = validatoritemcode(deliverRequestDetailDO.getItemCode()); + deliverRequestDetailDO.setItemDesc1(itembasicDO.getDesc1()); + deliverRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); + deliverRequestDetailDO.setItemName(itembasicDO.getName()); + deliverRequestDetailDO.setProjectCode(itembasicDO.getProject()); + Isuom(itembasicDO.getUom(),deliverRequestDetailDO.getUom()); + SaleDetailDO saleDetailDO =validatorSale(deliverRequestDetailDO.getSoNumber(),deliverRequestDetailDO.getSoLine(),deliverRequestDetailDO.getItemCode()); + //TODO 后续销售订单开发后再解除注释 +// if(saleDetailDO!=null) { +// Isqty(saleDetailDO.getShippedQty(), deliverRequestDetailDO.getQty(), saleDetailDO.getOrderQty(), deliverRequestDetailDO.getSoNumber(), deliverRequestDetailDO.getSoLine(), deliverRequestDetailDO.getItemCode()); +// } + return deliverRequestDetailDO; + } + + private void validatorcustomercode(String code){ + customerService.selectCustomerExist(code); + } + + private CustomerdockDO validatorcustomerDockCode(String customerCode,String customerDockCode){ + return customerdockService.getCustomerdockByCustomerCode(customerCode,customerDockCode); + } + + private ItembasicDO validatoritemcode(String code){ + ItembasicDO itembasicDO = itembasicService.selectItembasic(code); + return itembasicDO; + } + + private SaleDetailDO validatorSale(String SoNumber,String SoLine,String ItemCode ){ + SaleDetailDO saleDetailDO =deliverJobMainService.saleDetailExist(SoNumber,SoLine,ItemCode ); + return saleDetailDO; + } + + private String Isuom(String uom1, String uom2) { + DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1); + String value = dictDataRespDTO.getLabel(); + DictDataRespDTO dictDataRespDTO1 = dictDataApi.selectDictValue(uom2); + String value2 = dictDataRespDTO1.getLabel(); + if(value2.equals(value)){ + return "ture"; + }else { + throw exception(UOM_ERROR, value2); + } + } + //TODO 后续销售订单开发后再解除注释 +// private String Isqty(BigDecimal shippedqty, BigDecimal detailqty, BigDecimal orderqty, String sonumber, String soline, String itemcode) { +// BigDecimal resultqty = orderqty.subtract(shippedqty); +// if(resultqty.compareTo(detailqty) > 0) +// return "TURE"; +// else{ +// throw exception(QTY_ERROR, detailqty,sonumber,soline,itemcode,resultqty); +// } +// } }