From 085969a1bf1195db8107dfec0f4cf599b06fc9ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Thu, 7 Dec 2023 08:12:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E9=80=80=E6=96=99=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IssueRecordMainController.java | 1 + .../ProductionreturnJobMainController.java | 134 +++++++-- .../ProductionreturnJobDetailPageReqVO.java | 4 + .../ProductionreturnJobDetailUpdateReqVO.java | 22 ++ .../vo/ProductionreturnJobMainBaseVO.java | 6 + .../vo/ProductionreturnJobMainExcelVO.java | 159 ++++++++--- .../vo/ProductionreturnJobMainPageReqVO.java | 6 + .../ProductionreturnJobMainUpdateReqVO.java | 7 +- .../ProductionreturnRecordMainController.java | 80 ++++-- ...ProductionreturnRecordDetailPageReqVO.java | 4 + .../vo/ProductionreturnRecordMainExcelVO.java | 126 ++++++-- .../ProductionreturnJobMainConvert.java | 12 + .../ProductionreturnRecordMainConvert.java | 12 + .../ProductionreturnJobDetailMapper.java | 7 + .../ProductionreturnJobMainMapper.java | 4 + .../ProductionreturnRecordDetailMapper.java | 7 + .../ProductionreturnRecordMainMapper.java | 5 + .../ProductionreturnJobDetailService.java | 1 + .../ProductionreturnJobDetailServiceImpl.java | 5 + .../ProductionreturnJobMainService.java | 11 + .../ProductionreturnJobMainServiceImpl.java | 268 +++++++++++++++++- .../ProductionreturnRecordDetailService.java | 7 + ...oductionreturnRecordDetailServiceImpl.java | 5 + .../ProductionreturnRecordMainService.java | 4 + ...ProductionreturnRecordMainServiceImpl.java | 5 + ...roductionreturnRequestMainServiceImpl.java | 157 ++++++++-- 26 files changed, 903 insertions(+), 156 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordMainController.java index af651a5b..85762577 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordMainController.java @@ -103,6 +103,7 @@ public class IssueRecordMainController { IssueRecordMainExcelVO vo = IssueRecordMainConvert.INSTANCE.convert(mainDO, detailDO); AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); vo.setCreator(user.getNickname()); + vo.setUpdater(user.getNickname()); resultList.add(vo); } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/ProductionreturnJobMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/ProductionreturnJobMainController.java index 03f71b77..eb0eb849 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/ProductionreturnJobMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/ProductionreturnJobMainController.java @@ -3,6 +3,7 @@ package com.win.module.wms.controller.productionreturnJob; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; @@ -12,6 +13,7 @@ import com.win.module.wms.convert.productionreturnJob.ProductionreturnJobDetailC import com.win.module.wms.convert.productionreturnJob.ProductionreturnJobMainConvert; import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO; import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.productionreturnJob.ProductionreturnJobDetailService; import com.win.module.wms.service.productionreturnJob.ProductionreturnJobMainService; import io.swagger.v3.oas.annotations.Operation; @@ -26,10 +28,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -99,23 +98,6 @@ public class ProductionreturnJobMainController { return success(ProductionreturnJobMainConvert.INSTANCE.convertPage(pageResult)); } - @GetMapping("/export-excel") - @Operation(summary = "导出生产退料任务主 Excel") - @PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:export')") - @OperateLog(type = EXPORT) - public void exportProductionreturnJobMainExcel(@Valid ProductionreturnJobMainExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = productionreturnJobMainService.getProductionreturnJobMainList(exportReqVO); - // 导出 Excel - List datas = ProductionreturnJobMainConvert.INSTANCE.convertList02(list); - for(ProductionreturnJobMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "生产退料任务主.xls", "数据", ProductionreturnJobMainExcelVO.class, datas); - } - @PostMapping("/senior") @Operation(summary = "高级搜索获得生产退料任务主分页") @PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:query')") @@ -130,6 +112,71 @@ public class ProductionreturnJobMainController { return success(result); } + private List getExcelVo(List list, Map mapDropDown) { + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(28, locationType); + mapDropDown.put(29, locationType); + String[] areaType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.AREA_TYPE); + mapDropDown.put(15, areaType); + mapDropDown.put(16, areaType); + String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(17, trueFalse); + mapDropDown.put(18, trueFalse); + mapDropDown.put(19, trueFalse); + mapDropDown.put(20, trueFalse); + mapDropDown.put(21, trueFalse); + mapDropDown.put(22, trueFalse); + mapDropDown.put(23, trueFalse); + mapDropDown.put(24, trueFalse); + mapDropDown.put(25, trueFalse); + mapDropDown.put(26, trueFalse); + mapDropDown.put(27, trueFalse); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(42, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(51, uom); + List resultList = new ArrayList<>(); + // 导出 + for(ProductionreturnJobMainDO mainDO : list) { + List subList = productionreturnJobDetailService.selectList(mainDO.getId()); + for(ProductionreturnJobDetailDO detailDO : subList) { + ProductionreturnJobMainExcelVO vo = ProductionreturnJobMainConvert.INSTANCE.convert(mainDO, detailDO); + AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); + vo.setCreator(user.getNickname()); + vo.setUpdater(user.getNickname()); + resultList.add(vo); + } + } + return resultList; + } + + @GetMapping("/export-excel") + @Operation(summary = "导出生产退料任务主 Excel") + @PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:export')") + @OperateLog(type = EXPORT) + public void exportProductionreturnJobMainExcel(@Valid ProductionreturnJobMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productionreturnJobMainService.getProductionreturnJobMainList(exportReqVO); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "生产退料任务.xlsx", "生产退料任务", ProductionreturnJobMainExcelVO.class, resultList, mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出发料任务 Excel") + @PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:export')") + @OperateLog(type = EXPORT) + public void exportProductionreturnJobMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = productionreturnJobMainService.getProductionreturnJobMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "生产退料任务.xlsx", "生产退料任务", ProductionreturnJobMainExcelVO.class, resultList, mapDropDown); + } + @GetMapping("/getProductionreturnJobById") @Operation(summary = "APP获得生产退料主子表明细列表") @Parameter(name = "id", description = "编号", required = true, example = "1024") @@ -140,11 +187,14 @@ public class ProductionreturnJobMainController { if(result==null) { return success(result); }; - ProductionreturnJobDetailExportReqVO productionreturnJobDetailExportReqVO = new ProductionreturnJobDetailExportReqVO(); - productionreturnJobDetailExportReqVO.setMasterId(result.getId()); - List productionreturnJobDetailList = productionreturnJobDetailService.getProductionreturnJobDetailList(productionreturnJobDetailExportReqVO); - List productionreturnJobDetailExcelVOS = ProductionreturnJobDetailConvert.INSTANCE.convertList02(productionreturnJobDetailList); - result.setSubList(productionreturnJobDetailExcelVOS); +// ProductionreturnJobDetailExportReqVO productionreturnJobDetailExportReqVO = new ProductionreturnJobDetailExportReqVO(); +// productionreturnJobDetailExportReqVO.setMasterId(result.getId()); +// List productionreturnJobDetailList = productionreturnJobDetailService.getProductionreturnJobDetailList(productionreturnJobDetailExportReqVO); +// List productionreturnJobDetailExcelVOS = ProductionreturnJobDetailConvert.INSTANCE.convertList02(productionreturnJobDetailList); +// result.setSubList(productionreturnJobDetailExcelVOS); + + List productionreturnJobDetailList = productionreturnJobDetailService.selectList(id); + result.setSubList(productionreturnJobDetailList); return success(result); } @@ -163,5 +213,37 @@ public class ProductionreturnJobMainController { return success(countByStatus); } + @PutMapping(value = "/accept") + @Operation(summary = "承接任务") + @PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:accept')") + public CommonResult acceptProductionreturnJobMain(@RequestParam("id") Long id) { + int result = productionreturnJobMainService.acceptProductionreturnJobMain(id); + return success(result > 0); + } + + @PutMapping(value = "/abandon") + @Operation(summary = "放弃任务") + @PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:abandon')") + public CommonResult abandonProductionreturnJobMain(@RequestParam("id") Long id) { + int result = productionreturnJobMainService.abandonProductionreturnJobMain(id); + return success(result > 0); + } + + @PutMapping(value = "/close") + @Operation(summary = "关闭任务") + @PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:close')") + public CommonResult closeProductionreturnJobMain(@RequestParam("id") Long id) { + int result = productionreturnJobMainService.closeProductionreturnJobMain(id); + return success(result > 0); + } + + @PutMapping("/execute") + @Operation(summary = "执行任务") + @PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:execute')") + public CommonResult executeProductionreturnJobMain(@Valid @RequestBody ProductionreturnJobMainUpdateReqVO updateReqVO) { + String number = productionreturnJobMainService.executeProductionreturnJobMain(updateReqVO); + return success(number); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailPageReqVO.java index 8f83282d..4ffe50f0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailPageReqVO.java @@ -81,4 +81,8 @@ public class ProductionreturnJobDetailPageReqVO extends PageParam { @Schema(description = "到货主代码") private String toOwnerCode; + @Schema(description = "主表ID") + private String masterId; + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailUpdateReqVO.java index 0f08bd9e..4132f8e1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailUpdateReqVO.java @@ -3,10 +3,32 @@ package com.win.module.wms.controller.productionreturnJob.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + @Schema(description = "管理后台 - 生产退料任务子更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductionreturnJobDetailUpdateReqVO extends ProductionreturnJobDetailBaseVO { + @Schema(description = "实际收货数量") + private BigDecimal handleQty; + + @Schema(description = "到包装") + private String toPackingNumber; + + @Schema(description = "到器具") + private String toContainerNumber; + + @Schema(description = "到批次") + private String toBatch; + + @Schema(description = "到库存状态") + private String toInventoryStatus; + + @Schema(description = "到库位") + private String toLocationCode; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainBaseVO.java index 7d87a61f..a6a1a898 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainBaseVO.java @@ -144,4 +144,10 @@ public class ProductionreturnJobMainBaseVO { @Schema(description = "允许修改箱码") private String allowModifyPackingNumber; + @Schema(description = "入库库存状态范围") + private String inInventoryStatuses; + + @Schema(description = "出库库存状态范围") + private String outInventoryStatuses; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainExcelVO.java index 2cab7b6f..60285b83 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainExcelVO.java @@ -1,5 +1,7 @@ package com.win.module.wms.controller.productionreturnJob.vo; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.job.JobStatusConverter; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -30,35 +32,18 @@ public class ProductionreturnJobMainExcelVO { @ExcelProperty("车间代码") private String workshopCode; - @ExcelProperty("从仓库代码") - private String fromWarehouseCode; - - @ExcelProperty("到仓库代码") - private String toWarehouseCode; - @ExcelProperty("申请时间") private LocalDateTime requestTime; @ExcelProperty("要求截止时间") private LocalDateTime requestDueTime; - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("job_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty(value = "状态", converter = JobStatusConverter.class) private String status; @ExcelProperty("过期时间") private LocalDateTime expiredTime; - @ExcelProperty("最后更新时间") - private LocalDateTime updateTime; - - @ExcelProperty("最后更新者Id") - private String updater; - - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("true_false") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String jobStageStatus; - @ExcelProperty("优先级") private Integer priority; @@ -80,13 +65,6 @@ public class ProductionreturnJobMainExcelVO { @ExcelProperty("完成时间") private LocalDateTime completeTime; - @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String fromLocationTypes; - - @ExcelProperty(value = "到库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String toLocationTypes; @ExcelProperty("单据号") private String number; @@ -94,49 +72,136 @@ public class ProductionreturnJobMainExcelVO { @ExcelProperty("业务类型") private String businessType; - @ExcelProperty("备注") - private String remark; - - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @ExcelProperty("创建者id") - private String creator; - - @ExcelProperty("从库区代码范围") + @ExcelProperty(value = "从库区代码范围", converter = DictConvert.class) + @DictFormat(DictTypeConstants.AREA_TYPE) private String fromAreaCodes; - @ExcelProperty("到库区代码范围") + @ExcelProperty(value = "到库区代码范围", converter = DictConvert.class) + @DictFormat(DictTypeConstants.AREA_TYPE) private String toAreaCodes; - @ExcelProperty("自动完成") + @ExcelProperty(value = "自动完成", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String autoComplete; - @ExcelProperty("允许修改库位") + @ExcelProperty(value = "允许修改库位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyLocation; - @ExcelProperty("允许修改数量") + @ExcelProperty(value = "允许修改数量", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyQty; - @ExcelProperty("允许大于推荐数量") + @ExcelProperty(value = "允许大于推荐数量", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowBiggerQty; - @ExcelProperty("允许小于推荐数量") + @ExcelProperty(value = "允许小于推荐数量", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowSmallerQty; - @ExcelProperty("允许修改库存状态") + @ExcelProperty(value = "允许修改库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyInventoryStatus; - @ExcelProperty("允许连续扫描") + @ExcelProperty(value = "允许连续扫描", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowContinuousScanning; - @ExcelProperty("允许部分完成") + @ExcelProperty(value = "允许部分完成", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowPartialComplete; - @ExcelProperty("允许修改批次") + @ExcelProperty(value = "允许修改箱码", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String allowModifyPackingNumber; + + @ExcelProperty(value = "允许修改批次", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyBatch; - @ExcelProperty("允许修改箱码") - private String allowModifyPackingNumber; + @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) + @DictFormat(DictTypeConstants.LOCATION_TYPE) + private String fromLocationTypes; + + @ExcelProperty(value = "到库位类型范围", converter = DictConvert.class) + @DictFormat(DictTypeConstants.LOCATION_TYPE) + private String toLocationTypes; + + @ExcelProperty("从仓库代码") + private String fromWarehouseCode; + + @ExcelProperty("到仓库代码") + private String toWarehouseCode; + + @ExcelProperty("备注") + private String remark; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @ExcelProperty("创建者id") + private String creator; + + @ExcelProperty("最后更新时间") + private LocalDateTime updateTime; + + @ExcelProperty("最后更新者Id") + private String updater; + + // 子表数据 + @ExcelProperty("生产线代码") + private String productionLineCode; + + @ExcelProperty("工位代码") + private String workStationCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @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 String qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + + @ExcelProperty("到货主代码") + private String toOwnerCode; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainPageReqVO.java index a3b59bab..edeb75bc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainPageReqVO.java @@ -136,4 +136,10 @@ public class ProductionreturnJobMainPageReqVO extends PageParam { @Schema(description = "允许修改箱码") private String allowModifyPackingNumber; + @Schema(description = "入库库存状态范围") + private String inInventoryStatuses; + + @Schema(description = "出库库存状态范围") + private String outInventoryStatuses; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainUpdateReqVO.java index b9249ea0..86333af4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainUpdateReqVO.java @@ -1,12 +1,17 @@ package com.win.module.wms.controller.productionreturnJob.vo; +import com.win.module.wms.controller.issueJob.vo.IssueJobDetailUpdateReqVO; 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 ProductionreturnJobMainUpdateReqVO extends ProductionreturnJobMainBaseVO { - + @Schema(description = "子表数据") + private List<@Valid ProductionreturnJobDetailUpdateReqVO> subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/ProductionreturnRecordMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/ProductionreturnRecordMainController.java index 80ebf72e..88029f7a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/ProductionreturnRecordMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/ProductionreturnRecordMainController.java @@ -3,13 +3,21 @@ package com.win.module.wms.controller.productionreturnRecord; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainExcelVO; import com.win.module.wms.controller.productionreturnRecord.vo.*; +import com.win.module.wms.convert.issueRecord.IssueRecordMainConvert; import com.win.module.wms.convert.productionreturnRecord.ProductionreturnRecordMainConvert; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; +import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.productionreturnRecord.ProductionreturnRecordDetailService; import com.win.module.wms.service.productionreturnRecord.ProductionreturnRecordMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -22,8 +30,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.util.Collection; -import java.util.List; +import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -34,6 +41,8 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Validated public class ProductionreturnRecordMainController { + @Resource + private ProductionreturnRecordDetailService productionreturnRecordDetailService; @Resource private ProductionreturnRecordMainService productionreturnRecordMainService; @@ -90,24 +99,6 @@ public class ProductionreturnRecordMainController { return success(ProductionreturnRecordMainConvert.INSTANCE.convertPage(pageResult)); } - @GetMapping("/export-excel") - @Operation(summary = "导出生产退料记录主 Excel") - @PreAuthorize("@ss.hasPermission('wms:productionreturn-record-main:export')") - @OperateLog(type = EXPORT) - public void exportProductionreturnRecordMainExcel(@Valid ProductionreturnRecordMainExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = productionreturnRecordMainService.getProductionreturnRecordMainList(exportReqVO); - // 导出 Excel - List datas = ProductionreturnRecordMainConvert.INSTANCE.convertList02(list); - for(ProductionreturnRecordMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "生产退料记录主.xls", "数据", ProductionreturnRecordMainExcelVO.class, datas); - } - - @PostMapping("/senior") @Operation(summary = "高级搜索获得生产退料记录主分页") @PreAuthorize("@ss.hasPermission('wms:productionreturn-record-main:query')") @@ -122,4 +113,53 @@ public class ProductionreturnRecordMainController { return success(result); } + private List getExcelVo(List list, Map mapDropDown) { + String[] useOnTheWayLocation = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(17, useOnTheWayLocation); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(26, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(47, uom); + List resultList = new ArrayList<>(); + // 导出 + for(ProductionreturnRecordMainDO mainDO : list) { + List subList = productionreturnRecordDetailService.selectList(mainDO.getId()); + for(ProductionreturnRecordDetailDO detailDO : subList) { + ProductionreturnRecordMainExcelVO vo = ProductionreturnRecordMainConvert.INSTANCE.convert(mainDO, detailDO); + AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); + vo.setCreator(user.getNickname()); + vo.setUpdater(user.getNickname()); + resultList.add(vo); + } + } + return resultList; + } + + @GetMapping("/export-excel") + @Operation(summary = "导出生产退料记录主 Excel") + @PreAuthorize("@ss.hasPermission('wms:productionreturn-record-main:export')") + @OperateLog(type = EXPORT) + public void exportProductionreturnRecordMainExcel(@Valid ProductionreturnRecordMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productionreturnRecordMainService.getProductionreturnRecordMainList(exportReqVO); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "生产退料记录.xlsx", "生产退料记录", ProductionreturnRecordMainExcelVO.class, resultList, mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出生产退料记录主 Excel") + @PreAuthorize("@ss.hasPermission('wms:productionreturn-record-main:export')") + @OperateLog(type = EXPORT) + public void exportProductionreturnRecordMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = productionreturnRecordMainService.getProductionreturnRecordMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "生产退料记录.xlsx", "生产退料记录", ProductionreturnRecordMainExcelVO.class, resultList, mapDropDown); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordDetailPageReqVO.java index 54b2b697..8a3ef8b3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordDetailPageReqVO.java @@ -111,4 +111,8 @@ public class ProductionreturnRecordDetailPageReqVO extends PageParam { @Schema(description = "任务明细ID") private String jobDetailId; + @Schema(description = "主表ID") + private String masterId; + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordMainExcelVO.java index ef4d5fa1..db397ecd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordMainExcelVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productionreturnRecord.vo; +import com.win.module.wms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -22,6 +23,9 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class ProductionreturnRecordMainExcelVO { + @ExcelProperty("单据号") + private String number; + @ExcelProperty("申请单号") private String requestNumber; @@ -31,12 +35,6 @@ public class ProductionreturnRecordMainExcelVO { @ExcelProperty("车间代码") private String workshopCode; - @ExcelProperty("出库事务类型") - private String outTransactionType; - - @ExcelProperty("入库事务类型") - private String inTransactionType; - @ExcelProperty("执行时间") private LocalDateTime executeTime; @@ -52,49 +50,117 @@ public class ProductionreturnRecordMainExcelVO { @ExcelProperty("部门") private String departmentCode; - @ExcelProperty(value = "接口类型", converter = DictConvert.class) - @DictFormat("interface_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String interfaceType; + @ExcelProperty("从库位类型范围") + private String fromLocationTypes; + @ExcelProperty("到库位类型范围") + private String toLocationTypes; + @ExcelProperty("从库区代码范围") + private String fromAreaCodes; + @ExcelProperty("到库区代码范围") + private String toAreaCodes; + @ExcelProperty("从仓库代码") + private String fromWarehouseCode; + @ExcelProperty("到仓库代码") + private String toWarehouseCode; + + @ExcelProperty("出库事务类型") + private String outTransactionType; + @ExcelProperty("入库事务类型") + private String inTransactionType; - @ExcelProperty("单据号") - private String number; + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String available; @ExcelProperty("业务类型") private String businessType; @ExcelProperty("备注") private String remark; - @ExcelProperty("创建时间") private LocalDateTime createTime; @ExcelProperty("创建者Id") private String creator; - @ExcelProperty("代码") - private String code; + @ExcelProperty("最后更新时间") + private LocalDateTime updateTime; - @ExcelProperty("从仓库代码") - private String fromWarehouseCode; + @ExcelProperty("最后更新者Id") + private String updater; - @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String fromLocationTypes; + // 子表数据 + @ExcelProperty("生产线代码") + private String productionLineCode; - @ExcelProperty("从库区代码范围") - private String fromAreaCodes; + @ExcelProperty("工位代码") + private String workStationCode; - @ExcelProperty("到仓库代码") - private String toWarehouseCode; + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; - @ExcelProperty(value = "到库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String toLocationTypes; + @ExcelProperty("从货主代码") + private String fromOwnerCode; + @ExcelProperty("到货主代码") + private String toOwnerCode; - @ExcelProperty("到库区代码范围") - private String toAreaCodes; + @ExcelProperty("从包装号") + private String fromPackingNumber; - @ExcelProperty("是否可用") - private String available; + @ExcelProperty("到包装号") + private String toPackingNumber; + + @ExcelProperty("从器具号") + private String fromContainerNumber; + + @ExcelProperty("到器具号") + private String toContainerNumber; + + @ExcelProperty("从批次") + private String fromBatch; + + @ExcelProperty("到批次") + private String toBatch; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("从库位组代码") + private String fromLocationGroupCode; + + @ExcelProperty("到库位组代码") + private String toLocationGroupCode; + + @ExcelProperty("从库区代码") + private String fromAreaCode; + + @ExcelProperty("到库区代码") + private String toAreaCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private String qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnJob/ProductionreturnJobMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnJob/ProductionreturnJobMainConvert.java index 612516c7..faf89d54 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnJob/ProductionreturnJobMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnJob/ProductionreturnJobMainConvert.java @@ -8,7 +8,10 @@ import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobM import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainExcelVO; import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainRespVO; import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO; @@ -34,4 +37,13 @@ public interface ProductionreturnJobMainConvert { 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.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + ProductionreturnJobMainExcelVO convert(ProductionreturnJobMainDO mainDO, ProductionreturnJobDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRecord/ProductionreturnRecordMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRecord/ProductionreturnRecordMainConvert.java index 19724ce0..078a85ce 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRecord/ProductionreturnRecordMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRecord/ProductionreturnRecordMainConvert.java @@ -8,7 +8,10 @@ import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnR import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainExcelVO; import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainRespVO; import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO; @@ -34,4 +37,13 @@ public interface ProductionreturnRecordMainConvert { 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.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + ProductionreturnRecordMainExcelVO convert(ProductionreturnRecordMainDO mainDO, ProductionreturnRecordDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobDetailMapper.java index 0d54b8e4..29c60074 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobDetailMapper.java @@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobDetailExportReqVO; import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobDetailPageReqVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO; import org.apache.ibatis.annotations.Mapper; @@ -22,6 +23,7 @@ public interface ProductionreturnJobDetailMapper extends BaseMapperX selectPage(ProductionreturnJobDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductionreturnJobDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductionreturnJobDetailDO::getProductionLineCode, reqVO.getProductionLineCode()) .eqIfPresent(ProductionreturnJobDetailDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductionreturnJobDetailDO::getPackingNumber, reqVO.getPackingNumber()) @@ -77,4 +79,9 @@ public interface ProductionreturnJobDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(ProductionreturnJobDetailDO::getMasterId, masterId)); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.java index 7f378479..c3e09168 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.java @@ -129,4 +129,8 @@ public interface ProductionreturnJobMainMapper extends BaseMapperX selectSeniorList(CustomConditions conditions) { + return selectList(QueryWrapperUtils.structure(conditions)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordDetailMapper.java index d9416779..4e5de728 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordDetailMapper.java @@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordDetailExportReqVO; import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordDetailPageReqVO; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordDetailDO; import org.apache.ibatis.annotations.Mapper; @@ -22,6 +23,7 @@ public interface ProductionreturnRecordDetailMapper extends BaseMapperX selectPage(ProductionreturnRecordDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductionreturnRecordDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductionreturnRecordDetailDO::getProductionLineCode, reqVO.getProductionLineCode()) .eqIfPresent(ProductionreturnRecordDetailDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductionreturnRecordDetailDO::getInventoryStatus, reqVO.getInventoryStatus()) @@ -95,4 +97,9 @@ public interface ProductionreturnRecordDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(ProductionreturnRecordDetailDO::getMasterId, masterId)); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordMainMapper.java index 10c6d14b..7f03feb0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordMainMapper.java @@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainExportReqVO; import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainPageReqVO; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO; import org.apache.ibatis.annotations.Mapper; @@ -22,6 +23,7 @@ public interface ProductionreturnRecordMainMapper extends BaseMapperX selectPage(ProductionreturnRecordMainPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductionreturnRecordMainDO::getRequestNumber, reqVO.getRequestNumber()) .eqIfPresent(ProductionreturnRecordMainDO::getJobNumber, reqVO.getJobNumber()) .eqIfPresent(ProductionreturnRecordMainDO::getWorkshopCode, reqVO.getWorkshopCode()) @@ -82,4 +84,7 @@ public interface ProductionreturnRecordMainMapper extends BaseMapperX selectSeniorList(CustomConditions conditions) { + return selectList(QueryWrapperUtils.structure(conditions)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailService.java index 53fee4c0..2a4bf8f6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailService.java @@ -81,4 +81,5 @@ public interface ProductionreturnJobDetailService { */ PageResult getProductionreturnJobDetailSenior(CustomConditions conditions); + List selectList(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailServiceImpl.java index 9a57161d..f5ab524e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailServiceImpl.java @@ -88,4 +88,9 @@ public class ProductionreturnJobDetailServiceImpl implements ProductionreturnJob public PageResult getProductionreturnJobDetailSenior(CustomConditions conditions) { return productionreturnJobDetailMapper.selectSenior(conditions); } + + @Override + public List selectList(Long masterId) { + return productionreturnJobDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainService.java index 70b72188..de53a2f9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainService.java @@ -6,6 +6,7 @@ import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobM import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainExportReqVO; import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainPageReqVO; import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO; import org.springframework.lang.Nullable; @@ -59,6 +60,8 @@ public interface ProductionreturnJobMainService { */ List getProductionreturnJobMainList(Collection ids); + List getProductionreturnJobMainList(CustomConditions conditions); + /** * 获得生产退料任务主分页 * @@ -97,4 +100,12 @@ public interface ProductionreturnJobMainService { * @return */ Map getCountByStatus(@Nullable Collection types); + + Integer acceptProductionreturnJobMain(Long id); + + Integer abandonProductionreturnJobMain(Long id); + + Integer closeProductionreturnJobMain(Long id); + + String executeProductionreturnJobMain(ProductionreturnJobMainUpdateReqVO updateReqVO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainServiceImpl.java index 55d448c2..929cc9fc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainServiceImpl.java @@ -1,28 +1,55 @@ package com.win.module.wms.service.productionreturnJob; 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.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainCreateReqVO; -import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainExportReqVO; -import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainPageReqVO; -import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainUpdateReqVO; +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.expectin.vo.ExpectinCreateReqVO; +import com.win.module.wms.controller.issueJob.vo.IssueJobDetailUpdateReqVO; +import com.win.module.wms.controller.productionreturnJob.vo.*; +import com.win.module.wms.controller.rule.vo.RuleRespVO; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.convert.productionreturnJob.ProductionreturnJobMainConvert; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; +import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO; import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO; +import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordDetailDO; +import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO; +import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.mysql.productionreturnJob.ProductionreturnJobMainMapper; +import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordDetailMapper; +import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordMainMapper; +import com.win.module.wms.enums.job.JobStatusState; +import com.win.module.wms.service.expectin.ExpectinService; +import com.win.module.wms.service.expectout.ExpectoutService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.service.recordsetting.RecordsettingService; +import com.win.module.wms.service.transaction.TransactionService; +import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.*; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_JOB_MAIN_NOT_EXISTS; -import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR; +import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 生产退料任务主 Service 实现类 @@ -33,6 +60,30 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_JOB_M @Validated public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMainService { + @Resource + private ProductionreturnRecordDetailMapper productionreturnRecordDetailMapper; + @Resource + private TransactionService transactionService; + @Resource + private ExpectinService expectinService; + @Resource + private ExpectoutService expectoutService; + @Resource + private LocationService locationService; + @Resource + private ProductionreturnRecordMainMapper productionreturnRecordMainMapper; + @Resource + private JobUtils jobUtils; + @Resource + private RecordsettingService recordsettingService; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private ProductionreturnJobDetailService productionreturnJobDetailService; + @Resource + private TrendsApi trendsApi; + @Resource + private AdminUserApi userApi; @Resource private ProductionreturnJobMainMapper productionreturnJobMainMapper; @@ -62,10 +113,12 @@ public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMa productionreturnJobMainMapper.deleteById(id); } - private void validateProductionreturnJobMainExists(Long id) { - if (productionreturnJobMainMapper.selectById(id) == null) { + private ProductionreturnJobMainDO validateProductionreturnJobMainExists(Long id) { + ProductionreturnJobMainDO productionreturnJobMainDO = productionreturnJobMainMapper.selectById(id); + if (productionreturnJobMainDO == null) { throw exception(PRODUCTIONRETURN_JOB_MAIN_NOT_EXISTS); } + return productionreturnJobMainDO; } @Override @@ -78,6 +131,11 @@ public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMa return productionreturnJobMainMapper.selectBatchIds(ids); } + @Override + public List getProductionreturnJobMainList(CustomConditions conditions) { + return productionreturnJobMainMapper.selectSeniorList(conditions); + } + @Override public PageResult getProductionreturnJobMainPage(ProductionreturnJobMainPageReqVO pageReqVO) { return productionreturnJobMainMapper.selectPage(pageReqVO); @@ -113,4 +171,190 @@ public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMa map.put("count", l.intValue()); return map; } + + @Override + @Transactional + public Integer acceptProductionreturnJobMain(Long id) { + ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus()); + if(!jobStatusState.accept()) { + throw exception(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR); + } + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); + productionreturnJobMainDO.setAcceptUserId(String.valueOf(userId)); + productionreturnJobMainDO.setAcceptUserName(userRespDTO.getNickname()); + productionreturnJobMainDO.setAcceptTime(LocalDateTime.now()); + trendsApi.createTrends(id, "productionreturnJob", "承接了生产退料任务", TrendsTypeEnum.UPDATE); + return productionreturnJobMainMapper.updateById(productionreturnJobMainDO); + } + + @Override + @Transactional + public Integer abandonProductionreturnJobMain(Long id) { + ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus()); + if(!jobStatusState.cancelAccept()) { + throw exception(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR); + } + productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); + productionreturnJobMainDO.setAcceptUserId(null); + productionreturnJobMainDO.setAcceptUserName(null); + productionreturnJobMainDO.setAcceptTime(null); + trendsApi.createTrends(id, "productionreturnJob", "取消了生产退料任务", TrendsTypeEnum.UPDATE); + return productionreturnJobMainMapper.updateById(productionreturnJobMainDO); + } + + @Override + @Transactional + public Integer closeProductionreturnJobMain(Long id) { + ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus()); + if(!jobStatusState.close()) { + throw exception(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR); + } + productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); + trendsApi.createTrends(id, "productionreturnJob", "关闭了生产退料任务", TrendsTypeEnum.UPDATE); + return productionreturnJobMainMapper.updateById(productionreturnJobMainDO); + } + + @Override + @Transactional + public String executeProductionreturnJobMain(ProductionreturnJobMainUpdateReqVO updateReqVO) { + //查询数据 + ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(updateReqVO.getId()); + List subList = productionreturnJobDetailService.selectList(productionreturnJobMainDO.getId()); + JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus()); + boolean flag = jobStatusState.execute(); + if(!flag) { + throw new ServiceException(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR); + } + //更新完成信息 + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); + productionreturnJobMainDO.setCompleteTime(LocalDateTime.now()); + productionreturnJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId())); + productionreturnJobMainDO.setCompleteUserName(userRespDTO.getNickname()); + //更新任务表状态 + int result = productionreturnJobMainMapper.updateById(productionreturnJobMainDO); + //创建 记录 主表 + ProductionreturnRecordMainDO productionreturnRecordMainDO = new ProductionreturnRecordMainDO(); + BeanUtils.copyProperties(productionreturnJobMainDO, productionreturnRecordMainDO); + productionreturnRecordMainDO.setExecuteTime(LocalDateTime.now()); + productionreturnRecordMainDO.setActiveDate(LocalDateTime.now()); + productionreturnRecordMainDO.setAvailable("TRUE"); + productionreturnRecordMainDO.setRequestNumber(productionreturnJobMainDO.getRequestNumber()); + productionreturnRecordMainDO.setJobNumber(productionreturnJobMainDO.getNumber()); + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RECEIPT_RECORD.getCode()); + productionreturnRecordMainDO.setNumber(number); + // 接口类型 + RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("ProductionReturnRecord"); + productionreturnRecordMainDO.setInterfaceType(recordsettingDO.getInterfaceType()); + //增加业务类型 + BusinesstypeDO businesstypeDO ; + // 判断是合格还是隔离 + // 合格 + if (productionreturnJobMainDO.getBusinessType().equals("ReturnToStoreRequest")) { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRecord"); + } else { // 隔离 + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToHoldRecord"); + } + productionreturnRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType()); + productionreturnRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); + productionreturnRecordMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + productionreturnRecordMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + productionreturnRecordMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + productionreturnRecordMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + productionreturnRecordMainDO.setBusinessType(businesstypeDO.getCode()); + productionreturnRecordMainDO.setId(null); + productionreturnRecordMainDO.setCreateTime(null); + productionreturnRecordMainDO.setCreator(null); + productionreturnRecordMainDO.setUpdateTime(null); + productionreturnRecordMainDO.setUpdater(null); + productionreturnRecordMainMapper.insert(productionreturnRecordMainDO); + + // 获取参数中的sublist + List productionreturnJobDetailUpdateReqVOList = updateReqVO.getSubList(); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + List productionreturnRecordDetailDOList = new ArrayList<>(); + subList.forEach(subListItem -> { + productionreturnJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> { + // 匹配任务子表与参数中子表 + if (DetailUpdateItem.getId().equals(subListItem.getId())) { + ProductionreturnRecordDetailDO productionreturnRecordDetailDO = new ProductionreturnRecordDetailDO(); + BeanUtils.copyProperties(subListItem, productionreturnRecordDetailDO); + productionreturnRecordDetailDO.setFromPackingNumber(subListItem.getPackingNumber()); + productionreturnRecordDetailDO.setToPackingNumber(DetailUpdateItem.getToPackingNumber()); + productionreturnRecordDetailDO.setFromBatch(subListItem.getBatch()); + productionreturnRecordDetailDO.setToBatch(DetailUpdateItem.getToBatch()); + productionreturnRecordDetailDO.setFromLocationCode(subListItem.getFromLocationCode()); + productionreturnRecordDetailDO.setToLocationCode(DetailUpdateItem.getToLocationCode()); + productionreturnRecordDetailDO.setInventoryStatus(DetailUpdateItem.getToInventoryStatus()); + productionreturnRecordDetailDO.setFromContainerNumber(subListItem.getContainerNumber()); + productionreturnRecordDetailDO.setToContainerNumber(DetailUpdateItem.getToContainerNumber()); + productionreturnRecordDetailDO.setQty(DetailUpdateItem.getHandleQty()); + // 获取库位信息 并赋值 + LocationDO locationDOFrom = locationService.selectLocation(subListItem.getFromLocationCode()); + productionreturnRecordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode()); + productionreturnRecordDetailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode()); + LocationDO locationDOTo = locationService.selectLocation(DetailUpdateItem.getToLocationCode()); + productionreturnRecordDetailDO.setToLocationGroupCode(locationDOTo.getLocationGroupCode()); + productionreturnRecordDetailDO.setToAreaCode(locationDOTo.getAreaCode()); + productionreturnRecordDetailDO.setMasterId(productionreturnRecordMainDO.getId()); + productionreturnRecordDetailDO.setNumber(number); + productionreturnRecordDetailDOList.add(productionreturnRecordDetailDO); + //添加库存事务list + // 入动作 + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(productionreturnRecordDetailDO, transactionCreateReqVO); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVO.setBusinessType(productionreturnRecordMainDO.getBusinessType()); + transactionCreateReqVO.setOwnerCode(productionreturnRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVO.setRecordNumber(number); + transactionCreateReqVO.setId(null); + transactionCreateReqVO.setPackingNumber(productionreturnRecordDetailDO.getToPackingNumber()); + transactionCreateReqVO.setBatch(productionreturnRecordDetailDO.getToBatch()); + transactionCreateReqVO.setContainerNumber(productionreturnRecordDetailDO.getToContainerNumber()); + transactionCreateReqVO.setAmount(BigDecimal.ZERO); + transactionCreateReqVO.setWarehouseCode(productionreturnRecordMainDO.getToWarehouseCode()); + transactionCreateReqVO.setLocationCode(productionreturnRecordDetailDO.getToLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVO); + // 出动作 + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + BeanUtils.copyProperties(productionreturnRecordDetailDO, transactionCreateReqVOOut); + TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); + transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); + transactionCreateReqVOOut.setBusinessType(productionreturnRecordMainDO.getBusinessType()); + transactionCreateReqVOOut.setOwnerCode(productionreturnRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVOOut.setRecordNumber(number); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOOut.setPackingNumber(productionreturnRecordDetailDO.getToPackingNumber()); + transactionCreateReqVOOut.setBatch(productionreturnRecordDetailDO.getToBatch()); + transactionCreateReqVOOut.setContainerNumber(productionreturnRecordDetailDO.getToContainerNumber()); + transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); + transactionCreateReqVOOut.setWarehouseCode(productionreturnRecordMainDO.getToWarehouseCode()); + transactionCreateReqVO.setLocationCode(productionreturnRecordDetailDO.getToLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVOOut); + } + }); + }); + productionreturnRecordDetailMapper.insertBatch(productionreturnRecordDetailDOList); + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //移除预计入 + expectinService.deleteExpectinByJobNumber(productionreturnJobMainDO.getNumber()); + //移除预计出 + expectoutService.deleteExpectoutByJobNumber(productionreturnJobMainDO.getNumber()); + //变更记录 + trendsApi.createTrends(productionreturnRecordMainDO.getId(), "productionreturnRecord", "生产退料任务生成记录", TrendsTypeEnum.CREATE); + return number; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailService.java index def50b6d..9a078339 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailService.java @@ -80,4 +80,11 @@ public interface ProductionreturnRecordDetailService { * @return 分页列表 */ PageResult getProductionreturnRecordDetailSenior(CustomConditions conditions); + + /** + * 根据主表id查询 + * @param id + * @return + */ + List selectList(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailServiceImpl.java index e21a12a6..98e41763 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailServiceImpl.java @@ -93,4 +93,9 @@ public class ProductionreturnRecordDetailServiceImpl implements Productionreturn public PageResult getProductionreturnRecordDetailSenior(CustomConditions conditions) { return productionreturnRecordDetailMapper.selectSenior(conditions); } + + @Override + public List selectList(Long masterId) { + return productionreturnRecordDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainService.java index be489f87..eff77871 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainService.java @@ -6,6 +6,7 @@ import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnR import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainExportReqVO; import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainPageReqVO; import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO; import javax.validation.Valid; @@ -57,6 +58,9 @@ public interface ProductionreturnRecordMainService { */ List getProductionreturnRecordMainList(Collection ids); + + List getProductionreturnRecordMainList(CustomConditions conditions); + /** * 获得生产退料记录主分页 * diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java index 5c404d67..1373f14f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java @@ -74,6 +74,11 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe return productionreturnRecordMainMapper.selectBatchIds(ids); } + @Override + public List getProductionreturnRecordMainList(CustomConditions conditions) { + return productionreturnRecordMainMapper.selectSeniorList(conditions); + } + @Override public PageResult getProductionreturnRecordMainPage(ProductionreturnRecordMainPageReqVO pageReqVO) { return productionreturnRecordMainMapper.selectPage(pageReqVO); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java index ae5e182a..a5f3a674 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java @@ -16,6 +16,7 @@ import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.*; import com.win.module.wms.controller.productionreturnRequest.vo.*; import com.win.module.wms.controller.rule.vo.RuleRespVO; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; @@ -29,15 +30,21 @@ import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO; import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO; import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO; +import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordDetailDO; +import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.productionreturnJob.ProductionreturnJobDetailMapper; import com.win.module.wms.dal.mysql.productionreturnJob.ProductionreturnJobMainMapper; +import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordDetailMapper; +import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordMainMapper; import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper; import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; @@ -52,8 +59,10 @@ import com.win.module.wms.service.jobsetting.JobsettingService; import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.productionline.ProductionlineService; import com.win.module.wms.service.productionlineitem.ProductionlineitemService; +import com.win.module.wms.service.recordsetting.RecordsettingService; import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.rule.RuleService; +import com.win.module.wms.service.transaction.TransactionService; import com.win.module.wms.service.workshop.WorkshopService; import com.win.module.wms.service.workstation.WorkstationService; import com.win.module.wms.util.JobUtils; @@ -83,6 +92,16 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class ProductionreturnRequestMainServiceImpl implements ProductionreturnRequestMainService { + @Resource + private TransactionService transactionService; + @Resource + private ProductionreturnRecordMainMapper productionreturnRecordMainMapper; + @Resource + private LocationService locationService; + @Resource + private ProductionreturnRecordDetailMapper productionreturnRecordDetailMapper; + @Resource + private RecordsettingService recordsettingService; @Resource private AdminUserApi userApi; @Resource @@ -90,8 +109,6 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR @Resource private ProductionreturnJobDetailMapper productionreturnJobDetailMapper; @Resource - private LocationService locationService; - @Resource private RuleService ruleService; @Resource private JobsettingService jobsettingService; @@ -620,23 +637,112 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR private void generateJob (ProductionreturnRequestMainDO mainDO, List detailDO) { //跳过任务直接生成记录 if("TRUE".equals(mainDO.getDirectCreateRecord())) { -// TODO: 发料申请 跳过任务直接生成记录 未做!! -// PurchasereceiptRecordMainCreateReqVO purchasereceiptRecordMainCreateReqVO = new PurchasereceiptRecordMainCreateReqVO(); -// BeanUtils.copyProperties(mainDO, purchasereceiptRecordMainCreateReqVO); -// purchasereceiptRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); -// String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_RECORD.getCode()); -// purchasereceiptRecordMainCreateReqVO.setNumber(number); -// //增加业务类型 -// BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReceiptRecord"); -// purchasereceiptRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); -// purchasereceiptRecordMainMapper.insert(PurchasereceiptRecordMainConvert.INSTANCE.convert(purchasereceiptRecordMainCreateReqVO)); -// for(PurchasereceiptRequestDetailDO purchasereceiptRequestDetailDO : detailDOList) { -// PurchasereceiptRecordDetailCreateReqVO purchasereceiptRecordDetailCreateReqVO = new PurchasereceiptRecordDetailCreateReqVO(); -// BeanUtils.copyProperties(purchasereceiptRequestDetailDO, purchasereceiptRecordDetailCreateReqVO); -// purchasereceiptRecordDetailCreateReqVO.setNumber(number); -// purchasereceiptRecordDetailMapper.insert(PurchasereceiptRecordDetailConvert.INSTANCE.convert(purchasereceiptRecordDetailCreateReqVO)); -// } -// return; + ProductionreturnRecordMainDO productionreturnRecordMainDO = new ProductionreturnRecordMainDO(); + BeanUtils.copyProperties(mainDO, productionreturnRecordMainDO); + productionreturnRecordMainDO.setRequestNumber(mainDO.getNumber()); + productionreturnRecordMainDO.setExecuteTime(LocalDateTime.now()); + productionreturnRecordMainDO.setActiveDate(LocalDateTime.now()); + productionreturnRecordMainDO.setAvailable("TRUE"); + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RECEIPT_RECORD.getCode()); + productionreturnRecordMainDO.setNumber(number); + // 接口类型 + RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("ProductionReturnRecord"); + productionreturnRecordMainDO.setInterfaceType(recordsettingDO.getInterfaceType()); + //增加业务类型 + BusinesstypeDO businesstypeDO ; + // 判断是合格还是隔离 + // 合格 + if (mainDO.getBusinessType().equals("ReturnToStore")) { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRecord"); + } else { // 隔离 + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToHoldRecord"); + } + productionreturnRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType()); + productionreturnRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); + productionreturnRecordMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + productionreturnRecordMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + productionreturnRecordMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + productionreturnRecordMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + productionreturnRecordMainDO.setBusinessType(businesstypeDO.getCode()); + productionreturnRecordMainDO.setId(null); + productionreturnRecordMainDO.setCreateTime(null); + productionreturnRecordMainDO.setCreator(null); + productionreturnRecordMainDO.setUpdateTime(null); + productionreturnRecordMainDO.setUpdater(null); + productionreturnRecordMainMapper.insert(productionreturnRecordMainDO); + + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + List productionreturnRecordDetailDOList = new ArrayList<>(); + detailDO.forEach(item -> { + ProductionreturnRecordDetailDO productionreturnRecordDetailDO = new ProductionreturnRecordDetailDO(); + BeanUtils.copyProperties(item, productionreturnRecordDetailDO); + productionreturnRecordDetailDO.setFromPackingNumber(item.getPackingNumber()); + productionreturnRecordDetailDO.setToPackingNumber(item.getPackingNumber()); + productionreturnRecordDetailDO.setFromBatch(item.getBatch()); + productionreturnRecordDetailDO.setToBatch(item.getBatch()); + productionreturnRecordDetailDO.setFromLocationCode(item.getFromLocationCode()); + // 获取上架策略 并赋值 to库位 + RuleRespVO ruleRespVO = ruleService.grounding(null,null,null,null,null,null,productionreturnRecordDetailDO.getItemCode(),null,null,null,null,null,null); + LocationDO locationDO = locationService.inspectLocation(ruleRespVO,null,productionreturnRecordDetailDO.getItemCode(),null); + productionreturnRecordDetailDO.setToLocationCode(locationDO.getCode()); + // 获取库位信息 并赋值 + LocationDO locationDOFrom = locationService.selectLocation(item.getFromLocationCode()); + productionreturnRecordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode()); + productionreturnRecordDetailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode()); + LocationDO locationDOTo = locationService.selectLocation(locationDO.getCode()); + productionreturnRecordDetailDO.setToLocationGroupCode(locationDOTo.getLocationGroupCode()); + productionreturnRecordDetailDO.setToAreaCode(locationDOTo.getAreaCode()); + // 判断合格 不合格 + if (!mainDO.getBusinessType().equals("ReturnToStore")) { + productionreturnRecordDetailDO.setInventoryStatus("NOK"); + } + productionreturnRecordDetailDO.setMasterId(productionreturnRecordMainDO.getId()); + productionreturnRecordDetailDO.setNumber(number); + productionreturnRecordDetailDOList.add(productionreturnRecordDetailDO); + //添加库存事务list + // 入动作 + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(productionreturnRecordDetailDO, transactionCreateReqVO); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVO.setBusinessType(productionreturnRecordMainDO.getBusinessType()); + transactionCreateReqVO.setOwnerCode(productionreturnRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVO.setRecordNumber(number); + transactionCreateReqVO.setId(null); + transactionCreateReqVO.setPackingNumber(productionreturnRecordDetailDO.getToPackingNumber()); + transactionCreateReqVO.setBatch(productionreturnRecordDetailDO.getToBatch()); + transactionCreateReqVO.setContainerNumber(productionreturnRecordDetailDO.getToContainerNumber()); + transactionCreateReqVO.setAmount(BigDecimal.ZERO); + transactionCreateReqVO.setWarehouseCode(productionreturnRecordMainDO.getToWarehouseCode()); + transactionCreateReqVO.setLocationCode(productionreturnRecordDetailDO.getToLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVO); + // 出动作 + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + BeanUtils.copyProperties(productionreturnRecordDetailDO, transactionCreateReqVOOut); + TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); + transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); + transactionCreateReqVOOut.setBusinessType(productionreturnRecordMainDO.getBusinessType()); + transactionCreateReqVOOut.setOwnerCode(productionreturnRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVOOut.setRecordNumber(number); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOOut.setPackingNumber(productionreturnRecordDetailDO.getToPackingNumber()); + transactionCreateReqVOOut.setBatch(productionreturnRecordDetailDO.getToBatch()); + transactionCreateReqVOOut.setContainerNumber(productionreturnRecordDetailDO.getToContainerNumber()); + transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); + transactionCreateReqVOOut.setWarehouseCode(productionreturnRecordMainDO.getToWarehouseCode()); + transactionCreateReqVO.setLocationCode(productionreturnRecordDetailDO.getToLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVOOut); + }); + productionreturnRecordDetailMapper.insertBatch(productionreturnRecordDetailDOList); + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + trendsApi.createTrends(productionreturnRecordMainDO.getId(), "productionreturnRecord", "生产退料申请直接生成记录", TrendsTypeEnum.CREATE); + return; } // 任务主表信息 ProductionreturnJobMainDO productionreturnJobMainDO = new ProductionreturnJobMainDO(); @@ -659,7 +765,14 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR productionreturnJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); productionreturnJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); //增加业务类型 - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreJob"); + BusinesstypeDO businesstypeDO = null; + // 判断是合格还是隔离 + // 合格 + if (mainDO.getBusinessType().equals("ReturnToStore")) { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreJob"); + } else { // 隔离 + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToHoldJob"); + } productionreturnJobMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); productionreturnJobMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); productionreturnJobMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); @@ -690,6 +803,10 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR RuleRespVO ruleRespVO = ruleService.grounding(null,null,null,null,null,null,productionreturnJobDetailDO.getItemCode(),null,null,null,null,null,null); LocationDO locationDO = locationService.inspectLocation(ruleRespVO,null,productionreturnJobDetailDO.getItemCode(),null); productionreturnJobDetailDO.setToLocationCode(locationDO.getCode()); + // 判断合格 不合格 + if (!mainDO.getBusinessType().equals("ReturnToStore")) { + productionreturnJobDetailDO.setInventoryStatus("NOK"); + } productionreturnJobDetailDOList.add(productionreturnJobDetailDO); //预计入 ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO();