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 970bbf68..747e690f 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 @@ -849,6 +849,7 @@ public interface ErrorCodeConstants { //库存修改申请ErrorCode ErrorCode INVENTORYCHANGE_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_134_000, "库存修改申请主不存在"); ErrorCode INVENTORYCHANGE_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_134_001, "库存修改申请子不存在"); + ErrorCode INVENTORYCHANGE_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_134_001, "导入库存修改申请不能为空"); //库存修改记录ErrorCode ErrorCode INVENTORYCHANGE_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_135_000, "库存修改记录主不存在"); ErrorCode INVENTORYCHANGE_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_135_001, "库存修改记录子不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/InventorychangeRecordMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/InventorychangeRecordMainController.java index 571e7cd8..1e940039 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/InventorychangeRecordMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/InventorychangeRecordMainController.java @@ -1,8 +1,16 @@ package com.win.module.wms.controller.inventorychangeRecord; 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.inventorychangeRequest.vo.InventorychangeRequestMainExcelVO; +import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert; +import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordDetailDO; +import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; +import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.inventorychangeRecord.InventorychangeRecordDetailService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -38,6 +46,8 @@ public class InventorychangeRecordMainController { @Resource private InventorychangeRecordMainService inventorychangeRecordMainService; + @Resource + private InventorychangeRecordDetailService inventorychangeRecordDetailService; @Resource private AdminUserApi userApi; @@ -113,13 +123,48 @@ public class InventorychangeRecordMainController { HttpServletResponse response) throws IOException { List list = inventorychangeRecordMainService.getInventorychangeRecordMainList(exportReqVO); // 导出 Excel - List datas = InventorychangeRecordMainConvert.INSTANCE.convertList02(list); - for(InventorychangeRecordMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "库存修改记录主.xls", "数据", InventorychangeRecordMainExcelVO.class, datas); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "库存修改记录.xlsx", "数据", InventorychangeRecordMainExcelVO.class, resultList, mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出库存修改记录主 Excel") + @PreAuthorize("@ss.hasPermission('wms:inventorychange-record-main:export')") + @OperateLog(type = EXPORT) + public void exportInventorychangeRecordMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = inventorychangeRecordMainService.getInventorychangeRecordMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "库存修改记录.xlsx", "数据", InventorychangeRecordMainExcelVO.class, resultList, mapDropDown); } + private List getExcelVo(List list, Map mapDropDown) { + String[] interfaceType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INTERFACE_TYPE); + mapDropDown.put(10, interfaceType); + mapDropDown.put(47, interfaceType); + String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(16, trueFalse); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(29, inventoryStatus); + mapDropDown.put(39, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(45, uom); + List resultList = new ArrayList<>(); + // 导出 + for(InventorychangeRecordMainDO mainDO : list) { + List subList = inventorychangeRecordDetailService.selectListByID(mainDO.getId()); + for(InventorychangeRecordDetailDO detailDO : subList) { + InventorychangeRecordMainExcelVO vo = InventorychangeRecordMainConvert.INSTANCE.convert(mainDO, detailDO); + vo.setCreator(userApi.getUser(Long.valueOf(mainDO.getCreator())).getNickname()); + vo.setCreatorDetail(userApi.getUser(Long.valueOf(detailDO.getCreator())).getNickname()); + resultList.add(vo); + } + } + return resultList; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordDetailBaseVO.java index aeaff25d..dbf91232 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordDetailBaseVO.java @@ -154,4 +154,6 @@ public class InventorychangeRecordDetailBaseVO { @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/inventorychangeRecord/vo/InventorychangeRecordDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordDetailPageReqVO.java index 10aa44db..b8746ba4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordDetailPageReqVO.java @@ -135,4 +135,6 @@ public class InventorychangeRecordDetailPageReqVO 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/inventorychangeRecord/vo/InventorychangeRecordMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainBaseVO.java index 18fb2c10..43c8d672 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainBaseVO.java @@ -2,11 +2,6 @@ package com.win.module.wms.controller.inventorychangeRecord.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; import java.time.LocalDateTime; import javax.validation.constraints.*; import org.springframework.format.annotation.DateTimeFormat; @@ -93,4 +88,6 @@ public class InventorychangeRecordMainBaseVO { @NotNull(message = "是否可用不能为空") private String available; + @Schema(description = "状态") + private String status; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExcelVO.java index b919b7f2..49106d21 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExcelVO.java @@ -1,7 +1,10 @@ package com.win.module.wms.controller.inventorychangeRecord.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,9 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class InventorychangeRecordMainExcelVO { + @ExcelProperty("单据号") + private String number; + @ExcelProperty("申请单号") private String requestNumber; @@ -35,15 +41,19 @@ public class InventorychangeRecordMainExcelVO { 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("部门") @@ -56,9 +66,6 @@ public class InventorychangeRecordMainExcelVO { @ExcelProperty("代码") private String code; - @ExcelProperty("单据号") - private String number; - @ExcelProperty("业务类型") private String businessType; @@ -66,12 +73,134 @@ public class InventorychangeRecordMainExcelVO { private String remark; @ExcelProperty("创建时间") + @ColumnWidth(value = 22) private LocalDateTime createTime; @ExcelProperty("创建者Id") private String creator; - @ExcelProperty("是否可用") + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat("true_false") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String available; + //子表数据 + @ExcelProperty("库位代码") + private String locationCode; + + @ExcelProperty("库位组代码") + private String locationGroupCode; + + @ExcelProperty("库区代码") + private String areaCode; + + @ExcelProperty("从数量") + private BigDecimal fromQty; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + + @ExcelProperty("从包装号") + private String fromPackingNumber; + + @ExcelProperty("从器具号") + private String fromContainerNumber; + + @ExcelProperty("从批次") + private String fromBatch; + + @ExcelProperty("从替代批次") + private String fromAltBatch; + + @ExcelProperty("从到货日期") + @ColumnWidth(value = 22) + private LocalDateTime fromArriveDate; + + @ExcelProperty("从生产日期") + @ColumnWidth(value = 22) + private LocalDateTime fromProduceDate; + + @ExcelProperty("从过期日期") + @ColumnWidth(value = 22) + private LocalDateTime fromExpireDate; + + @ExcelProperty(value = "从库存状态", converter = DictConvert.class) + @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String fromInventoryStatus; + + @ExcelProperty("到数量") + private BigDecimal toQty; + + @ExcelProperty("到货主代码") + private String toOwnerCode; + + @ExcelProperty("到包装号") + private String toPackingNumber; + + @ExcelProperty("到器具号") + private String toContainerNumber; + + @ExcelProperty("到批次") + private String toBatch; + + @ExcelProperty("到替代批次") + private String toAltBatch; + + @ExcelProperty("到到货日期") + @ColumnWidth(value = 22) + private LocalDateTime toArriveDate; + + @ExcelProperty("到生产日期") + @ColumnWidth(value = 22) + private LocalDateTime toProduceDate; + + @ExcelProperty("到过期日期") + @ColumnWidth(value = 22) + private LocalDateTime toExpireDate; + + @ExcelProperty(value = "到库存状态", converter = DictConvert.class) + @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String toInventoryStatus; + + @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("物品代码") + private String itemCode; + + @ExcelProperty("备注") + private String remarkDetail; + + @ExcelProperty("创建时间") + @ColumnWidth(value = 22) + private LocalDateTime createTimeDetail; + + @ExcelProperty("创建者Id") + private String creatorDetail; + + @ExcelProperty("任务明细ID") + private String jobDetailId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExportReqVO.java index 8085457c..4533b381 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExportReqVO.java @@ -69,4 +69,10 @@ public class InventorychangeRecordMainExportReqVO { @Schema(description = "是否可用") private String available; + @Schema(description = "从库存状态") + private String fromInventoryStatus; + + @Schema(description = "到库存状态") + private String toInventoryStatus; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainPageReqVO.java index e9f30b73..08e059af 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainPageReqVO.java @@ -71,4 +71,10 @@ public class InventorychangeRecordMainPageReqVO extends PageParam { @Schema(description = "是否可用") private String available; + @Schema(description = "从库存状态") + private String fromInventoryStatus; + + @Schema(description = "到库存状态") + private String toInventoryStatus; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/InventorychangeRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/InventorychangeRequestMainController.java index ac54e10c..8b230996 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/InventorychangeRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/InventorychangeRequestMainController.java @@ -3,14 +3,22 @@ package com.win.module.wms.controller.inventorychangeRequest; 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.ConvertUtil; 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.deliverRequest.vo.DeliverRequestMainExcelVO; import com.win.module.wms.controller.inventorychangeRequest.vo.*; +import com.win.module.wms.convert.deliverRequest.DeliverRequestMainConvert; import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert; +import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO; +import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; +import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.inventorychangeRequest.InventorychangeRequestDetailService; import com.win.module.wms.service.inventorychangeRequest.InventorychangeRequestMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -41,6 +49,9 @@ public class InventorychangeRequestMainController { @Resource private InventorychangeRequestMainService inventorychangeRequestMainService; + @Resource + private InventorychangeRequestDetailService inventorychangeRequestDetailService; + @Resource private AdminUserApi userApi; @@ -54,7 +65,8 @@ public class InventorychangeRequestMainController { @PutMapping("/update") @Operation(summary = "更新库存修改申请主") @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:update')") - public CommonResult updateInventorychangeRequestMain(@Valid @RequestBody InventorychangeRequestMainUpdateReqVO updateReqVO) { + public CommonResult updateInventorychangeRequestMain( + @Valid @RequestBody InventorychangeRequestMainUpdateReqVO updateReqVO) { inventorychangeRequestMainService.updateInventorychangeRequestMain(updateReqVO); return success(true); } @@ -91,7 +103,13 @@ public class InventorychangeRequestMainController { @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:query')") public CommonResult> getInventorychangeRequestMainPage(@Valid InventorychangeRequestMainPageReqVO pageVO) { PageResult pageResult = inventorychangeRequestMainService.getInventorychangeRequestMainPage(pageVO); - return success(InventorychangeRequestMainConvert.INSTANCE.convertPage(pageResult)); + PageResult result = InventorychangeRequestMainConvert.INSTANCE.convertPage(pageResult); + for(InventorychangeRequestMainRespVO vo : result.getList()) { + AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); + //后端创建个字段作为前端展示的虚拟字段 + vo.setCreator(user.getNickname()); + } + return success(result); } @PostMapping("/senior") @Operation(summary = "高级搜索获得库存修改申请主分页") @@ -114,13 +132,23 @@ public class InventorychangeRequestMainController { HttpServletResponse response) throws IOException { List list = inventorychangeRequestMainService.getInventorychangeRequestMainList(exportReqVO); // 导出 Excel - List datas = InventorychangeRequestMainConvert.INSTANCE.convertList02(list); - for(InventorychangeRequestMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "库存修改申请主.xls", "数据", InventorychangeRequestMainExcelVO.class, datas); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "库存修改申请主.xls", "数据", InventorychangeRequestMainExcelVO.class, resultList, mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出库存修改申请主 Excel") + @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:export')") + @OperateLog(type = EXPORT) + public void exportInventorychangeRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = inventorychangeRequestMainService.getInventorychangeRequestMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "库存修改申请主.xlsx", "数据", InventorychangeRequestMainExcelVO.class, resultList, mapDropDown); } @GetMapping("/get-import-template") @@ -129,30 +157,53 @@ public class InventorychangeRequestMainController { // 手动创建导出 demo List list = new ArrayList<>(); Map mapDropDown = new HashMap<>(); -// String[] purchaseReturnReason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON); -// mapDropDown.put(16, purchaseReturnReason); -// String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); -// mapDropDown.put(25, uom); // 输出 ExcelUtils.write(response, "库存修改申请信息导入模板.xlsx", "发货计划信息列表", InventorychangeRequestMainImportVO.class, list, mapDropDown); } + private List getExcelVo(List list, Map mapDropDown) { + String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS); + mapDropDown.put(9, requestStatus); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(28, inventoryStatus); + mapDropDown.put(38, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(47, uom); + List resultList = new ArrayList<>(); + // 导出 + for(InventorychangeRequestMainDO mainDO : list) { + List subList = inventorychangeRequestDetailService.selectListByID(mainDO.getId()); + for(InventorychangeRequestDetailDO detailDO : subList) { + InventorychangeRequestMainExcelVO vo = InventorychangeRequestMainConvert.INSTANCE.convert(mainDO, detailDO); + vo.setCreator(userApi.getUser(Long.valueOf(mainDO.getCreator())).getNickname()); + vo.setUpdater(userApi.getUser(Long.valueOf(mainDO.getUpdater())).getNickname()); + vo.setCreatorDetail(userApi.getUser(Long.valueOf(detailDO.getCreator())).getNickname()); + vo.setUpdaterDetail(userApi.getUser(Long.valueOf(detailDO.getUpdater())).getNickname()); + resultList.add(vo); + } + } + return resultList; + } @PostMapping("/import") @Operation(summary = "导入库存修改申请") @Parameters({ @Parameter(name = "file", description = "Excel 文件", required = true), @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "fromInventoryStatus", description = "从库存状态"), + @Parameter(name = "toInventoryStatus", description = "到库存状态"), @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") }) - @PreAuthorize("@ss.hasPermission('wms:deliver-plan-main:import')") + @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:import')") public CommonResult> importExcel(HttpServletResponse response, @RequestParam("file") MultipartFile file, @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "fromInventoryStatus") String fromInventoryStatus , + @RequestParam(value = "toInventoryStatus") String toInventoryStatus , @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { List list = ExcelUtils.read(file, InventorychangeRequestMainImportVO.class); ConvertUtil convertUtil = new ConvertUtil<>(InventorychangeRequestMainCreateReqVO.class); List createReqVOList = convertUtil.invoke(list).getDataList(); - List errorList = inventorychangeRequestMainService.importInventorychangeRequestMainList(createReqVOList, mode, updatePart); + List errorList = inventorychangeRequestMainService.importInventorychangeRequestMainList(createReqVOList, mode, fromInventoryStatus, toInventoryStatus, updatePart); Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); if(!errorList.isEmpty()) { @@ -162,4 +213,57 @@ public class InventorychangeRequestMainController { return success(returnMap); } + @PutMapping("/close") + @Operation(summary = "关闭库存修改申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:close')") + public CommonResult closeInventorychangeRequestMain(@RequestParam("id") Long id) { + Integer count = inventorychangeRequestMainService.closeInventorychangeRequestMain(id); + return success(count > 0); + } + + @PutMapping("/reAdd") + @Operation(summary = "重新添加库存修改申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:reAdd')") + public CommonResult reAddInventorychangeRequestMain(@RequestParam("id") Long id) { + Integer count = inventorychangeRequestMainService.reAddInventorychangeRequestMain(id); + return success(count > 0); + } + + @PutMapping("/submit") + @Operation(summary = "提交库存修改申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:submit')") + public CommonResult submitInventorychangeRequestMain(@RequestParam("id") Long id) { + Integer count = inventorychangeRequestMainService.submitInventorychangeRequestMain(id); + return success(count > 0); + } + + @PutMapping("/agree") + @Operation(summary = "审批通过库存修改申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:agree')") + public CommonResult agreeInventorychangeRequestMain(@RequestParam("id") Long id) { + Integer count = inventorychangeRequestMainService.agreeInventorychangeRequestMain(id); + return success(count > 0); + } + + @PutMapping("/handle") + @Operation(summary = "处理库存修改申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:handle')") + public CommonResult handleInventorychangeRequestMain(@RequestParam("id") Long id) { + Integer count = inventorychangeRequestMainService.handleInventorychangeRequestMain(id); + return success(count > 0); + } + + @PutMapping("/refused") + @Operation(summary = "审批拒绝库存修改申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:refused')") + public CommonResult abortInventorychangeRequestMain(@RequestParam("id") Long id) { + Integer count = inventorychangeRequestMainService.abortInventorychangeRequestMain(id); + return success(count > 0); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainBaseVO.java index 612ad298..a1d653d2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainBaseVO.java @@ -1,11 +1,8 @@ package com.win.module.wms.controller.inventorychangeRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; import java.time.LocalDateTime; import javax.validation.constraints.*; import org.springframework.format.annotation.DateTimeFormat; @@ -23,22 +20,19 @@ public class InventorychangeRequestMainBaseVO { private Long id; @Schema(description = "仓库代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "仓库代码不能为空") private String warehouseCode; @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "单据号不能为空") + @OnlyOne private String number; @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "业务类型不能为空") private String businessType; @Schema(description = "备注") private String remark; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "创建时间不能为空") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime createTime; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExcelVO.java index 6966862e..1d0385d9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExcelVO.java @@ -1,7 +1,10 @@ package com.win.module.wms.controller.inventorychangeRequest.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; @@ -21,12 +24,12 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class InventorychangeRequestMainExcelVO { - @ExcelProperty("仓库代码") - private String warehouseCode; - @ExcelProperty("单据号") private String number; + @ExcelProperty("仓库代码") + private String warehouseCode; + @ExcelProperty("业务类型") private String businessType; @@ -34,15 +37,18 @@ public class InventorychangeRequestMainExcelVO { private String remark; @ExcelProperty("创建时间") + @ColumnWidth(value = 22) private LocalDateTime createTime; @ExcelProperty("创建者用户名") private String creator; @ExcelProperty("申请时间") + @ColumnWidth(value = 22) private LocalDateTime requestTime; @ExcelProperty("截止时间") + @ColumnWidth(value = 22) private LocalDateTime dueTime; @ExcelProperty("部门") @@ -53,6 +59,7 @@ public class InventorychangeRequestMainExcelVO { private String status; @ExcelProperty("最后更新时间") + @ColumnWidth(value = 22) private LocalDateTime updateTime; @ExcelProperty("最后更新者用户名") @@ -70,4 +77,120 @@ public class InventorychangeRequestMainExcelVO { @ExcelProperty("直接生成记录") private String directCreateRecord; + //子表数据 + @ExcelProperty("库位组代码") + private String locationGroupCode; + + @ExcelProperty("库位代码") + private String locationCode; + + @ExcelProperty("库区代码") + private String areaCode; + + @ExcelProperty("从数量") + private BigDecimal fromQty; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + + @ExcelProperty("从包装号") + private String fromPackingNumber; + + @ExcelProperty("从器具号") + private String fromContainerNumber; + + @ExcelProperty("从批次") + private String fromBatch; + + @ExcelProperty("从替代批次") + private String fromAltbatch; + + @ExcelProperty("从到货日期") + @ColumnWidth(value = 22) + private LocalDateTime fromArriveDate; + + @ExcelProperty("从生产日期") + @ColumnWidth(value = 22) + private LocalDateTime fromProduceDate; + + @ExcelProperty("从过期日期") + @ColumnWidth(value = 22) + private LocalDateTime fromExpireDate; + + @ExcelProperty(value = "从库存状态", converter = DictConvert.class) + @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String fromInventoryStatus; + + @ExcelProperty("到数量") + private BigDecimal toQty; + + @ExcelProperty("到货主代码") + private String toOwnerCode; + + @ExcelProperty("到包装号") + private String toPackingNumber; + + @ExcelProperty("到器具号") + private String toContainerNumber; + + @ExcelProperty("到批次") + private String toBatch; + + @ExcelProperty("到替代批次") + private String toAltBatch; + + @ExcelProperty("到到货日期") + @ColumnWidth(value = 22) + private LocalDateTime toArrivdAte; + + @ExcelProperty("到生产日期") + @ColumnWidth(value = 22) + private LocalDateTime toProduceDate; + + @ExcelProperty("到过期日期") + @ColumnWidth(value = 22) + private LocalDateTime toExpireDate; + + @ExcelProperty(value = "到库存状态", converter = DictConvert.class) + @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String toInventoryStatus; + + @ExcelProperty("备注") + private String remarkDetail; + + @ExcelProperty("创建时间") + @ColumnWidth(value = 22) + 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("最后更新时间") + @ColumnWidth(value = 22) + private LocalDateTime updateTimeDetail; + + @ExcelProperty("最后更新者用户名") + private String updaterDetail; + + @ExcelProperty("物品代码") + private String itemCode; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExportReqVO.java index b904b21f..36f641ca 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExportReqVO.java @@ -65,4 +65,10 @@ public class InventorychangeRequestMainExportReqVO { @Schema(description = "直接生成记录") private String directCreateRecord; + @Schema(description = "从库存状态") + private String fromInventoryStatus; + + @Schema(description = "到库存状态") + private String toInventoryStatus; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainImportVO.java index f6b855e8..48c5229f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainImportVO.java @@ -18,6 +18,9 @@ import lombok.experimental.Accessors; @Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 public class InventorychangeRequestMainImportVO { + @ExcelProperty("单据号") + private String number; + //子表数据 @ExcelProperty("零件号") private String itemCode; @@ -27,8 +30,6 @@ public class InventorychangeRequestMainImportVO { private String fromContainerNumber; @ExcelProperty("批次") private String fromBatch; - @ExcelProperty("库存状态") - private String fromInventoryStatus; @ExcelProperty("来源库位") - private String fromLocationCode; + private String locationCode; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainPageReqVO.java index 222f72e6..d237d02a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainPageReqVO.java @@ -67,4 +67,10 @@ public class InventorychangeRequestMainPageReqVO extends PageParam { @Schema(description = "直接生成记录") private String directCreateRecord; + @Schema(description = "从库存状态") + private String fromInventoryStatus; + + @Schema(description = "到库存状态") + private String toInventoryStatus; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java index 49e95f89..cd3a7af4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java @@ -210,8 +210,9 @@ public class LocationController { public LocationDO selectLocation(String pcode) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("code",pcode); + queryWrapper.eq("available","TRUE"); LocationDO locationDO = locationMapper.selectOne(queryWrapper); - if(locationDO != null && "TRUE".equals(locationDO.getAvailable())){ + if(locationDO != null){ return locationDO; }else { throw exception(LOCATION_NOT_EXISTS); 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 e650138b..3daa7ed3 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 @@ -47,10 +47,6 @@ public interface DeliverRequestMainConvert { @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"), }) DeliverRequestMainExcelVO convert(DeliverRequestMainDO mainDO, DeliverRequestDetailDO detailDo); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRecord/InventorychangeRecordMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRecord/InventorychangeRecordMainConvert.java index 2b64047f..29f039b3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRecord/InventorychangeRecordMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRecord/InventorychangeRecordMainConvert.java @@ -8,7 +8,10 @@ import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRec import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainExcelVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainRespVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO; @@ -34,4 +37,20 @@ public interface InventorychangeRecordMainConvert { List convertList02(List list); + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.interfaceType", target = "interfaceType"), + @Mapping(source = "mainDO.inTransactionType", target = "inTransactionType"), + @Mapping(source = "mainDO.outTransactionType", target = "outTransactionType"), + @Mapping(source = "mainDO.code", target = "code"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "detailDO.createTime", target = "createTimeDetail"), + @Mapping(source = "detailDO.creator", target = "creatorDetail"), + @Mapping(source = "detailDO.remark", target = "remarkDetail"), + @Mapping(source = "detailDO.interfaceType", target = "interfaceTypeDetail"), + @Mapping(source = "detailDO.code", target = "codeDetail"), + }) + InventorychangeRecordMainExcelVO convert(InventorychangeRecordMainDO mainDO, InventorychangeRecordDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java index f590e56c..687d2caf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java @@ -48,7 +48,4 @@ public interface InventorychangeRequestDetailConvert { @Mapping(source = "mainDO.updater", target = "updater"), }) InventorychangeRequestDetailExcelVO convert(InventorychangeRequestMainDO mainDO, InventorychangeRequestDetailDO detailDO); - - InventorychangeRequestMainImportErrorVO convert(InventorychangeRequestMainCreateReqVO mainVo, InventorychangeRequestDetailCreateReqVO detailVo); - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java index 795673df..5b3c4cce 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java @@ -5,6 +5,8 @@ import com.win.module.wms.controller.inventorychangeRequest.vo.*; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -33,8 +35,23 @@ public interface InventorychangeRequestMainConvert { List convertList02(List list); + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) InventorychangeRequestMainImportErrorVO convert(InventorychangeRequestMainCreateReqVO mainVo, InventorychangeRequestDetailDO detailDo); - - + @Mappings({ + @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"), + }) + InventorychangeRequestMainExcelVO convert(InventorychangeRequestMainDO mainDO, InventorychangeRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveJob/InventorymoveJobMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveJob/InventorymoveJobMainConvert.java index 5672112c..72d5491d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveJob/InventorymoveJobMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveJob/InventorymoveJobMainConvert.java @@ -8,6 +8,7 @@ import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainCre import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainExcelVO; import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainRespVO; import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO; @@ -34,4 +35,5 @@ public interface InventorymoveJobMainConvert { List convertList02(List list); + InventorymoveJobMainDO convert(InventorymoveRequestMainDO mainDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRecord/InventorychangeRecordDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRecord/InventorychangeRecordDetailDO.java index 1181b2cd..18405980 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRecord/InventorychangeRecordDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRecord/InventorychangeRecordDetailDO.java @@ -1,5 +1,6 @@ package com.win.module.wms.dal.dataobject.inventorychangeRecord; +import com.sun.xml.bind.v2.TODO; import lombok.*; import java.util.*; import java.math.BigDecimal; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestDetailDO.java index 3781e464..bd06627e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestDetailDO.java @@ -2,16 +2,6 @@ package com.win.module.wms.dal.dataobject.inventorychangeRequest; import com.sun.xml.bind.v2.TODO; import lombok.*; -import java.util.*; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; import java.math.BigDecimal; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestMainDO.java index 98335694..34b854e7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestMainDO.java @@ -1,10 +1,7 @@ package com.win.module.wms.dal.dataobject.inventorychangeRequest; +import com.sun.xml.bind.v2.TODO; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import com.win.framework.mybatis.core.dataobject.BaseDO; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordDetailMapper.java index 305147e8..a48d936b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordDetailMapper.java @@ -106,4 +106,8 @@ public interface InventorychangeRecordDetailMapper extends BaseMapperX selectList(Long masterId){ + return selectList(new LambdaQueryWrapperX() + .eq(InventorychangeRecordDetailDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordMainMapper.java index 7f456250..348544be 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordMainMapper.java @@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainExportReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainPageReqVO; import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO; +import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; import org.apache.ibatis.annotations.Mapper; /** @@ -21,8 +22,8 @@ import org.apache.ibatis.annotations.Mapper; public interface InventorychangeRecordMainMapper extends BaseMapperX { default PageResult selectPage(InventorychangeRecordMainPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(InventorychangeRecordMainDO::getRequestNumber, reqVO.getRequestNumber()) + LambdaQueryWrapperX< InventorychangeRecordMainDO > lambdaQueryWrapperX = new LambdaQueryWrapperX<>(); + lambdaQueryWrapperX.eqIfPresent(InventorychangeRecordMainDO::getRequestNumber, reqVO.getRequestNumber()) .eqIfPresent(InventorychangeRecordMainDO::getWarehouseCode, reqVO.getWarehouseCode()) .eqIfPresent(InventorychangeRecordMainDO::getOutTransactionType, reqVO.getOutTransactionType()) .eqIfPresent(InventorychangeRecordMainDO::getInTransactionType, reqVO.getInTransactionType()) @@ -39,14 +40,26 @@ public interface InventorychangeRecordMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } default List selectList(InventorychangeRecordMainExportReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .eqIfPresent(InventorychangeRecordMainDO::getRequestNumber, reqVO.getRequestNumber()) + LambdaQueryWrapperX< InventorychangeRecordMainDO > lambdaQueryWrapperX = new LambdaQueryWrapperX<>(); + lambdaQueryWrapperX.eqIfPresent(InventorychangeRecordMainDO::getRequestNumber, reqVO.getRequestNumber()) .eqIfPresent(InventorychangeRecordMainDO::getWarehouseCode, reqVO.getWarehouseCode()) .eqIfPresent(InventorychangeRecordMainDO::getOutTransactionType, reqVO.getOutTransactionType()) .eqIfPresent(InventorychangeRecordMainDO::getInTransactionType, reqVO.getInTransactionType()) @@ -63,7 +76,22 @@ public interface InventorychangeRecordMainMapper 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/inventorychangeRequest/InventorychangeRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestDetailMapper.java index 01ba6499..fcdc07d8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestDetailMapper.java @@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailExportReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailPageReqVO; +import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; import org.apache.ibatis.annotations.Mapper; @@ -104,4 +105,8 @@ public interface InventorychangeRequestDetailMapper extends BaseMapperX selectList(Long masterId){ + return selectList(new LambdaQueryWrapperX() + .eq(InventorychangeRequestDetailDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestMainMapper.java index 462f310c..fb939eb8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestMainMapper.java @@ -9,7 +9,9 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainExportReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainPageReqVO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; +import com.win.module.wms.dal.dataobject.packageMassage.PackageDO; import org.apache.ibatis.annotations.Mapper; /** @@ -21,8 +23,8 @@ import org.apache.ibatis.annotations.Mapper; public interface InventorychangeRequestMainMapper extends BaseMapperX { default PageResult selectPage(InventorychangeRequestMainPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(InventorychangeRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode()) + LambdaQueryWrapperX lambdaQueryWrapperX = new LambdaQueryWrapperX<>(); + lambdaQueryWrapperX.eqIfPresent(InventorychangeRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode()) .eqIfPresent(InventorychangeRequestMainDO::getNumber, reqVO.getNumber()) .eqIfPresent(InventorychangeRequestMainDO::getBusinessType, reqVO.getBusinessType()) .eqIfPresent(InventorychangeRequestMainDO::getRemark, reqVO.getRemark()) @@ -38,14 +40,26 @@ public interface InventorychangeRequestMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } default List selectList(InventorychangeRequestMainExportReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .eqIfPresent(InventorychangeRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode()) + LambdaQueryWrapperX lambdaQueryWrapperX = new LambdaQueryWrapperX<>(); + lambdaQueryWrapperX.eqIfPresent(InventorychangeRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode()) .eqIfPresent(InventorychangeRequestMainDO::getNumber, reqVO.getNumber()) .eqIfPresent(InventorychangeRequestMainDO::getBusinessType, reqVO.getBusinessType()) .eqIfPresent(InventorychangeRequestMainDO::getRemark, reqVO.getRemark()) @@ -61,7 +75,22 @@ public interface InventorychangeRequestMainMapper 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/inventorymoveRequest/InventorymoveRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestDetailMapper.java index 1a3342bc..a03d6546 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestDetailMapper.java @@ -82,4 +82,7 @@ public interface InventorymoveRequestDetailMapper extends BaseMapperX selectList(Long masterId){ + return selectList(new LambdaQueryWrapperX().eq(InventorymoveRequestDetailDO::getMasterId,masterId)); + } } 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 25af7f3f..21d418de 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 @@ -271,6 +271,10 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque detailDO.setNumber(mainDo.getNumber()); detailDO.setMasterId(mainDo.getId()); } + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) { + this.generateJob(mainDo, subDOList); + } customerreturnRequestDetailMapper.insertBatch(subDOList); } }); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java index e8d0f1c3..a1d67175 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java @@ -263,7 +263,7 @@ public class CustomersettleRequestMainServiceImpl implements CustomersettleReque BeanUtils.copyProperties(mainDO, customersettleRecordMainCreateReqVO); customersettleRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); - String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_SETTLE_REQUEST.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_SETTLE_RECORD.getCode()); customersettleRecordMainCreateReqVO.setNumber(number); //增加业务类型 BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomersettleRecord"); 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 25bb27b8..0e305cce 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 @@ -478,6 +478,10 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService detailDO.setNumber(number); detailDO.setInventoryStatus("OK"); } + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) { + this.generateJob(mainDo, subDOList); + } deliverRequestDetailMapper.insertBatch(subDOList); } }); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailService.java index 2dc07508..d1f111db 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailService.java @@ -81,4 +81,5 @@ public interface InventorychangeRecordDetailService { */ List getInventorychangeRecordDetailList(InventorychangeRecordDetailExportReqVO exportReqVO); + List selectListByID(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailServiceImpl.java index 60f5362e..590c0d2c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailServiceImpl.java @@ -87,4 +87,8 @@ public class InventorychangeRecordDetailServiceImpl implements InventorychangeRe return inventorychangeRecordDetailMapper.selectList(exportReqVO); } + @Override + public List selectListByID(Long masterId){ + return inventorychangeRecordDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainService.java index d31f510a..8d74e213 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainService.java @@ -10,6 +10,7 @@ import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRec import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainUpdateReqVO; import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; /** * 库存修改记录主 Service 接口 @@ -81,4 +82,5 @@ public interface InventorychangeRecordMainService { */ List getInventorychangeRecordMainList(InventorychangeRecordMainExportReqVO exportReqVO); + List getInventorychangeRecordMainList(CustomConditions conditions); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainServiceImpl.java index 7c67b204..93745fee 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainServiceImpl.java @@ -5,6 +5,7 @@ import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRec import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainExportReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainPageReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -87,4 +88,8 @@ public class InventorychangeRecordMainServiceImpl implements InventorychangeReco return inventorychangeRecordMainMapper.selectList(exportReqVO); } + @Override + public List getInventorychangeRecordMainList(CustomConditions conditions) { + return inventorychangeRecordMainMapper.selectSeniorList(conditions); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailService.java index 969bd4bb..57ebf9d1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailService.java @@ -80,4 +80,5 @@ public interface InventorychangeRequestDetailService { */ List getInventorychangeRequestDetailList(InventorychangeRequestDetailExportReqVO exportReqVO); + List selectListByID(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailServiceImpl.java index b480a104..c7c1b917 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailServiceImpl.java @@ -5,6 +5,7 @@ import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRe import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailExportReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailPageReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -87,4 +88,8 @@ public class InventorychangeRequestDetailServiceImpl implements InventorychangeR return inventorychangeRequestDetailMapper.selectList(exportReqVO); } + @Override + public List selectListByID(Long masterId){ + return inventorychangeRequestDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainService.java index ba682b0d..46d2dd18 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainService.java @@ -84,6 +84,49 @@ public interface InventorychangeRequestMainService { * @param updatePart 是否支持更新 * @return 导入结果 */ - public List importInventorychangeRequestMainList(List datas, Integer mode, boolean updatePart); + public List importInventorychangeRequestMainList(List datas, Integer mode,String fromInventoryStatus , String toInventoryStatus , boolean updatePart); + /** + * 关闭 + * @param id + * @return + */ + public Integer closeInventorychangeRequestMain(Long id); + + /** + * 重新添加 + * @param id + * @return + */ + public Integer reAddInventorychangeRequestMain(Long id); + + /** + * 提交 + * @param id + * @return + */ + public Integer submitInventorychangeRequestMain(Long id); + + /** + * 审批通过 + * @param id + * @return + */ + public Integer agreeInventorychangeRequestMain(Long id); + + /** + * 执行 + * @param id + * @return + */ + public Integer handleInventorychangeRequestMain(Long id); + + /** + * 审批驳回 + * @param id + * @return + */ + public Integer abortInventorychangeRequestMain(Long id); + + List getInventorychangeRequestMainList(CustomConditions conditions); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java index 21d770b9..0c3e7af8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java @@ -1,6 +1,7 @@ package com.win.module.wms.service.inventorychangeRequest; import cn.hutool.core.collection.CollUtil; +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; @@ -9,30 +10,45 @@ 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.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordDetailCreateReqVO; +import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainCreateReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.*; +import com.win.module.wms.convert.inventorychangeRecord.InventorychangeRecordDetailConvert; +import com.win.module.wms.convert.inventorychangeRecord.InventorychangeRecordMainConvert; import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestDetailConvert; import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert; 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.deliverRequest.DeliverRequestMainDO; +import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.location.LocationDO; +import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.balance.BalanceMapper; +import com.win.module.wms.dal.mysql.inventorychangeRecord.InventorychangeRecordDetailMapper; +import com.win.module.wms.dal.mysql.inventorychangeRecord.InventorychangeRecordMainMapper; import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestDetailMapper; import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.enums.request.RequestStatusState; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itempackaging.ItempackagingService; import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.service.recordsetting.RecordsettingService; import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.shift.ShiftService; 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.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -54,6 +70,10 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq @Resource private InventorychangeRequestDetailMapper inventorychangeRequestDetailMapper; @Resource + private InventorychangeRecordMainMapper inventorychangeRecordMainMapper; + @Resource + private InventorychangeRecordDetailMapper inventorychangeRecordDetailMapper; + @Resource private ItembasicService itembasicService; @Resource private ItempackagingService itempackagingService; @@ -69,6 +89,10 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq private TrendsApi trendsApi; @Resource private RequestsettingService requestsettingService; + @Resource + private BalanceMapper balanceMapper; + @Resource + private RecordsettingService recordsettingService; @Override public Long createInventorychangeRequestMain(InventorychangeRequestMainCreateReqVO createReqVO) { @@ -76,22 +100,22 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToCreate(createReqVO); //调用自动执行方法 if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) { - + generateRecord(inventorychangeRequestMainDO,inventorychangeRequestDetailMapper.selectList(inventorychangeRequestMainDO.getId())); } - trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE); + trendsApi.createTrends(requestsettingDO.getId(), "InventorychangeRequest", "增加了库存修改申请", TrendsTypeEnum.CREATE); return inventorychangeRequestMainDO.getId(); } @Override public void updateInventorychangeRequestMain(InventorychangeRequestMainUpdateReqVO updateReqVO) { - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverPlan"); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventorychangeRequest"); // 校验存在 validateInventorychangeRequestMainExists(updateReqVO.getId()); InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToUpdate(updateReqVO); if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) { } - trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "修改了发货计划", TrendsTypeEnum.CREATE); + trendsApi.createTrends(requestsettingDO.getId(), "InventorychangeRequest", "修改了库存修改申请", TrendsTypeEnum.UPDATE); } @Override @@ -102,10 +126,12 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq inventorychangeRequestMainMapper.deleteById(id); } - private void validateInventorychangeRequestMainExists(Long id) { - if (inventorychangeRequestMainMapper.selectById(id) == null) { + private InventorychangeRequestMainDO validateInventorychangeRequestMainExists(Long id) { + InventorychangeRequestMainDO inventorychangeRequestMainDO = inventorychangeRequestMainMapper.selectById(id); + if (inventorychangeRequestMainDO == null) { throw exception(INVENTORYCHANGE_REQUEST_MAIN_NOT_EXISTS); } + return inventorychangeRequestMainDO; } @Override @@ -133,23 +159,172 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq return inventorychangeRequestMainMapper.selectList(exportReqVO); } + //关闭 + @Override + public Integer closeInventorychangeRequestMain(Long id) { + // 校验存在存在下级单据 + InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); + 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, "inventorychangeRequest", "关闭了库存修改申请", TrendsTypeEnum.UPDATE); + return inventorychangeRequestMainMapper.updateById(mainDO); + } + + //打开 + @Override + @Transactional + public Integer reAddInventorychangeRequestMain(Long id) { + // 校验存在存在下级单据 + InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); + 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, "inventorychangeRequest", "打开了库存修改申请", TrendsTypeEnum.UPDATE); + return inventorychangeRequestMainMapper.updateById(mainDO); + } + + //提交 + @Transactional + @Override + public Integer submitInventorychangeRequestMain(Long id) { + InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(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.generateRecord(mainDO, inventorychangeRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "inventorychangeRequest", "提交了库存修改申请", TrendsTypeEnum.UPDATE); + return inventorychangeRequestMainMapper.updateById(mainDO); + } + + /** + * 生成库存修改记录,不要改动事务传播方式,否则会有事务问题 + * + * @param mainDO 库存修改主 + * @param detailDOList 库存修改子 + */ + private void generateRecord(InventorychangeRequestMainDO mainDO, List detailDOList) { + InventorychangeRecordMainCreateReqVO inventorychangeRecordMainCreateReqVO = new InventorychangeRecordMainCreateReqVO(); + BeanUtils.copyProperties(mainDO, inventorychangeRecordMainCreateReqVO); + inventorychangeRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); + String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_CHANGE_RECORD.getCode()); + inventorychangeRecordMainCreateReqVO.setNumber(number); + inventorychangeRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now()); + inventorychangeRecordMainCreateReqVO.setActiveDate(mainDO.getCreateTime()); + inventorychangeRecordMainCreateReqVO.setAvailable("TRUE"); + String replace = inventorychangeRecordMainCreateReqVO.getBusinessType().replace("Request", "Record"); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType(replace); + RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist(replace); + inventorychangeRecordMainCreateReqVO.setInTransactionType(businesstypeDO.getInTransactionType()); + inventorychangeRecordMainCreateReqVO.setOutTransactionType(businesstypeDO.getOutTransactionType()); + inventorychangeRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); + inventorychangeRecordMainCreateReqVO.setInterfaceType(recordsettingDO.getInterfaceType()); + InventorychangeRecordMainDO convert = InventorychangeRecordMainConvert.INSTANCE.convert(inventorychangeRecordMainCreateReqVO); + inventorychangeRecordMainMapper.insert(convert); + for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : detailDOList) { + InventorychangeRecordDetailCreateReqVO inventorychangeRecordDetailCreateReqVO = new InventorychangeRecordDetailCreateReqVO(); + BeanUtils.copyProperties(inventorychangeRequestDetailDO, inventorychangeRecordDetailCreateReqVO); + inventorychangeRecordDetailCreateReqVO.setNumber(number); + inventorychangeRecordDetailCreateReqVO.setInterfaceType(recordsettingDO.getInterfaceType()); + inventorychangeRecordDetailCreateReqVO.setMasterId(convert.getId().toString()); + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.add(inventorychangeRequestDetailDO.getFromInventoryStatus()); + validatorLocationReturnManagementAccuracy(mainDO,inventorychangeRequestDetailDO,inventoryStatus,true); + inventorychangeRecordDetailMapper.insert(InventorychangeRecordDetailConvert.INSTANCE.convert(inventorychangeRecordDetailCreateReqVO)); + trendsApi.createTrends(mainDO.getId(), "InventorychangeRecord", "库存修改申请生成库存修改记录", TrendsTypeEnum.CREATE); + } + } + + //审批同意 + @Transactional + @Override + public Integer agreeInventorychangeRequestMain(Long id) { + // 校验存在 + InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); + if(!flag) { + throw new ServiceException(DELIVER_REQUEST_CANNOT_AGREE); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateRecord(mainDO, inventorychangeRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "inventorychangeRequest", "审批同意了库存修改申请", TrendsTypeEnum.UPDATE); + return inventorychangeRequestMainMapper.updateById(mainDO); + } + + //执行 + @Transactional + @Override + public Integer handleInventorychangeRequestMain(Long id) { + // 校验存在 + InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(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.generateRecord(mainDO, inventorychangeRequestDetailMapper.selectList(mainDO.getId())); + trendsApi.createTrends(id, "inventorychangeRequest", "执行了库存修改申请", TrendsTypeEnum.UPDATE); + return inventorychangeRequestMainMapper.updateById(mainDO); + } + + //审批拒绝 + @Transactional + @Override + public Integer abortInventorychangeRequestMain(Long id) { + // 校验存在 + InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(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, "inventorychangeRequest", "审批拒绝了库存修改申请", TrendsTypeEnum.UPDATE); + return inventorychangeRequestMainMapper.updateById(mainDO); + } + + @Override + public List getInventorychangeRequestMainList(CustomConditions conditions) { + return inventorychangeRequestMainMapper.selectSeniorList(conditions); + } + @Override - public List importInventorychangeRequestMainList(List datas, Integer mode, boolean updatePart) { + public List importInventorychangeRequestMainList(List datas, Integer mode, String fromInventoryStatus , String toInventoryStatus ,boolean updatePart) { if (CollUtil.isEmpty(datas)) { - throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); + throw exception(INVENTORYCHANGE_REQUEST_IMPORT_LIST_IS_EMPTY); } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - BusinesstypeDO businesstypeDO = new BusinesstypeDO(); InventorychangeRequestMainDO mainDo = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO); - String messageMain = validateInventorychangeRequestMainImport(mainDo, businesstypeDO); + String messageMain = validateInventorychangeRequestMainImport(mainDo); List subList = createReqVO.getSubList(); List subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList); // 是否有错误数据 boolean flag = true; for (InventorychangeRequestDetailDO detailDO : subDOList) { - String messageDetail = validateInventorychangeRequestDetailImport(detailDO, mainDo, businesstypeDO); - if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + detailDO.setFromInventoryStatus(fromInventoryStatus); + detailDO.setToInventoryStatus(toInventoryStatus); + String messageDetail = validateInventorychangeRequestDetailImport(detailDO, mainDo); + if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { InventorychangeRequestMainImportErrorVO importErrorVO = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); importErrorVO.setImportStatus("失败"); messageMain = messageMain + messageDetail; @@ -161,17 +336,15 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq //写入数据 if (flag) { mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryChangeRequest"); - if (businesstypeDO != null) { - mainDo.setBusinessType(businesstypeDO.getCode()); - } - String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_CHANGE_REQUEST.getCode()); - mainDo.setNumber(number); inventorychangeRequestMainMapper.insert(mainDo); for (InventorychangeRequestDetailDO detailDO : subDOList) { detailDO.setNumber(mainDo.getNumber()); detailDO.setMasterId(mainDo.getId()); } + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) { + this.generateRecord(mainDo, subDOList); + } inventorychangeRequestDetailMapper.insertBatch(subDOList); } }); @@ -184,7 +357,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq * @param mainDo * @return */ - private String validateInventorychangeRequestMainImport(InventorychangeRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + private String validateInventorychangeRequestMainImport(InventorychangeRequestMainDO mainDo) { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList String messageMain = ""; //主表的验证 @@ -197,8 +370,21 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq * @param detailDo * @return */ - private String validateInventorychangeRequestDetailImport(InventorychangeRequestDetailDO detailDo, InventorychangeRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + private String validateInventorychangeRequestDetailImport(InventorychangeRequestDetailDO detailDo, InventorychangeRequestMainDO mainDo) { String messageDetail = ""; + ItembasicDO itembasicDO = null; + BusinesstypeDO businesstypeDO; + // 校验物品基础信息 + try { + itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setUom(itembasicDO.getUom()); + detailDo.setProjectCode(itembasicDO.getProject()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } //校验来源库位基础信息 try { LocationDO locationDO = locationService.selectLocation(detailDo.getLocationCode()); @@ -210,67 +396,44 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; } - // 校验物品基础信息 - try { - ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); - if (itembasicDO.getUom() != detailDo.getUom()) { - messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","; - } else { - detailDo.setItemDesc1(itembasicDO.getDesc1()); - detailDo.setItemDesc2(itembasicDO.getDesc2()); - detailDo.setItemName(itembasicDO.getName()); - detailDo.setProjectCode(itembasicDO.getProject()); - } - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - // 校验业务类型 - try { - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk"); - jobUtils.selectItembasicExist(detailDo.getItemCode(), businesstypeDO); - jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } //隔离转合格申请 - if ("Hold".equals(detailDo.getFromInventoryStatus())) { + if ("HOLD".equals(detailDo.getFromInventoryStatus())) { // 校验库存余额是否存在 try { List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("Hold"); - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() - , detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); - detailDo.setFromQty(balanceDO.getQty()); - detailDo.setToQty(balanceDO.getQty()); - detailDo.setQty(balanceDO.getQty()); - - detailDo.setToArrivdAte(balanceDO.getArriveDate()); - detailDo.setFromProduceDate(balanceDO.getProduceDate()); - detailDo.setFromExpireDate(balanceDO.getExpireDate()); - detailDo.setToArrivdAte(balanceDO.getArriveDate()); - detailDo.setToProduceDate(balanceDO.getProduceDate()); - detailDo.setToExpireDate(balanceDO.getExpireDate()); - } + inventoryStatus.add("HOLD"); + validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false); } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; } - detailDo.setToInventoryStatus("OK"); - String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_REQUEST.getCode()); detailDo.setNumber(number); - - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest"); - if (businesstypeDO != null) { + // 校验业务类型 + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRequest"); mainDo.setBusinessType(businesstypeDO.getCode()); + try { + if (itembasicDO != null){ + jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); + }else { + messageDetail += "物品基本信息不存在,不能校验物品类型" + ","; + } + }catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); + jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; } - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest"); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToOkRequest"); if (requestsettingDO != null) { mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + mainDo.setRequestTime(LocalDateTime.now()); } } @@ -280,31 +443,29 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq try { List inventoryStatus = new ArrayList<>(); inventoryStatus.add("OK"); - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() - , detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); - detailDo.setFromQty(balanceDO.getQty()); - detailDo.setToQty(balanceDO.getQty()); - detailDo.setQty(balanceDO.getQty()); - - detailDo.setToArrivdAte(balanceDO.getArriveDate()); - detailDo.setFromProduceDate(balanceDO.getProduceDate()); - detailDo.setFromExpireDate(balanceDO.getExpireDate()); - detailDo.setToArrivdAte(balanceDO.getArriveDate()); - detailDo.setToProduceDate(balanceDO.getProduceDate()); - detailDo.setToExpireDate(balanceDO.getExpireDate()); - } + validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false); } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; } - detailDo.setToInventoryStatus("Hold"); String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode()); mainDo.setNumber(number); - - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); - if (businesstypeDO != null) { + // 校验业务类型 + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); mainDo.setBusinessType(businesstypeDO.getCode()); + try { + if (itembasicDO != null){ + jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); + }else { + messageDetail += "物品基本信息不存在,不能校验物品类型" + ","; + } + }catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); + jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; } RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest"); if (requestsettingDO != null) { @@ -313,45 +474,42 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); } - detailDo.setToPackingNumber(null); detailDo.setToBatch(null); detailDo.setToContainerNumber(null); } //隔离转报废申请 - if ("Hold".equals(detailDo.getFromInventoryStatus())) { + if ("HOLD".equals(detailDo.getFromInventoryStatus())) { // 校验库存余额是否存在 try { List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("Hold"); - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() - , detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); - detailDo.setFromQty(balanceDO.getQty()); - detailDo.setToQty(balanceDO.getQty()); - detailDo.setQty(balanceDO.getQty()); - - detailDo.setToArrivdAte(balanceDO.getArriveDate()); - detailDo.setFromProduceDate(balanceDO.getProduceDate()); - detailDo.setFromExpireDate(balanceDO.getExpireDate()); - detailDo.setToArrivdAte(balanceDO.getArriveDate()); - detailDo.setToProduceDate(balanceDO.getProduceDate()); - detailDo.setToExpireDate(balanceDO.getExpireDate()); - } + inventoryStatus.add("HOLD"); + validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false); } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; } - detailDo.setToInventoryStatus("Scrap"); - String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); mainDo.setNumber(number); - - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); - if (businesstypeDO != null) { + // 校验业务类型 + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest"); mainDo.setBusinessType(businesstypeDO.getCode()); + try { + if (itembasicDO != null){ + jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); + }else { + messageDetail += "物品基本信息不存在,不能校验物品类型" + ","; + } + }catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); + jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; } - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest"); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest"); if (requestsettingDO != null) { mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); @@ -366,36 +524,34 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq //报废转隔离申请 - if ("Scrap".equals(detailDo.getFromInventoryStatus())) { + if ("SCRAP".equals(detailDo.getFromInventoryStatus())) { // 校验库存余额是否存在 try { List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("Scrap"); - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() - , detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); - detailDo.setFromQty(balanceDO.getQty()); - detailDo.setToQty(balanceDO.getQty()); - detailDo.setQty(balanceDO.getQty()); - - detailDo.setToArrivdAte(balanceDO.getArriveDate()); - detailDo.setFromProduceDate(balanceDO.getProduceDate()); - detailDo.setFromExpireDate(balanceDO.getExpireDate()); - detailDo.setToArrivdAte(balanceDO.getArriveDate()); - detailDo.setToProduceDate(balanceDO.getProduceDate()); - detailDo.setToExpireDate(balanceDO.getExpireDate()); - } + inventoryStatus.add("SCRAP"); + validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false); } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; } - detailDo.setToInventoryStatus("Scrap"); String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode()); mainDo.setNumber(number); - - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest"); - if (businesstypeDO != null) { + // 校验业务类型 + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest"); mainDo.setBusinessType(businesstypeDO.getCode()); + try { + if (itembasicDO != null){ + jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); + }else { + messageDetail += "物品基本信息不存在,不能校验物品类型" + ","; + } + }catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); + jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; } RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapToHoldRequest"); if (requestsettingDO != null) { @@ -415,32 +571,31 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq // 校验库存余额是否存在 try { List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("Scrap"); - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() - , detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); - detailDo.setFromQty(balanceDO.getQty()); - detailDo.setToQty(balanceDO.getQty()); - detailDo.setQty(balanceDO.getQty()); - - detailDo.setToArrivdAte(balanceDO.getArriveDate()); - detailDo.setFromProduceDate(balanceDO.getProduceDate()); - detailDo.setFromExpireDate(balanceDO.getExpireDate()); - detailDo.setToArrivdAte(balanceDO.getArriveDate()); - detailDo.setToProduceDate(balanceDO.getProduceDate()); - detailDo.setToExpireDate(balanceDO.getExpireDate()); - } + inventoryStatus.add("SCRAP"); + validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false); } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; } - detailDo.setToInventoryStatus("Scrap"); String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode()); mainDo.setNumber(number); - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest"); - if (businesstypeDO != null) { + // 校验业务类型 + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest"); mainDo.setBusinessType(businesstypeDO.getCode()); + try { + if (itembasicDO != null){ + jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); + }else { + messageDetail += "物品基本信息不存在,不能校验物品类型" + ","; + } + }catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); + jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; } RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest"); if (requestsettingDO != null) { @@ -460,13 +615,12 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq //新增方法(主和子) private InventorychangeRequestMainDO validatorToCreate(InventorychangeRequestMainCreateReqVO createReqVO) { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan"); - InventorychangeRequestMainDO inventorychangeRequestMainDO = validateMainMethod(createReqVO, businesstypeDO); + InventorychangeRequestMainDO inventorychangeRequestMainDO = validateMainMethod(createReqVO); //子表校验 List subList = createReqVO.getSubList(); List subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList); for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { - validateDetailMethod(inventorychangeRequestDetailDO); + validateDetailMethod(inventorychangeRequestMainDO,inventorychangeRequestDetailDO); } String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); inventorychangeRequestMainDO.setNumber(number); @@ -481,35 +635,27 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq //修改方法(主和子) private InventorychangeRequestMainDO validatorToUpdate(InventorychangeRequestMainUpdateReqVO updateReqVO) { - BusinesstypeDO businesstypeDO = new BusinesstypeDO(); - InventorychangeRequestMainDO deliverPlanMainDO = validateMainMethod(updateReqVO, businesstypeDO); + InventorychangeRequestMainDO inventorychangeRequestMainDO = validateMainMethod(updateReqVO); //子表校验 List subList = updateReqVO.getSubList(); List subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList05(subList); for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { - validateDetailMethod(inventorychangeRequestDetailDO); + validateDetailMethod(inventorychangeRequestMainDO,inventorychangeRequestDetailDO); } - inventorychangeRequestMainMapper.updateById(deliverPlanMainDO); + inventorychangeRequestMainMapper.updateById(inventorychangeRequestMainDO); inventorychangeRequestDetailMapper.updateBatch(subDOList); - return deliverPlanMainDO; + return inventorychangeRequestMainDO; } //校验主表公共方法(适用于新增/修改) - private InventorychangeRequestMainDO validateMainMethod(InventorychangeRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO) { + private InventorychangeRequestMainDO validateMainMethod(InventorychangeRequestMainBaseVO baseVO) { InventorychangeRequestMainDO InventorychangeRequestMainDO = InventorychangeRequestMainConvert.INSTANCE.convert(baseVO); return InventorychangeRequestMainDO; } //校验子表公共方法(适用于新增/修改) - private void validateDetailMethod(InventorychangeRequestDetailDO inventorychangeRequestDetailDO) { - LocationDO locationDO = this.validatorLocation(inventorychangeRequestDetailDO.getLocationCode()); - if (locationDO != null) { - inventorychangeRequestDetailDO.setLocationCode(locationDO.getCode()); - inventorychangeRequestDetailDO.setAreaCode(locationDO.getAreaCode()); - inventorychangeRequestDetailDO.setLocationGroupCode(locationDO.getLocationGroupCode()); - } - + private void validateDetailMethod(InventorychangeRequestMainDO inventorychangeRequestMainDO,InventorychangeRequestDetailDO inventorychangeRequestDetailDO) { ItembasicDO itembasicDO = this.validatorItembasic(inventorychangeRequestDetailDO.getItemCode()); if (!inventorychangeRequestDetailDO.getUom().equals(itembasicDO.getUom())) { throw exception(UOM_ERROR, inventorychangeRequestDetailDO.getUom()); @@ -518,48 +664,71 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq inventorychangeRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); inventorychangeRequestDetailDO.setItemName(itembasicDO.getName()); inventorychangeRequestDetailDO.setProjectCode(itembasicDO.getProject()); + inventorychangeRequestDetailDO.setUom(itembasicDO.getUom()); + } + LocationDO locationDO = this.validatorLocation(inventorychangeRequestDetailDO.getLocationCode()); + if (locationDO != null) { + inventorychangeRequestDetailDO.setLocationCode(locationDO.getCode()); + inventorychangeRequestDetailDO.setAreaCode(locationDO.getAreaCode()); + inventorychangeRequestDetailDO.setLocationGroupCode(locationDO.getLocationGroupCode()); } //校验库存余额是否存在 List inventoryStatus = new ArrayList<>(); //隔离转合格申请 - if ("Hold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { - - inventoryStatus.add("Hold"); + if ("HOLD".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "OK".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) { + inventoryStatus.add("HOLD"); + String OkToScrapRequest = "HoldToOkRequest"; + CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest); + validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false); } //合格转隔离申请 - if ("HOKold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { + if ("OK".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "HOLD".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) { inventoryStatus.add("OK"); + String OkToScrapRequest = "OkToHoldRequest"; + CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest); + validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false); } //隔离转报废申请 - if ("Hold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { - inventoryStatus.add("Hold"); + if ("HOLD".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "SCRAP".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) { + inventoryStatus.add("HOLD"); + String OkToScrapRequest = "HoldToScrapRequest"; + CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest); + validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false); } //报废转隔离申请 - if ("Scrap".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { - inventoryStatus.add("Scrap"); + if ("SCRAP".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())&& "HOLD".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) { + inventoryStatus.add("SCRAP"); + String OkToScrapRequest = "ScrapToHoldRequest"; + CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest); + validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false); } //合格转报废申请 - if ("Ok".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { - inventoryStatus.add("Scrap"); + if ("OK".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())&& "SCRAP".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) { + inventoryStatus.add("SCRAP"); + String OkToScrapRequest = "OkToScrapRequest"; + CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest); + validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false); } - List balanceDOList = this.validatorLocationReturnManagementAccuracy(inventorychangeRequestDetailDO.getItemCode(), inventorychangeRequestDetailDO.getFromPackingNumber() - , inventorychangeRequestDetailDO.getFromBatch(), inventorychangeRequestDetailDO.getLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); - inventorychangeRequestDetailDO.setFromQty(balanceDO.getQty()); - inventorychangeRequestDetailDO.setToQty(balanceDO.getQty()); - inventorychangeRequestDetailDO.setQty(balanceDO.getQty()); + } - inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - inventorychangeRequestDetailDO.setFromProduceDate(balanceDO.getProduceDate()); - inventorychangeRequestDetailDO.setFromExpireDate(balanceDO.getExpireDate()); - inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - inventorychangeRequestDetailDO.setToProduceDate(balanceDO.getProduceDate()); - inventorychangeRequestDetailDO.setToExpireDate(balanceDO.getExpireDate()); + //子表校验来源库位基础信息 + private void CreateBusinessTypeAndRequestSetting(InventorychangeRequestMainDO inventorychangeRequestMainDO,InventorychangeRequestDetailDO inventorychangeRequestDetailDO, ItembasicDO itembasicDO, String businesstypeCode) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType(businesstypeCode); + inventorychangeRequestMainDO.setBusinessType(businesstypeDO.getCode()); + if (itembasicDO != null){ + jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); + } + jobUtils.ifOutInventoryStatuses(inventorychangeRequestDetailDO.getFromInventoryStatus(), businesstypeDO); + jobUtils.ifInFromLocationType(inventorychangeRequestDetailDO.getLocationCode(), businesstypeDO); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist(businesstypeCode); + if (requestsettingDO != null) { + inventorychangeRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); + inventorychangeRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); + inventorychangeRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); + inventorychangeRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + inventorychangeRequestMainDO.setRequestTime(LocalDateTime.now()); } - } - //子表校验来源库位基础信息 private LocationDO validatorLocation(String locationCode) { LocationDO locationDO = locationService.selectLocation(locationCode); @@ -571,17 +740,27 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq return itembasicService.selectItembasic(itemCode); } - //子表校验业务类型 - private void validatorItembasic(String itemCode, String fromInventoryStatus) { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk"); - jobUtils.selectItembasicExist(itemCode, businesstypeDO); - jobUtils.ifOutInventoryStatuses(fromInventoryStatus, businesstypeDO); - } - - private List validatorLocationReturnManagementAccuracy(String itemCode, String fromPackingNumber, String fromBatch, String locationCode, List inventoryStatus) { - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(itemCode, fromPackingNumber - , fromBatch, locationCode, inventoryStatus); - return balanceDOList; + private void validatorLocationReturnManagementAccuracy(InventorychangeRequestMainDO inventorychangeRequestMainDO,InventorychangeRequestDetailDO inventorychangeRequestDetailDO,List inventoryStatus,Boolean flag) { + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(inventorychangeRequestDetailDO.getItemCode(), inventorychangeRequestDetailDO.getFromPackingNumber() + , inventorychangeRequestDetailDO.getFromBatch(), inventorychangeRequestDetailDO.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + inventorychangeRequestMainDO.setWarehouseCode(balanceDO.getWarehouseCode()); + inventorychangeRequestDetailDO.setFromQty(balanceDO.getQty()); + inventorychangeRequestDetailDO.setToQty(balanceDO.getQty()); + inventorychangeRequestDetailDO.setQty(balanceDO.getQty()); + inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + inventorychangeRequestDetailDO.setFromProduceDate(balanceDO.getProduceDate()); + inventorychangeRequestDetailDO.setFromExpireDate(balanceDO.getExpireDate()); + inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + inventorychangeRequestDetailDO.setToProduceDate(balanceDO.getProduceDate()); + inventorychangeRequestDetailDO.setToExpireDate(balanceDO.getExpireDate()); + if(flag == true){ + balanceDO.setInventoryStatus(inventorychangeRequestDetailDO.getToInventoryStatus()); + balanceMapper.updateById(balanceDO); + trendsApi.createTrends(Long.valueOf(balanceDO.getId()), "transaction_balance", "库存修改申请生成库存修改记录时修改了库存余额库存状态", TrendsTypeEnum.UPDATE); + } + } } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java index e6d01ade..503d08ae 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java @@ -11,32 +11,50 @@ 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.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; +import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO; import com.win.module.wms.controller.inventorymoveRequest.vo.*; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainBaseVO; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO; +import com.win.module.wms.convert.deliverJob.DeliverJobMainConvert; +import com.win.module.wms.convert.inventorymoveJob.InventorymoveJobMainConvert; import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestDetailConvert; import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert; import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert; import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestMainConvert; 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.deliverJob.DeliverJobDetailDO; +import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobMainDO; +import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO; +import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; +import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO; +import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.inventorymoveJob.InventorymoveJobDetailMapper; +import com.win.module.wms.dal.mysql.inventorymoveJob.InventorymoveJobMainMapper; import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestDetailMapper; import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestMainMapper; 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.service.expectin.ExpectinService; +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.location.LocationService; import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -62,6 +80,11 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest @Resource private InventorymoveRequestDetailMapper inventorymoveRequestDetailMapper; + + @Resource + private InventorymoveJobMainMapper inventorymoveJobMainMapper; + @Resource + private InventorymoveJobDetailMapper inventorymoveJobDetailMapper; @Resource private Validator validator; @@ -70,6 +93,8 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest @Resource private SerialNumberApi serialNumberApi; + @Resource + private JobsettingService jobsettingService; @Resource private RequestsettingService requestsettingService; @@ -79,13 +104,17 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest private LocationService locationService; @Resource private TrendsApi trendsApi; + @Resource + private ExpectoutService expectoutService; + @Resource + private ExpectinService expectinService; @Override public Long createInventorymoveRequestMain(InventorymoveRequestMainCreateReqVO createReqVO) { RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MoveRequest"); // 插入 InventorymoveRequestMainDO inventorymoveRequestMain = validatorToCreate(createReqVO,requestsettingDO); if(RequestStatusEnum.HANDLING.getCode().equals(inventorymoveRequestMain.getStatus())) { - + generateJob(inventorymoveRequestMain,inventorymoveRequestDetailMapper.selectList(inventorymoveRequestMain.getId())); } trendsApi.createTrends(requestsettingDO.getId(), "MoveRequest", "增加了库存移动申请", TrendsTypeEnum.CREATE); return inventorymoveRequestMain.getId(); @@ -348,4 +377,103 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest return errorList; } + /** + * 生成采购收货任务,不要改动事务传播方式,否则会有事务问题 + * @param mainDO 采购收货主 + * @param detailDOList 采购收货子 + */ + private void generateJob(InventorymoveRequestMainDO mainDO, List detailDOList) { + InventorymoveJobMainDO inventorymoveJobMainDO = InventorymoveJobMainConvert.INSTANCE.convert(mainDO); + BeanUtils.copyProperties(mainDO, inventorymoveJobMainDO); + inventorymoveJobMainDO.setRequestNumber(mainDO.getNumber()); + inventorymoveJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_JOB.getCode()); + inventorymoveJobMainDO.setNumber(number); + inventorymoveJobMainDO.setId(null); + inventorymoveJobMainDO.setRequestTime(mainDO.getRequestTime()); + inventorymoveJobMainDO.setRequestDueTime(mainDO.getDueTime()); + inventorymoveJobMainDO.setCreator(null); + inventorymoveJobMainDO.setCreateTime(null); + inventorymoveJobMainDO.setUpdater(null); + inventorymoveJobMainDO.setUpdateTime(null); + inventorymoveJobMainDO.setStatus("1"); + // 获取任务单据设置 + JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("InventorymoveJob"); + inventorymoveJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); + inventorymoveJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); + inventorymoveJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); + inventorymoveJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); + inventorymoveJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); + inventorymoveJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); + inventorymoveJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); + inventorymoveJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); + inventorymoveJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); + inventorymoveJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventorymoveJob"); + inventorymoveJobMainDO.setBusinessType(businesstypeDO.getCode()); + inventorymoveJobMainMapper.insert(inventorymoveJobMainDO); + List expectpoutCreateReqVOList = new ArrayList<>(); + List expectpinCreateReqVOList = new ArrayList<>(); + List deliverJobDetailDOList = new ArrayList<>(); + detailDOList.forEach(item -> { + // 根据批次策略/下架策略 返回 库存余额DO + List balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),"OK",item.getProjectCode(),item.getQty(),null); + // 根据 查询出所需数据 解析成 任务子表数据 + balanceDOListJob.forEach(balanceDOItem -> { + InventorymoveJobDetailDO inventorymoveJobDetailDO = new InventorymoveJobDetailDO(); + BeanUtils.copyProperties(item, inventorymoveJobDetailDO); + inventorymoveJobDetailDO.setId(null); + inventorymoveJobDetailDO.setCreateTime(null); + inventorymoveJobDetailDO.setCreator(null); + inventorymoveJobDetailDO.setUpdateTime(null); + inventorymoveJobDetailDO.setUpdater(null); + if("TRUE".equals(businesstypeDO.getUseOnTheWay())){ + inventorymoveJobDetailDO.setToLocationCode("FAC_INTRANS"); + }else { + inventorymoveJobDetailDO.setToLocationCode(null); + } + inventorymoveJobDetailDO.setPackingNumber(balanceDOItem.getPackingNumber()); + inventorymoveJobDetailDO.setContainerNumber(balanceDOItem.getContainerNumber()); + inventorymoveJobDetailDO.setBatch(balanceDOItem.getBatch()); + inventorymoveJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode()); + inventorymoveJobDetailDO.setToLocationCode(item.getToLocationCode()); + inventorymoveJobDetailDO.setItemCode(item.getItemCode()); + inventorymoveJobDetailDO.setItemName(item.getItemName()); + inventorymoveJobDetailDO.setItemDesc1(item.getItemDesc1()); + inventorymoveJobDetailDO.setItemDesc2(item.getItemDesc2()); + inventorymoveJobDetailDO.setProjectCode(item.getProjectCode()); + inventorymoveJobDetailDO.setQty(item.getQty()); + inventorymoveJobDetailDO.setUom(item.getUom()); + inventorymoveJobDetailDO.setNumber(inventorymoveJobMainDO.getNumber()); + inventorymoveJobDetailDO.setMasterId(inventorymoveJobMainDO.getId()); + inventorymoveJobDetailDO.setInventoryStatus(balanceDOItem.getInventoryStatus()); + deliverJobDetailDOList.add(inventorymoveJobDetailDO); + //预计出 + ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO(); + BeanUtils.copyProperties(inventorymoveJobDetailDO, expectoutCreateReqVO); + expectoutCreateReqVO.setJobNumber(number); + expectoutCreateReqVO.setBusinessType(inventorymoveJobMainDO.getBusinessType()); + expectoutCreateReqVO.setLocationCode(inventorymoveJobDetailDO.getFromLocationCode()); + expectoutCreateReqVO.setBatch(inventorymoveJobDetailDO.getBatch()); + expectoutCreateReqVO.setQty(inventorymoveJobDetailDO.getQty()); + expectoutCreateReqVO.setInventoryStatus(balanceDOItem.getInventoryStatus()); + expectpoutCreateReqVOList.add(expectoutCreateReqVO); + ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); + BeanUtils.copyProperties(inventorymoveJobDetailDO, expectinCreateReqVO); + expectinCreateReqVO.setJobNumber(number); + expectinCreateReqVO.setBusinessType(inventorymoveJobMainDO.getBusinessType()); + expectinCreateReqVO.setLocationCode(inventorymoveJobDetailDO.getFromLocationCode()); + expectinCreateReqVO.setBatch(inventorymoveJobDetailDO.getBatch()); + expectinCreateReqVO.setQty(inventorymoveJobDetailDO.getQty()); + expectinCreateReqVO.setInventoryStatus(balanceDOItem.getInventoryStatus()); + expectpinCreateReqVOList.add(expectinCreateReqVO); + }); + }); + inventorymoveJobDetailMapper.insertBatch(deliverJobDetailDOList); + //增加预计入 + expectoutService.createExpectout(expectpoutCreateReqVOList); + expectinService.createExpectin(expectpinCreateReqVOList); + trendsApi.createTrends(inventorymoveJobMainDO.getId(), "InventorymoveJob", "成品发货申请生成成品发货任务", TrendsTypeEnum.CREATE); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/recordsetting/RecordsettingServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/recordsetting/RecordsettingServiceImpl.java index 20c85def..f518f392 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/recordsetting/RecordsettingServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/recordsetting/RecordsettingServiceImpl.java @@ -197,8 +197,9 @@ public class RecordsettingServiceImpl implements RecordsettingService { public RecordsettingDO selectRecordsettingExist(String pcode){ QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("code",pcode); + queryWrapper.eq("available","TRUE"); RecordsettingDO recordsettingDO = recordsettingMapper.selectOne(queryWrapper); - if(recordsettingDO != null && "TRUE".equals(recordsettingDO.getAvailable())){ + if(recordsettingDO != null){ return recordsettingDO; }else { throw exception(RECORDSETTING_NOT_EXISTS);