From 72ff4b29a508d0d5cbaa5189bad3b7b68beb1f4c Mon Sep 17 00:00:00 2001 From: chenfang Date: Tue, 14 Nov 2023 19:53:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E/=E4=BF=AE=E6=94=B9/=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E7=9A=84=E6=A0=A1=E9=AA=8C=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 3 + ...oductionreturnRequestDetailController.java | 9 +- ...ProductionreturnRequestMainController.java | 58 ++- .../ProductionreturnRequestImportErrorVO.java | 25 ++ .../vo/ProductionreturnRequestImportVO.java | 45 +++ .../vo/ProductionreturnRequestMainBaseVO.java | 2 + ...roductionreturnRequestMainCreateReqVO.java | 9 + .../PurchaseclaimRequestMainController.java | 2 +- .../vo/PurchasereceiptRequestMainBaseVO.java | 1 + .../PurchasereceiptRequestMainImportVO.java | 2 + .../PurchasereturnRequestMainController.java | 50 +++ .../PurchasereturnRequestImportErrorVO.java | 25 ++ .../vo/PurchasereturnRequestImportVO.java | 81 ++++ .../vo/PurchasereturnRequestMainBaseVO.java | 7 +- .../PurchasereturnRequestMainCreateReqVO.java | 7 + .../PurchasereturnRequestMainUpdateReqVO.java | 6 + .../PutawayRequestMainController.java | 53 ++- .../vo/PutawayRequestDetailBaseVO.java | 2 + .../vo/PutawayRequestImportErrorVO.java | 25 ++ .../vo/PutawayRequestImportVO.java | 63 +++ .../vo/PutawayRequestMainBaseVO.java | 6 +- .../vo/PutawayRequestMainCreateReqVO.java | 7 + .../vo/PutawayRequestMainUpdateReqVO.java | 6 + .../IssueRequestDetailConvert.java | 6 +- .../issueRequest/IssueRequestMainConvert.java | 10 +- .../ProductionreturnRequestDetailConvert.java | 1 + .../ProductionreturnRequestMainConvert.java | 17 +- .../PurchaseclaimRequestDetailConvert.java | 7 +- .../PurchaseclaimRequestMainConvert.java | 20 +- .../PurchasereceiptRequestDetailConvert.java | 4 +- .../PurchasereceiptRequestMainConvert.java | 4 +- .../PurchasereturnRequestDetailConvert.java | 32 +- .../PurchasereturnRequestMainConvert.java | 16 +- .../PutawayRequestDetailConvert.java | 29 +- .../PutawayRequestMainConvert.java | 13 +- .../PurchasereturnRequestMainDO.java | 5 +- .../ProductionreturnRequestDetailMapper.java | 1 - .../ProductionreturnRequestMainMapper.java | 3 + .../ProductputawayRequestDetailMapper.java | 1 - .../PurchasereturnRequestMainMapper.java | 6 + .../PutawayRequestMainMapper.java | 3 + .../itembasic/ItembasicServiceImpl.java | 9 +- .../ProductionlineServiceImpl.java | 3 +- .../ProductionlineitemService.java | 2 +- .../ProductionlineitemServiceImpl.java | 14 +- .../ProductionreturnRequestDetailService.java | 10 +- ...ductionreturnRequestDetailServiceImpl.java | 88 ++++- .../ProductionreturnRequestMainService.java | 14 +- ...roductionreturnRequestMainServiceImpl.java | 314 ++++++++++++++- .../ProductputawayRequestMainServiceImpl.java | 56 +-- .../PurchaseclaimRequestMainService.java | 2 +- .../PurchaseclaimRequestMainServiceImpl.java | 363 +++++++++++------- .../PurchasereceiptRecordMainServiceImpl.java | 4 +- .../PurchasereturnRequestMainService.java | 14 +- .../PurchasereturnRequestMainServiceImpl.java | 345 ++++++++++++++++- .../PutawayRequestMainService.java | 7 +- .../PutawayRequestMainServiceImpl.java | 301 ++++++++++++++- .../service/workshop/WorkshopServiceImpl.java | 5 +- .../workstation/WorkstationServiceImpl.java | 8 +- 59 files changed, 1910 insertions(+), 321 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportVO.java 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 fe38456b..30d9d195 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 @@ -62,6 +62,7 @@ public interface ErrorCodeConstants { ErrorCode PRODUCTIONLINEITEM_PRODUCT_LINE_COED_NOT_EXISTS = new ErrorCode(1_000_024_003, "产线代码不存在"); ErrorCode PRODUCTIONLINEITEM_ITEM_CODE_NOT_EXISTS = new ErrorCode(1_000_024_004, "物品代码不存在"); ErrorCode PRODUCTIONLINEITEM_AVAILABLE_NOT_EXISTS = new ErrorCode(1_000_024_005, "是否可用不存在"); + ErrorCode PRODUCTIONLINEITEM_NOT_EXIST = new ErrorCode(1_000_024_006, "生产线物料关系不存在【{}】"); //采购价格单ErrorCode ErrorCode SUPPLIER_NOT_EXISTS = new ErrorCode(1_000_025_000, "供应商不存在"); ErrorCode SUPPLIER_NOT_EXISTSNO = new ErrorCode(1_000_025_001, "代码已存在"); @@ -200,6 +201,7 @@ public interface ErrorCodeConstants { ErrorCode WORKSTATION_PRODUECTION_LINE_CODE_NOT_EXISTS = new ErrorCode(1_000_040_005, "生产线代码不存在"); ErrorCode WORKSTATION_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_040_006, "导入工序不能为空"); ErrorCode WORKSTATION_PRODUECTION_LINE_CODE_AND_WORKSTATION_RELATION_ERROR = new ErrorCode(1_000_040_007, "生产线代码与工位不匹配"); + ErrorCode WORKSTATION_RELATION_ERROR = new ErrorCode(1_000_040_008, "车间,生产线代码与工位不匹配【{}】"); //工序ErrorCode ErrorCode PROCESS_NOT_EXISTS = new ErrorCode(1_000_041_000, "工序不存在"); ErrorCode PROCESS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_041_001, "导入工序数据不能为空"); @@ -554,6 +556,7 @@ public interface ErrorCodeConstants { ErrorCode PRODUCTIONRETURN_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_097_000, "生产退料申请主不存在"); //生产退料申请子ErrorCode ErrorCode PRODUCTIONRETURN_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_097_001, "生产退料申请子不存在"); + ErrorCode PRODUCTIONRETURN_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_097_002, "导入生产退料申请不能为空"); //生产退料申请主ErrorCode ErrorCode PRODUCTIONRETURN_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_098_000, "生产退料任务主不存在"); //生产退料任务子ErrorCode diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java index bb0a13a8..2e085da1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java @@ -10,6 +10,7 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.productionreturnRequest.vo.*; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.service.productionreturnRequest.ProductionreturnRequestDetailService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -43,15 +44,15 @@ public class ProductionreturnRequestDetailController { @PostMapping("/create") @Operation(summary = "创建生产退料申请子") @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-detail:create')") - public CommonResult createProductionreturnRequestDetail(@Valid @RequestBody ProductionreturnRequestDetailCreateReqVO createReqVO) { - return success(productionreturnRequestDetailService.createProductionreturnRequestDetail(createReqVO)); + public CommonResult createProductionreturnRequestDetail(@Valid @RequestBody ProductionreturnRequestDetailCreateReqVO createReqVO, @RequestBody RequestsettingDO requestsettingDO) { + return success(productionreturnRequestDetailService.createProductionreturnRequestDetail(createReqVO,requestsettingDO)); } @PutMapping("/update") @Operation(summary = "更新生产退料申请子") @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-detail:update')") - public CommonResult updateProductionreturnRequestDetail(@Valid @RequestBody ProductionreturnRequestDetailUpdateReqVO updateReqVO) { - productionreturnRequestDetailService.updateProductionreturnRequestDetail(updateReqVO); + public CommonResult updateProductionreturnRequestDetail(@Valid @RequestBody ProductionreturnRequestDetailUpdateReqVO updateReqVO, @RequestBody RequestsettingDO requestsettingDO) { + productionreturnRequestDetailService.updateProductionreturnRequestDetail(updateReqVO,requestsettingDO); return success(true); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java index 61f54f23..faac4b1d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java @@ -3,6 +3,8 @@ package com.win.module.wms.controller.productionreturnRequest; 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; @@ -10,21 +12,28 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.productionreturnRequest.vo.*; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.service.productionreturnRequest.ProductionreturnRequestDetailService; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.productionreturnRequest.ProductionreturnRequestMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; @@ -38,7 +47,6 @@ public class ProductionreturnRequestMainController { @Resource private ProductionreturnRequestMainService productionreturnRequestMainService; - @Resource private ProductionreturnRequestDetailService productionreturnRequestDetailService; @@ -48,15 +56,15 @@ public class ProductionreturnRequestMainController { @PostMapping("/create") @Operation(summary = "创建生产退料申请主") @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:create')") - public CommonResult createProductionreturnRequestMain(@Valid @RequestBody ProductionreturnRequestMainCreateReqVO createReqVO) { - return success(productionreturnRequestMainService.createProductionreturnRequestMain(createReqVO)); + public CommonResult createProductionreturnRequestMain(@Valid @RequestBody ProductionreturnRequestMainCreateReqVO createReqVO,@RequestBody BusinesstypeDO businesstypeDO,@RequestBody RequestsettingDO requestsettingDO) { + return success(productionreturnRequestMainService.createProductionreturnRequestMain(createReqVO,businesstypeDO,requestsettingDO)); } @PutMapping("/update") @Operation(summary = "更新生产退料申请主") @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:update')") - public CommonResult updateProductionreturnRequestMain(@Valid @RequestBody ProductionreturnRequestMainUpdateReqVO updateReqVO) { - productionreturnRequestMainService.updateProductionreturnRequestMain(updateReqVO); + public CommonResult updateProductionreturnRequestMain(@Valid @RequestBody ProductionreturnRequestMainUpdateReqVO updateReqVO,@RequestBody BusinesstypeDO businesstypeDO,@RequestBody RequestsettingDO requestsettingDO) { + productionreturnRequestMainService.updateProductionreturnRequestMain(updateReqVO,businesstypeDO,requestsettingDO); return success(true); } @@ -144,4 +152,44 @@ public class ProductionreturnRequestMainController { return success(result); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入生产退料申请信息模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = new ArrayList<>(); + Map mapDropDown = new HashMap<>(); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(8, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(10, uom); + // 输出 + ExcelUtils.write(response, "生产退料信息导入模板.xlsx", "生产退料申请信息列表", ProductionreturnRequestImportVO.class, list, mapDropDown); + } + + @PostMapping("/import") + @Operation(summary = "导入生产退料基本信息") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:import')") + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart, + @RequestParam(value = "businesstypeDO")BusinesstypeDO businesstypeDO, + @RequestParam(value = "requestsettingDO")RequestsettingDO requestsettingDO) throws Exception { + List list = ExcelUtils.read(file, ProductionreturnRequestImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(ProductionreturnRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = productionreturnRequestMainService.importProductionreturnRequestList(createReqVOList, mode, updatePart,businesstypeDO,requestsettingDO); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + 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/productionreturnRequest/vo/ProductionreturnRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportErrorVO.java new file mode 100644 index 00000000..1130aef9 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportErrorVO.java @@ -0,0 +1,25 @@ +package com.win.module.wms.controller.productionreturnRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 生产退料申请 Excel VO + * + * @author 超级管理员 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductionreturnRequestImportErrorVO extends ProductionreturnRequestImportVO { + + @ExcelProperty(value = "导入状态", index = 0) + private String importStatus; + + @ExcelProperty(value = "导入说明", index = 1) + private String importRemark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportVO.java new file mode 100644 index 00000000..e82d361e --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportVO.java @@ -0,0 +1,45 @@ +package com.win.module.wms.controller.productionreturnRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +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; +import lombok.experimental.Accessors; + + +/** + * 生产退料申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class ProductionreturnRequestImportVO { + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("车间代码") + private String workshopCode; + + @ExcelProperty("生产线代码") + private String productionLineCode; + + @ExcelProperty("工位代码") + private String workStationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("数量") + private String qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainBaseVO.java index dc0fe0b8..55ec90eb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productionreturnRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -34,6 +35,7 @@ public class ProductionreturnRequestMainBaseVO { @Schema(description = "从库区代码范围") private String fromAreaCodes; + @OnlyOne @Schema(description = "单据号") private String number; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainCreateReqVO.java index 601f9ea7..2ad4d451 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainCreateReqVO.java @@ -1,12 +1,21 @@ package com.win.module.wms.controller.productionreturnRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestDetailCreateReqVO; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 生产退料申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductionreturnRequestMainCreateReqVO extends ProductionreturnRequestMainBaseVO { + + @SubObject + @Schema(description = "子表数据") + private List subList; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java index 86609b2f..2a9fd6ec 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java @@ -66,7 +66,7 @@ public class PurchaseclaimRequestMainController { @Operation(summary = "更新采购索赔申请主") @PreAuthorize("@ss.hasPermission('wms:purchaseclaim-request-main:update')") public CommonResult updatePurchaseclaimRequestMain(@Valid @RequestBody PurchaseclaimRequestMainUpdateReqVO updateReqVO) { - Integer result = purchaseclaimRequestMainService.updatePurchaseclaimRequestMain(updateReqVO); + Long result = purchaseclaimRequestMainService.updatePurchaseclaimRequestMain(updateReqVO); return success(result > 0); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainBaseVO.java index b2f17c52..186ff877 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainBaseVO.java @@ -58,6 +58,7 @@ public class PurchasereceiptRequestMainBaseVO { @Schema(description = "到月台代码") private String toDockCode; + @OnlyOne @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) private String number; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainImportVO.java index e2602d85..3c7d088f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainImportVO.java @@ -23,6 +23,8 @@ import java.time.LocalDateTime; @Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 public class PurchasereceiptRequestMainImportVO { + @ExcelProperty("单据号") + private String number; //主表数据 @ExcelProperty("供应商代码") private String supplierCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/PurchasereturnRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/PurchasereturnRequestMainController.java index d19ff509..8f6dacce 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/PurchasereturnRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/PurchasereturnRequestMainController.java @@ -1,9 +1,13 @@ package com.win.module.wms.controller.purchasereturnRequest; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.framework.excel.core.util.ConvertUtil; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.purchasereturnRequest.vo.*; +import com.win.module.wms.enums.DictTypeConstants; +import io.swagger.v3.oas.annotations.Parameters; import com.win.module.wms.convert.purchasereturnRequest.PurchasereturnRequestDetailConvert; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO; import com.win.module.wms.service.purchasereturnRequest.PurchasereturnRequestDetailService; @@ -17,6 +21,8 @@ import io.swagger.v3.oas.annotations.Operation; import javax.validation.*; import javax.servlet.http.*; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import java.io.IOException; @@ -32,6 +38,7 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; import com.win.module.wms.convert.purchasereturnRequest.PurchasereturnRequestMainConvert; import com.win.module.wms.service.purchasereturnRequest.PurchasereturnRequestMainService; +import org.springframework.web.multipart.MultipartFile; @Tag(name = "管理后台 - 采购退货申请主") @RestController @@ -128,6 +135,49 @@ public class PurchasereturnRequestMainController { ExcelUtils.write(response, "采购退货申请主.xls", "数据", PurchasereturnRequestMainExcelVO.class, datas); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入采购退货信息模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = new ArrayList<>(); + Map mapDropDown = new HashMap<>(); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(10, uom); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(11, inventoryStatus); + String[] reason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON); + mapDropDown.put(13, reason); + String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON); + mapDropDown.put(15, transferMode); + // 输出 + ExcelUtils.write(response, "采购退货信息导入模板.xlsx", "采购退货信息列表", PurchasereturnRequestImportVO.class, list, mapDropDown); + } + + + @PostMapping("/import") + @Operation(summary = "导入采购退货基本信息") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + @PreAuthorize("@ss.hasPermission('wms:purchasereturn-request-main:import')") + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + List list = ExcelUtils.read(file, PurchasereturnRequestImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(PurchasereturnRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = purchasereturnRequestMainService.importPurchasereturnRequestList(createReqVOList, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("采购退货基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); + returnMap.put("errorFile", url); + } + return success(returnMap); + } @GetMapping("/getPurchasereturnRequestById") @Operation(summary = "APP获得采购退货申请主子表明细列表") @Parameter(name = "id", description = "编号", required = true, example = "1024") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportErrorVO.java new file mode 100644 index 00000000..b8baec5d --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportErrorVO.java @@ -0,0 +1,25 @@ +package com.win.module.wms.controller.purchasereturnRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 供应商发票申请 Excel VO + * + * @author 超级管理员 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PurchasereturnRequestImportErrorVO extends PurchasereturnRequestImportVO { + + @ExcelProperty(value = "导入状态", index = 0) + private String importStatus; + + @ExcelProperty(value = "导入说明", index = 1) + private String importRemark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportVO.java new file mode 100644 index 00000000..025579b1 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportVO.java @@ -0,0 +1,81 @@ +package com.win.module.wms.controller.purchasereturnRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + + +/** + * 供应商发票申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class PurchasereturnRequestImportVO { + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("采购收货记录单号") + private String purchaseReceiptRecordNumber; + + @ExcelProperty("供应商代码") + private String supplierCode; + + @ExcelProperty("订单号") + private String poNumber; + + @ExcelProperty("订单行") + private String poLine; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("来源库位") + private String fromLocationCode; + + @ExcelProperty(value = "原因", converter = DictConvert.class) + @DictFormat(DictTypeConstants.PURCHASE_RETURN_REASON) + private String reason; + + @ExcelProperty("承运商") + private String carrierCode; + + @ExcelProperty(value = "运输方式", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRANSFER_MODE) + private String transferMode; + + @ExcelProperty("车牌号") + private String vehiclePlateNumber; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainBaseVO.java index c865176e..394e4573 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainBaseVO.java @@ -1,11 +1,8 @@ package com.win.module.wms.controller.purchasereturnRequest.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; @@ -44,12 +41,12 @@ public class PurchasereturnRequestMainBaseVO { private String vehiclePlateNumber; @Schema(description = "从仓库代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从仓库代码不能为空") private String fromWarehouseCode; @Schema(description = "到仓库代码") private String toWarehouseCode; + @OnlyOne @Schema(description = "单据号") private String number; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainCreateReqVO.java index c47e485c..e8c71257 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainCreateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.purchasereturnRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 采购退货申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class PurchasereturnRequestMainCreateReqVO extends PurchasereturnRequestMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainUpdateReqVO.java index d2b84012..bb784012 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainUpdateReqVO.java @@ -1,12 +1,18 @@ package com.win.module.wms.controller.purchasereturnRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; 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 PurchasereturnRequestMainUpdateReqVO extends PurchasereturnRequestMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/PutawayRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/PutawayRequestMainController.java index d6b0ab97..b743cac8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/PutawayRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/PutawayRequestMainController.java @@ -1,9 +1,13 @@ package com.win.module.wms.controller.putawayRequest; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.framework.excel.core.util.ConvertUtil; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.putawayRequest.vo.*; +import com.win.module.wms.enums.DictTypeConstants; +import io.swagger.v3.oas.annotations.Parameters; import com.win.module.wms.convert.putawayRequest.PutawayRequestDetailConvert; import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestDetailDO; import com.win.module.wms.service.putawayRequest.PutawayRequestDetailService; @@ -16,6 +20,8 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; import javax.validation.*; import javax.servlet.http.*; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import java.io.IOException; import com.win.framework.common.pojo.PageResult; @@ -27,6 +33,7 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*; import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; import com.win.module.wms.convert.putawayRequest.PutawayRequestMainConvert; import com.win.module.wms.service.putawayRequest.PutawayRequestMainService; +import org.springframework.web.multipart.MultipartFile; @Tag(name = "管理后台 - 上架申请主") @RestController @@ -118,7 +125,26 @@ public class PutawayRequestMainController { //后端创建个字段作为前端展示的虚拟字段 vo.setCreator(user.getNickname()); } - ExcelUtils.write(response, "上架申请主.xls", "数据", PutawayRequestMainExcelVO.class, datas); + Map mapDropDown = new HashMap<>(); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(8, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(10, uom); + ExcelUtils.write(response, "上架申请主.xls", "数据", PutawayRequestMainExcelVO.class, datas,mapDropDown); + } + + @GetMapping("/get-import-template") + @Operation(summary = "获得导入上架申请信息模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = new ArrayList<>(); + Map mapDropDown = new HashMap<>(); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(8, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(10, uom); + // 输出 + ExcelUtils.write(response, "上架申请信息导入模板.xlsx", "上架申请信息列表", PutawayRequestImportVO.class, list, mapDropDown); } @GetMapping("/getPutawayRequestById") @@ -139,4 +165,29 @@ public class PutawayRequestMainController { return success(result); } + + @PostMapping("/import") + @Operation(summary = "导入上架申请基本信息") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + @PreAuthorize("@ss.hasPermission('wms:putaway-request-main:import')") + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + List list = ExcelUtils.read(file, PutawayRequestImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(PutawayRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = putawayRequestMainService.importPutawayRequestList(createReqVOList, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + 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/putawayRequest/vo/PutawayRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestDetailBaseVO.java index 9ffcf58e..46a8456b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestDetailBaseVO.java @@ -92,4 +92,6 @@ public class PutawayRequestDetailBaseVO { @Schema(description = "到货主代码") private String toOwnerCode; + @Schema(description = "主表id") + private Long masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportErrorVO.java new file mode 100644 index 00000000..bcdb2660 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportErrorVO.java @@ -0,0 +1,25 @@ +package com.win.module.wms.controller.putawayRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 供应商发票申请 Excel VO + * + * @author 超级管理员 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PutawayRequestImportErrorVO extends PutawayRequestImportVO { + + @ExcelProperty(value = "导入状态", index = 0) + private String importStatus; + + @ExcelProperty(value = "导入说明", index = 1) + private String importRemark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportVO.java new file mode 100644 index 00000000..b7d36815 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportVO.java @@ -0,0 +1,63 @@ +package com.win.module.wms.controller.putawayRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +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; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + + +/** + * 上架申请 Excel VO + * + * @author 超级管理员 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class PutawayRequestImportVO { + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("供应商代码") + private String supplierCode; + + @ExcelProperty("订单号") + private String poNumber; + + @ExcelProperty("订单行") + private String poLine; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + @ExcelProperty("来源库位") + private String fromLocationCode; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainBaseVO.java index 03df50b7..ec3345ad 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.putawayRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -37,6 +38,7 @@ public class PutawayRequestMainBaseVO { @Schema(description = "从库区代码范围") private String fromAreaCodes; + @OnlyOne @Schema(description = "单据号") private String number; @@ -101,8 +103,4 @@ public class PutawayRequestMainBaseVO { @NotNull(message = "直接生成记录不能为空") private String directCreateRecord; - - - - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainCreateReqVO.java index 84014eb5..beaa7aaa 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainCreateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.putawayRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 上架申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class PutawayRequestMainCreateReqVO extends PutawayRequestMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainUpdateReqVO.java index d929d8dd..b9d13be8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainUpdateReqVO.java @@ -1,12 +1,18 @@ package com.win.module.wms.controller.putawayRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; 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 PutawayRequestMainUpdateReqVO extends PutawayRequestMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java index 579e5dc2..32c27339 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java @@ -32,9 +32,11 @@ public interface IssueRequestDetailConvert { PageResult convertPage(PageResult page); - List convertList02(List list); + IssueRequestDetailCreateReqVO convert1(IssueRequestDetailDO detailDO); + List convertList02(List list); List convertList03(List list); + List convertList04(List list); List convertList05(List list); @@ -53,6 +55,4 @@ public interface IssueRequestDetailConvert { @Mapping(source = "mainVo.number", target = "number"), }) IssueRequestImportErrorVO convert(IssueRequestMainCreateReqVO mainVo, IssueRequestDetailCreateReqVO detailVo); - - IssueRequestDetailCreateReqVO convert1(IssueRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java index f1146b97..29948fce 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java @@ -1,19 +1,15 @@ package com.win.module.wms.convert.issueRequest; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - import com.win.module.wms.controller.issueRequest.vo.*; -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.issueRequest.IssueRequestDetailDO; -import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; + +import java.util.List; /** * 发料申请主 Convert diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestDetailConvert.java index a1e149dc..0fcdabe1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestDetailConvert.java @@ -34,4 +34,5 @@ public interface ProductionreturnRequestDetailConvert { List convertList02(List list); + List convertList03(List subList); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java index 30e4145b..ff6b47db 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java @@ -4,11 +4,11 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainCreateReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainExcelVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainRespVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainUpdateReqVO; +import com.win.module.wms.controller.productionreturnRequest.vo.*; +import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; @@ -22,9 +22,7 @@ public interface ProductionreturnRequestMainConvert { ProductionreturnRequestMainConvert INSTANCE = Mappers.getMapper(ProductionreturnRequestMainConvert.class); - ProductionreturnRequestMainDO convert(ProductionreturnRequestMainCreateReqVO bean); - - ProductionreturnRequestMainDO convert(ProductionreturnRequestMainUpdateReqVO bean); + ProductionreturnRequestMainDO convert(ProductionreturnRequestMainBaseVO baseVO); ProductionreturnRequestMainRespVO convert(ProductionreturnRequestMainDO bean); @@ -33,5 +31,8 @@ public interface ProductionreturnRequestMainConvert { PageResult convertPage(PageResult page); List convertList02(List list); - + @Mappings({ + @Mapping(source = "createReqVO.number", target = "number"), + }) + ProductionreturnRequestImportErrorVO convert(ProductionreturnRequestMainCreateReqVO createReqVO, ProductionreturnRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestDetailConvert.java index 6f02c50c..e5445824 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestDetailConvert.java @@ -2,8 +2,11 @@ package com.win.module.wms.convert.purchaseclaimRequest; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.purchaseclaimRequest.vo.*; +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.purchaseclaimRequest.PurchaseclaimRequestDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; @@ -39,6 +42,8 @@ public interface PurchaseclaimRequestDetailConvert { List convertList04(List list); + List convertList05(List list); + @Mappings({ @Mapping(source = "mainDO.number", target = "number"), @Mapping(source = "mainDO.remark", target = "remark"), @@ -52,5 +57,5 @@ public interface PurchaseclaimRequestDetailConvert { @Mappings({ @Mapping(source = "mainVo.number", target = "number"), }) - PurchaseclaimRequestImportErrorVO convert(PurchaseclaimRequestMainCreateReqVO mainVo, PurchaseclaimRequestDetailCreateReqVO detailVo); + PurchaseclaimRequestImportErrorVO convert(PurchaseclaimRequestMainCreateReqVO mainVo, PurchaseclaimRequestDetailDO detailDo); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestMainConvert.java index f006aede..4c02ff8a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestMainConvert.java @@ -1,10 +1,12 @@ package com.win.module.wms.convert.purchaseclaimRequest; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainUpdateReqVO; import com.win.module.wms.controller.purchaseclaimRequest.vo.*; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -31,4 +33,20 @@ public interface PurchaseclaimRequestMainConvert { List convertList02(List list); + PurchaseclaimRequestMainDO convert(PurchaseclaimRequestMainBaseVO baseVO); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + PurchaseclaimRequestMainExcelVO convert(PurchaseclaimRequestMainDO mainDO, PurchaseclaimRequestDetailDO detailDO); + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + PurchaseclaimRequestImportErrorVO convert(PurchaseclaimRequestMainCreateReqVO mainVo, PurchaseclaimRequestDetailDO detailDo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestDetailConvert.java index 93324092..d04277af 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestDetailConvert.java @@ -46,7 +46,9 @@ public interface PurchasereceiptRequestDetailConvert { @Mapping(source = "mainDO.updater", target = "updater"), }) PurchasereceiptRequestDetailExcelVO convert(PurchasereceiptRequestMainDO mainDO, PurchasereceiptRequestDetailDO detailDO); - + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) PurchasereceiptRequestMainImportErrorVO convert(PurchasereceiptRequestMainCreateReqVO mainVo, PurchasereceiptRequestDetailCreateReqVO detailVo); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestMainConvert.java index 03d55ddc..2c32bdf4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestMainConvert.java @@ -32,7 +32,9 @@ public interface PurchasereceiptRequestMainConvert { PageResult convertPage(PageResult page); List convertList02(List list); - + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) PurchasereceiptRequestMainImportErrorVO convert(PurchasereceiptRequestMainCreateReqVO mainVo, PurchasereceiptRequestDetailDO detailDo); @Mappings({ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestDetailConvert.java index a268cb66..7675b801 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestDetailConvert.java @@ -4,11 +4,13 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestDetailCreateReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestDetailExcelVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestDetailRespVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestDetailUpdateReqVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailCreateReqVO; +import com.win.module.wms.controller.purchasereturnRequest.vo.*; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO; @@ -28,10 +30,32 @@ public interface PurchasereturnRequestDetailConvert { PurchasereturnRequestDetailRespVO convert(PurchasereturnRequestDetailDO bean); + PurchasereturnRequestDetailCreateReqVO convert1(PurchasereturnRequestDetailDO bean); + List convertList(List list); PageResult convertPage(PageResult page); List convertList02(List list); + List convertList03(List list); + + List convertList04(List list); + List convertList05(List subList); + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + PurchasereturnRequestDetailExcelVO convert(PurchasereturnRequestMainDO mainDO, PurchasereturnRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + PurchasereturnRequestImportErrorVO convert(PurchasereturnRequestMainCreateReqVO mainVo, PurchasereturnRequestDetailCreateReqVO detailVo); + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestMainConvert.java index 5dc65822..3d4e0743 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestMainConvert.java @@ -4,11 +4,14 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainCreateReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainExcelVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainRespVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainUpdateReqVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainCreateReqVO; +import com.win.module.wms.controller.purchasereturnRequest.vo.*; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; @@ -33,5 +36,10 @@ public interface PurchasereturnRequestMainConvert { PageResult convertPage(PageResult page); List convertList02(List list); + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + PurchasereturnRequestImportErrorVO convert(PurchasereturnRequestMainCreateReqVO mainVo, PurchasereturnRequestDetailDO detailDo); + PurchasereturnRequestMainDO convert(PurchasereturnRequestMainBaseVO baseVO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestDetailConvert.java index da877730..825546ce 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestDetailConvert.java @@ -4,11 +4,11 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestDetailCreateReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestDetailExcelVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestDetailRespVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestDetailUpdateReqVO; +import com.win.module.wms.controller.putawayRequest.vo.*; +import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestDetailDO; @@ -28,10 +28,31 @@ public interface PutawayRequestDetailConvert { PutawayRequestDetailRespVO convert(PutawayRequestDetailDO bean); + PutawayRequestDetailCreateReqVO convert1(PutawayRequestDetailDO detailDO); List convertList(List list); PageResult convertPage(PageResult page); List convertList02(List list); + List convertList03(List list); + + List convertList04(List list); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + PutawayRequestDetailExcelVO convert(PutawayRequestMainDO mainDO, PutawayRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + PutawayRequestImportErrorVO convert(PutawayRequestMainCreateReqVO mainVo, PutawayRequestDetailCreateReqVO detailVo); + + List convertList05(List subList); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestMainConvert.java index adb2acee..0bc4fb3e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestMainConvert.java @@ -4,11 +4,11 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainCreateReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainExcelVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainRespVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainUpdateReqVO; +import com.win.module.wms.controller.putawayRequest.vo.*; +import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; @@ -34,4 +34,9 @@ public interface PutawayRequestMainConvert { List convertList02(List list); + PutawayRequestMainDO convert(PutawayRequestMainBaseVO baseVO); + @Mappings({ + @Mapping(source = "createReqVO.number", target = "number"), + }) + PutawayRequestImportErrorVO convert(PutawayRequestMainCreateReqVO createReqVO, PutawayRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereturnRequest/PurchasereturnRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereturnRequest/PurchasereturnRequestMainDO.java index 57ee6d77..fad48feb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereturnRequest/PurchasereturnRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereturnRequest/PurchasereturnRequestMainDO.java @@ -1,10 +1,7 @@ package com.win.module.wms.dal.dataobject.purchasereturnRequest; +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/productionreturnRequest/ProductionreturnRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.java index bc4d12f5..d4fba8f9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.java @@ -53,7 +53,6 @@ public interface ProductionreturnRequestDetailMapper extends BaseMapperX selectList(ProductionreturnRequestDetailExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() - .eqIfPresent(ProductionreturnRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductionreturnRequestDetailDO::getProductionLineCode, reqVO.getProductionLineCode()) .eqIfPresent(ProductionreturnRequestDetailDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductionreturnRequestDetailDO::getInventoryStatus, reqVO.getInventoryStatus()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java index 3dcdfeb7..e76ef52a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java @@ -76,4 +76,7 @@ public interface ProductionreturnRequestMainMapper extends BaseMapperX selectList(ProductputawayRequestDetailExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() - .eqIfPresent(ProductputawayRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductputawayRequestDetailDO::getPackingNumber, reqVO.getPackingNumber()) .eqIfPresent(ProductputawayRequestDetailDO::getContainerNumber, reqVO.getContainerNumber()) .eqIfPresent(ProductputawayRequestDetailDO::getBatch, reqVO.getBatch()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereturnRequest/PurchasereturnRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereturnRequest/PurchasereturnRequestMainMapper.java index d33ce366..a1f4ba09 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereturnRequest/PurchasereturnRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereturnRequest/PurchasereturnRequestMainMapper.java @@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainExportReqVO; import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainPageReqVO; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; import org.apache.ibatis.annotations.Mapper; @@ -57,6 +58,11 @@ public interface PurchasereturnRequestMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } + + default PurchasereturnRequestMainDO selectRecordNumberAndSupplierCode(String purchaseReceiptRecordNumber, String supplierCode) { + return selectOne(PurchasereturnRequestMainDO::getPurchaseReceiptRecordNumber, purchaseReceiptRecordNumber,PurchasereturnRequestMainDO::getSupplierCode,supplierCode); + } + default List selectList(PurchasereturnRequestMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(PurchasereturnRequestMainDO::getPurchaseReceiptRecordNumber, reqVO.getPurchaseReceiptRecordNumber()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/putawayRequest/PutawayRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/putawayRequest/PutawayRequestMainMapper.java index 38c9ff7b..916ee350 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/putawayRequest/PutawayRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/putawayRequest/PutawayRequestMainMapper.java @@ -92,4 +92,7 @@ public interface PutawayRequestMainMapper extends BaseMapperX productionLineCodeAndpItemCodeExist(String pproductionLineCode,String pitemCode); + public ProductionlineitemDO productionLineCodeAndpItemCodeExist(String pproductionLineCode,String pitemCode); /** * 获得用高级搜索户分页列表 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java index 8002809b..c72828d9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java @@ -169,21 +169,17 @@ public class ProductionlineitemServiceImpl implements ProductionlineitemService } //零件生产线关系有效 @Override - public List productionLineCodeAndpItemCodeExist(String pproductionLineCode,String pitemCode) { + public ProductionlineitemDO productionLineCodeAndpItemCodeExist(String pproductionLineCode,String pitemCode) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("production_line_code",pproductionLineCode); queryWrapper.eq("item_code",pitemCode); - List productionlineitemDO = productionlineitemMapper.selectList(queryWrapper); + queryWrapper.eq("available","TRUE"); + ProductionlineitemDO productionlineitemDO = productionlineitemMapper.selectOne(queryWrapper); if( productionlineitemDO != null){ - for (ProductionlineitemDO aDo : productionlineitemDO) { - if("TRUE".equals(aDo.getAvailable())){ - return productionlineitemDO; - } - } + return productionlineitemDO; }else { - throw new UtilException( "生产线" + pproductionLineCode + "与零件" + pitemCode + "关系无效"); + throw exception(PRODUCTIONLINEITEM_NOT_EXIST, "生产线" + pproductionLineCode + "与零件" + pitemCode + "关系无效"); } - return productionlineitemDO; } @Override diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java index 2ec6f4e6..5fd0c936 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java @@ -2,11 +2,9 @@ package com.win.module.wms.service.productionreturnRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailCreateReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailExportReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailPageReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailUpdateReqVO; +import com.win.module.wms.controller.productionreturnRequest.vo.*; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import javax.validation.Valid; import java.util.Collection; @@ -25,14 +23,14 @@ public interface ProductionreturnRequestDetailService { * @param createReqVO 创建信息 * @return 编号 */ - Long createProductionreturnRequestDetail(@Valid ProductionreturnRequestDetailCreateReqVO createReqVO); + Long createProductionreturnRequestDetail(@Valid ProductionreturnRequestDetailCreateReqVO createReqVO, RequestsettingDO requestsettingDO); /** * 更新生产退料申请子 * * @param updateReqVO 更新信息 */ - void updateProductionreturnRequestDetail(@Valid ProductionreturnRequestDetailUpdateReqVO updateReqVO); + void updateProductionreturnRequestDetail(@Valid ProductionreturnRequestDetailUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO); /** * 删除生产退料申请子 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java index de560561..333c7fb5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java @@ -2,22 +2,36 @@ package com.win.module.wms.service.productionreturnRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailCreateReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailExportReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailPageReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailUpdateReqVO; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; -import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; +import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.productionline.ProductionlineService; +import com.win.module.wms.service.productionlineitem.ProductionlineitemService; +import com.win.module.wms.service.workstation.WorkstationService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +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.ITEMBASIC_CODE_EXISTS; import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_REQUEST_DETAIL_NOT_EXISTS; /** @@ -31,22 +45,39 @@ public class ProductionreturnRequestDetailServiceImpl implements Productionretur @Resource private ProductionreturnRequestDetailMapper productionreturnRequestDetailMapper; - + @Resource + private ProductionreturnRequestMainService productionreturnRequestMainService; + @Resource + private ItembasicService itembasicService; + @Resource + private ProductionlineService productionlineService; + @Resource + private ProductionlineitemService productionlineitemService; + @Resource + private WorkstationService workstationService; + @Resource + private JobUtils jobUtils; + @Resource + private TrendsApi trendsApi; @Override - public Long createProductionreturnRequestDetail(ProductionreturnRequestDetailCreateReqVO createReqVO) { + public Long createProductionreturnRequestDetail(ProductionreturnRequestDetailCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { // 插入 ProductionreturnRequestDetailDO productionreturnRequestDetail = ProductionreturnRequestDetailConvert.INSTANCE.convert(createReqVO); productionreturnRequestDetailMapper.insert(productionreturnRequestDetail); + trendsApi.createTrends(productionreturnRequestDetail.getId(), requestsettingDO.getCode(), "修改了生产退料申请", TrendsTypeEnum.CREATE); // 返回 return productionreturnRequestDetail.getId(); } @Override - public void updateProductionreturnRequestDetail(ProductionreturnRequestDetailUpdateReqVO updateReqVO) { + public void updateProductionreturnRequestDetail(ProductionreturnRequestDetailUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { // 校验存在 validateProductionreturnRequestDetailExists(updateReqVO.getId()); // 更新 + ProductionreturnRequestMainDO productionreturnRequestMainToNumber = productionreturnRequestMainService.getProductionreturnRequestMainToNumber(updateReqVO.getNumber()); ProductionreturnRequestDetailDO updateObj = ProductionreturnRequestDetailConvert.INSTANCE.convert(updateReqVO); + validatorDetailMethod(updateObj,productionreturnRequestMainToNumber); + trendsApi.createTrends(updateObj.getId(), requestsettingDO.getCode(), "修改了生产退料申请", TrendsTypeEnum.UPDATE); productionreturnRequestDetailMapper.updateById(updateObj); } @@ -88,4 +119,53 @@ public class ProductionreturnRequestDetailServiceImpl implements Productionretur public PageResult getProductionreturnRequestDetailSenior(CustomConditions conditions) { return productionreturnRequestDetailMapper.selectSenior(conditions); } + + //校验子表公共方法(适用于新增/修改) + private void validatorDetailMethod(ProductionreturnRequestDetailDO detailDo, ProductionreturnRequestMainDO mainDo) { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + ProductionlineDO productionlineDO = validatorProductionline(detailDo.getProductionLineCode()); + detailDo.setFromLocationCode(productionlineDO.getRawLocationCode()); + this.validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode()); + WorkstationDO workstationDO = validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); + if(workstationDO != null){ + detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); + } + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.set(0,detailDo.getInventoryStatus()); + validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + } + + private ItembasicDO validatorItembasic(String itemCode){ + return itembasicService.selectItembasic(itemCode); + } + + private void ifUomSuccess(String itemUom,String uom) { + if(!itemUom.equals(uom)){ + throw exception(ITEMBASIC_CODE_EXISTS,"提示单位"+ uom + "错误,应该是" + itemUom); + } + } + + private ProductionlineDO validatorProductionline(String pproductionLineCode){ + return productionlineService.productionLineCodeExist(pproductionLineCode); + } + private void validatorProductionlineitem(String productionLineCode,String itemCode) { + productionlineitemService.productionLineCodeAndpItemCodeExist(productionLineCode, itemCode); + } + + private WorkstationDO validatorWorkStation(String workshopCode,String productionLineCode,String workStationCode){ + if(workStationCode != ""){ + return workstationService.selectWorkstationExist(workshopCode, productionLineCode, workStationCode); + }else { + return null; + } + } + + private void validatorManagementAccuracy(String itemCode,String packingNumber,String batch,String locationCode,List inventoryStatus){ + jobUtils.selectlocationReturnManagementAccuracy(itemCode,packingNumber,batch,locationCode,inventoryStatus); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java index 835ced58..926b9640 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java @@ -2,11 +2,10 @@ package com.win.module.wms.service.productionreturnRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainCreateReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainExportReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainPageReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainUpdateReqVO; +import com.win.module.wms.controller.productionreturnRequest.vo.*; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import javax.validation.Valid; import java.util.Collection; @@ -25,14 +24,14 @@ public interface ProductionreturnRequestMainService { * @param createReqVO 创建信息 * @return 编号 */ - Long createProductionreturnRequestMain(@Valid ProductionreturnRequestMainCreateReqVO createReqVO); + Long createProductionreturnRequestMain(@Valid ProductionreturnRequestMainCreateReqVO createReqVO,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO); /** * 更新生产退料申请主 * * @param updateReqVO 更新信息 */ - void updateProductionreturnRequestMain(@Valid ProductionreturnRequestMainUpdateReqVO updateReqVO); + void updateProductionreturnRequestMain(@Valid ProductionreturnRequestMainUpdateReqVO updateReqVO,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO); /** * 删除生产退料申请主 @@ -48,6 +47,7 @@ public interface ProductionreturnRequestMainService { * @return 生产退料申请主 */ ProductionreturnRequestMainDO getProductionreturnRequestMain(Long id); + ProductionreturnRequestMainDO getProductionreturnRequestMainToNumber(String number); /** * 获得生产退料申请主列表 @@ -80,4 +80,6 @@ public interface ProductionreturnRequestMainService { * @return 分页列表 */ PageResult getProductionreturnRequestMainSenior(CustomConditions conditions); + + List importProductionreturnRequestList(List createReqVOList, Integer mode, Boolean updatePart, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java index 3cfbb134..e71b316d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java @@ -1,24 +1,54 @@ package com.win.module.wms.service.productionreturnRequest; +import cn.hutool.core.collection.CollUtil; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainCreateReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainExportReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainPageReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainUpdateReqVO; +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.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.productionreturnRequest.vo.*; +import com.win.module.wms.controller.productionreturnRequest.vo.*; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; -import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; +import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; +import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO; +import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; +import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; +import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper; import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestMainMapper; +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.productionline.ProductionlineService; +import com.win.module.wms.service.productionlineitem.ProductionlineitemService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.workshop.WorkshopService; +import com.win.module.wms.service.workstation.WorkstationService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; 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.PRODUCTIONRETURN_REQUEST_MAIN_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 生产退料申请主 Service 实现类 @@ -31,26 +61,58 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR @Resource private ProductionreturnRequestMainMapper productionreturnRequestMainMapper; - + @Resource + private ProductionreturnRequestDetailMapper productionreturnRequestDetailMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private WorkshopService workshopService; + @Resource + private ProductionlineService productionlineService; + @Resource + private ProductionlineitemService productionlineitemService; + @Resource + private WorkstationService workstationService; + @Resource + private JobUtils jobUtils; + @Resource + private Validator validator; + @Resource + private RequestsettingService requestsettingService; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private TrendsApi trendsApi; @Override - public Long createProductionreturnRequestMain(ProductionreturnRequestMainCreateReqVO createReqVO) { + @Transactional + public Long createProductionreturnRequestMain(ProductionreturnRequestMainCreateReqVO createReqVO,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { // 插入 - ProductionreturnRequestMainDO productionreturnRequestMain = ProductionreturnRequestMainConvert.INSTANCE.convert(createReqVO); - productionreturnRequestMainMapper.insert(productionreturnRequestMain); + ProductionreturnRequestMainDO productionreturnRequestMainDO = validatorToCreate(createReqVO, businesstypeDO, requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), requestsettingDO.getCode(), "增加了生产退料申请", TrendsTypeEnum.CREATE); // 返回 - return productionreturnRequestMain.getId(); + return createReqVO.getId(); } @Override - public void updateProductionreturnRequestMain(ProductionreturnRequestMainUpdateReqVO updateReqVO) { + @Transactional + public void updateProductionreturnRequestMain(ProductionreturnRequestMainUpdateReqVO updateReqVO,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { // 校验存在 validateProductionreturnRequestMainExists(updateReqVO.getId()); + ProductionreturnRequestMainDO productionreturnRequestMainDO = validatorMainMethod(updateReqVO, businesstypeDO, requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), requestsettingDO.getCode(), "修改了生产退料申请", TrendsTypeEnum.UPDATE); // 更新 ProductionreturnRequestMainDO updateObj = ProductionreturnRequestMainConvert.INSTANCE.convert(updateReqVO); productionreturnRequestMainMapper.updateById(updateObj); } @Override + @Transactional public void deleteProductionreturnRequestMain(Long id) { // 校验存在 validateProductionreturnRequestMainExists(id); @@ -69,6 +131,11 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR return productionreturnRequestMainMapper.selectById(id); } + @Override + public ProductionreturnRequestMainDO getProductionreturnRequestMainToNumber(String number) { + return productionreturnRequestMainMapper.selectByNumber(number); + } + @Override public List getProductionreturnRequestMainList(Collection ids) { return productionreturnRequestMainMapper.selectBatchIds(ids); @@ -88,4 +155,227 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR public PageResult getProductionreturnRequestMainSenior(CustomConditions conditions) { return productionreturnRequestMainMapper.selectSenior(conditions); } + + @Override + public List importProductionreturnRequestList(List createReqVOList + , Integer mode, Boolean updatePart,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { + if (CollUtil.isEmpty(createReqVOList)) { + throw exception(PRODUCTIONRETURN_REQUEST_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + createReqVOList.forEach(createReqVO -> { + ProductionreturnRequestMainDO mainDo = ProductionreturnRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validatorProductionreturnRequestMainImport(mainDo,businesstypeDO,requestsettingDO); + List subList = createReqVO.getSubList(); + List subDOList = ProductionreturnRequestDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (ProductionreturnRequestDetailDO detailDO : subDOList) { + String messageDetail = validatorProductionreturnRequestDetailImport(detailDO, mainDo,businesstypeDO); + if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + ProductionreturnRequestImportErrorVO importErrorVO = ProductionreturnRequestMainConvert.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, "新增")); + mainDo.setRequestTime(LocalDateTime.now()); + productionreturnRequestMainMapper.insert(mainDo); + for (ProductionreturnRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + } + productionreturnRequestDetailMapper.insertBatch(subDOList); + } + }); + return errorList; + } + + // 新增校验 + private ProductionreturnRequestMainDO validatorToCreate(ProductionreturnRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { + ProductionreturnRequestMainDO mainDo = validatorMainMethod(createReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = ProductionreturnRequestDetailConvert.INSTANCE.convertList03(subList); + for (ProductionreturnRequestDetailDO detailDO : subDOList) { + validatorDetailMethod(detailDO,mainDo); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RETURN_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + productionreturnRequestMainMapper.insert(mainDo); + for (ProductionreturnRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(mainDo.getNumber()); + } + productionreturnRequestDetailMapper.insertBatch(subDOList); + return mainDo; + } + + //校验主表公共方法(适用于新增/修改) + private ProductionreturnRequestMainDO validatorMainMethod(ProductionreturnRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO){ + ProductionreturnRequestMainDO mainDo = ProductionreturnRequestMainConvert.INSTANCE.convert(baseVO); + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + return mainDo; + } + //校验子表公共方法(适用于新增/修改) + private void validatorDetailMethod(ProductionreturnRequestDetailDO detailDo,ProductionreturnRequestMainDO mainDo) { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + validatorProductionline(detailDo.getProductionLineCode()); + ProductionlineitemDO productionlineitemDO = validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode()); + detailDo.setFromLocationCode(productionlineitemDO.getRawLocationCode()); + WorkstationDO workstationDO = validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); + if(workstationDO != null){ + detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); + } + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.set(0,detailDo.getInventoryStatus()); + validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + } + + /** + * 校验主表导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validatorProductionreturnRequestMainImport(ProductionreturnRequestMainDO mainDo,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { + StringBuilder message = new StringBuilder(); + try { + validatorWorkshop(mainDo.getWorkshopCode()); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + 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()); + } + if (requestsettingDO == null) { + message.append("根据申请单设置未查找到采购退货申请的相关业务类型"); + } + else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + /** + * 校验子表导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validatorProductionreturnRequestDetailImport(ProductionreturnRequestDetailDO detailDo, ProductionreturnRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + try { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + try { + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + this.validatorProductionline(detailDo.getProductionLineCode()); + + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + ProductionlineitemDO productionlineitemDO = validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode()); + detailDo.setFromLocationCode(productionlineitemDO.getRawLocationCode()); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + WorkstationDO workstationDO = validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); + if(workstationDO != null){ + detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); + } + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.set(0,detailDo.getInventoryStatus()); + validatorManagementAccuracy(detailDo.getItemCode(), null, null, detailDo.getFromLocationCode(), inventoryStatus); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ValidationUtils.validate(validator, detailDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + private ItembasicDO validatorItembasic(String itemCode){ + return itembasicService.selectItembasic(itemCode); + } + + private void ifUomSuccess(String itemUom,String uom) { + if(!itemUom.equals(uom)){ + throw exception(ITEMBASIC_CODE_EXISTS,"提示单位"+ uom + "错误,应该是" + itemUom); + } + } + + private WorkshopDO validatorWorkshop(String workshopCode){ + return workshopService.selectWorkshopExist(workshopCode); + } + private void validatorProductionline(String pproductionLineCode){ + productionlineService.productionLineCodeExist(pproductionLineCode); + } + private ProductionlineitemDO validatorProductionlineitem(String productionLineCode,String itemCode) { + return productionlineitemService.productionLineCodeAndpItemCodeExist(productionLineCode, itemCode); + } + + private WorkstationDO validatorWorkStation(String workshopCode,String productionLineCode,String workStationCode){ + if(workStationCode != ""){ + return workstationService.selectWorkstationExist(workshopCode, productionLineCode, workStationCode); + }else { + return null; + } + } + private void validatorManagementAccuracy(String itemCode,String packingNumber,String batch,String locationCode,List inventoryStatus){ + jobUtils.selectlocationReturnManagementAccuracy(itemCode,packingNumber,batch,locationCode,inventoryStatus); + } } 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 28150896..e2cd2c45 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 @@ -326,7 +326,7 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque } List selectlocationReturnManagement(String ItemCode, String packingNumber, - String batch , String fromLocationCode , List business){ + String batch , String fromLocationCode , List business){ List balanceDO = jobUtils.selectlocationReturnManagementAccuracy(ItemCode, packingNumber, batch,fromLocationCode, business); return balanceDO; @@ -390,37 +390,37 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque throw exception(PRODUCTPUTAWAY_REQUEST_NOT_EXISTS); } List errorList = new ArrayList<>(); - datas.forEach(createReqVO -> { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest"); + datas.forEach(createReqVO -> { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest"); ProductputawayRequestMainDO mainDo = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO); String messageMain = validateProductputawayRequestMainImport(mainDo, businesstypeDO); List subList = createReqVO.getSubList(); List subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList03(subList); - boolean flag = true; - for (ProductputawayRequestDetailDO detailDO : subDOList) { - String messageDetail = validateProductputawayRequestDetailImport(detailDO, mainDo, businesstypeDO); - if (!"".equals(messageMain) ||!"".equals(messageDetail) ) { - ProductputawayImportErrorVO importErrorVO = ProductputawayRequestMainConvert.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.PRODUCT_PUTAWAY_REQUEST.getCode()); - mainDo.setNumber(number); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - productputawayRequestMainMapper.insert(mainDo); - for (ProductputawayRequestDetailDO detailDO : subDOList) { - detailDO.setMasterId(mainDo.getId()); - detailDO.setNumber(number); - } - productputawayRequestDetailMapper.insertBatch(subDOList); - } - }); + boolean flag = true; + for (ProductputawayRequestDetailDO detailDO : subDOList) { + String messageDetail = validateProductputawayRequestDetailImport(detailDO, mainDo, businesstypeDO); + if (!"".equals(messageMain) ||!"".equals(messageDetail) ) { + ProductputawayImportErrorVO importErrorVO = ProductputawayRequestMainConvert.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.PRODUCT_PUTAWAY_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + productputawayRequestMainMapper.insert(mainDo); + for (ProductputawayRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + } + productputawayRequestDetailMapper.insertBatch(subDOList); + } + }); return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainService.java index 02688bdf..0654bc1e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainService.java @@ -29,7 +29,7 @@ public interface PurchaseclaimRequestMainService { * * @param updateReqVO 更新信息 */ - Integer updatePurchaseclaimRequestMain(@Valid PurchaseclaimRequestMainUpdateReqVO updateReqVO); + Long updatePurchaseclaimRequestMain(@Valid PurchaseclaimRequestMainUpdateReqVO updateReqVO); /** * 删除采购索赔申请主 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java index de165a16..77f11147 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java @@ -1,14 +1,16 @@ package com.win.module.wms.service.purchaseclaimRequest; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.exceptions.UtilException; 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.serialnumber.SerialNumberApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.purchaseclaimRequest.vo.*; + import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestDetailConvert; import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestMainConvert; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; @@ -17,9 +19,11 @@ import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.supplierdeliverRecord.SupplierdeliverRecordDetailDO; import com.win.module.wms.dal.mysql.purchaseclaimRequest.PurchaseclaimRequestDetailMapper; import com.win.module.wms.dal.mysql.purchaseclaimRequest.PurchaseclaimRequestMainMapper; 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.purchase.PurchaseMainService; import com.win.module.wms.service.requestsetting.RequestsettingService; @@ -28,7 +32,6 @@ import com.win.module.wms.service.supplierdeliverRecord.SupplierdeliverRecordMai import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -76,42 +79,42 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest private JobUtils jobUtils; @Resource private RequestsettingService requestsettingService; - + @Resource + private TrendsApi trendsApi; @Override @Transactional public Long createPurchaseclaimRequestMain(PurchaseclaimRequestMainCreateReqVO createReqVO) { // 插入主表 - PurchaseclaimRequestMainDO purchaseclaimRequestMain = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); - purchaseclaimRequestMain.setNumber(number); - purchaseclaimRequestMainMapper.insert(purchaseclaimRequestMain); - // 插入子表 - List subList = createReqVO.getSubList(); - List subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); - for (PurchaseclaimRequestDetailDO detailDO : subDOList) { - detailDO.setMasterId(purchaseclaimRequestMain.getId()); - detailDO.setNumber(number); + RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); + PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(purchaseclaimRequestMainDO.getStatus())) { + } - purchaseclaimRequestDetailMapper.insertBatch(subDOList); - // 返回 - return purchaseclaimRequestMain.getId(); + trendsApi.createTrends(requestsettingDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE); + return purchaseclaimRequestMainDO.getId(); } @Override @Transactional - public Integer updatePurchaseclaimRequestMain(PurchaseclaimRequestMainUpdateReqVO updateReqVO) { + public Long updatePurchaseclaimRequestMain(PurchaseclaimRequestMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); // 校验存在,如子表需要也再此校验 - validatePurchaseclaimRequestMainExists(updateReqVO.getId()); + validatorPurchaseclaimRequestMainExists(updateReqVO.getId()); // 更新主表 - PurchaseclaimRequestMainDO updateObj = PurchaseclaimRequestMainConvert.INSTANCE.convert(updateReqVO); - return purchaseclaimRequestMainMapper.updateById(updateObj); + PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(purchaseclaimRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE); + return purchaseclaimRequestMainDO.getId(); } @Override @Transactional public Integer deletePurchaseclaimRequestMain(Long id) { // 校验存在 - validatePurchaseclaimRequestMainExists(id); + validatorPurchaseclaimRequestMainExists(id); // 删除子表数据 Map map = new HashMap<>(); map.put("master_id", id); @@ -120,11 +123,9 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest return purchaseclaimRequestMainMapper.deleteById(id); } - private void validatePurchaseclaimRequestMainExists(Long id) { + private void validatorPurchaseclaimRequestMainExists(Long id) { PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = purchaseclaimRequestMainMapper.selectById(id); if (purchaseclaimRequestMainDO == null) { - return; - }else { throw exception(PURCHASECLAIM_REQUEST_MAIN_EXISTS); } } @@ -154,143 +155,207 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest return purchaseclaimRequestMainMapper.selectList(exportReqVO); } - private void selectUomExist(String itemUom,String uom) { - if(itemUom.equals(uom)){ - return; - }else { - throw new UtilException("提示单位"+ uom + "错误,应该是" + itemUom); - } - } - - private void ifPlanQtyBigThanOrderQty(String poLine, BigDecimal shippedQty, BigDecimal qty, BigDecimal orderQty) { - if(shippedQty.add(qty).compareTo(orderQty) > 0){ - throw new UtilException("订单行"+ poLine + "的已发货数量" + shippedQty + "+计划数量" + qty + "大于订单数量" + orderQty); - } - } @Override - @Transactional public List importPurchaseclaimRequestList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - String messageMain = ""; - //主表校验方法 - if(mode != null){ - try { - validatePurchaseclaimRequestMainExists(null); - } catch (Exception ex) { - messageMain += ex.getMessage() + ","; - } - - try { - supplierService.selectSupplier(createReqVO.getSupplierCode()); - } catch (Exception ex) { - messageMain += ex.getMessage() + ","; + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + PurchaseclaimRequestMainDO mainDo = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validatorPurchaseclaimRequestMainImport(mainDo, businesstypeDO); + List subList = createReqVO.getSubList(); + List subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (PurchaseclaimRequestDetailDO detailDO : subDOList) { + String messageDetail = validatorPurchaseclaimRequestDetailImport(detailDO, mainDo); + if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + PurchaseclaimRequestImportErrorVO importErrorVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; } - List subList = createReqVO.getSubList(); - List subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 + } + //写入数据 + if (flag) { + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + purchaseclaimRequestMainMapper.insert(mainDo); for (PurchaseclaimRequestDetailDO detailDO : subDOList) { - String messageDetail = ""; - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - //子表校验方法 - try { - supplierdeliverRecordMainService.selectSupplierdeliverRecordMainDO(createReqVO.getSupplierCode(), - detailDO.getNumber(), detailDO.getItemCode(), detailDO.getPoNumber(), detailDO.getPoLine()); - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - try { - ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); - detailDO.setProjectCode(itembasicDO.getProject()); - try { - selectUomExist(itembasicDO.getUom(), detailDO.getUom()); - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - try { - PurchaseDetailDO purchaseDetailDO = purchaseMainService.selectPurchaseDetailDoExist(detailDO.getNumber(), createReqVO.getSupplierCode() - , detailDO.getItemCode(), detailDO.getPoLine()); - try { - ifPlanQtyBigThanOrderQty(detailDO.getPoLine(), purchaseDetailDO.getShippedQty(), detailDO.getQty(), purchaseDetailDO.getOrderQty()); - }catch (Exception ex){ - messageDetail += ex.getMessage() + ","; - } - }catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - try{ - ValidationUtils.validate(validator,createReqVO); - }catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - PurchaseclaimRequestDetailCreateReqVO purchaseclaimRequestDetailCreateReqVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert1(detailDO); - PurchaseclaimRequestImportErrorVO importVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseclaimRequestDetailCreateReqVO); - //进行子表的错误统计 - //主表没有错误 写入库里 - if(!messageMain.equals("") || !messageDetail.equals("")){ - importVO.setImportStatus("失败"); - messageMain = messageMain + messageDetail; - importVO.setImportRemark(messageMain.substring(0,messageMain.length()-1)); - errorList.add(importVO); - }else { - detailDO.setNumber(createReqVO.getNumber()); - detailDO.setMasterId(createReqVO.getId()); - detailDO.setAmount(detailDO.getQty().multiply(detailDO.getSinglePrice()).setScale(6,BigDecimal.ROUND_HALF_UP)); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_REQUEST.getCode()); - createReqVO.setNumber(number); - } - - } - if(errorList.isEmpty()){ - // 判断如果不存在,在进行插入 - PurchaseclaimRequestMainDO existPurchaseclaimRequestMainDO = purchaseclaimRequestMainMapper.selectByAsnNumberAndSupplierCode(createReqVO.getAsnNumber(), createReqVO.getSupplierCode()); - if(existPurchaseclaimRequestMainDO == null && mode != 3){ - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseClaimRequest"); - if(businesstypeDO != null){ - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseClaimRequest"); - if(requestsettingDO != null){ - createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); - createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); - createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - } - PurchaseclaimRequestMainDO createObj = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); - purchaseclaimRequestMainMapper.insert(createObj); - purchaseclaimRequestDetailMapper.insertBatch(subDOList); - } - else if(existPurchaseclaimRequestMainDO != null && mode != 2){ - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseClaimRequest"); - if(businesstypeDO != null){ - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseClaimRequest"); - if(requestsettingDO != null){ - createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); - createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); - createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - } - PurchaseclaimRequestMainDO createObj = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); - purchaseclaimRequestMainMapper.updateById(createObj); - purchaseclaimRequestDetailMapper.updateBatch(subDOList); - } + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + detailDO.setAmount(detailDO.getQty().multiply(detailDO.getSinglePrice()).setScale(6,BigDecimal.ROUND_HALF_UP)); } + purchaseclaimRequestDetailMapper.insertBatch(subDOList); } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; } + + private void validatorSupplier(String SupplierCode){ + supplierService.selectSupplier(SupplierCode); + } + + private PurchaseDetailDO validatorPurchaseDetailDo(String pnumber, String psupplierCode, String pitemCode,String poLine){ + return purchaseMainService.selectPurchaseDetailDoExist(pnumber, psupplierCode, pitemCode, poLine); + } + + private ItembasicDO validatorItembasic(String itemCode){ + return itembasicService.selectItembasic(itemCode); + } + + private void selectUomExist(String itemUom,String uom) { + if(!itemUom.equals(uom)){ + throw exception(UOM_EXCEPTION,"提示单位"+ uom + "错误,应该是" + itemUom); + } + } + + private SupplierdeliverRecordDetailDO validatorSupplierdeliverRecordMainDO(String psupplierCode, String pasnNumber, String pitemCode, String ppoNumber, String ppoLine){ + return supplierdeliverRecordMainService.selectSupplierdeliverRecordMainDO(psupplierCode,pasnNumber,pitemCode,ppoNumber,ppoLine); + } + + + private void ifPlanQtyBigThanOrderQty(String poLine, BigDecimal shippedQty, BigDecimal qty, BigDecimal orderQty) { + if(shippedQty.add(qty).compareTo(orderQty) > 0){ + throw exception(QTY_EXCEPTION,"订单行"+ poLine + "的已发货数量" + shippedQty + "+计划数量" + qty + "大于订单数量" + orderQty); + } + } + //新增校验 + private PurchaseclaimRequestMainDO validatorToCreate(PurchaseclaimRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorMainMethod(createReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); + for (PurchaseclaimRequestDetailDO purchaseclaimRequestDetailDO : subDOList) { + validatorDetailMethod(purchaseclaimRequestDetailDO,purchaseclaimRequestMainDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + purchaseclaimRequestMainDO.setNumber(number); + purchaseclaimRequestMainMapper.insert(purchaseclaimRequestMainDO); + purchaseclaimRequestDetailMapper.insertBatch(subDOList); + return purchaseclaimRequestMainDO; + } + + //修改校验 + private PurchaseclaimRequestMainDO validatorToUpdate(PurchaseclaimRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorMainMethod(updateReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = updateReqVO.getSubList(); + List subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList05(subList); + for (PurchaseclaimRequestDetailDO purchaseclaimRequestDetailDO : subDOList) { + validatorDetailMethod(purchaseclaimRequestDetailDO,purchaseclaimRequestMainDO); + } + purchaseclaimRequestMainMapper.updateById(purchaseclaimRequestMainDO); + purchaseclaimRequestDetailMapper.updateBatch(subDOList); + return purchaseclaimRequestMainDO; + } + //校验主表公共方法(适用于新增/修改) + private PurchaseclaimRequestMainDO validatorMainMethod(PurchaseclaimRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){ + PurchaseclaimRequestMainDO mainDo = PurchaseclaimRequestMainConvert.INSTANCE.convert(baseVO); + this.validatorSupplier(mainDo.getSupplierCode()); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseclaimRequest"); + mainDo.setBusinessType(businesstypeDO.getCode()); + return mainDo; + } + //校验子表公共方法(适用于新增/修改) + private void validatorDetailMethod(PurchaseclaimRequestDetailDO detailDo,PurchaseclaimRequestMainDO mainDo) { + validatorSupplierdeliverRecordMainDO(mainDo.getSupplierCode(), mainDo.getAsnNumber(), detailDo.getItemCode(), detailDo.getPoNumber(), detailDo.getPoLine()); + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + this.selectUomExist(itembasicDO.getUom(), detailDo.getUom()); + PurchaseDetailDO purchaseDetailDO = validatorPurchaseDetailDo(detailDo.getNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine()); + ifPlanQtyBigThanOrderQty(detailDo.getPoLine(), purchaseDetailDO.getShippedQty(), detailDo.getQty(), purchaseDetailDO.getOrderQty()); + } + + /** + * 校验主表导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validatorPurchaseclaimRequestMainImport(PurchaseclaimRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + try { + this.validatorSupplier(mainDo.getSupplierCode()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); + if (requestsettingDO == null) { + message.append("未查找到采购索赔申请的相关申请设置"); + } else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseclaimRequest"); + if (businesstypeDO == null) { + message.append("根据单据设置未查找到采购索赔申请的相关业务类型"); + } else { + mainDo.setBusinessType(businesstypeDO.getCode()); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + /** + * 校验子表导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validatorPurchaseclaimRequestDetailImport(PurchaseclaimRequestDetailDO detailDo, PurchaseclaimRequestMainDO mainDo) { + StringBuilder message = new StringBuilder(); + try { + if(!"".equals(mainDo.getAsnNumber())){ + validatorSupplierdeliverRecordMainDO(mainDo.getSupplierCode(), detailDo.getNumber(), detailDo.getItemCode(), detailDo.getPoNumber(), detailDo.getPoLine()); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + try { + this.selectUomExist(itembasicDO.getUom(), detailDo.getUom()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + PurchaseDetailDO purchaseDetailDO = validatorPurchaseDetailDo(detailDo.getNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine()); + try { + ifPlanQtyBigThanOrderQty(detailDo.getPoLine(), purchaseDetailDO.getShippedQty(), detailDo.getQty(), purchaseDetailDO.getOrderQty()); + }catch (Exception ex){ + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ValidationUtils.validate(validator, detailDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java index ad4dd7fb..7590ec25 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java @@ -102,8 +102,10 @@ public class PurchasereceiptRecordMainServiceImpl implements PurchasereceiptReco public PurchasereceiptRecordDetailDO selectPurchasereceiptExist(String ppoNumber,String psupplierCode,String pNumber,String ppoLine,String pitemCode){ QueryWrapper queryWrapperMain = new QueryWrapper(); queryWrapperMain.eq("number",pNumber); + queryWrapperMain.eq("supplier_code",psupplierCode); + queryWrapperMain.eq("available","TRUE"); PurchasereceiptRecordMainDO purchasereceiptRecordMainDO = purchasereceiptRecordMainMapper.selectOne(queryWrapperMain); - if(purchasereceiptRecordMainDO != null && "TRUE".equals(purchasereceiptRecordMainDO.getAvailable()) && purchasereceiptRecordMainDO.getSupplierCode().equals(psupplierCode)){ + if(purchasereceiptRecordMainDO != null){ QueryWrapper queryWrapperDetail = new QueryWrapper(); queryWrapperDetail.eq("po_number",ppoNumber); queryWrapperDetail.eq("po_line",ppoLine); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainService.java index cbc73432..9e99fb18 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainService.java @@ -4,10 +4,7 @@ import java.util.*; import javax.validation.*; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainCreateReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainExportReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainPageReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainUpdateReqVO; +import com.win.module.wms.controller.purchasereturnRequest.vo.*; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; import com.win.framework.common.pojo.PageResult; @@ -77,5 +74,14 @@ public interface PurchasereturnRequestMainService { * @return 采购退货申请主列表 */ List getPurchasereturnRequestMainList(PurchasereturnRequestMainExportReqVO exportReqVO); + /** + * 批量导入采购退货申请主信息 + * + * @param datas 导入采购索赔申请主信息列表 + * @param mode 导入模式1更新2追加3覆盖 + * @param updatePart 是否支持更新 + * @return 导入结果 + */ + public List importPurchasereturnRequestList(List datas, Integer mode, boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java index c88848eb..7536f35e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java @@ -1,14 +1,41 @@ package com.win.module.wms.service.purchasereturnRequest; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainCreateReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainExportReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainPageReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainUpdateReqVO; +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.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.purchasereturnRequest.vo.*; +import com.win.module.wms.convert.purchasereturnRequest.PurchasereturnRequestDetailConvert; +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.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordMainDO; +import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.purchasereceiptRecord.PurchasereceiptRecordMainMapper; +import com.win.module.wms.dal.mysql.purchasereturnRequest.PurchasereturnRequestDetailMapper; +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.location.LocationService; +import com.win.module.wms.service.purchasereceiptRecord.PurchasereceiptRecordMainService; +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 javax.validation.Validator; + import org.springframework.validation.annotation.Validated; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.*; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; @@ -32,22 +59,62 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque @Resource private PurchasereturnRequestMainMapper purchasereturnRequestMainMapper; + @Resource + private PurchasereturnRequestDetailMapper purchasereturnRequestDetailMapper; + + @Resource + private Validator validator; + @Resource + private ItembasicService itembasicService; + + @Resource + private DictDataApi dictDataApi; + + @Resource + private JobUtils jobUtils; + + @Resource + private PurchasereceiptRecordMainService purchasereceiptRecordMainService; + + @Resource + private PurchasereceiptRecordMainMapper purchasereceiptRecordMainMapper; + + @Resource + private SerialNumberApi serialNumberApi; + + @Resource + private RequestsettingService requestsettingService; + + @Resource + private LocationService locationService; + @Resource + private TrendsApi trendsApi; @Override public Long createPurchasereturnRequestMain(PurchasereturnRequestMainCreateReqVO createReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchasereturnRequest"); // 插入 PurchasereturnRequestMainDO purchasereturnRequestMain = PurchasereturnRequestMainConvert.INSTANCE.convert(createReqVO); - purchasereturnRequestMainMapper.insert(purchasereturnRequestMain); + PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(purchasereturnRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "PurchasereturnRequest", "增加了采购退货申请", TrendsTypeEnum.CREATE); // 返回 return purchasereturnRequestMain.getId(); } @Override public void updatePurchasereturnRequestMain(PurchasereturnRequestMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchasereturnRequest"); // 校验存在 validatePurchasereturnRequestMainExists(updateReqVO.getId()); - // 更新 - PurchasereturnRequestMainDO updateObj = PurchasereturnRequestMainConvert.INSTANCE.convert(updateReqVO); - purchasereturnRequestMainMapper.updateById(updateObj); + // 更新主表 + PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(purchasereturnRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "PurchasereturnRequest", "增加了采购退货申请", TrendsTypeEnum.CREATE); } @Override public PageResult getPurchasereturnRequestMainSenior(CustomConditions conditions) { @@ -87,4 +154,266 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque return purchasereturnRequestMainMapper.selectList(exportReqVO); } + + + @Override + public List importPurchasereturnRequestList(List datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(PURCHASERETURN_REQUEST_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + PurchasereceiptRecordMainDO purchasereceiptRecordMainDO = new PurchasereceiptRecordMainDO(); + PurchasereturnRequestMainDO mainDo = PurchasereturnRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validatorPurchasereturnRequestMainImport(mainDo); + List subList = createReqVO.getSubList(); + List subDOList = PurchasereturnRequestDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (PurchasereturnRequestDetailDO detailDO : subDOList) { + String messageDetail = validatorPurchasereturnRequestDetailImport(detailDO, mainDo,businesstypeDO); + if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + PurchasereturnRequestImportErrorVO importErrorVO = PurchasereturnRequestMainConvert.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, "新增")); + mainDo.setPpNumber(purchasereceiptRecordMainDO.getPpNumber()); + mainDo.setAsnNumber(purchasereceiptRecordMainDO.getAsnNumber()); + mainDo.setRequestTime(LocalDateTime.now()); + purchasereturnRequestMainMapper.insert(mainDo); + for (PurchasereturnRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + detailDO.setToLocationCode("PUR_INTRANSIT"); + } + purchasereturnRequestDetailMapper.insertBatch(subDOList); + } + }); + return errorList; + } + + private void ifUomSuccess(String itemUom,String uom) { + if(!itemUom.equals(uom)){ + throw exception(UOM_EXCEPTION,"提示单位"+ uom + "错误,应该是" + itemUom); + } + } + + private void ifdetailQtyBigThanQty(BigDecimal detailQty, BigDecimal qty) { + if(detailQty.compareTo(qty) > 0){ + throw exception(QTY_EXCEPTION,"退货数量"+ qty + "不能大于于收货数量" + detailQty); + } + } + private ItembasicDO validatorItembasic(String itemCode){ + return itembasicService.selectItembasic(itemCode); + } + + private void validatorIfInType(String itemType,BusinesstypeDO businesstypeDO){ + jobUtils.ifInType(itemType, businesstypeDO); + } + private void validatorIfInToLocationType(String fromLocationCode,BusinesstypeDO businesstypeDO){ + jobUtils.ifInToLocationType(fromLocationCode, businesstypeDO); + } + + private void validatorLocation(String fromLocationCode){ + locationService.selectLocation(fromLocationCode); + } + + private void requestsettingAndBusinesstypeSet(PurchasereturnRequestMainDO mainDo) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchasereturnRequest"); + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReturnRequest"); + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } + private BigDecimal validatorBalance(PurchasereturnRequestDetailDO detailDo,PurchasereturnRequestMainDO mainDO){ + ArrayList inventoryStatus = new ArrayList(); + inventoryStatus.add(detailDo.getInventoryStatus()); + BigDecimal bigDecimal = new BigDecimal(0); + List banlance = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + if(banlance != null) { + for (BalanceDO balanceDO : banlance) { + bigDecimal = bigDecimal.add(balanceDO.getQty()); + mainDO.setFromWarehouseCode(balanceDO.getWarehouseCode()); + } + } + return bigDecimal; + } + // 新增校验 + private PurchasereturnRequestMainDO validatorToCreate(PurchasereturnRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { + PurchasereceiptRecordMainDO purchasereceiptRecordMainDO = new PurchasereceiptRecordMainDO(); + PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorMainMethod(createReqVO,purchasereceiptRecordMainDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = PurchasereturnRequestDetailConvert.INSTANCE.convertList03(subList); + for (PurchasereturnRequestDetailDO purchasereturnRequestDetailDO : subDOList) { + validatorDetailMethod(purchasereturnRequestDetailDO,purchasereturnRequestMainDO,purchasereceiptRecordMainDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + purchasereturnRequestMainDO.setNumber(number); + purchasereturnRequestMainDO.setPpNumber(purchasereceiptRecordMainDO.getPpNumber()); + purchasereturnRequestMainDO.setAsnNumber(purchasereceiptRecordMainDO.getAsnNumber()); + purchasereturnRequestMainDO.setRequestTime(LocalDateTime.now()); + purchasereturnRequestMainMapper.insert(purchasereturnRequestMainDO); + purchasereturnRequestDetailMapper.insertBatch(subDOList); + return purchasereturnRequestMainDO; + } + + //修改校验 + private PurchasereturnRequestMainDO validatorToUpdate(PurchasereturnRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { + PurchasereceiptRecordMainDO purchasereceiptRecordMainDO = new PurchasereceiptRecordMainDO(); + PurchasereturnRequestMainDO purchaseclaimRequestMainDO = validatorMainMethod(updateReqVO,purchasereceiptRecordMainDO); + //子表校验 + List subList = updateReqVO.getSubList(); + List subDOList = PurchasereturnRequestDetailConvert.INSTANCE.convertList05(subList); + for (PurchasereturnRequestDetailDO purchaseclaimRequestDetailDO : subDOList) { + validatorDetailMethod(purchaseclaimRequestDetailDO,purchaseclaimRequestMainDO,purchasereceiptRecordMainDO); + } + purchasereturnRequestMainMapper.updateById(purchaseclaimRequestMainDO); + purchasereturnRequestDetailMapper.updateBatch(subDOList); + return purchaseclaimRequestMainDO; + } + //校验主表公共方法(适用于新增/修改) + private PurchasereturnRequestMainDO validatorMainMethod(PurchasereturnRequestMainBaseVO baseVO,PurchasereceiptRecordMainDO purchasereceiptRecordMainDO){ + PurchasereturnRequestMainDO mainDo = PurchasereturnRequestMainConvert.INSTANCE.convert(baseVO); + requestsettingAndBusinesstypeSet(mainDo); + return mainDo; + } + //校验子表公共方法(适用于新增/修改) + private void validatorDetailMethod(PurchasereturnRequestDetailDO detailDo,PurchasereturnRequestMainDO mainDo,PurchasereceiptRecordMainDO purchasereceiptRecordMainDO) { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + validatorLocation(detailDo.getFromLocationCode()); + PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO = purchasereceiptRecordMainService.selectPurchasereceiptExist(detailDo.getPoNumber(), mainDo.getSupplierCode(), mainDo.getPurchaseReceiptRecordNumber(), detailDo.getPoLine(), detailDo.getItemCode()); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("id", purchasereceiptRecordDetailDO.getMasterId()); + purchasereceiptRecordMainDO = purchasereceiptRecordMainMapper.selectOne(queryWrapper); + ifdetailQtyBigThanQty(purchasereceiptRecordDetailDO.getQty(), detailDo.getQty()); + BigDecimal bigDecimal = validatorBalance(detailDo,mainDo); + ifdetailQtyBigThanQty(detailDo.getQty(),bigDecimal); + } + + /** + * 校验主表导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validatorPurchasereturnRequestMainImport(PurchasereturnRequestMainDO mainDo) { + StringBuilder message = new StringBuilder(); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchasereturnRequest"); + if (requestsettingDO == null) { + message.append("未查找到采购退货申请的相关申请设置"); + } + else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReturnRequest"); + 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(); + } + + /** + * 校验子表导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validatorPurchasereturnRequestDetailImport(PurchasereturnRequestDetailDO detailDo, PurchasereturnRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + try { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + try { + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + this.validatorIfInType(itembasicDO.getType(), businesstypeDO); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + validatorIfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + validatorLocation(detailDo.getFromLocationCode()); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO = purchasereceiptRecordMainService.selectPurchasereceiptExist(detailDo.getPoNumber(), mainDo.getSupplierCode(), mainDo.getPurchaseReceiptRecordNumber(), detailDo.getPoLine(), detailDo.getItemCode()); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("id", purchasereceiptRecordDetailDO.getMasterId()); + PurchasereceiptRecordMainDO purchasereceiptRecordMainDO = purchasereceiptRecordMainMapper.selectOne(queryWrapper); + try { + ifdetailQtyBigThanQty(purchasereceiptRecordDetailDO.getQty(), detailDo.getQty()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + BigDecimal bigDecimal = validatorBalance(detailDo,mainDo); + try{ + ifdetailQtyBigThanQty(detailDo.getQty(),bigDecimal); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ValidationUtils.validate(validator, detailDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainService.java index ec601c6e..f657af70 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainService.java @@ -2,10 +2,7 @@ package com.win.module.wms.service.putawayRequest; import java.util.*; import javax.validation.*; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainCreateReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainExportReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainPageReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainUpdateReqVO; +import com.win.module.wms.controller.putawayRequest.vo.*; import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; import com.win.framework.common.pojo.PageResult; @@ -78,4 +75,6 @@ public interface PutawayRequestMainService { */ List getPutawayRequestMainList(PutawayRequestMainExportReqVO exportReqVO); + public List importPutawayRequestList(List datas, Integer mode, boolean updatePart); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java index 46f34c0c..c570bca4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java @@ -1,14 +1,38 @@ package com.win.module.wms.service.putawayRequest; +import cn.hutool.core.collection.CollUtil; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainCreateReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainExportReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainPageReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainUpdateReqVO; +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.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.putawayRequest.vo.*; +import com.win.module.wms.convert.putawayRequest.PutawayRequestDetailConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +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.purchase.PurchaseDetailDO; +import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.putawayRequest.PutawayRequestDetailMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.customer.CustomerService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.service.purchase.PurchaseMainService; +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 javax.validation.Validator; + +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.*; import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; @@ -31,26 +55,60 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService @Resource private PutawayRequestMainMapper putawayRequestMainMapper; + @Resource + private PutawayRequestDetailMapper putawayRequestDetailMapper; + @Resource + private Validator validator; + @Resource + private ItembasicService itembasicService; + @Resource + private PurchaseMainService purchaseMainService; + @Resource + private LocationService locationService; + @Resource + private JobUtils jobUtils; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private RequestsettingService requestsettingService; + @Resource + private CustomerService customerService; + @Resource + private TrendsApi trendsApi; + //TODO 主表从仓库代码,到仓库代码暂未赋值 @Override + @Transactional public Long createPutawayRequestMain(PutawayRequestMainCreateReqVO createReqVO) { - // 插入 - PutawayRequestMainDO putawayRequestMain = PutawayRequestMainConvert.INSTANCE.convert(createReqVO); - putawayRequestMainMapper.insert(putawayRequestMain); - // 返回 - return putawayRequestMain.getId(); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PutawayRequest"); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PutawayRequest"); + PutawayRequestMainDO putawayRequestMainDO = validatorToCreate(createReqVO, businesstypeDO,requestsettingDO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(putawayRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "PutawayRequest", "增加了上架申请", TrendsTypeEnum.CREATE); + return putawayRequestMainDO.getId(); } @Override + @Transactional public void updatePutawayRequestMain(PutawayRequestMainUpdateReqVO updateReqVO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PutawayRequest"); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PutawayRequest"); // 校验存在 validatePutawayRequestMainExists(updateReqVO.getId()); // 更新 - PutawayRequestMainDO updateObj = PutawayRequestMainConvert.INSTANCE.convert(updateReqVO); - putawayRequestMainMapper.updateById(updateObj); + PutawayRequestMainDO putawayRequestMainDO = validatorMainMethod(updateReqVO, businesstypeDO,requestsettingDO); + if(putawayRequestMainDO.getStatus().equals(RequestStatusEnum.NEW.getCode())) { + throw exception(PURCHASERECEIPT_REQUEST_STATUS_NOT_NEW); + } + trendsApi.createTrends(updateReqVO.getId(), "PutawayRequestMain", putawayRequestMainDO.toString(), TrendsTypeEnum.UPDATE); + putawayRequestMainMapper.updateById(putawayRequestMainDO); } @Override + @Transactional public void deletePutawayRequestMain(Long id) { // 校验存在 validatePutawayRequestMainExists(id); @@ -88,4 +146,225 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService return putawayRequestMainMapper.selectList(exportReqVO); } + @Override + @Transactional + public List importPutawayRequestList(List datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(PUTAWAY_REQUEST_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PutawayRequest"); + PutawayRequestMainDO mainDo = PutawayRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validatorPutawayRequestMainImport(mainDo,businesstypeDO); + List subList = createReqVO.getSubList(); + List subDOList = PutawayRequestDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (PutawayRequestDetailDO detailDO : subDOList) { + String messageDetail = validatorPutawayRequestDetailImport(detailDO, mainDo,businesstypeDO); + if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + PutawayRequestImportErrorVO importErrorVO = PutawayRequestMainConvert.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, "新增")); + mainDo.setRequestTime(LocalDateTime.now()); + putawayRequestMainMapper.insert(mainDo); + for (PutawayRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + } + putawayRequestDetailMapper.insertBatch(subDOList); + } + }); + return errorList; + } + + // 新增校验 + private PutawayRequestMainDO validatorToCreate(PutawayRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { + PutawayRequestMainDO mainDo = validatorMainMethod(createReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = PutawayRequestDetailConvert.INSTANCE.convertList03(subList); + for (PutawayRequestDetailDO detailDO : subDOList) { + validatorDetailMethod(detailDO,mainDo,businesstypeDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + putawayRequestMainMapper.insert(mainDo); + for (PutawayRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + } + putawayRequestDetailMapper.insertBatch(subDOList); + return mainDo; + } + + //校验主表公共方法(适用于新增/修改) + private PutawayRequestMainDO validatorMainMethod(PutawayRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO){ + PutawayRequestMainDO mainDo = PutawayRequestMainConvert.INSTANCE.convert(baseVO); + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + return mainDo; + } + //校验子表公共方法(适用于新增/修改) + private void validatorDetailMethod(PutawayRequestDetailDO detailDo,PutawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + validatorIfInType(itembasicDO.getType(), businesstypeDO); + this.validatorPurchaseDetailDo(detailDo.getPoNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine()); + validatorLocation(detailDo.getFromLocationCode()); + validatorIfOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); + validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.set(0,detailDo.getInventoryStatus()); + validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + } + + /** + * 校验主表导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validatorPutawayRequestMainImport(PutawayRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + if (businesstypeDO == null) { + message.append("根据业务类型设置未查找到采购退货申请的相关业务类型"); + } + else { + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PutawayRequest"); + if (requestsettingDO == null) { + message.append("根据申请单设置未查找到采购退货申请的相关业务类型"); + } + else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + /** + * 校验子表导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validatorPutawayRequestDetailImport(PutawayRequestDetailDO detailDo, PutawayRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + try { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + try { + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + validatorIfInType(itembasicDO.getType(), businesstypeDO); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + this.validatorPurchaseDetailDo(detailDo.getPoNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + validatorLocation(detailDo.getFromLocationCode()); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + + try{ + validatorIfOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.set(0,detailDo.getInventoryStatus()); + validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ValidationUtils.validate(validator, detailDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + private void ifUomSuccess(String itemUom,String uom) { + if(!itemUom.equals(uom)){ + throw exception(ITEMBASIC_CODE_EXISTS,"提示单位"+ uom + "错误,应该是" + itemUom); + } + } + private ItembasicDO validatorItembasic(String itemCode){ + return itembasicService.selectItembasic(itemCode); + } + + private PurchaseDetailDO validatorPurchaseDetailDo(String pnumber, String psupplierCode, String pitemCode, String poLine){ + return purchaseMainService.selectPurchaseDetailDoExist(pnumber, psupplierCode, pitemCode, poLine); + } + + private LocationDO validatorLocation(String fromLocationCode){ + return locationService.selectLocation(fromLocationCode); + } + private void validatorIfInType(String type, BusinesstypeDO businesstypeDO){ + jobUtils.ifInType(type, businesstypeDO); + } + + private void validatorIfOutInventoryStatuses(String inventoryStatus,BusinesstypeDO businesstypeDO){ + jobUtils.ifOutInventoryStatuses(inventoryStatus, businesstypeDO); + } + + private void validatorIfInToLocationType(String fromLocationCode,BusinesstypeDO businesstypeDO){ + jobUtils.ifInType(fromLocationCode, businesstypeDO); + } + private void validatorManagementAccuracy(String itemCode,String packingNumber,String batch,String fromLocationCode,List inventoryStatus){ + jobUtils.selectlocationReturnManagementAccuracy(itemCode, packingNumber,batch,fromLocationCode,inventoryStatus); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java index 124da091..99b7ff01 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java @@ -11,8 +11,6 @@ import com.win.framework.datapermission.core.util.DataPermissionUtils; import com.win.module.wms.controller.workshop.vo.*; import com.win.module.wms.convert.workshop.WorkshopConvert; import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; -import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; -import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; import com.win.module.wms.dal.mysql.workshop.WorkshopMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.interceptor.TransactionAspectSupport; @@ -188,8 +186,9 @@ public class WorkshopServiceImpl implements WorkshopService { public WorkshopDO selectWorkshopExist(String pcode){ QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("code",pcode); + queryWrapper.eq("available","TRUE"); WorkshopDO workshopDO = workshopMapper.selectOne(queryWrapper); - if(workshopDO != null && "TRUE".equals(workshopDO.getAvailable())){ + if(workshopDO != null){ return workshopDO; }else { throw exception(WORKSHOP_NOT_EXISTS); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java index 85effb0a..a41e681e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java @@ -218,11 +218,12 @@ public class WorkstationServiceImpl implements WorkstationService { queryWrapperWorkstation.eq("code",pcode); queryWrapperWorkstation.eq("workshop_code",pworkshopCode); queryWrapperWorkstation.eq("production_line_code",pproductionLineCode); + queryWrapperWorkstation.eq("available","TRUE"); WorkstationDO workstationDO = workstationMapper.selectOne(queryWrapperWorkstation); - if(workstationDO != null && "TRUE".equals(workstationDO.getAvailable())){ + if(workstationDO != null){ return workstationDO; }else { - throw new UtilException( "车间" + pworkshopCode + "生产线" + pproductionLineCode + "工位" + pcode + "无效"); + throw exception(WORKSTATION_RELATION_ERROR, "车间" + pworkshopCode + "生产线" + pproductionLineCode + "工位" + pcode + "无效"); } } @Override @@ -230,8 +231,9 @@ public class WorkstationServiceImpl implements WorkstationService { QueryWrapper queryWrapperWorkstation = new QueryWrapper(); queryWrapperWorkstation.eq("code",pcode); queryWrapperWorkstation.eq("pruction_line_code",pructionLineCode); + queryWrapperWorkstation.eq("available","TRUE"); WorkstationDO workstationDO = workstationMapper.selectOne(queryWrapperWorkstation); - if(workstationDO != null && "TRUE".equals(workstationDO.getAvailable())){ + if(workstationDO != null){ return true; }else { throw exception(WORKSTATION_PRODUECTION_LINE_CODE_AND_WORKSTATION_RELATION_ERROR);