diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainUpdateReqVO.java index eafca616..2614930f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainUpdateReqVO.java @@ -1,12 +1,18 @@ package com.win.module.wms.controller.inventoryinitRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.util.List; + @Schema(description = "管理后台 - 库存初始化申请主更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class InventoryinitRequestMainUpdateReqVO extends InventoryinitRequestMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/InventorymoveRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/InventorymoveRequestMainController.java index c098e0ba..135a3d09 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/InventorymoveRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/InventorymoveRequestMainController.java @@ -3,6 +3,7 @@ package com.win.module.wms.controller.inventorymoveRequest; 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; @@ -11,6 +12,7 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.inventorymoveRequest.vo.*; import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.inventorymoveRequest.InventorymoveRequestMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -125,21 +127,19 @@ public class InventorymoveRequestMainController { } @GetMapping("/get-import-template") - @Operation(summary = "获得导入发货计划信息模板") + @Operation(summary = "获得导入库存转移信息模板") public void importTemplate(HttpServletResponse response) throws IOException { // 手动创建导出 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); + String[] fromInventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(5, fromInventoryStatus); // 输出 - ExcelUtils.write(response, "发货计划信息导入模板.xlsx", "发货计划信息列表", InventorymoveRequestMainImportVO.class, list, mapDropDown); + ExcelUtils.write(response, "库存转移信息导入模板.xlsx", "库存转移信息列表", InventorymoveRequestMainImportVO.class, list, mapDropDown); } @PostMapping("/import") - @Operation(summary = "导入发货计划") + @Operation(summary = "导入库存转移") @Parameters({ @Parameter(name = "file", description = "Excel 文件", required = true), @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), @@ -157,7 +157,7 @@ public class InventorymoveRequestMainController { Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); if(!errorList.isEmpty()) { - String url = ExcelUtils.writeLocalFile("发货计划基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); + String url = ExcelUtils.writeLocalFile("库存转移基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); returnMap.put("errorFile", url); } return success(returnMap); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestDetailBaseVO.java index 9e253b36..6a8e66eb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestDetailBaseVO.java @@ -47,14 +47,12 @@ public class InventorymoveRequestDetailBaseVO { private String toOwnerCode; @Schema(description = "到包装号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "到包装号不能为空") private String toPackingNumber; @Schema(description = "到器具号") private String toContainerNumber; @Schema(description = "到批次", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "到批次不能为空") private String toBatch; @Schema(description = "到库位代码", requiredMode = Schema.RequiredMode.REQUIRED) @@ -62,7 +60,6 @@ public class InventorymoveRequestDetailBaseVO { private String toLocationCode; @Schema(description = "到库存状态", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "到库存状态不能为空") private String toInventoryStatus; @Schema(description = "单据号") @@ -72,7 +69,6 @@ public class InventorymoveRequestDetailBaseVO { private String remark; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "创建时间不能为空") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime createTime; @@ -108,4 +104,6 @@ public class InventorymoveRequestDetailBaseVO { @NotNull(message = "物品代码不能为空") private String itemCode; + @Schema(description = "master_id", example = "master_id") + private Long masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainBaseVO.java index 205bf538..cd1c78e9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.inventorymoveRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -23,18 +24,16 @@ public class InventorymoveRequestMainBaseVO { private Long id; @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; @@ -50,7 +49,6 @@ public class InventorymoveRequestMainBaseVO { private LocalDateTime dueTime; @Schema(description = "部门", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "部门不能为空") private String departmentCode; @Schema(description = "状态") @@ -64,23 +62,18 @@ public class InventorymoveRequestMainBaseVO { private String updater; @Schema(description = "从仓库代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从仓库代码不能为空") - private String fromWarehouseOde; + private String fromWarehouseCode; @Schema(description = "从库位类型范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从库位类型范围不能为空") private String fromLocationTypes; @Schema(description = "从库区代码范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从库区代码范围不能为空") private String fromAreaCodes; @Schema(description = "到仓库代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "到仓库代码不能为空") private String toWarehouseCode; @Schema(description = "到库位类型范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "到库位类型范围不能为空") private String toLocationTypes; @Schema(description = "到库区代码范围") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainExcelVO.java index cd7f7c1a..4ef43bac 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainExcelVO.java @@ -56,7 +56,7 @@ public class InventorymoveRequestMainExcelVO { private String updater; @ExcelProperty("从仓库代码") - private String fromWarehouseOde; + private String fromWarehouseCode; @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainExportReqVO.java index 38068095..99e4d2b9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainExportReqVO.java @@ -51,7 +51,7 @@ public class InventorymoveRequestMainExportReqVO { private String updater; @Schema(description = "从仓库代码") - private String fromWarehouseOde; + private String fromWarehouseCode; @Schema(description = "从库位类型范围") private String fromLocationTypes; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java index 0e1effef..05298b5e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java @@ -2,6 +2,9 @@ package com.win.module.wms.controller.inventorymoveRequest.vo; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -23,42 +26,31 @@ import java.time.LocalDateTime; public class InventorymoveRequestMainImportVO { //主表数据 - @ExcelProperty("订单类型") - private String type; @ExcelProperty("单据号") private String number; - @ExcelProperty("行号") - private String hang; - @ExcelProperty("供应商代码") - private String supplierCode; + //子表数据 + @ExcelProperty("物品代码") + private String itemCode; - @ExcelProperty("联系人姓名") - private String contactName; + @ExcelProperty("从包装号") + private String fromPackingNumber; - @ExcelProperty("联系人电话") - @ColumnWidth(value = 16) - private String contactPhone; + @ExcelProperty("从器具号") + private String fromContainerNumber; - @ExcelProperty("联系人电子邮件") - @ColumnWidth(value = 16) - private String contactEmail; + @ExcelProperty("从批次") + private String fromBatch; - @ExcelProperty("是否寄存订单") - private String isConsignment; + @ExcelProperty(value = "从库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String fromInventoryStatus; - @ExcelProperty("截止日期") - private LocalDateTime dueDate; + @ExcelProperty("从库位代码") + private String fromLocationCode; - //子表数据 - @ExcelProperty("物品代码") - private String itemCode; - @ExcelProperty("数量") - private BigDecimal orderQty; - @ExcelProperty("计量单位") - private String uom; - @ExcelProperty("超收百分比") - private BigDecimal overReceivingPercent; + @ExcelProperty("到库位代码") + private String toLocationCode; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainPageReqVO.java index 22317f5e..71e2ff2f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainPageReqVO.java @@ -53,7 +53,7 @@ public class InventorymoveRequestMainPageReqVO extends PageParam { private String updater; @Schema(description = "从仓库代码") - private String fromWarehouseOde; + private String fromWarehouseCode; @Schema(description = "从库位类型范围") private String fromLocationTypes; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainUpdateReqVO.java index 14a33363..238c3823 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainUpdateReqVO.java @@ -1,12 +1,20 @@ package com.win.module.wms.controller.inventorymoveRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.util.List; + @Schema(description = "管理后台 - 库存转移申请主更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class InventorymoveRequestMainUpdateReqVO extends InventorymoveRequestMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestDetailConvert.java index 41a93cd0..e7d3156e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestDetailConvert.java @@ -3,6 +3,7 @@ package com.win.module.wms.convert.inventoryinitRequest; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.inventoryinitRequest.vo.*; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportErrorVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailExcelVO; import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestDetailDO; @@ -50,6 +51,8 @@ public interface InventoryinitRequestDetailConvert { List convertList(List list); + List convertList05(List list); + PageResult convertPage(PageResult page); List convertList02(List list); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestMainConvert.java index e0adef3e..b48bff67 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestMainConvert.java @@ -4,11 +4,15 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestMainCreateReqVO; -import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestMainExcelVO; -import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestMainRespVO; -import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestMainUpdateReqVO; +import com.win.module.wms.controller.inventoryinitRequest.vo.*; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainCreateReqVO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO; +import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestMainDO; @@ -25,9 +29,15 @@ public interface InventoryinitRequestMainConvert { InventoryinitRequestMainDO convert(InventoryinitRequestMainCreateReqVO bean); InventoryinitRequestMainDO convert(InventoryinitRequestMainUpdateReqVO bean); + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + InventoryinitRequestMainImportErrorVO convert(InventoryinitRequestMainCreateReqVO mainVo, InventoryinitRequestDetailDO detailDo); InventoryinitRequestMainRespVO convert(InventoryinitRequestMainDO bean); + InventoryinitRequestMainDO convert1(InventoryinitRequestMainUpdateReqVO bean); + List convertList(List list); PageResult convertPage(PageResult page); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestDetailConvert.java index 37f53f07..9d1e1b0d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestDetailConvert.java @@ -2,8 +2,12 @@ package com.win.module.wms.convert.inventorymoveRequest; import com.win.framework.common.pojo.PageResult; 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.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; @@ -23,8 +27,12 @@ public interface InventorymoveRequestDetailConvert { InventorymoveRequestDetailDO convert(InventorymoveRequestDetailCreateReqVO bean); + InventorymoveRequestDetailDO convert(InventorymoveRequestDetailBaseVO bean); + InventorymoveRequestDetailDO convert(InventorymoveRequestDetailUpdateReqVO bean); + List convertList05(List list); + InventorymoveRequestDetailRespVO convert(InventorymoveRequestDetailDO bean); List convertList(List list); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestMainConvert.java index d16a02d7..f8b424e4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestMainConvert.java @@ -4,11 +4,16 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainCreateReqVO; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainExcelVO; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainRespVO; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainUpdateReqVO; +import com.win.module.wms.controller.inventorymoveRequest.vo.*; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportErrorVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainBaseVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; +import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; @@ -22,6 +27,8 @@ public interface InventorymoveRequestMainConvert { InventorymoveRequestMainConvert INSTANCE = Mappers.getMapper(InventorymoveRequestMainConvert.class); + InventorymoveRequestMainDO convert( InventorymoveRequestMainBaseVO bean); + InventorymoveRequestMainDO convert(InventorymoveRequestMainCreateReqVO bean); InventorymoveRequestMainDO convert(InventorymoveRequestMainUpdateReqVO bean); @@ -33,5 +40,9 @@ public interface InventorymoveRequestMainConvert { PageResult convertPage(PageResult page); List convertList02(List list); + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + InventorymoveRequestMainImportErrorVO convert(InventorymoveRequestMainCreateReqVO mainVo, InventorymoveRequestDetailDO detailDo); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestMainDO.java index e4c80ef0..5aa21c94 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestMainDO.java @@ -77,7 +77,7 @@ public class InventorymoveRequestMainDO extends BaseDO { /** * 从仓库代码 */ - private String fromWarehouseOde; + private String fromWarehouseCode; /** * 从库位类型范围 * diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestMainMapper.java index b7b85c2d..bee7b246 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestMainMapper.java @@ -33,7 +33,7 @@ public interface InventorymoveRequestMainMapper extends BaseMapperX subDOList = InventoryinitRequestDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); + for (InventoryinitRequestDetailDO detailDO : subDOList) { + this.validatePurchasereceiptRequestDetailCreate(detailDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + mainDO.setNumber(number); + inventoryinitRequestMainMapper.insert(mainDO); + for (InventoryinitRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDO.getId()); + detailDO.setNumber(number); + } + inventoryinitRequestDetailMapper.insertBatch(subDOList); + + trendsApi.createTrends(requestsettingDO.getId(), "inventoryinitRequestMain", "增加了库存初始化申请", TrendsTypeEnum.CREATE); // 返回 - return inventoryinitRequestMain.getId(); + return mainDO.getId(); } + private InventoryinitRequestMainDO validateInventoryinitRequestMainCreate(InventoryinitRequestMainDO mainDo) { + mainDo.setCreateTime(LocalDateTime.now()); + validaterequestsetting(mainDo); + validateBusinesstype(mainDo); + return mainDo; + + } + private void validatePurchasereceiptRequestDetailCreate(InventoryinitRequestDetailDO detailDo) { + detailDo = validateItem(detailDo); + detailDo = validateLocation(detailDo); + detailDo = validitempackaging(detailDo); + + } + + + @Override public void updateInventoryinitRequestMain(InventoryinitRequestMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest"); // 校验存在 validateInventoryinitRequestMainExists(updateReqVO.getId()); // 更新 - InventoryinitRequestMainDO updateObj = InventoryinitRequestMainConvert.INSTANCE.convert(updateReqVO); - inventoryinitRequestMainMapper.updateById(updateObj); + InventoryinitRequestMainDO inventoryinitRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); + + if(RequestStatusEnum.HANDLING.getCode().equals(inventoryinitRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "InventoryinitRequest", "增加了库存初始化申请", TrendsTypeEnum.CREATE); + } + + private InventoryinitRequestMainDO validatorToUpdate(InventoryinitRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { + InventoryinitRequestMainDO mainDo = InventoryinitRequestMainConvert.INSTANCE.convert1(updateReqVO); + mainDo = validateInventoryinitRequestMainCreate(mainDo); + List subList = updateReqVO.getSubList(); + if(!subList.isEmpty()) { + List subDOList = InventoryinitRequestDetailConvert.INSTANCE.convertList05(subList); + for (InventoryinitRequestDetailDO inventoryinitRequestDetailDO : subDOList) { + validatePurchasereceiptRequestDetailCreate(inventoryinitRequestDetailDO); + } + inventoryinitRequestDetailMapper.updateBatch(subDOList); + } + inventoryinitRequestMainMapper.updateById(mainDo); + return mainDo; } + @Override public void deleteInventoryinitRequestMain(Long id) { // 校验存在 @@ -140,9 +212,86 @@ public class InventoryinitRequestMainServiceImpl implements InventoryinitRequest public List getInventoryinitRequestMainList(InventoryinitRequestMainExportReqVO exportReqVO) { return inventoryinitRequestMainMapper.selectList(exportReqVO); } + private String validatePurchasereceiptRequestDetailImport(InventoryinitRequestMainDO mainDo, InventoryinitRequestDetailDO detailDo){ + StringBuilder message = new StringBuilder(); + try { + detailDo.setCreateTime(LocalDateTime.now()); + detailDo = this.validateItem(detailDo); + } catch (Exception e) { + message.append(e.getMessage()).append(","); + } + try { + detailDo = this.validateLocation(detailDo); + } catch (Exception e) { + message.append(e.getMessage()).append(","); + } + try { + this.validitempackaging(detailDo); + } catch (Exception e) { + message.append(e.getMessage()).append(","); + } + return message.toString(); + } + private InventoryinitRequestDetailDO validateLocation(InventoryinitRequestDetailDO detailDo) { + LocationDO location = locationService.selectLocation(detailDo.getLocationCode()); + detailDo.setAreaCode(location.getAreaCode()); + detailDo.setLocationCode(location.getCode()); + detailDo.setLocationGroupCode(location.getLocationGroupCode()); + return detailDo; + } + + + private InventoryinitRequestDetailDO validitempackaging(InventoryinitRequestDetailDO detailDo){ + ItempackagingDO itempackaging = itempackagingService.selectItemPackagingExist(detailDo.getItemCode()); + detailDo.setStdPackUnit(itempackaging.getStdPackUnit()); + detailDo.setStdPackQty(itempackaging.getStdPackQty()); + return detailDo; + + } + private InventoryinitRequestDetailDO validateItem(InventoryinitRequestDetailDO detailDo) { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setProjectCode(itembasicDO.getProject()); + return detailDo; + } + private InventoryinitRequestMainDO validateBusinesstype( InventoryinitRequestMainDO mainDo) { + BusinesstypeDO businesstype = jobUtils.selectDocumentSettingFromBusinessType("InventoryInitialRequest"); + mainDo.setBusinessType(businesstype.getCode()); + return mainDo; + } + private InventoryinitRequestMainDO validaterequestsetting(InventoryinitRequestMainDO mainDo){ + RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("TransferDeliverRequest"); + mainDo.setAutoAgree(requestsetting.getAutoAgree()); + mainDo.setAutoCommit(requestsetting.getAutoCommit()); + mainDo.setAutoExecute(requestsetting.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsetting.getDirectCreateRecord()); + return mainDo; + } + private String validatePurchasereceiptRequestMainImport(InventoryinitRequestMainDO mainDo) { + StringBuilder message = new StringBuilder(); + try { + mainDo.setCreateTime(LocalDateTime.now()); + mainDo = validaterequestsetting(mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + mainDo = validateBusinesstype(mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } @Override @Transactional public List importInventoryinitRequestMainList(List datas, Integer mode, boolean updatePart) { @@ -153,107 +302,37 @@ public class InventoryinitRequestMainServiceImpl implements InventoryinitRequest datas.forEach(createReqVO -> { String message = ""; // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - - - boolean isError = false; - if(mode != null) { - try { - validatesInventoryinitRequestMainExists(null); - } catch (Exception ex) { - isError = true; - message += ex.getMessage() + ","; - } - } - - try { - RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("TransferDeliverRequest"); - createReqVO.setAutoAgree(requestsetting.getAutoAgree()); - createReqVO.setAutoCommit(requestsetting.getAutoCommit()); - createReqVO.setAutoExecute(requestsetting.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsetting.getDirectCreateRecord()); - }catch (Exception ex) { - isError = true; - message += ex.getMessage() + ","; - } - try { - BusinesstypeDO businesstype = jobUtils.selectDocumentSettingFromBusinessType("InventoryInitialRequest"); - createReqVO.setBusinessType(businesstype.getCode()); - }catch (Exception ex) { - isError = true; - message += ex.getMessage() + ","; - } + InventoryinitRequestMainDO mainDO = InventoryinitRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = this.validatePurchasereceiptRequestMainImport(mainDO); List subList = createReqVO.getSubList(); List subDOList = InventoryinitRequestDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 + // 是否有错误数据 + boolean flag = true; for (InventoryinitRequestDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setNumber(createReqVO.getNumber()); - - try{ - LocationDO location = locationService.selectLocation(detailDO.getLocationCode()); - detailDO.setAreaCode(location.getAreaCode()); - detailDO.setLocationCode(location.getCode()); - detailDO.setLocationGroupCode(location.getLocationGroupCode()); - }catch (Exception ex) { - isError = true; - message += ex.getMessage() + ","; - } - try{ - - //TODO 传入的实体里没有itemcode detailDO.getItemCode() - ItembasicDO itembasic = itembasicService.selectItembasic(detailDO.getItemCode()); - detailDO.setItemDesc1(itembasic.getDesc1()); - detailDO.setItemDesc2(itembasic.getDesc2()); - detailDO.setItemName(itembasic.getName()); - detailDO.setUom(itembasic.getUom()); - detailDO.setProjectCode(itembasic.getProject()); - - }catch (Exception ex) { - isError = true; - message += ex.getMessage() + ","; - } - try{ - //TODO 传入的实体里没有itemcode detailDO.getItemCode() - ItempackagingDO itempackaging = itempackagingService.selectItemPackagingExist(detailDO.getItemCode()); - detailDO.setStdPackUnit(itempackaging.getStdPackUnit()); - detailDO.setStdPackQty(itempackaging.getStdPackQty()); - }catch (Exception ex) { - isError = true; - message += ex.getMessage() + ","; - } - if(isError){ - InventoryinitRequestMainImportErrorVO importVO = InventoryinitRequestDetailConvert.INSTANCE.convert(createReqVO,detailDO); - importVO.setImportStatus("失败"); - importVO.setImportRemark(message.substring(0, message.length() - 1)); - errorList.add(importVO); - }else{ - if(mode != 3) { - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); - createReqVO.setNumber(number); - detailDO.setNumber(createReqVO.getNumber()); - detailDO.setMasterId(createReqVO.getId()); - InventoryinitRequestMainDO createObj = InventoryinitRequestMainConvert.INSTANCE.convert(createReqVO); - inventoryinitRequestMainMapper.insert(createObj); - inventoryinitRequestDetailMapper.insertBatch(subDOList); - } - else if( mode != 2){ - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); - createReqVO.setNumber(number); - detailDO.setNumber(createReqVO.getNumber()); - detailDO.setMasterId(createReqVO.getId()); - InventoryinitRequestMainDO createObj = InventoryinitRequestMainConvert.INSTANCE.convert(createReqVO); - inventoryinitRequestMainMapper.updateById(createObj); - inventoryinitRequestDetailMapper.updateBatch(subDOList); + String messageDetail = this.validatePurchasereceiptRequestDetailImport(mainDO, detailDO); + if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { + InventoryinitRequestMainImportErrorVO importErrorVO = InventoryinitRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; } } + //写入数据 + if (flag) { + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + mainDO.setNumber(number); + mainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + inventoryinitRequestMainMapper.insert(mainDO); + trendsApi.createTrends(mainDO.getId(), "inventoryinitRequestMain", "导入了采购收货申请", TrendsTypeEnum.CREATE); + for (InventoryinitRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDO.getId()); + detailDO.setNumber(number); + } + inventoryinitRequestDetailMapper.insertBatch(subDOList); } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestDetailServiceImpl.java index 342fbbee..77e38385 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestDetailServiceImpl.java @@ -1,14 +1,29 @@ package com.win.module.wms.service.inventorymoveRequest; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailCreateReqVO; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailExportReqVO; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailPageReqVO; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailUpdateReqVO; +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.inventorymoveRequest.vo.*; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainBaseVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; +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.inventorymoveRequest.InventorymoveRequestMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.*; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO; @@ -32,15 +47,70 @@ public class InventorymoveRequestDetailServiceImpl implements InventorymoveReque @Resource private InventorymoveRequestDetailMapper inventorymoveRequestDetailMapper; + @Resource + private TrendsApi trendsApi; + @Override public Long createInventorymoveRequestDetail(InventorymoveRequestDetailCreateReqVO createReqVO) { - // 插入 - InventorymoveRequestDetailDO inventorymoveRequestDetail = InventorymoveRequestDetailConvert.INSTANCE.convert(createReqVO); - inventorymoveRequestDetailMapper.insert(inventorymoveRequestDetail); - // 返回 + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MoveRequest"); + InventorymoveRequestDetailDO inventorymoveRequestDetail = validatorToCreate(createReqVO,requestsettingDO); + //调用自动执行方法 + trendsApi.createTrends(requestsettingDO.getId(), "MoveRequest", "增加了库存转移申请", TrendsTypeEnum.CREATE); return inventorymoveRequestDetail.getId(); } + @Resource + private ItembasicService itembasicService; + + @Resource + private JobUtils jobUtils; + + @Resource + private SerialNumberApi serialNumberApi; + + @Resource + private RequestsettingService requestsettingService; + + private ItembasicDO validteitem(InventorymoveRequestDetailDO detailDo) { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + return itembasicDO; + } + + private InventorymoveRequestDetailDO validatorToCreate(InventorymoveRequestDetailCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest"); + InventorymoveRequestDetailDO inventorymoveRequestDetailDO = validateDetailMethod(createReqVO,businesstypeDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_REQUEST.getCode()); + inventorymoveRequestDetailDO.setNumber(number); + inventorymoveRequestDetailDO.setMasterId(createReqVO.getMasterId()); + inventorymoveRequestDetailMapper.insert(inventorymoveRequestDetailDO); + return inventorymoveRequestDetailDO; + } + + private InventorymoveRequestDetailDO validateDetailMethod(InventorymoveRequestDetailBaseVO baseVO, BusinesstypeDO businesstypeDO ) { + InventorymoveRequestDetailDO inventorymoveRequestDetailDO = InventorymoveRequestDetailConvert.INSTANCE.convert(baseVO); + inventorymoveRequestDetailDO.setCreateTime(LocalDateTime.now()); + ItembasicDO itembasic = validteitem(inventorymoveRequestDetailDO); + inventorymoveRequestDetailDO.setItemDesc1(itembasic.getDesc1()); + inventorymoveRequestDetailDO.setItemDesc2(itembasic.getDesc2()); + inventorymoveRequestDetailDO.setItemName(itembasic.getName()); + inventorymoveRequestDetailDO.setProjectCode(itembasic.getProject()); + inventorymoveRequestDetailDO.setUom(itembasic.getUom()); + jobUtils.ifInToLocationType(inventorymoveRequestDetailDO.getFromLocationCode(), businesstypeDO); + jobUtils.ifOutInventoryStatuses(inventorymoveRequestDetailDO.getFromInventoryStatus(), businesstypeDO); + validtebalance(inventorymoveRequestDetailDO); + return inventorymoveRequestDetailDO; + + } + private void validtebalance(InventorymoveRequestDetailDO detailDo) { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add(detailDo.getFromInventoryStatus()); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() + , detailDo.getFromBatch(), detailDo.getFromLocationCode(), inventoryStatus); + } + + + + @Override public void updateInventorymoveRequestDetail(InventorymoveRequestDetailUpdateReqVO updateReqVO) { // 校验存在 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 09b0d91d..612ddf9b 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 @@ -1,39 +1,52 @@ package com.win.module.wms.service.inventorymoveRequest; import cn.hutool.core.collection.CollUtil; -import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.common.util.validation.ValidationUtils; import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; +import com.win.module.system.api.dict.DictDataApi; +import com.win.module.system.api.dict.dto.DictDataRespDTO; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; 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.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.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.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.inventorymoveRequest.InventorymoveRequestDetailMapper; import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusEnum; 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.shift.ShiftService; +import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; - import javax.annotation.Resource; +import javax.validation.Validator; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; import java.util.List; - import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.INVENTORYMOVE_REQUEST_MAIN_NOT_EXISTS; -import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 库存转移申请主 Service 实现类 @@ -49,35 +62,116 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest @Resource private InventorymoveRequestDetailMapper inventorymoveRequestDetailMapper; + @Resource + private Validator validator; + @Resource private ItembasicService itembasicService; + @Resource - private ItempackagingService itempackagingService; + private SerialNumberApi serialNumberApi; + @Resource - private ShiftService shiftService; + private RequestsettingService requestsettingService; @Resource private JobUtils jobUtils; @Resource private LocationService locationService; - + @Resource + private TrendsApi trendsApi; @Override public Long createInventorymoveRequestMain(InventorymoveRequestMainCreateReqVO createReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MoveRequest"); // 插入 - InventorymoveRequestMainDO inventorymoveRequestMain = InventorymoveRequestMainConvert.INSTANCE.convert(createReqVO); - inventorymoveRequestMainMapper.insert(inventorymoveRequestMain); - // 返回 + InventorymoveRequestMainDO inventorymoveRequestMain = validatorToCreate(createReqVO,requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(inventorymoveRequestMain.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "MoveRequest", "增加了库存移动申请", TrendsTypeEnum.CREATE); return inventorymoveRequestMain.getId(); } + private InventorymoveRequestMainDO validatorToCreate(InventorymoveRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest"); + InventorymoveRequestMainDO inventorymoveRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); + List subList = createReqVO.getSubList(); + List subDOList = InventorymoveRequestDetailConvert.INSTANCE.convertList03(subList); + for(InventorymoveRequestDetailDO inventorymoveRequestDetailDO: subDOList){ + validateDetailMethod(inventorymoveRequestDetailDO,businesstypeDO,inventorymoveRequestMainDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_REQUEST.getCode()); + inventorymoveRequestMainDO.setNumber(number); + inventorymoveRequestMainMapper.insert(inventorymoveRequestMainDO); + for( InventorymoveRequestDetailDO inventorymoveRequestDetailDO : subDOList){ + inventorymoveRequestDetailDO.setMasterId(inventorymoveRequestMainDO.getId()); + inventorymoveRequestDetailDO.setNumber(inventorymoveRequestMainDO.getNumber()); + } + inventorymoveRequestDetailMapper.insertBatch(subDOList); + return inventorymoveRequestMainDO; + } + + private void validateDetailMethod(InventorymoveRequestDetailDO inventorymoveRequestDetailDO, BusinesstypeDO businesstypeDO, InventorymoveRequestMainDO productputawayRequestMainDO) { + inventorymoveRequestDetailDO.setCreateTime(LocalDateTime.now()); + ItembasicDO itembasic = validteitem(inventorymoveRequestDetailDO); + inventorymoveRequestDetailDO.setItemDesc1(itembasic.getDesc1()); + inventorymoveRequestDetailDO.setItemDesc2(itembasic.getDesc2()); + inventorymoveRequestDetailDO.setItemName(itembasic.getName()); + inventorymoveRequestDetailDO.setProjectCode(itembasic.getProject()); + inventorymoveRequestDetailDO.setUom(itembasic.getUom()); + jobUtils.ifInToLocationType(inventorymoveRequestDetailDO.getFromLocationCode(), businesstypeDO); + jobUtils.ifOutInventoryStatuses(inventorymoveRequestDetailDO.getFromInventoryStatus(), businesstypeDO); + validtebalance(inventorymoveRequestDetailDO); + + } + private InventorymoveRequestMainDO validateMainMethod(InventorymoveRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){ + InventorymoveRequestMainDO inventorymoveRequestMainDO = InventorymoveRequestMainConvert.INSTANCE.convert(baseVO); + inventorymoveRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + inventorymoveRequestMainDO.setCreateTime(LocalDateTime.now()); + inventorymoveRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); + inventorymoveRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); + inventorymoveRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); + inventorymoveRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + inventorymoveRequestMainDO.setBusinessType(businesstypeDO.getCode()); + inventorymoveRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + inventorymoveRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + inventorymoveRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + inventorymoveRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + return inventorymoveRequestMainDO; + + } + + @Override public void updateInventorymoveRequestMain(InventorymoveRequestMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MoveRequest"); // 校验存在 validateInventorymoveRequestMainExists(updateReqVO.getId()); // 更新 - InventorymoveRequestMainDO updateObj = InventorymoveRequestMainConvert.INSTANCE.convert(updateReqVO); - inventorymoveRequestMainMapper.updateById(updateObj); + InventorymoveRequestMainDO inventorymoveRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); + + if(RequestStatusEnum.HANDLING.getCode().equals(inventorymoveRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "MoveRequest", "增加了库存移动申请", TrendsTypeEnum.CREATE); + } + private InventorymoveRequestMainDO validatorToUpdate(InventorymoveRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest"); + InventorymoveRequestMainDO inventorymoveRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = updateReqVO.getSubList(); + if(!subList.isEmpty()) { + List subDOList = InventorymoveRequestDetailConvert.INSTANCE.convertList05(subList); + for (InventorymoveRequestDetailDO inventorymoveRequestDetailDO : subDOList) { + validateDetailMethod(inventorymoveRequestDetailDO, businesstypeDO, inventorymoveRequestMainDO); + } + inventorymoveRequestDetailMapper.updateBatch(subDOList); + } + inventorymoveRequestMainMapper.updateById(inventorymoveRequestMainDO); + return inventorymoveRequestMainDO; } + + @Override public void deleteInventorymoveRequestMain(Long id) { // 校验存在 @@ -92,6 +186,9 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest } } + @Resource + private DictDataApi dictDataApi; + @Override public InventorymoveRequestMainDO getInventorymoveRequestMain(Long id) { return inventorymoveRequestMainMapper.selectById(id); @@ -117,6 +214,97 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest return inventorymoveRequestMainMapper.selectList(exportReqVO); } + private String validateInventorymoveRequestMainImport(InventorymoveRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + mainDo.setCreateTime(LocalDateTime.now()); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MoveRequest"); + if (requestsettingDO == null) { + message.append("未查找到制品上架申请的相关申请设置"); + } else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + if (businesstypeDO == null) { + message.append("根据单据设置未查找到制品上架申请的相关业务类型"); + } else { + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + private InventorymoveRequestDetailDO validatelocation(InventorymoveRequestDetailDO detailDo){ + LocationDO locationDO = locationService.selectLocation(detailDo.getFromLocationCode()); + if (locationDO != null) { + detailDo.setFromLocationCode(locationDO.getCode()); + } + return detailDo; + } + + + private ItembasicDO validteitem(InventorymoveRequestDetailDO detailDo) { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + return itembasicDO; + } + + private void validtebalance(InventorymoveRequestDetailDO detailDo){ + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add(detailDo.getFromInventoryStatus()); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() + , detailDo.getFromBatch(), detailDo.getFromLocationCode(), inventoryStatus); + +} + + private String validateInventorymoveRequestDetailImport(InventorymoveRequestDetailDO detailDo, InventorymoveRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList + try{ + detailDo.setCreateTime(LocalDateTime.now()); + detailDo = validatelocation(detailDo); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + ItembasicDO itembasic = validteitem(detailDo); + detailDo.setItemDesc1(itembasic.getDesc1()); + detailDo.setItemDesc2(itembasic.getDesc2()); + detailDo.setItemName(itembasic.getName()); + detailDo.setProjectCode(itembasic.getProject()); + detailDo.setUom(itembasic.getUom()); + + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + validtebalance(detailDo); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + + @Override public List importInventorymoveRequestMainList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { @@ -124,105 +312,40 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest"); // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - String messageMain = ""; //主表的验证 - - - //校验供应商送货策略 -// try { -// RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null); -// String json = ruleRespVO.getConfiguration(); -// } catch (ServiceException ex) { -// importRemark += ex.getMessage() + ","; -// } + InventorymoveRequestMainDO mainDo = InventorymoveRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validateInventorymoveRequestMainImport(mainDo, businesstypeDO); //子表的验证 - - List subList = createReqVO.getSubList(); List subDOList = InventorymoveRequestDetailConvert.INSTANCE.convertList03(subList); + boolean flag = true; for (InventorymoveRequestDetailDO purchaseDetailDO : subDOList) { - String messageDetail = ""; + String messageDetail = validateInventorymoveRequestDetailImport(purchaseDetailDO, mainDo, businesstypeDO); //校验来源/目标库位基础信息 - try { - LocationDO locationDO = locationService.selectLocation(createReqVO.getFromWarehouseOde()); - if (locationDO != null) { - purchaseDetailDO.setFromLocationCode(locationDO.getCode()); -// purchaseDetailDO.setArea_code(purchaseDetailDO.getAreaCode()); -// purchaseDetailDO.setLocation_group_code(purchaseDetailDO.getAreaCode()); - } - } catch (ServiceException ex) { - messageMain += ex.getMessage() + ","; - } - // 校验物品基础信息 - try { - ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); - if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { - messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; - } else { - purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1()); - purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2()); - purchaseDetailDO.setItemName(itembasicDO.getName()); - purchaseDetailDO.setProjectCode(itembasicDO.getProject()); - } - purchaseDetailDO.setProjectCode(itembasicDO.getCode()); - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - // 校验业务类型 - try { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest"); - jobUtils.ifInToLocationType(purchaseDetailDO.getFromLocationCode(), businesstypeDO); - jobUtils.ifOutInventoryStatuses(purchaseDetailDO.getFromInventoryStatus(), businesstypeDO); - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - - // 校验业务类型 - try { - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add(purchaseDetailDO.getFromInventoryStatus()); - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() - , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getFromLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); -// purchaseDetailDO.setArriveDate( balanceDO.getArriveDate() ); -// purchaseDetailDO.setProduceDate( balanceDO.getProduceDate() ); -// purchaseDetailDO.setExpireDate( balanceDO.getExpireDate() ); - } - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - InventorymoveRequestDetailCreateReqVO purchaseDetailCreateReqVO = InventorymoveRequestDetailConvert.INSTANCE.convert1(purchaseDetailDO); - InventorymoveRequestMainImportErrorVO importVO = InventorymoveRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); - //进行子表的错误统计 - //主表没有错误 写入库里 - if (!messageMain.equals("") || !messageDetail.equals("")) { - importVO.setImportStatus("失败"); + if (!"".equals(messageMain) ||!"".equals(messageDetail) ) { + InventorymoveRequestMainImportErrorVO importErrorVO = InventorymoveRequestMainConvert.INSTANCE.convert(createReqVO, purchaseDetailDO); + importErrorVO.setImportStatus("失败"); messageMain = messageMain + messageDetail; - importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); - errorList.add(importVO); - } else { - purchaseDetailDO.setNumber(createReqVO.getNumber()); - purchaseDetailDO.setMasterId(createReqVO.getId()); + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; } } - - if (errorList.isEmpty()) { - // 判断如果不存在,在进行插入 - if (mode != 3) { - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - inventorymoveRequestDetailMapper.insertBatch(subDOList); - } else if (mode != 2) { - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - inventorymoveRequestDetailMapper.updateBatch(subDOList); + //写入数据 + if (flag) { + String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_CHANGE_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + inventorymoveRequestMainMapper.insert(mainDo); + for (InventorymoveRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); } + inventorymoveRequestDetailMapper.insertBatch(subDOList); } }); - //错误不为空并非部分更新,手工回滚 - if (!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java index e2cd2c45..3bbd7a05 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java @@ -182,7 +182,7 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque if(RequestStatusEnum.HANDLING.getCode().equals(productputawayRequestMainDO.getStatus())) { } - trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE); + trendsApi.createTrends(requestsettingDO.getId(), "ProductPutawayRequest", "增加了上架申请", TrendsTypeEnum.CREATE); } private ProductputawayRequestMainDO validatorToUpdate(ProductputawayRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) {