From 0c528fa6503694399801f214a64774e833e57251 Mon Sep 17 00:00:00 2001 From: yejiaxing <591141169@qq.com> Date: Fri, 10 Nov 2023 17:48:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/serialNumber/RuleCodeEnum.java | 1 + .../CountRequestMainController.java | 82 ++-- .../vo/CountRequestMainCreateReqVO.java | 11 +- .../vo/CountRequestMainImportErrorVO.java | 25 ++ .../vo/CountRequestMainImportVO.java | 51 +++ .../TransferissueRequestMainController.java | 83 +++-- .../vo/TransferissueRequestDetailBaseVO.java | 9 +- .../TransferissueRequestMainCreateReqVO.java | 11 +- ...TransferissueRequestMainImportErrorVO.java | 26 ++ .../vo/TransferissueRequestMainImportVO.java | 46 +++ ...UnplannedreceiptRequestMainController.java | 78 +++- ...nplannedreceiptRequestMainCreateReqVO.java | 11 +- ...lannedreceiptRequestMainImportErrorVO.java | 25 ++ .../UnplannedreceiptRequestMainImportVO.java | 51 +++ .../CountRequestDetailConvert.java | 26 +- .../deliverPlan/DeliverPlanDetailConvert.java | 20 +- .../DemandforecastingDetailConvert.java | 26 +- .../InventorychangeRequestDetailConvert.java | 20 +- .../InventorymoveRequestDetailConvert.java | 20 +- .../production/ProductionDetailConvert.java | 21 +- .../ProductscrapRequestDetailConvert.java | 19 +- .../purchase/PurchaseDetailConvert.java | 29 +- .../PurchasePlanDetailConvert.java | 17 +- .../PurchaseclaimRequestDetailConvert.java | 1 + .../PurchasereceiptRequestDetailConvert.java | 20 +- .../RepleinshRequestDetailConvert.java | 20 +- .../wms/convert/sale/SaleDetailConvert.java | 29 +- .../SupplierdeliverRequestDetailConvert.java | 25 +- .../TransferissueRequestDetailConvert.java | 29 +- .../UnplannedreceiptRequestDetailConvert.java | 30 +- .../wms/convert/work/WorkDetailConvert.java | 23 +- .../InventorymoveRequestDetailDO.java | 10 +- .../dataobject/purchase/PurchaseDetailDO.java | 24 +- .../countRequest/CountRequestMainMapper.java | 10 +- .../deliverPlan/DeliverPlanMainMapper.java | 9 +- .../DemandforecastingMainMapper.java | 10 +- .../production/ProductionMainMapper.java | 4 + .../mysql/purchase/PurchaseMainMapper.java | 11 +- .../purchasePlan/PurchasePlanMainMapper.java | 11 +- .../PurchasereceiptRequestMainMapper.java | 4 + .../wms/dal/mysql/sale/SaleMainMapper.java | 9 +- .../SupplierdeliverRequestMainMapper.java | 11 +- .../TransferissueRequestMainMapper.java | 10 +- .../wms/dal/mysql/work/WorkMainMapper.java | 11 +- .../countRequest/CountRequestMainService.java | 23 +- .../CountRequestMainServiceImpl.java | 158 +++++++- .../DeliverPlanMainServiceImpl.java | 169 ++++++++- .../DemandforecastingMainServiceImpl.java | 163 ++++++-- ...InventorychangeRequestMainServiceImpl.java | 351 +++++++++++++++++- .../InventorymoveRequestMainServiceImpl.java | 130 ++++++- .../production/ProductionMainServiceImpl.java | 195 ++++++++-- .../ProductscrapRequestMainServiceImpl.java | 142 +++---- .../service/purchase/PurchaseMainService.java | 6 - .../purchase/PurchaseMainServiceImpl.java | 201 ++++++---- .../PurchasePlanMainServiceImpl.java | 111 ++++-- ...PurchasereceiptRequestMainServiceImpl.java | 6 + .../RepleinshRequestMainServiceImpl.java | 137 ++++++- .../wms/service/sale/SaleMainServiceImpl.java | 115 +++++- ...SupplierdeliverRequestMainServiceImpl.java | 150 +++++++- .../TransferissueRequestMainService.java | 24 +- .../TransferissueRequestMainServiceImpl.java | 177 ++++++++- .../UnplannedreceiptRequestMainService.java | 25 +- ...nplannedreceiptRequestMainServiceImpl.java | 174 ++++++++- .../wms/service/work/WorkMainServiceImpl.java | 165 ++++++-- 64 files changed, 3047 insertions(+), 594 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainImportVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainImportVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportVO.java diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java index 9265f33e..fb8625f5 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java @@ -136,6 +136,7 @@ public enum RuleCodeEnum { INVENTORY_CHANGE_RECORD("InventoryChangeRecord"), // 库存修改记录 INVENTORY_MOVE_RECORD("InventoryMoveRecord"), // 库存转移记录 ASN_NUMBER("AsnNumber"), // 发货单号 + TRANSFER_DELIVER_REQUEST("TransferDeliverRequest"), // 调拨发出申请单据号 INVENTORY_TRANSACTION("InventoryTransaction"), // 库存事务 TRANSFER_LOG("TransferLog"), // 库存转移日志 ; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/CountRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/CountRequestMainController.java index d68dce57..b7909ccf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/CountRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/CountRequestMainController.java @@ -1,35 +1,36 @@ package com.win.module.wms.controller.countRequest; +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.excel.core.util.ConvertUtil; +import com.win.framework.excel.core.util.ExcelUtils; +import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.countRequest.vo.*; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; +import com.win.module.wms.convert.countRequest.CountRequestMainConvert; +import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; +import com.win.module.wms.service.countRequest.CountRequestMainService; 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.validation.*; -import javax.servlet.http.*; -import java.util.*; +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 com.win.framework.common.pojo.PageResult; -import com.win.framework.common.pojo.CommonResult; import static com.win.framework.common.pojo.CommonResult.success; - -import com.win.framework.excel.core.util.ExcelUtils; - -import com.win.framework.operatelog.core.annotations.OperateLog; -import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*; - -import com.win.module.wms.controller.countRequest.vo.*; -import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; -import com.win.module.wms.convert.countRequest.CountRequestMainConvert; -import com.win.module.wms.service.countRequest.CountRequestMainService; +import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 盘点申请主") @RestController @@ -123,4 +124,43 @@ public class CountRequestMainController { ExcelUtils.write(response, "盘点申请主.xls", "数据", CountRequestMainExcelVO.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[] purchaseReturnReason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON); +// mapDropDown.put(16, purchaseReturnReason); +// String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); +// mapDropDown.put(25, uom); + // 输出 + ExcelUtils.write(response, "要货计划信息导入模板.xlsx", "要货计划信息列表", CountRequestMainImportVO.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:purchase-plan-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, CountRequestMainImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(CountRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = countRequestMainService.importCountRequestMainList(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/countRequest/vo/CountRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainCreateReqVO.java index 729ccf42..db3789f7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainCreateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.countRequest.vo; -import lombok.*; +import com.win.framework.excel.core.annotations.SubObject; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; @Schema(description = "管理后台 - 盘点申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class CountRequestMainCreateReqVO extends CountRequestMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainImportErrorVO.java new file mode 100644 index 00000000..ae351a69 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainImportErrorVO.java @@ -0,0 +1,25 @@ +package com.win.module.wms.controller.countRequest.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 CountRequestMainImportErrorVO extends CountRequestMainImportVO { + + @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/countRequest/vo/CountRequestMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainImportVO.java new file mode 100644 index 00000000..32220086 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainImportVO.java @@ -0,0 +1,51 @@ +package com.win.module.wms.controller.countRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +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 CountRequestMainImportVO { + + //主表数据 + @ExcelProperty("计划单号") + private String planNumber; + + @ExcelProperty("阶段") + private String stage; + + @ExcelProperty("仓库代码") + private String warehouseCode; + + //子表数据 + @ExcelProperty("物品代码") + private String itemCode; + @ExcelProperty("包装号") + private String fromPackingNumber; + @ExcelProperty("批次") + private String batch; + @ExcelProperty("器具号") + private String fromContainerNumber; + @ExcelProperty("库位代码") + private String locationCode; + @ExcelProperty("库存状态") + private String inventoryStatus; + @ExcelProperty("数量") + private String qty; + @ExcelProperty("计量单位") + private String uom; + + + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/TransferissueRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/TransferissueRequestMainController.java index 3b8171b8..0ee38b10 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/TransferissueRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/TransferissueRequestMainController.java @@ -1,35 +1,36 @@ package com.win.module.wms.controller.transferissueRequest; +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.excel.core.util.ConvertUtil; +import com.win.framework.excel.core.util.ExcelUtils; +import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.transferissueRequest.vo.*; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; +import com.win.module.wms.convert.transferissueRequest.TransferissueRequestMainConvert; +import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO; +import com.win.module.wms.service.transferissueRequest.TransferissueRequestMainService; 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.validation.*; -import javax.servlet.http.*; -import java.util.*; +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 com.win.framework.common.pojo.PageResult; -import com.win.framework.common.pojo.CommonResult; import static com.win.framework.common.pojo.CommonResult.success; - -import com.win.framework.excel.core.util.ExcelUtils; - -import com.win.framework.operatelog.core.annotations.OperateLog; -import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*; - -import com.win.module.wms.controller.transferissueRequest.vo.*; -import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO; -import com.win.module.wms.convert.transferissueRequest.TransferissueRequestMainConvert; -import com.win.module.wms.service.transferissueRequest.TransferissueRequestMainService; +import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 调拨出库申请主") @RestController @@ -118,4 +119,44 @@ public class TransferissueRequestMainController { ExcelUtils.write(response, "调拨出库申请主.xls", "数据", TransferissueRequestMainExcelVO.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[] purchaseReturnReason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON); +// mapDropDown.put(16, purchaseReturnReason); +// String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); +// mapDropDown.put(25, uom); + // 输出 + ExcelUtils.write(response, "调拨出库申请信息导入模板.xlsx", "调拨出库申请信息列表", TransferissueRequestMainImportVO.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:purchase-plan-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, TransferissueRequestMainImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(TransferissueRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = transferissueRequestMainService.importTransferissueRequestMainList(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/transferissueRequest/vo/TransferissueRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailBaseVO.java index 6d7a2a7f..b7995098 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailBaseVO.java @@ -1,13 +1,12 @@ package com.win.module.wms.controller.transferissueRequest.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.time.LocalDateTime; -import javax.validation.constraints.*; -import org.springframework.format.annotation.DateTimeFormat; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainCreateReqVO.java index 47205e0e..9c29f1b7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainCreateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.transferissueRequest.vo; -import lombok.*; +import com.win.framework.excel.core.annotations.SubObject; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; @Schema(description = "管理后台 - 调拨出库申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class TransferissueRequestMainCreateReqVO extends TransferissueRequestMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainImportErrorVO.java new file mode 100644 index 00000000..420da672 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainImportErrorVO.java @@ -0,0 +1,26 @@ +package com.win.module.wms.controller.transferissueRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainImportVO; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 采购索赔申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class TransferissueRequestMainImportErrorVO extends UnplannedreceiptRequestMainImportVO { + + @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/transferissueRequest/vo/TransferissueRequestMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainImportVO.java new file mode 100644 index 00000000..922861d0 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainImportVO.java @@ -0,0 +1,46 @@ +package com.win.module.wms.controller.transferissueRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +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 TransferissueRequestMainImportVO { + + //主表数据 + @ExcelProperty("承运商") + private String carrierCode; + @ExcelProperty("从月台代码") + private String fromDockCode; + @ExcelProperty("运输方式") + private String transferMode; + @ExcelProperty("车牌号") + private String vehiclePlateNumber; + + //子表数据 + @ExcelProperty("来源库位") + private String fromLocationCode; + @ExcelProperty("零件号") + private String itemCode; + @ExcelProperty("包装号") + private String packingNumber; + @ExcelProperty("器具号") + private String containerNumber; + @ExcelProperty("批次") + private String batch; + @ExcelProperty("库存状态") + private String inventoryStatus; + @ExcelProperty("目标库位") + private String toLocationCode; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/UnplannedreceiptRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/UnplannedreceiptRequestMainController.java index 8aadad9e..eed38f4a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/UnplannedreceiptRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/UnplannedreceiptRequestMainController.java @@ -1,32 +1,39 @@ package com.win.module.wms.controller.unplannedreceiptRequest; +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.excel.core.util.ConvertUtil; +import com.win.framework.excel.core.util.ExcelUtils; +import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.unplannedreceiptRequest.vo.*; import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestDetailConvert; +import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestMainConvert; import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO; import com.win.module.wms.service.unplannedreceiptRequest.UnplannedreceiptRequestDetailService; +import com.win.module.wms.service.unplannedreceiptRequest.UnplannedreceiptRequestMainService; +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 org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; import java.io.IOException; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.pojo.CommonResult; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.*; + import static com.win.framework.common.pojo.CommonResult.success; -import com.win.framework.excel.core.util.ExcelUtils; -import com.win.framework.operatelog.core.annotations.OperateLog; -import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*; -import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO; -import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestMainConvert; -import com.win.module.wms.service.unplannedreceiptRequest.UnplannedreceiptRequestMainService; +import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 计划外入库申请主") @RestController @@ -141,4 +148,43 @@ public class UnplannedreceiptRequestMainController { 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[] purchaseReturnReason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON); +// mapDropDown.put(16, purchaseReturnReason); +// String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); +// mapDropDown.put(25, uom); + // 输出 + ExcelUtils.write(response, "要货计划信息导入模板.xlsx", "要货计划信息列表", UnplannedreceiptRequestMainImportVO.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:purchase-plan-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, UnplannedreceiptRequestMainImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(UnplannedreceiptRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = unplannedreceiptRequestMainService.importUnplannedreceiptRequestMainList(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/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainCreateReqVO.java index b1f72135..b3a94ec0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainCreateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.unplannedreceiptRequest.vo; -import lombok.*; +import com.win.framework.excel.core.annotations.SubObject; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; @Schema(description = "管理后台 - 计划外入库申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class UnplannedreceiptRequestMainCreateReqVO extends UnplannedreceiptRequestMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportErrorVO.java new file mode 100644 index 00000000..bfc8443f --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportErrorVO.java @@ -0,0 +1,25 @@ +package com.win.module.wms.controller.unplannedreceiptRequest.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 UnplannedreceiptRequestMainImportErrorVO extends UnplannedreceiptRequestMainImportVO { + + @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/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportVO.java new file mode 100644 index 00000000..57c7984c --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportVO.java @@ -0,0 +1,51 @@ +package com.win.module.wms.controller.unplannedreceiptRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + + +/** + * 采购索赔申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class UnplannedreceiptRequestMainImportVO { + + //主表数据 + + //子表数据 + @ExcelProperty("零件号") + private String itemCode; + @ExcelProperty("包装号") + private String packingNumber; + @ExcelProperty("器具号") + private String containerNumber; + @ExcelProperty("批次") + private String batch; + @ExcelProperty("库存状态") + private String inventoryStatus; + @ExcelProperty("数量") + private BigDecimal qty; + @ExcelProperty("记录单位") + private String uom; + @ExcelProperty("到货日期") + private LocalDateTime arriveDate; + @ExcelProperty("生产日期") + private LocalDateTime produceDate; + @ExcelProperty("过期日期") + private LocalDateTime expireDate; + @ExcelProperty("目标库位") + private String toLocationCode; + @ExcelProperty("原因") + private String reason; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countRequest/CountRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countRequest/CountRequestDetailConvert.java index 1944e1ab..0f6958f6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countRequest/CountRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countRequest/CountRequestDetailConvert.java @@ -1,16 +1,15 @@ package com.win.module.wms.convert.countRequest; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.countRequest.vo.CountRequestDetailCreateReqVO; -import com.win.module.wms.controller.countRequest.vo.CountRequestDetailExcelVO; -import com.win.module.wms.controller.countRequest.vo.CountRequestDetailRespVO; -import com.win.module.wms.controller.countRequest.vo.CountRequestDetailUpdateReqVO; +import com.win.module.wms.controller.countRequest.vo.*; +import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO; +import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO; + +import java.util.List; /** * 盘点申请子 Convert @@ -34,4 +33,15 @@ public interface CountRequestDetailConvert { List convertList02(List list); + List convertList03(List list); + + CountRequestDetailCreateReqVO convert1(CountRequestDetailDO bean); + + CountRequestDetailExcelVO convert(CountRequestMainDO mainDO, CountRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + CountRequestMainImportErrorVO convert(CountRequestMainCreateReqVO mainVo, CountRequestDetailCreateReqVO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java index 2684cdb5..fe73eee9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java @@ -1,12 +1,12 @@ package com.win.module.wms.convert.deliverPlan; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanDetailCreateReqVO; -import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanDetailExcelVO; -import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanDetailRespVO; -import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanDetailUpdateReqVO; +import com.win.module.wms.controller.deliverPlan.vo.*; import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO; +import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,16 @@ public interface DeliverPlanDetailConvert { List convertList03(List list); + DeliverPlanDetailCreateReqVO convert1(DeliverPlanDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + }) + DeliverPlanDetailExcelVO convert(DeliverPlanMainDO mainDO, DeliverPlanDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + DeliverPlanMainImportErrorVO convert(DeliverPlanMainCreateReqVO mainVo, DeliverPlanDetailCreateReqVO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java index c2ad112e..12b216ec 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java @@ -1,12 +1,12 @@ package com.win.module.wms.convert.demandforecasting; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingDetailCreateReqVO; -import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingDetailExcelVO; -import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingDetailRespVO; -import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingDetailUpdateReqVO; +import com.win.module.wms.controller.demandforecasting.vo.*; import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingDetailDO; +import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,22 @@ public interface DemandforecastingDetailConvert { List convertList03(List list); + DemandforecastingDetailCreateReqVO convert1(DemandforecastingDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + @Mapping(source = "mainDO.available", target = "available"), + }) + DemandforecastingDetailExcelVO convert(DemandforecastingMainDO mainDO, DemandforecastingDetailDO detailDO); + + @Mappings({ +// @Mapping(source = "mainVo.number", target = "number"), + }) + DemandforecastingImportErrorVO convert(DemandforecastingMainCreateReqVO mainVo, DemandforecastingDetailCreateReqVO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java index 9e93a890..1f9488d7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java @@ -1,12 +1,12 @@ package com.win.module.wms.convert.inventorychangeRequest; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailCreateReqVO; -import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailExcelVO; -import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailRespVO; -import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailUpdateReqVO; +import com.win.module.wms.controller.inventorychangeRequest.vo.*; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; +import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,16 @@ public interface InventorychangeRequestDetailConvert { List convertList03(List list); + InventorychangeRequestDetailCreateReqVO convert1(InventorychangeRequestDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + }) + InventorychangeRequestDetailExcelVO convert(InventorychangeRequestMainDO mainDO, InventorychangeRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + InventorychangeRequestMainImportErrorVO convert(InventorychangeRequestMainCreateReqVO mainVo, InventorychangeRequestDetailCreateReqVO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestDetailConvert.java index 0c58e9f5..718a9372 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestDetailConvert.java @@ -1,12 +1,12 @@ package com.win.module.wms.convert.inventorymoveRequest; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailCreateReqVO; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailExcelVO; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailRespVO; -import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailUpdateReqVO; +import com.win.module.wms.controller.inventorymoveRequest.vo.*; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO; +import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,16 @@ public interface InventorymoveRequestDetailConvert { List convertList03(List list); + InventorymoveRequestDetailCreateReqVO convert1(InventorymoveRequestDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + }) + InventorymoveRequestDetailExcelVO convert(InventorymoveRequestMainDO mainDO, InventorymoveRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + InventorymoveRequestMainImportErrorVO convert(InventorymoveRequestMainCreateReqVO mainVo, InventorymoveRequestDetailCreateReqVO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/production/ProductionDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/production/ProductionDetailConvert.java index f8c86355..bdadb593 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/production/ProductionDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/production/ProductionDetailConvert.java @@ -1,12 +1,12 @@ package com.win.module.wms.convert.production; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.production.vo.ProductionDetailCreateReqVO; -import com.win.module.wms.controller.production.vo.ProductionDetailExcelVO; -import com.win.module.wms.controller.production.vo.ProductionDetailRespVO; -import com.win.module.wms.controller.production.vo.ProductionDetailUpdateReqVO; +import com.win.module.wms.controller.production.vo.*; import com.win.module.wms.dal.dataobject.production.ProductionDetailDO; +import com.win.module.wms.dal.dataobject.production.ProductionMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,17 @@ public interface ProductionDetailConvert { List convertList03(List list); + ProductionDetailCreateReqVO convert1(ProductionDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + }) + ProductionDetailExcelVO convert(ProductionMainDO mainDO, ProductionDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + ProductionMainImportErrorVO convert(ProductionMainCreateReqVO mainVo, ProductionDetailCreateReqVO detailVo); + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productscrapRequest/ProductscrapRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productscrapRequest/ProductscrapRequestDetailConvert.java index 0172ed77..913e594b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productscrapRequest/ProductscrapRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productscrapRequest/ProductscrapRequestDetailConvert.java @@ -1,13 +1,12 @@ package com.win.module.wms.convert.productscrapRequest; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportErrorVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailCreateReqVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; import com.win.module.wms.controller.productscrapRequest.vo.*; -import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO; +import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -38,4 +37,16 @@ public interface ProductscrapRequestDetailConvert { ProductscrapRequestImportErrorVO convert(ProductscrapRequestMainCreateReqVO mainVo, ProductscrapRequestDetailDO detailVo); + ProductscrapRequestDetailCreateReqVO convert1(ProductscrapRequestDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + }) + ProductscrapRequestDetailExcelVO convert(ProductscrapRequestMainDO mainDO, ProductscrapRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + ProductscrapRequestMainImportErrorVO convert(ProductscrapRequestMainCreateReqVO mainVo, ProductscrapRequestDetailCreateReqVO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchase/PurchaseDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchase/PurchaseDetailConvert.java index 634276f1..37e46f4a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchase/PurchaseDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchase/PurchaseDetailConvert.java @@ -1,12 +1,12 @@ package com.win.module.wms.convert.purchase; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.purchase.vo.PurchaseDetailCreateReqVO; -import com.win.module.wms.controller.purchase.vo.PurchaseDetailExcelVO; -import com.win.module.wms.controller.purchase.vo.PurchaseDetailRespVO; -import com.win.module.wms.controller.purchase.vo.PurchaseDetailUpdateReqVO; +import com.win.module.wms.controller.purchase.vo.*; import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; +import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,25 @@ public interface PurchaseDetailConvert { List convertList03(List list); + PurchaseDetailCreateReqVO convert1(PurchaseDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + @Mapping(source = "mainDO.available", target = "available"), + @Mapping(source = "mainDO.status", target = "status"), + @Mapping(source = "mainDO.concurrencyStamp", target = "concurrencyStamp"), + + }) + PurchaseDetailExcelVO convert( PurchaseMainDO mainDO, PurchaseDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + PurchaseMainImportErrorVO convert( PurchaseMainCreateReqVO mainVo, PurchaseDetailCreateReqVO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasePlan/PurchasePlanDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasePlan/PurchasePlanDetailConvert.java index b24e32bc..46d466eb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasePlan/PurchasePlanDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasePlan/PurchasePlanDetailConvert.java @@ -1,12 +1,12 @@ package com.win.module.wms.convert.purchasePlan; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailCreateReqVO; -import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailExcelVO; -import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailRespVO; -import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailUpdateReqVO; +import com.win.module.wms.controller.purchasePlan.vo.*; import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO; +import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,13 @@ public interface PurchasePlanDetailConvert { List convertList03(List list); + PurchasePlanDetailCreateReqVO convert1(PurchasePlanDetailDO bean); + + PurchasePlanDetailExcelVO convert(PurchasePlanMainDO mainDO, PurchasePlanDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + PurchasePlanMainImportErrorVO convert(PurchasePlanMainCreateReqVO mainVo,PurchasePlanDetailCreateReqVO detailVo); + } 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 49506fa1..6f02c50c 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 @@ -26,6 +26,7 @@ public interface PurchaseclaimRequestDetailConvert { PurchaseclaimRequestDetailDO convert(PurchaseclaimRequestDetailUpdateReqVO bean); PurchaseclaimRequestDetailRespVO convert(PurchaseclaimRequestDetailDO bean); + PurchaseclaimRequestDetailCreateReqVO convert1(PurchaseclaimRequestDetailDO bean); List convertList(List list); 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 a246b138..92373b15 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 @@ -1,12 +1,12 @@ package com.win.module.wms.convert.purchasereceiptRequest; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailCreateReqVO; -import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailExcelVO; -import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailRespVO; -import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailUpdateReqVO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.*; import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,16 @@ public interface PurchasereceiptRequestDetailConvert { List convertList03(List list); + PurchasereceiptRequestDetailCreateReqVO convert1(PurchasereceiptRequestDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + }) + 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/repleinshRequest/RepleinshRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRequest/RepleinshRequestDetailConvert.java index fe955798..499ba659 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRequest/RepleinshRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRequest/RepleinshRequestDetailConvert.java @@ -1,12 +1,12 @@ package com.win.module.wms.convert.repleinshRequest; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailCreateReqVO; -import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailExcelVO; -import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailRespVO; -import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailUpdateReqVO; +import com.win.module.wms.controller.repleinshRequest.vo.*; import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestDetailDO; +import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,16 @@ public interface RepleinshRequestDetailConvert { List convertList03(List list); + RepleinshRequestDetailCreateReqVO convert1(RepleinshRequestDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + }) + RepleinshRequestDetailExcelVO convert(RepleinshRequestMainDO mainDO, RepleinshRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + RepleinshRequestMainImportErrorVO convert(RepleinshRequestMainCreateReqVO mainVo, RepleinshRequestDetailCreateReqVO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/sale/SaleDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/sale/SaleDetailConvert.java index cdfc401b..b424fd66 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/sale/SaleDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/sale/SaleDetailConvert.java @@ -1,12 +1,12 @@ package com.win.module.wms.convert.sale; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.sale.vo.SaleDetailCreateReqVO; -import com.win.module.wms.controller.sale.vo.SaleDetailExcelVO; -import com.win.module.wms.controller.sale.vo.SaleDetailRespVO; -import com.win.module.wms.controller.sale.vo.SaleDetailUpdateReqVO; +import com.win.module.wms.controller.sale.vo.*; import com.win.module.wms.dal.dataobject.sale.SaleDetailDO; +import com.win.module.wms.dal.dataobject.sale.SaleMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,25 @@ public interface SaleDetailConvert { List convertList03(List list); + SaleDetailCreateReqVO convert1(SaleDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + @Mapping(source = "mainDO.available", target = "available"), + @Mapping(source = "mainDO.status", target = "status"), + @Mapping(source = "mainDO.concurrencyStamp", target = "concurrencyStamp"), + + }) + SaleDetailExcelVO convert(SaleMainDO mainDO, SaleDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + SaleMainImportErrorVO convert(SaleMainCreateReqVO mainVo, SaleDetailCreateReqVO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/supplierdeliverRequest/SupplierdeliverRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/supplierdeliverRequest/SupplierdeliverRequestDetailConvert.java index 8405261a..6b306e13 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/supplierdeliverRequest/SupplierdeliverRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/supplierdeliverRequest/SupplierdeliverRequestDetailConvert.java @@ -1,12 +1,12 @@ package com.win.module.wms.convert.supplierdeliverRequest; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailCreateReqVO; -import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailExcelVO; -import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailRespVO; -import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailUpdateReqVO; +import com.win.module.wms.controller.supplierdeliverRequest.vo.*; import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestDetailDO; +import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,21 @@ public interface SupplierdeliverRequestDetailConvert { List convertList03(List list); + SupplierdeliverRequestDetailCreateReqVO convert1(SupplierdeliverRequestDetailDO bean); + + @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"), + }) + SupplierdeliverRequestDetailExcelVO convert(SupplierdeliverRequestMainDO mainDO, SupplierdeliverRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + SupplierdeliverRequestMainImportErrorVO convert(SupplierdeliverRequestMainCreateReqVO mainVo, SupplierdeliverRequestDetailCreateReqVO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueRequest/TransferissueRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueRequest/TransferissueRequestDetailConvert.java index 515ebe3b..0251f86e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueRequest/TransferissueRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueRequest/TransferissueRequestDetailConvert.java @@ -1,16 +1,15 @@ package com.win.module.wms.convert.transferissueRequest; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailCreateReqVO; -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailExcelVO; -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailRespVO; -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailUpdateReqVO; +import com.win.module.wms.controller.transferissueRequest.vo.*; +import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestDetailDO; +import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestDetailDO; + +import java.util.List; /** * 调拨出库申请子 Convert @@ -34,4 +33,18 @@ public interface TransferissueRequestDetailConvert { List convertList02(List list); + List convertList03(List list); + + TransferissueRequestDetailCreateReqVO convert1(TransferissueRequestDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + }) + TransferissueRequestDetailExcelVO convert(TransferissueRequestMainDO mainDO, TransferissueRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + TransferissueRequestMainImportErrorVO convert(TransferissueRequestMainCreateReqVO mainVo, TransferissueRequestDetailCreateReqVO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/unplannedreceiptRequest/UnplannedreceiptRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/unplannedreceiptRequest/UnplannedreceiptRequestDetailConvert.java index 80df941c..9c426b52 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/unplannedreceiptRequest/UnplannedreceiptRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/unplannedreceiptRequest/UnplannedreceiptRequestDetailConvert.java @@ -1,16 +1,15 @@ package com.win.module.wms.convert.unplannedreceiptRequest; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestDetailCreateReqVO; -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestDetailExcelVO; -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestDetailRespVO; -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestDetailUpdateReqVO; +import com.win.module.wms.controller.unplannedreceiptRequest.vo.*; +import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestDetailDO; + +import java.util.List; /** * 计划外入库申请子 Convert @@ -34,4 +33,19 @@ public interface UnplannedreceiptRequestDetailConvert { List convertList02(List list); + List convertList03(List list); + + UnplannedreceiptRequestDetailCreateReqVO convert1(UnplannedreceiptRequestDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + }) + UnplannedreceiptRequestDetailExcelVO convert(UnplannedreceiptRequestMainDO mainDO, UnplannedreceiptRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + UnplannedreceiptRequestMainImportErrorVO convert(UnplannedreceiptRequestMainCreateReqVO mainVo, UnplannedreceiptRequestDetailCreateReqVO detailVo); + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkDetailConvert.java index c33f5ba3..ec8dfff8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkDetailConvert.java @@ -1,12 +1,12 @@ package com.win.module.wms.convert.work; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.work.vo.WorkDetailCreateReqVO; -import com.win.module.wms.controller.work.vo.WorkDetailExcelVO; -import com.win.module.wms.controller.work.vo.WorkDetailRespVO; -import com.win.module.wms.controller.work.vo.WorkDetailUpdateReqVO; +import com.win.module.wms.controller.work.vo.*; import com.win.module.wms.dal.dataobject.work.WorkDetailDO; +import com.win.module.wms.dal.dataobject.work.WorkMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -35,4 +35,19 @@ public interface WorkDetailConvert { List convertList03(List list); + WorkDetailCreateReqVO convert1(WorkDetailDO bean); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + + + }) + WorkDetailExcelVO convert(WorkMainDO mainDO, WorkDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + WorkMainImportErrorVO convert( WorkMainCreateReqVO mainVo, WorkDetailCreateReqVO detailVo); + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestDetailDO.java index c0aee1f3..b32e4460 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestDetailDO.java @@ -1,12 +1,12 @@ package com.win.module.wms.dal.dataobject.inventorymoveRequest; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.sun.xml.bind.v2.TODO; +import com.win.framework.mybatis.core.dataobject.BaseDO; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; + import java.math.BigDecimal; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import com.win.framework.mybatis.core.dataobject.BaseDO; /** * 库存转移申请子 DO diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchase/PurchaseDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchase/PurchaseDetailDO.java index 385c9d01..e03eb432 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchase/PurchaseDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchase/PurchaseDetailDO.java @@ -1,22 +1,12 @@ package com.win.module.wms.dal.dataobject.purchase; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.sun.xml.bind.v2.TODO; +import com.win.framework.mybatis.core.dataobject.BaseDO; import lombok.*; -import java.util.*; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.time.LocalDateTime; + import java.math.BigDecimal; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import com.win.framework.mybatis.core.dataobject.BaseDO; /** * 采购订单子 DO @@ -104,7 +94,7 @@ public class PurchaseDetailDO extends BaseDO { /** * 主表ID */ - private String masterId; + private Long masterId; /** * 单据号 */ @@ -140,7 +130,7 @@ public class PurchaseDetailDO extends BaseDO { * * 枚举 {@link TODO purchase_order_detail_status 对应的类} */ - private String status; + private Integer status; /** * 是否可用 * diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestMainMapper.java index c3d75d13..97eedd12 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestMainMapper.java @@ -1,17 +1,17 @@ package com.win.module.wms.dal.mysql.countRequest; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.countRequest.vo.CountRequestMainExportReqVO; import com.win.module.wms.controller.countRequest.vo.CountRequestMainPageReqVO; import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 盘点申请主 Mapper * @@ -43,6 +43,10 @@ public interface CountRequestMainMapper extends BaseMapperX .eqIfPresent(CountRequestMainDO::getDirectCreateRecord, reqVO.getDirectCreateRecord()) .orderByDesc(CountRequestMainDO::getId)); } + default CountRequestMainDO selectByPlanNumber(String planNumber) { + return selectOne( CountRequestMainDO::getPlanNumber, planNumber); + } + default PageResult selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverPlan/DeliverPlanMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverPlan/DeliverPlanMainMapper.java index bdd20c67..0d3be7b4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverPlan/DeliverPlanMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverPlan/DeliverPlanMainMapper.java @@ -1,17 +1,17 @@ package com.win.module.wms.dal.mysql.deliverPlan; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainExportReqVO; import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainPageReqVO; import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 发货计划主 Mapper * @@ -37,6 +37,9 @@ public interface DeliverPlanMainMapper extends BaseMapperX { .eqIfPresent(DeliverPlanMainDO::getAvailable, reqVO.getAvailable()) .orderByDesc(DeliverPlanMainDO::getId)); } + default DeliverPlanMainDO selectByNumber(String number) { + return selectOne(DeliverPlanMainDO::getNumber, number); + } default PageResult selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/demandforecasting/DemandforecastingMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/demandforecasting/DemandforecastingMainMapper.java index 2fe56f45..393d516a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/demandforecasting/DemandforecastingMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/demandforecasting/DemandforecastingMainMapper.java @@ -1,17 +1,17 @@ package com.win.module.wms.dal.mysql.demandforecasting; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainExportReqVO; import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainPageReqVO; import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 要货预测主 Mapper * @@ -38,6 +38,10 @@ public interface DemandforecastingMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/production/ProductionMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/production/ProductionMainMapper.java index f4f5006a..7da5cf6c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/production/ProductionMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/production/ProductionMainMapper.java @@ -48,6 +48,10 @@ public interface ProductionMainMapper extends BaseMapperX { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } + default ProductionMainDO selectByNumber(String number) { + return selectOne(ProductionMainDO::getNumber, number); + } + default List selectList(ProductionMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(ProductionMainDO::getDisplayOrder, reqVO.getDisplayOrder()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseMainMapper.java index 9a656835..fe98036c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseMainMapper.java @@ -1,17 +1,17 @@ package com.win.module.wms.dal.mysql.purchase; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.purchase.vo.PurchaseMainExportReqVO; import com.win.module.wms.controller.purchase.vo.PurchaseMainPageReqVO; import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 采购订单主 Mapper * @@ -44,6 +44,11 @@ public interface PurchaseMainMapper extends BaseMapperX { .eqIfPresent(PurchaseMainDO::getAvailable, reqVO.getAvailable()) .orderByDesc(PurchaseMainDO::getId)); } + + default PurchaseMainDO selectByNumber(String number) { + return selectOne(PurchaseMainDO::getNumber, number); + } + default PageResult selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanMainMapper.java index 6abd5515..62559d5b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanMainMapper.java @@ -1,17 +1,17 @@ package com.win.module.wms.dal.mysql.purchasePlan; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanMainExportReqVO; import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanMainPageReqVO; import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 要货计划主 Mapper * @@ -39,6 +39,11 @@ public interface PurchasePlanMainMapper extends BaseMapperX .eqIfPresent(PurchasePlanMainDO::getAvailable, reqVO.getAvailable()) .orderByDesc(PurchasePlanMainDO::getId)); } + + default PurchasePlanMainDO selectByNumber(String number) { + return selectOne(PurchasePlanMainDO::getNumber, number); + } + default PageResult selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestMainMapper.java index 0bd41fc6..05418d7d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestMainMapper.java @@ -60,6 +60,10 @@ public interface PurchasereceiptRequestMainMapper extends BaseMapperX selectList(PurchasereceiptRequestMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(PurchasereceiptRequestMainDO::getAsnNumber, reqVO.getAsnNumber()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/sale/SaleMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/sale/SaleMainMapper.java index 430a3158..4b055f02 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/sale/SaleMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/sale/SaleMainMapper.java @@ -1,17 +1,17 @@ package com.win.module.wms.dal.mysql.sale; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.sale.vo.SaleMainExportReqVO; import com.win.module.wms.controller.sale.vo.SaleMainPageReqVO; import com.win.module.wms.dal.dataobject.sale.SaleMainDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 销售订单主 Mapper * @@ -42,6 +42,9 @@ public interface SaleMainMapper extends BaseMapperX { .eqIfPresent(SaleMainDO::getAvailable, reqVO.getAvailable()) .orderByDesc(SaleMainDO::getId)); } + default SaleMainDO selectByNumber(String number) { + return selectOne(SaleMainDO::getNumber, number); + } default PageResult selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestMainMapper.java index 07d3dc9c..2894242d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestMainMapper.java @@ -1,17 +1,17 @@ package com.win.module.wms.dal.mysql.supplierdeliverRequest; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestMainExportReqVO; import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestMainPageReqVO; import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 供应商发货申请主 Mapper * @@ -53,6 +53,11 @@ public interface SupplierdeliverRequestMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestMainMapper.java index 62de99a4..45f51df0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestMainMapper.java @@ -1,17 +1,17 @@ package com.win.module.wms.dal.mysql.transferissueRequest; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainExportReqVO; import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainPageReqVO; import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 调拨出库申请主 Mapper * @@ -53,6 +53,10 @@ public interface TransferissueRequestMainMapper extends BaseMapperX selectList(TransferissueRequestMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(TransferissueRequestMainDO::getCarrierCode, reqVO.getCarrierCode()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java index 1e7983c3..ffe8ac15 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java @@ -1,18 +1,17 @@ package com.win.module.wms.dal.mysql.work; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.work.vo.WorkMainExportReqVO; import com.win.module.wms.controller.work.vo.WorkMainPageReqVO; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.work.WorkMainDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 生产订单主 Mapper * @@ -44,6 +43,10 @@ public interface WorkMainMapper extends BaseMapperX { .orderByDesc(WorkMainDO::getId)); } + default WorkMainDO selectByNumber(String number) { + return selectOne(WorkMainDO::getNumber, number); + } + default List selectList(WorkMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(WorkMainDO::getCustomerCode, reqVO.getCustomerCode()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainService.java index 8c9ffbe6..1832068a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainService.java @@ -1,15 +1,13 @@ package com.win.module.wms.service.countRequest; -import java.util.*; -import javax.validation.*; - import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.countRequest.vo.CountRequestMainCreateReqVO; -import com.win.module.wms.controller.countRequest.vo.CountRequestMainExportReqVO; -import com.win.module.wms.controller.countRequest.vo.CountRequestMainPageReqVO; -import com.win.module.wms.controller.countRequest.vo.CountRequestMainUpdateReqVO; -import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.countRequest.vo.*; +import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; /** * 盘点申请主 Service 接口 @@ -79,4 +77,13 @@ public interface CountRequestMainService { */ List getCountRequestMainList(CountRequestMainExportReqVO exportReqVO); + /** + * 批量导入采购索赔申请主信息 + * @param datas 导入采购索赔申请主信息列表 + * @param mode 导入模式1更新2追加3覆盖 + * @param updatePart 是否支持更新 + * @return 导入结果 + */ + List importCountRequestMainList(List datas, Integer mode, boolean updatePart); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java index 2831c404..758a051d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java @@ -1,24 +1,40 @@ package com.win.module.wms.service.countRequest; +import cn.hutool.core.collection.CollUtil; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.countRequest.vo.CountRequestMainCreateReqVO; -import com.win.module.wms.controller.countRequest.vo.CountRequestMainExportReqVO; -import com.win.module.wms.controller.countRequest.vo.CountRequestMainPageReqVO; -import com.win.module.wms.controller.countRequest.vo.CountRequestMainUpdateReqVO; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; - -import java.util.*; - -import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; import com.win.framework.common.pojo.PageResult; - +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.wms.controller.countRequest.vo.*; +import com.win.module.wms.convert.countRequest.CountRequestDetailConvert; import com.win.module.wms.convert.countRequest.CountRequestMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.countPlan.CountPlanDetailDO; +import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO; +import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; +import com.win.module.wms.dal.mysql.countRequest.CountRequestDetailMapper; import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.countPlan.CountPlanMainService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.service.shift.ShiftService; +import com.win.module.wms.service.supplieritem.SupplieritemService; +import com.win.module.wms.util.JobUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import 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.*; +import static com.win.module.wms.enums.ErrorCodeConstants.COUNT_REQUEST_MAIN_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY; /** * 盘点申请主 Service 实现类 @@ -28,9 +44,22 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Service @Validated public class CountRequestMainServiceImpl implements CountRequestMainService { - @Resource private CountRequestMainMapper countRequestMainMapper; + @Resource + private CountRequestDetailMapper countRequestDetailMapper; + @Resource + private ShiftService shiftService; + @Resource + private ItembasicService itembasicService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private JobUtils jobUtils; + @Resource + private LocationService locationService; + @Resource + private CountPlanMainService countPlanMainService; @Override public Long createCountRequestMain(CountRequestMainCreateReqVO createReqVO) { @@ -78,13 +107,114 @@ public class CountRequestMainServiceImpl implements CountRequestMainService { public PageResult getCountRequestMainPage(CountRequestMainPageReqVO pageReqVO) { return countRequestMainMapper.selectPage(pageReqVO); } + @Override public PageResult getCountRequestMainSenior(CustomConditions conditions) { return countRequestMainMapper.selectSenior(conditions); } + @Override public List getCountRequestMainList(CountRequestMainExportReqVO exportReqVO) { return countRequestMainMapper.selectList(exportReqVO); } + public List importCountRequestMainList(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 -> { + // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList + String messageMain = ""; + //主表的验证 + + //子表的验证 + List subList = createReqVO.getSubList(); + List subDOList = CountRequestDetailConvert.INSTANCE.convertList03(subList); + for (CountRequestDetailDO purchasePlanDetailDO : subDOList) { + String messageDetail = ""; + //校验库位基础信息 + try { + LocationDO locationDO = locationService.selectLocation(purchasePlanDetailDO.getLocationCode()); + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode()); + if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ","; + } else { + purchasePlanDetailDO.setItemDesc1(itembasicDO.getDesc1()); + purchasePlanDetailDO.setItemDesc2(itembasicDO.getDesc2()); + purchasePlanDetailDO.setItemName(itembasicDO.getName()); + purchasePlanDetailDO.setProjectCode(itembasicDO.getProject()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验业务类型 + try { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountRequest"); + jobUtils.ifInToLocationType(purchasePlanDetailDO.getLocationCode(), businesstypeDO); + jobUtils.ifOutInventoryStatuses(purchasePlanDetailDO.getInventoryStatus(), businesstypeDO); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验盘点计划 + try { + CountPlanDetailDO countPlanDetailDO = countPlanMainService.selectCountPlanExist(createReqVO.getPlanNumber()); + if (countPlanDetailDO != null) { +// createReqVO.setWarehouseCode(countPlanDetailDO.get) + } else { + messageDetail += "盘点计划" + createReqVO.getPlanNumber() + "无效" + ","; + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + CountRequestDetailCreateReqVO purchasePlanDetailCreateReqVO = CountRequestDetailConvert.INSTANCE.convert1(purchasePlanDetailDO); + CountRequestMainImportErrorVO importVO = CountRequestDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchasePlanDetailDO.setNumber(createReqVO.getNumber()); + } + } + + if (errorList.isEmpty()) { + // 判断如果不存在,在进行插入 + CountRequestMainDO existPurchaseclaimRequestMainDO = countRequestMainMapper.selectByPlanNumber(createReqVO.getPlanNumber()); + if (existPurchaseclaimRequestMainDO == null && mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePlan"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + CountRequestMainDO createObj =CountRequestMainConvert.INSTANCE.convert(createReqVO); + countRequestMainMapper.insert(createObj); + countRequestDetailMapper.insertBatch(subDOList); + } else if (existPurchaseclaimRequestMainDO != null && mode != 2) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + CountRequestMainDO createObj = CountRequestMainConvert.INSTANCE.convert(createReqVO); + countRequestMainMapper.updateById(createObj); + countRequestDetailMapper.updateBatch(subDOList); + } + } + }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java index 8f0859ff..ea6145f8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java @@ -1,16 +1,34 @@ package com.win.module.wms.service.deliverPlan; import cn.hutool.core.collection.CollUtil; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.deliverPlan.vo.*; import com.win.module.wms.convert.deliverPlan.DeliverPlanDetailConvert; import com.win.module.wms.convert.deliverPlan.DeliverPlanMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.customer.CustomerDO; import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO; import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.sale.SaleDetailDO; import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanDetailMapper; import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanMainMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.businesstype.BusinesstypeService; +import com.win.module.wms.service.customer.CustomerService; +import com.win.module.wms.service.deliverJob.DeliverJobMainService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.shift.ShiftService; +import com.win.module.wms.service.supplieritem.SupplieritemService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -35,6 +53,26 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { private DeliverPlanMainMapper deliverPlanMainMapper; @Resource private DeliverPlanDetailMapper deliverPlanDetailMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private JobUtils jobUtils; + @Resource + private ItempackagingService itempackagingService; + @Resource + private ShiftService shiftService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private CustomerService customerService; + @Resource + private BusinesstypeService businesstypeService; + @Resource + private DeliverJobMainService deliverJobMainService; + @Resource + private SerialNumberApi serialNumberApi; + + @Override public Long createDeliverPlanMain(DeliverPlanMainCreateReqVO createReqVO) { @@ -77,10 +115,12 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { public List getDeliverPlanMainList(Collection ids) { return deliverPlanMainMapper.selectBatchIds(ids); } + @Override public PageResult getDeliverPlanMainSenior(CustomConditions conditions) { return deliverPlanMainMapper.selectSenior(conditions); } + @Override public PageResult getDeliverPlanMainPage(DeliverPlanMainPageReqVO pageReqVO) { return deliverPlanMainMapper.selectPage(pageReqVO); @@ -90,35 +130,128 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { public List getDeliverPlanMainList(DeliverPlanMainExportReqVO exportReqVO) { return deliverPlanMainMapper.selectList(exportReqVO); } + @Override - public List importDeliverPlanMainList(List datas, Integer mode, boolean updatePart) { + public List importDeliverPlanMainList(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 -> { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - boolean isError = false; -// try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } -// } catch (ServiceException ex) { -// isError = true; -// importRemark += ex.getMessage() + ","; -// } - - DeliverPlanMainDO createObj =DeliverPlanMainConvert.INSTANCE.convert(createReqVO); - deliverPlanMainMapper.insert(createObj); + String messageMain = ""; + //主表的验证 + //校验客户代码 + try { + CustomerDO customerDO = customerService.selectCustomerExist(createReqVO.getCustomerCode()); + if (customerDO == null) { + messageMain += "客户代码" + createReqVO.getCustomerCode() + "无效" + ","; + } + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + //校验业务类型相关属性 + try { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } +// createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); +// createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes()); +// createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); +// createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + + + //子表的验证 List subList = createReqVO.getSubList(); List subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for (DeliverPlanDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setNumber(createReqVO.getNumber()); + for (DeliverPlanDetailDO purchaseDetailDO : subDOList) { + String messageDetail = ""; + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); + if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; + } else { +// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1()); +// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2()); +// purchaseDetailDO.setItemName(itembasicDO.getName()); + purchaseDetailDO.setProject(itembasicDO.getProject()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + // 校验物品标包信息 + try { + SaleDetailDO saleDetailDO = deliverJobMainService.saleDetailExist(purchaseDetailDO.getSoNumber(), purchaseDetailDO.getSoLine(), purchaseDetailDO.getItemCode()); + if (saleDetailDO != null) { +// createReqVO.setBusinessType(saleDetailDO.getCode()); + } +// jobUtils.ifInToLocationType(from_location_code,saleDetailDO); +// createReqVO.setFromLocationTypes(saleDetailDO.getOutLocationTypes()); +// createReqVO.setToLocationTypes(saleDetailDO.getInLocationTypes()); +// createReqVO.setFromAreaCodes(saleDetailDO.getOutAreaCodes()); +// createReqVO.setToAreaCodes(saleDetailDO.getInAreaCodes()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + + DeliverPlanDetailCreateReqVO purchaseDetailCreateReqVO = DeliverPlanDetailConvert.INSTANCE.convert1(purchaseDetailDO); + DeliverPlanMainImportErrorVO importVO = DeliverPlanDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchaseDetailDO.setNumber(createReqVO.getNumber()); + purchaseDetailDO.setMasterId(createReqVO.getId()); + purchaseDetailDO.setCustomerDockCode(null); + purchaseDetailDO.setNumber(createReqVO.getNumber()); + } + } + + if (errorList.isEmpty()) { + // 判断如果不存在,在进行插入 + DeliverPlanMainDO existPurchaseclaimRequestMainDO = deliverPlanMainMapper.selectByNumber(createReqVO.getNumber()); + if (existPurchaseclaimRequestMainDO == null && mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + createReqVO.setStatus(null); + String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); + createReqVO.setNumber(number); + DeliverPlanMainDO createObj = DeliverPlanMainConvert.INSTANCE.convert(createReqVO); + deliverPlanMainMapper.insert(createObj); + deliverPlanDetailMapper.insertBatch(subDOList); + } else if (existPurchaseclaimRequestMainDO != null && mode != 2) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + createReqVO.setStatus(null); + String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); + createReqVO.setNumber(number); + DeliverPlanMainDO createObj = DeliverPlanMainConvert.INSTANCE.convert(createReqVO); + deliverPlanMainMapper.updateById(createObj); + deliverPlanDetailMapper.updateBatch(subDOList); + } } - deliverPlanDetailMapper.insertBatch(subDOList); }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java index 5bcd605c..864cfbc0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java @@ -1,18 +1,35 @@ package com.win.module.wms.service.demandforecasting; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.demandforecasting.vo.*; import com.win.module.wms.convert.demandforecasting.DemandforecastingDetailConvert; import com.win.module.wms.convert.demandforecasting.DemandforecastingMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingDetailDO; import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; +import com.win.module.wms.dal.dataobject.supplier.SupplierDO; +import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; import com.win.module.wms.dal.mysql.demandforecasting.DemandforecastingDetailMapper; import com.win.module.wms.dal.mysql.demandforecasting.DemandforecastingMainMapper; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.purchase.PurchaseMainService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.supplier.SupplierService; +import com.win.module.wms.service.supplieritem.SupplieritemService; +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; @@ -37,6 +54,21 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe private DemandforecastingMainMapper demandforecastingMainMapper; @Resource private DemandforecastingDetailMapper demandforecastingDetailMapper; + @Resource + private JobUtils jobUtils; + @Resource + private RequestsettingService requestsettingService; + @Resource + private SupplierService supplierService; + @Resource + private ItembasicService itembasicService; + @Resource + private PurchaseMainService purchaseMainService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private SerialNumberApi serialNumberApi; + @Override public Long createDemandforecastingMain(DemandforecastingMainCreateReqVO createReqVO) { @@ -89,41 +121,126 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe public PageResult getDemandforecastingMainSenior(CustomConditions conditions) { return demandforecastingMainMapper.selectSenior(conditions); } + @Override public List getDemandforecastingMainList(DemandforecastingMainExportReqVO exportReqVO) { return demandforecastingMainMapper.selectList(exportReqVO); } - public List importDemandforecastingRequestList(List datas, Integer mode, boolean updatePart) { + @Override + @Transactional + public List importDemandforecastingRequestList(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 -> { - // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - boolean isError = false; -// try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } -// } catch (ServiceException ex) { -// isError = true; -// importRemark += ex.getMessage() + ","; -// } -// } - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - DemandforecastingMainDO createObj = DemandforecastingMainConvert.INSTANCE.convert(createReqVO); - demandforecastingMainMapper.insert(createObj); - List subList = createReqVO.getSubList(); - List subDOList = DemandforecastingDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for (DemandforecastingDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setMasterId(createReqVO.getId()); - detailDO.setNumber(createReqVO.getNumber()); + String messageMain = ""; + //主表校验方法 + if (mode != null) { + //校验供应商基础信息 + try { + SupplierDO supplierDO = supplierService.selectSupplier(createReqVO.getSupplierCode()); + if (supplierDO == null) { + messageMain += "未查找到供应商" + createReqVO.getSupplierCode() + "信息" + ","; + } + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + List subList = createReqVO.getSubList(); + List subDOList = DemandforecastingDetailConvert.INSTANCE.convertList03(subList); + // 新增子表数据 + for (DemandforecastingDetailDO detailDO : subDOList) { + String messageDetail = ""; + //校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); + if (itembasicDO == null) { + messageDetail += "物品" + detailDO.getItemCode() + "无效" + ","; + } else { + if (!detailDO.getUom().equals(itembasicDO.getUom())) { + messageDetail += "计量单位" + detailDO.getItemCode() + "错误," + "应该是" + itembasicDO.getUom() + ","; + } + } + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + //校验采购订单 + try { + PurchaseDetailDO purchaseDetailDO = purchaseMainService.selectPurchaseDetailDoExist(detailDO.getPoNumber(), createReqVO.getSupplierCode(), detailDO.getItemCode(), detailDO.getPoLine()); + if ((purchaseDetailDO.getShippedQty().add(detailDO.getPlanQty())).compareTo(purchaseDetailDO.getOrderQty()) == 1) { + messageDetail += "订单行" + detailDO.getPoLine() + "的已收货数量" + purchaseDetailDO.getReceivedQty() + "+计划数量" + detailDO.getPlanQty() + "大于订单数量" + purchaseDetailDO.getOrderQty() + ","; + } + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验供应商物品 + try { + SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), detailDO.getItemCode()); + if (supplieritemDO == null) { + messageDetail += "未查找到物品" + detailDO.getItemCode() + "供应商" + createReqVO.getSupplierCode() + "信息" + ","; + } + + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + DemandforecastingDetailCreateReqVO demandforecastingDetailCreateReqVO = DemandforecastingDetailConvert.INSTANCE.convert1(detailDO); + DemandforecastingImportErrorVO importVO = DemandforecastingDetailConvert.INSTANCE.convert(createReqVO, demandforecastingDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PREDICTION.getCode()); + createReqVO.setNumber(number); + } + } + if (errorList.isEmpty()) { + // 判断如果不存在,在进行插入 + DemandforecastingMainDO demandforecastingMainDO = demandforecastingMainMapper.selectByNumber(createReqVO.getSupplierCode()); + if (demandforecastingMainDO == null && mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePrediction"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + DemandforecastingMainDO createObj = DemandforecastingMainConvert.INSTANCE.convert(createReqVO); + //根据版本默认作废之前版本 + QueryWrapper demandforecastingMainDOQueryWrapper = new QueryWrapper<>(); + demandforecastingMainDOQueryWrapper.eq("supplier_code", createReqVO.getSupplierCode()); + List doList = demandforecastingMainMapper.selectList(demandforecastingMainDOQueryWrapper); + for (DemandforecastingMainDO mainDO : doList) { + mainDO.setAvailable("FALSE"); + } + demandforecastingMainMapper.insert(createObj); + demandforecastingDetailMapper.insertBatch(subDOList); + } else if (demandforecastingMainDO != null && mode != 2) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePrediction"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + DemandforecastingMainDO createObj = DemandforecastingMainConvert.INSTANCE.convert(createReqVO); + //根据版本默认作废之前版本 + QueryWrapper demandforecastingMainDOQueryWrapper = new QueryWrapper<>(); + demandforecastingMainDOQueryWrapper.eq("supplier_code", createReqVO.getSupplierCode()); + List doList = demandforecastingMainMapper.selectList(demandforecastingMainDOQueryWrapper); + for (DemandforecastingMainDO mainDO : doList) { + mainDO.setAvailable("FALSE"); + } + demandforecastingMainMapper.updateById(createObj); + demandforecastingDetailMapper.updateBatch(subDOList); + } + } } - demandforecastingDetailMapper.insertBatch(subDOList); }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java index cd288cd6..36db240b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java @@ -1,16 +1,33 @@ package com.win.module.wms.service.inventorychangeRequest; import cn.hutool.core.collection.CollUtil; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.inventorychangeRequest.vo.*; import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestDetailConvert; import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert; +import com.win.module.wms.dal.dataobject.balance.BalanceDO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestDetailMapper; import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestMainMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.shift.ShiftService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -35,7 +52,21 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq private InventorychangeRequestMainMapper inventorychangeRequestMainMapper; @Resource private InventorychangeRequestDetailMapper inventorychangeRequestDetailMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private ItempackagingService itempackagingService; + @Resource + private ShiftService shiftService; + @Resource + private JobUtils jobUtils; + @Resource + private LocationService locationService; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private RequestsettingService requestsettingService; @Override public Long createInventorychangeRequestMain(InventorychangeRequestMainCreateReqVO createReqVO) { // 插入 @@ -82,43 +113,329 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq public PageResult getInventorychangeRequestMainPage(InventorychangeRequestMainPageReqVO pageReqVO) { return inventorychangeRequestMainMapper.selectPage(pageReqVO); } + @Override public PageResult getInventorychangeRequestMainSenior(CustomConditions conditions) { return inventorychangeRequestMainMapper.selectSenior(conditions); } + @Override public List getInventorychangeRequestMainList(InventorychangeRequestMainExportReqVO exportReqVO) { return inventorychangeRequestMainMapper.selectList(exportReqVO); } @Override - public List importInventorychangeRequestMainList(List datas, Integer mode, boolean updatePart) { + public List importInventorychangeRequestMainList(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 -> { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - boolean isError = false; -// try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } -// } catch (ServiceException ex) { -// isError = true; -// importRemark += ex.getMessage() + ","; -// } - InventorychangeRequestMainDO createObj = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO); - inventorychangeRequestMainMapper.insert(createObj); + String messageMain = ""; + //主表的验证 + + + //子表的验证 List subList = createReqVO.getSubList(); List subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for (InventorychangeRequestDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setNumber(createReqVO.getNumber()); + for (InventorychangeRequestDetailDO purchaseDetailDO : subDOList) { + String messageDetail = ""; + //校验来源库位基础信息 + try { + LocationDO locationDO = locationService.selectLocation(purchaseDetailDO.getLocationCode()); + if (locationDO != null) { + purchaseDetailDO.setLocationCode(locationDO.getCode()); + purchaseDetailDO.setAreaCode(locationDO.getAreaCode()); + purchaseDetailDO.setLocationGroupCode(locationDO.getLocationGroupCode()); + } + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); + if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; + } else { + purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1()); + purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2()); + purchaseDetailDO.setItemName(itembasicDO.getName()); + purchaseDetailDO.setProjectCode(itembasicDO.getProject()); + } + purchaseDetailDO.setProjectCode(itembasicDO.getCode()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验业务类型 + try { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk"); + jobUtils.selectItembasicExist(purchaseDetailDO.getItemCode(), businesstypeDO); + jobUtils.ifOutInventoryStatuses(purchaseDetailDO.getFromInventoryStatus(), businesstypeDO); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + //隔离转合格申请 + if ("Hold".equals(purchaseDetailDO.getFromInventoryStatus())) { + // 校验库存余额是否存在 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add("Hold"); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() + , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + purchaseDetailDO.setFromQty(balanceDO.getQty()); + purchaseDetailDO.setToQty(balanceDO.getQty()); + purchaseDetailDO.setQty(balanceDO.getQty()); + + purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate()); + purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate()); + purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate()); + purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + purchaseDetailDO.setToInventoryStatus("OK"); + String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); + createReqVO.setNumber(number); + + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + } + + //合格转隔离申请 + if ("OK".equals(purchaseDetailDO.getFromInventoryStatus())) { + // 校验库存余额是否存在 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add("OK"); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() + , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + purchaseDetailDO.setFromQty(balanceDO.getQty()); + purchaseDetailDO.setToQty(balanceDO.getQty()); + purchaseDetailDO.setQty(balanceDO.getQty()); + + purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate()); + purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate()); + purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate()); + purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + purchaseDetailDO.setToInventoryStatus("Hold"); + String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode()); + createReqVO.setNumber(number); + + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + + purchaseDetailDO.setToPackingNumber(null); + purchaseDetailDO.setToBatch(null); + purchaseDetailDO.setToContainerNumber(null); + } + + //隔离转报废申请 + if ("Hold".equals(purchaseDetailDO.getFromInventoryStatus())) { + // 校验库存余额是否存在 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add("Hold"); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() + , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + purchaseDetailDO.setFromQty(balanceDO.getQty()); + purchaseDetailDO.setToQty(balanceDO.getQty()); + purchaseDetailDO.setQty(balanceDO.getQty()); + + purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate()); + purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate()); + purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate()); + purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + purchaseDetailDO.setToInventoryStatus("Scrap"); + String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode()); + createReqVO.setNumber(number); + + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + + purchaseDetailDO.setFromPackingNumber(null); + purchaseDetailDO.setFromBatch(null); + purchaseDetailDO.setFromContainerNumber(null); + } + + + //报废转隔离申请 + if ("Scrap".equals(purchaseDetailDO.getFromInventoryStatus())) { + // 校验库存余额是否存在 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add("Scrap"); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() + , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + purchaseDetailDO.setFromQty(balanceDO.getQty()); + purchaseDetailDO.setToQty(balanceDO.getQty()); + purchaseDetailDO.setQty(balanceDO.getQty()); + + purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate()); + purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate()); + purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate()); + purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + purchaseDetailDO.setToInventoryStatus("Scrap"); + String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode()); + createReqVO.setNumber(number); + + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapToHoldRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + + purchaseDetailDO.setFromPackingNumber(null); + purchaseDetailDO.setFromBatch(null); + purchaseDetailDO.setFromContainerNumber(null); + } + + //合格转报废 + if ("Ok".equals(purchaseDetailDO.getFromInventoryStatus())) { + // 校验库存余额是否存在 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add("Scrap"); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() + , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + purchaseDetailDO.setFromQty(balanceDO.getQty()); + purchaseDetailDO.setToQty(balanceDO.getQty()); + purchaseDetailDO.setQty(balanceDO.getQty()); + + purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate()); + purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate()); + purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate()); + purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + purchaseDetailDO.setToInventoryStatus("Scrap"); + String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode()); + createReqVO.setNumber(number); + + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + + purchaseDetailDO.setFromPackingNumber(null); + purchaseDetailDO.setFromBatch(null); + purchaseDetailDO.setFromContainerNumber(null); + } + + + InventorychangeRequestDetailCreateReqVO purchaseDetailCreateReqVO = InventorychangeRequestDetailConvert.INSTANCE.convert1(purchaseDetailDO); + InventorychangeRequestMainImportErrorVO importVO = InventorychangeRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchaseDetailDO.setNumber(createReqVO.getNumber()); + purchaseDetailDO.setMasterId(createReqVO.getId()); + } + } + + + if (errorList.isEmpty()) { + if (mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + + InventorychangeRequestMainDO createObj = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO); + inventorychangeRequestMainMapper.insert(createObj); + inventorychangeRequestDetailMapper.insertBatch(subDOList); + } else if (mode != 2) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + + InventorychangeRequestMainDO createObj = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO); + inventorychangeRequestMainMapper.updateById(createObj); + inventorychangeRequestDetailMapper.updateBatch(subDOList); + } } - inventorychangeRequestDetailMapper.insertBatch(subDOList); }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java index 6c7e8647..09b0d91d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java @@ -1,16 +1,29 @@ package com.win.module.wms.service.inventorymoveRequest; import cn.hutool.core.collection.CollUtil; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.wms.controller.inventorymoveRequest.vo.*; import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestDetailConvert; import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert; +import com.win.module.wms.dal.dataobject.balance.BalanceDO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestDetailMapper; import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestMainMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.service.shift.ShiftService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -36,6 +49,16 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest @Resource private InventorymoveRequestDetailMapper inventorymoveRequestDetailMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private ItempackagingService itempackagingService; + @Resource + private ShiftService shiftService; + @Resource + private JobUtils jobUtils; + @Resource + private LocationService locationService; @Override public Long createInventorymoveRequestMain(InventorymoveRequestMainCreateReqVO createReqVO) { @@ -88,39 +111,118 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest public PageResult getInventorymoveRequestMainSenior(CustomConditions conditions) { return inventorymoveRequestMainMapper.selectSenior(conditions); } + @Override public List getInventorymoveRequestMainList(InventorymoveRequestMainExportReqVO exportReqVO) { return inventorymoveRequestMainMapper.selectList(exportReqVO); } @Override - public List importInventorymoveRequestMainList(List datas, Integer mode, boolean updatePart) { + public List importInventorymoveRequestMainList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); } - List< InventorymoveRequestMainImportErrorVO> errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - boolean isError = false; + String messageMain = ""; + //主表的验证 + + + //校验供应商送货策略 // try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } +// RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null); +// String json = ruleRespVO.getConfiguration(); // } catch (ServiceException ex) { -// isError = true; // importRemark += ex.getMessage() + ","; // } - InventorymoveRequestMainDO createObj = InventorymoveRequestMainConvert.INSTANCE.convert(createReqVO); - inventorymoveRequestMainMapper.insert(createObj); + //子表的验证 + + List subList = createReqVO.getSubList(); List subDOList = InventorymoveRequestDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for ( InventorymoveRequestDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setNumber(createReqVO.getNumber()); + for (InventorymoveRequestDetailDO purchaseDetailDO : subDOList) { + String messageDetail = ""; + //校验来源/目标库位基础信息 + try { + LocationDO locationDO = locationService.selectLocation(createReqVO.getFromWarehouseOde()); + if (locationDO != null) { + purchaseDetailDO.setFromLocationCode(locationDO.getCode()); +// purchaseDetailDO.setArea_code(purchaseDetailDO.getAreaCode()); +// purchaseDetailDO.setLocation_group_code(purchaseDetailDO.getAreaCode()); + } + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); + if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; + } else { + purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1()); + purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2()); + purchaseDetailDO.setItemName(itembasicDO.getName()); + purchaseDetailDO.setProjectCode(itembasicDO.getProject()); + } + purchaseDetailDO.setProjectCode(itembasicDO.getCode()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验业务类型 + try { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest"); + jobUtils.ifInToLocationType(purchaseDetailDO.getFromLocationCode(), businesstypeDO); + jobUtils.ifOutInventoryStatuses(purchaseDetailDO.getFromInventoryStatus(), businesstypeDO); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + // 校验业务类型 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add(purchaseDetailDO.getFromInventoryStatus()); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() + , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getFromLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); +// purchaseDetailDO.setArriveDate( balanceDO.getArriveDate() ); +// purchaseDetailDO.setProduceDate( balanceDO.getProduceDate() ); +// purchaseDetailDO.setExpireDate( balanceDO.getExpireDate() ); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + InventorymoveRequestDetailCreateReqVO purchaseDetailCreateReqVO = InventorymoveRequestDetailConvert.INSTANCE.convert1(purchaseDetailDO); + InventorymoveRequestMainImportErrorVO importVO = InventorymoveRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchaseDetailDO.setNumber(createReqVO.getNumber()); + purchaseDetailDO.setMasterId(createReqVO.getId()); + } + } + + if (errorList.isEmpty()) { + // 判断如果不存在,在进行插入 + if (mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + inventorymoveRequestDetailMapper.insertBatch(subDOList); + } else if (mode != 2) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + inventorymoveRequestDetailMapper.updateBatch(subDOList); + } } - inventorymoveRequestDetailMapper.insertBatch(subDOList); }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java index a81f3a8f..c02188ea 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java @@ -3,20 +3,38 @@ package com.win.module.wms.service.production; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.wms.controller.production.vo.*; import com.win.module.wms.convert.production.ProductionDetailConvert; import com.win.module.wms.convert.production.ProductionMainConvert; +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.production.ProductionDetailDO; import com.win.module.wms.dal.dataobject.production.ProductionMainDO; +import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; +import com.win.module.wms.dal.dataobject.team.TeamDO; import com.win.module.wms.dal.mysql.production.ProductionDetailMapper; import com.win.module.wms.dal.mysql.production.ProductionMainMapper; import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobDetailMapper; +import com.win.module.wms.enums.DictTypeConstants; +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.shift.ShiftService; +import com.win.module.wms.service.supplieritem.SupplieritemService; +import com.win.module.wms.service.team.TeamService; +import com.win.module.wms.service.work.WorkMainService; +import com.win.module.wms.service.workshop.WorkshopService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -36,11 +54,30 @@ public class ProductionMainServiceImpl implements ProductionMainService { @Resource private ProductionMainMapper productionMainMapper; - @Resource private ProductionDetailMapper productionDetailMapper; - @Resource + @Resource private ProductreceiptJobDetailMapper productreceiptJobDetailMapper; + @Resource + private ShiftService shiftService; + @Resource + private ItembasicService itembasicService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private JobUtils jobUtils; + @Resource + private WorkshopService workshopService; + @Resource + private ProductionlineService productionlineService; + @Resource + private TeamService teamService; + @Resource + private ProductionlineitemService productionlineitemService; + @Resource + private WorkMainService workMainService; + + @Override public Long createProductionMain(ProductionMainCreateReqVO createReqVO) { @@ -93,6 +130,7 @@ public class ProductionMainServiceImpl implements ProductionMainService { public List getProductionMainList(ProductionMainExportReqVO exportReqVO) { return productionMainMapper.selectList(exportReqVO); } + //公共方法 校验生产计划 Plan---VPod @Override public ProductionDetailDO planProductionDetailDoExist(String pnumber, String pitemCode) { @@ -108,14 +146,14 @@ public class ProductionMainServiceImpl implements ProductionMainService { ProductionDetailDO productionDetailDO = productionDetailMapper.selectOne(queryWrapper1); if (productionDetailDO != null && "TRUE".equals(productionDetailDO.getAvailable())) { return productionDetailDO; - }else { - throw new UtilException( "生产计划明细:订单号" + pnumber + "、零件号" + pitemCode + "、无效"); + } else { + throw new UtilException("生产计划明细:订单号" + pnumber + "、零件号" + pitemCode + "、无效"); } - }else { - throw new UtilException( "生产计划" + pnumber + "已经关闭"); + } else { + throw new UtilException("生产计划" + pnumber + "已经关闭"); } - }else { - throw new UtilException( "生产计划" + pnumber + "无效"); + } else { + throw new UtilException("生产计划" + pnumber + "无效"); } } @@ -125,34 +163,141 @@ public class ProductionMainServiceImpl implements ProductionMainService { } @Override - public List importProductionMainList(List datas, Integer mode, boolean updatePart) { + public List importProductionMainList(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 -> { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - boolean isError = false; -// try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } -// } catch (ServiceException ex) { -// isError = true; -// importRemark += ex.getMessage() + ","; -// } + String messageMain = ""; + //主表的验证 + // 校验班组基础信息 + try { + if (!"".equals(createReqVO.getTeam())) { + TeamDO teamDO = teamService.selectTeamExist(createReqVO.getTeam()); + if (teamDO == null) { + messageMain += "班组" + createReqVO.getTeam() + "无效" + ","; + } + } + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + // 校验班次基础信息 + try { + if (!"".equals(createReqVO.getShift())) { + TeamDO teamDO = teamService.selectTeamExist(createReqVO.getTeam()); + if (teamDO == null) { + messageMain += "班组" + createReqVO.getTeam() + "无效" + ","; + } + } + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } - ProductionMainDO createObj = ProductionMainConvert.INSTANCE.convert(createReqVO); - productionMainMapper.insert(createObj); + //子表的验证 List subList = createReqVO.getSubList(); List subDOList = ProductionDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for (ProductionDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setNumber(createReqVO.getNumber()); + for (ProductionDetailDO purchasePlanDetailDO : subDOList) { + String messageDetail = ""; + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode()); + if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ","; + } else { +// purchasePlanDetailDO.setItemDesc1(itembasicDO.getDesc1()); +// purchasePlanDetailDO.setItemDesc2(itembasicDO.getDesc2()); +// purchasePlanDetailDO.setItemName(itembasicDO.getName()); +// purchasePlanDetailDO.setProjectCode(itembasicDO.getProject()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + //校验车间基础信息 + try { + workshopService.selectWorkshopExist(createReqVO.getWorkshop()); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + // 校验生产线基础信息 + try { + ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(createReqVO.getProductionLine()); + if (productionlineDO != null) { + //prodlinedto.fg_location_code=to_location_code + } + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + + // 校验工位基础信息 +// try { +// if("".equals(work_station_code){ +// +// } +// } catch (Exception ex) { +// messageMain += ex.getMessage() + ","; +// } + + // 校验零件生产线关系 + try { +// productionlineitemService.productionLineCodeAndpItemCodeExist(createReqVO.getProductionLineCode(), purchasePlanDetailDO.getItemCode()); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + + // 检验生产订单 + try { + workMainService.selectWorkExist(createReqVO.getNumber(),purchasePlanDetailDO.getItemCode()); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + + ProductionDetailCreateReqVO purchasePlanDetailCreateReqVO = ProductionDetailConvert.INSTANCE.convert1(purchasePlanDetailDO); + ProductionMainImportErrorVO importVO = ProductionDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchasePlanDetailDO.setNumber(createReqVO.getNumber()); + purchasePlanDetailDO.setMasterId(createReqVO.getId()); + purchasePlanDetailDO.setGoodQty(new BigDecimal(0)); + purchasePlanDetailDO.setNotGoodQty(new BigDecimal(0)); + } + } + + if (errorList.isEmpty()) { + ProductionMainDO existPurchaseclaimRequestMainDO = productionMainMapper.selectByNumber(createReqVO.getNumber()); + // 判断如果不存在,在进行插入 + if (existPurchaseclaimRequestMainDO == null && mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkPlan"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + + ProductionMainDO createObj = ProductionMainConvert.INSTANCE.convert(createReqVO); + productionMainMapper.insert(createObj); + productionDetailMapper.insertBatch(subDOList); + } else if (existPurchaseclaimRequestMainDO == null && mode != 2) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkPlan"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + ProductionMainDO createObj = ProductionMainConvert.INSTANCE.convert(createReqVO); + productionMainMapper.updateById(createObj); + productionDetailMapper.updateBatch(subDOList); + } } - productionDetailMapper.insertBatch(subDOList); }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java index 9885a852..4b10f36d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java @@ -4,58 +4,44 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; import com.google.common.annotations.VisibleForTesting; 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.module.system.api.dict.DictDataApi; import com.win.module.system.api.dict.dto.DictDataRespDTO; import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.productscrapRequest.vo.*; -import com.win.module.wms.dal.mysql.productscrapRequest.*; import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestDetailConvert; -import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestDetailConvert; -import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestMainConvert; +import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; 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.productputawayRequest.ProductputawayRequestDetailDO; -import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO; -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.productscrapRequest.ProductscrapRequestMainDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestDetailMapper; +import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.shift.ShiftService; +import com.win.module.wms.service.supplieritem.SupplieritemService; import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; -import javax.annotation.Resource; - import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; -import com.win.module.wms.service.itembasic.ItembasicService.*; - -import java.math.BigDecimal; -import java.util.*; - -import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; -import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productscrapRequest.vo.*; -import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestDetailConvert; -import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; -import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO; -import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; -import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestDetailMapper; -import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestMainMapper; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Arrays; 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.*; +import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTSCRAP_REQUEST_MAIN_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTSCRAP_REQUEST_NOT_EXISTS; /** * 制品报废申请主 Service 实现类 @@ -83,8 +69,20 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa @Resource private ItembasicService itembasicService; + @Resource private RequestsettingService requestsettingService; + + @Resource + private ShiftService shiftService; + + @Resource + private SupplieritemService supplieritemService; + + @Resource + private LocationService locationService; + + @Override public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) { // 插入 @@ -122,10 +120,12 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa // 删除 productscrapRequestMainMapper.deleteById(id); } + @Override public PageResult getProductscrapRequestMainSenior(CustomConditions conditions) { return productscrapRequestMainMapper.selectSenior(conditions); } + private void validateProductscrapRequestMainExists(Long id) { if (productscrapRequestMainMapper.selectById(id) == null) { throw exception(PRODUCTSCRAP_REQUEST_MAIN_NOT_EXISTS); @@ -155,20 +155,22 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa public String Isuom(String uom1, String uom2) { DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1); String value = dictDataRespDTO.getLabel(); - if(uom2.equals(value)){ + if (uom2.equals(value)) { return "ture"; - }else { - throw new UtilException("计量单位"+uom2+"错误,应该是"+value); + } else { + throw new UtilException("计量单位" + uom2 + "错误,应该是" + value); } } + public String isqty(BigDecimal qty1, BigDecimal qty2) { - if(qty1.compareTo(qty2) < 0){ + if (qty1.compareTo(qty2) < 0) { return "ture"; } else { - throw new UtilException("上架数量"+qty2+ "不能大于库存数量"+ qty1); + throw new UtilException("上架数量" + qty2 + "不能大于库存数量" + qty1); } } - public List importProductscrapRequestList(List datas, Integer mode, boolean updatePart) { + + public List importProductscrapRequestList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { throw exception(PRODUCTSCRAP_REQUEST_NOT_EXISTS); } @@ -181,90 +183,90 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa List subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList03(subList); for (ProductscrapRequestDetailDO detailDO : subDOList) { if (mode != null) { - try{ - validateProductscrapExists(null); - }catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - try{ - ItembasicDO itembasic = itembasicService.selectItembasic(detailDO.getItemCode()); + try { + validateProductscrapExists(null); + } catch (Exception ex) { + isError = true; + massage += ex.getMessage() + ","; + } + try { + ItembasicDO itembasic = itembasicService.selectItembasic(detailDO.getItemCode()); detailDO.setItemDesc1(itembasic.getDesc1()); detailDO.setItemDesc2(itembasic.getDesc2()); detailDO.setItemName(itembasic.getName()); detailDO.setProjectCode(itembasic.getProject()); - try{ - Isuom(detailDO.getUom(),itembasic.getUom()); - }catch (Exception ex) { + try { + Isuom(detailDO.getUom(), itembasic.getUom()); + } catch (Exception ex) { isError = true; massage += ex.getMessage() + ","; } - try{ - BusinesstypeDO businesstype = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest"); + try { + BusinesstypeDO businesstype = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest"); createReqVO.setBusinessType(businesstype.getCode()); createReqVO.setFromLocationTypes(businesstype.getInLocationTypes()); createReqVO.setFromAreaCodes(businesstype.getInAreaCodes()); - try{ - jobUtils.selectItembasicExist(itembasic.getType(),businesstype); - }catch (Exception ex) { + try { + jobUtils.selectItembasicExist(itembasic.getType(), businesstype); + } catch (Exception ex) { isError = true; massage += ex.getMessage() + ","; } - try{ - jobUtils.ifInToLocationType(detailDO.getFromLocationCode(),businesstype); - }catch (Exception ex) { + try { + jobUtils.ifInToLocationType(detailDO.getFromLocationCode(), businesstype); + } catch (Exception ex) { isError = true; massage += ex.getMessage() + ","; } - try{ - jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(),businesstype); - }catch (Exception ex) { + try { + jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(), businesstype); + } catch (Exception ex) { isError = true; massage += ex.getMessage() + ","; } - }catch (Exception ex) { + } catch (Exception ex) { isError = true; massage += ex.getMessage() + ","; } - }catch (Exception ex) { + } catch (Exception ex) { isError = true; massage += ex.getMessage() + ","; } - try{ + try { DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(detailDO.getInventoryStatus()); String value = dictDataRespDTO.getValue(); String[] businessArray = value.split(","); List business = Arrays.asList(businessArray); - List balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(),detailDO.getPackingNumber(), - detailDO.getBatch(),detailDO.getFromLocationCode(),business); - try{ - BalanceDO blance1 = balance.get(0); - isqty(detailDO.getQty(),blance1.getQty()); + List balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(), detailDO.getPackingNumber(), + detailDO.getBatch(), detailDO.getFromLocationCode(), business); + try { + BalanceDO blance1 = balance.get(0); + isqty(detailDO.getQty(), blance1.getQty()); - }catch (Exception ex) { + } catch (Exception ex) { isError = true; massage += ex.getMessage() + ","; } - }catch (Exception ex) { + } catch (Exception ex) { isError = true; massage += ex.getMessage() + ","; } - if(isError) { - ProductscrapRequestImportErrorVO importVO = ProductscrapRequestDetailConvert.INSTANCE.convert(createReqVO,detailDO); + if (isError) { + ProductscrapRequestImportErrorVO importVO = ProductscrapRequestDetailConvert.INSTANCE.convert(createReqVO, detailDO); importVO.setImportStatus("失败"); importVO.setImportRemark(massage.substring(0, massage.length() - 1)); errorList.add(importVO); } - if(!isError) { + if (!isError) { detailDO.setNumber(createReqVO.getNumber()); detailDO.setMasterId(createReqVO.getId()); } - if(!errorList.isEmpty()){ + if (!errorList.isEmpty()) { // 判断如果不存在,在进行插入 RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("ProductPutawayRequest"); - if(requestsetting != null) { + if (requestsetting != null) { createReqVO.setAutoCommit(requestsetting.getAutoCommit()); createReqVO.setAutoAgree(requestsetting.getAutoAgree()); createReqVO.setAutoExecute(requestsetting.getAutoExecute()); @@ -281,7 +283,7 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa } }); //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { + if (!errorList.isEmpty() && !updatePart) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } return errorList; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java index 54ba59d7..88b63eec 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java @@ -89,12 +89,6 @@ public interface PurchaseMainService { */ public PurchaseDetailDO selectPurchaseDetailDoExist(String pnumber, String psupplierCode, String pitemCode,String poLine); - /** - * Order----VPur - * 校验采购订单明细 - * @author chenfang - * @return 采购订单子列表 - */ public List importPurchaseMaintList(List datas, Integer mode, boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java index f9672e91..adcf5f48 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java @@ -3,12 +3,15 @@ package com.win.module.wms.service.purchase; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.win.framework.common.enums.CommonStatusEnum; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.wms.controller.purchase.vo.*; -import com.win.module.wms.controller.rule.vo.RuleRespVO; +import com.win.module.wms.convert.purchase.PurchaseDetailConvert; import com.win.module.wms.convert.purchase.PurchaseMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; @@ -19,18 +22,24 @@ import com.win.module.wms.dal.dataobject.stdcostprice.StdcostpriceDO; import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; import com.win.module.wms.dal.mysql.purchase.PurchaseDetailMapper; import com.win.module.wms.dal.mysql.purchase.PurchaseMainMapper; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.currencyexchange.CurrencyexchangeService; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.rule.RuleService; import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.stdcostprice.StdcostpriceService; import com.win.module.wms.service.supplieritem.SupplieritemService; +import com.win.module.wms.util.JobUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -53,6 +62,8 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { @Resource private ItembasicService itembasicService; @Resource + private JobUtils jobUtils; + @Resource private ItempackagingService itempackagingService; @Resource private ShiftService shiftService; @@ -66,6 +77,9 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { private RuleService ruleService; @Resource private PurchaseDetailMapper purchaseDetailMapper; + @Resource + private RequestsettingService requestsettingService; + @Override public Long createPurchaseMain(PurchaseMainCreateReqVO createReqVO) { // 插入 @@ -74,10 +88,12 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { // 返回 return purchaseMain.getId(); } + @Override public PageResult getPurchaseMainSenior(CustomConditions conditions) { return purchaseMainMapper.selectSenior(conditions); } + @Override public void updatePurchaseMain(PurchaseMainUpdateReqVO updateReqVO) { // 校验存在 @@ -120,31 +136,32 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { public List getPurchaseMainList(PurchaseMainExportReqVO exportReqVO) { return purchaseMainMapper.selectList(exportReqVO); } + //公共方法 校验采购订单明细 @Override - public PurchaseDetailDO selectPurchaseDetailDoExist(String pnumber, String psupplierCode, String pitemCode,String poLine) { + public PurchaseDetailDO selectPurchaseDetailDoExist(String pnumber, String psupplierCode, String pitemCode, String poLine) { QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("number",pnumber); - queryWrapper.eq("supplier_code",psupplierCode); + queryWrapper.eq("number", pnumber); + queryWrapper.eq("supplier_code", psupplierCode); PurchaseMainDO purchaseMainDO = purchaseMainMapper.selectOne(queryWrapper); - if(purchaseMainDO != null && "TRUE".equals(purchaseMainDO.getAvailable())){ - if(!"CLOSED".equals(purchaseMainDO.getStatus())){ + if (purchaseMainDO != null && "TRUE".equals(purchaseMainDO.getAvailable())) { + if (!"CLOSED".equals(purchaseMainDO.getStatus())) { QueryWrapper queryWrapper1 = new QueryWrapper(); - queryWrapper1.eq("master_id",purchaseMainDO.getId()); - queryWrapper1.eq("number",pnumber); - queryWrapper1.eq("po_line",poLine); - queryWrapper1.eq("item_code",pitemCode); + queryWrapper1.eq("master_id", purchaseMainDO.getId()); + queryWrapper1.eq("number", pnumber); + queryWrapper1.eq("po_line", poLine); + queryWrapper1.eq("item_code", pitemCode); PurchaseDetailDO purchaseDetailDO = purchaseDetailMapper.selectOne(queryWrapper1); - if(purchaseDetailDO != null && "TRUE".equals(purchaseDetailDO.getAvailable())){ + if (purchaseDetailDO != null && "TRUE".equals(purchaseDetailDO.getAvailable())) { return purchaseDetailDO; - }else { - throw new UtilException( "采购订单明细:订单号" + pnumber + "、订单行" + poLine + "、零件号" + pitemCode + "、无效"); + } else { + throw new UtilException("采购订单明细:订单号" + pnumber + "、订单行" + poLine + "、零件号" + pitemCode + "、无效"); } - }else { - throw new UtilException( "采购订单" + pnumber + "已经关闭"); + } else { + throw new UtilException("采购订单" + pnumber + "已经关闭"); } - }else { - throw new UtilException( "采购订单" + pnumber + "无效"); + } else { + throw new UtilException("采购订单" + pnumber + "无效"); } } @@ -155,72 +172,128 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - String importRemark = ""; + String messageMain = ""; //主表的验证 //校验供应商基础信息 try { ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode()); BeanUtils.copyProperties(createReqVO, shiftDO); } catch (ServiceException ex) { - importRemark += ex.getMessage() + ","; + messageMain += ex.getMessage() + ","; } //校验供应商送货策略 - try { - RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null); - String json = ruleRespVO.getConfiguration(); - } catch (ServiceException ex) { - importRemark += ex.getMessage() + ","; - } +// try { +// RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null); +// String json = ruleRespVO.getConfiguration(); +// } catch (ServiceException ex) { +// importRemark += ex.getMessage() + ","; +// } //子表的验证 - if (createReqVO.getSubList() != null) { - for (PurchaseDetailCreateReqVO purchaseDetailCreateReqVO : createReqVO.getSubList()) { - // 校验物品基础信息 - try { - ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailCreateReqVO.getItemCode()); - if (itembasicDO.getUom() != purchaseDetailCreateReqVO.getUom()) { - importRemark += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailCreateReqVO.getUom() + ","; - } - purchaseDetailCreateReqVO.setProjectCode(itembasicDO.getCode()); - } catch (ServiceException ex) { - importRemark += ex.getMessage() + ","; - } - // 校验物品标包信息 - try { - ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(purchaseDetailCreateReqVO.getItemCode()); - purchaseDetailCreateReqVO.setStdPackUnit(itempackagingDO.getStdPackUnit()); - purchaseDetailCreateReqVO.setStdPackQty(itempackagingDO.getStdPackQty()); - } catch (ServiceException ex) { - importRemark += ex.getMessage() + ","; + List subList = createReqVO.getSubList(); + List subDOList = PurchaseDetailConvert.INSTANCE.convertList03(subList); + for (PurchaseDetailDO purchaseDetailDO : subDOList) { + String messageDetail = ""; + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); + if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; } + purchaseDetailDO.setProjectCode(itembasicDO.getCode()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } - // 校验供应商物品 - try { - SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), purchaseDetailCreateReqVO.getItemCode()); - purchaseDetailCreateReqVO.setSupplierUom(supplieritemDO.getSupplierUom()); - purchaseDetailCreateReqVO.setStdPackQty(supplieritemDO.getPackQty()); - purchaseDetailCreateReqVO.setConvertRate(supplieritemDO.getConvertRate()); - } catch (ServiceException ex) { - importRemark += ex.getMessage() + ","; + // 校验物品标包信息 + try { + ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(purchaseDetailDO.getItemCode()); + purchaseDetailDO.setStdPackUnit(itempackagingDO.getStdPackUnit()); + purchaseDetailDO.setStdPackQty(itempackagingDO.getStdPackQty()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + // 校验供应商物品 + try { + SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), purchaseDetailDO.getItemCode()); + purchaseDetailDO.setSupplierUom(supplieritemDO.getSupplierUom()); + purchaseDetailDO.setStdPackQty(supplieritemDO.getPackQty()); + purchaseDetailDO.setConvertRate(supplieritemDO.getConvertRate()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + // 校验标准成本价格 + try { + StdcostpriceDO stdcostpriceDO = stdcostpriceService.selectStdcostpriceExist(createReqVO.getSupplierCode(), purchaseDetailDO.getItemCode()); + purchaseDetailDO.setSinglePrice(stdcostpriceDO.getPrice()); + if ("CNY".equals(stdcostpriceDO.getCurrency())) { + purchaseDetailDO.setAmount(purchaseDetailDO.getSinglePrice().multiply(purchaseDetailDO.getOrderQty())); + } else { + CurrencyexchangeDO currencyexchangeDO = currencyexchangeService.selectCurrencyexchangeExist(stdcostpriceDO.getCurrency(), "CNY"); + purchaseDetailDO.setAmount(purchaseDetailDO.getSinglePrice().multiply(purchaseDetailDO.getOrderQty()).multiply(currencyexchangeDO.getRate())); } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } - // 校验标准成本价格 - try { - StdcostpriceDO stdcostpriceDO = stdcostpriceService.selectStdcostpriceExist(createReqVO.getSupplierCode(), purchaseDetailCreateReqVO.getItemCode()); - purchaseDetailCreateReqVO.setSinglePrice(stdcostpriceDO.getPrice()); - if ("CNY".equals(stdcostpriceDO.getCurrency())) { - purchaseDetailCreateReqVO.setAmount(purchaseDetailCreateReqVO.getSinglePrice().multiply(purchaseDetailCreateReqVO.getOrderQty())); - } else { - CurrencyexchangeDO currencyexchangeDO = currencyexchangeService.selectCurrencyexchangeExist(stdcostpriceDO.getCurrency(), "CNY"); - purchaseDetailCreateReqVO.setAmount(purchaseDetailCreateReqVO.getSinglePrice().multiply(purchaseDetailCreateReqVO.getOrderQty()).multiply(currencyexchangeDO.getRate())); - } - } catch (ServiceException ex) { - importRemark += ex.getMessage() + ","; + PurchaseDetailCreateReqVO purchaseDetailCreateReqVO = PurchaseDetailConvert.INSTANCE.convert1(purchaseDetailDO); + PurchaseMainImportErrorVO importVO = PurchaseDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchaseDetailDO.setNumber(createReqVO.getNumber()); + purchaseDetailDO.setMasterId(createReqVO.getId()); + purchaseDetailDO.setShippedQty(new BigDecimal(0)); + purchaseDetailDO.setReceivedQty(new BigDecimal(0)); + purchaseDetailDO.setReturnedQty(new BigDecimal(0)); + purchaseDetailDO.setPutawayQty(new BigDecimal(0)); + purchaseDetailDO.setErpLocationCode(null); + purchaseDetailDO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + } + } + + if (errorList.isEmpty()) { + // 判断如果不存在,在进行插入 + PurchaseMainDO existPurchaseclaimRequestMainDO = purchaseMainMapper.selectByNumber(createReqVO.getNumber()); + if (existPurchaseclaimRequestMainDO == null && mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); } + createReqVO.setOrderDate(LocalDateTime.now()); + createReqVO.setVersion(null); + createReqVO.setTaxRate(null); + PurchaseMainDO createObj = PurchaseMainConvert.INSTANCE.convert(createReqVO); + purchaseMainMapper.insert(createObj); + purchaseDetailMapper.insertBatch(subDOList); + } else if (existPurchaseclaimRequestMainDO != null && mode != 2) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + createReqVO.setOrderDate(LocalDateTime.now()); + createReqVO.setVersion(null); + createReqVO.setTaxRate(null); + PurchaseMainDO createObj = PurchaseMainConvert.INSTANCE.convert(createReqVO); + purchaseMainMapper.updateById(createObj); + purchaseDetailMapper.updateBatch(subDOList); } } }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java index ee0a6066..201bad7c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java @@ -3,18 +3,29 @@ package com.win.module.wms.service.purchasePlan; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.wms.controller.purchasePlan.vo.*; import com.win.module.wms.convert.purchasePlan.PurchasePlanDetailConvert; import com.win.module.wms.convert.purchasePlan.PurchasePlanMainConvert; +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.purchasePlan.PurchasePlanDetailDO; import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO; +import com.win.module.wms.dal.dataobject.shift.ShiftDO; +import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanDetailMapper; import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanMainMapper; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.shift.ShiftService; +import com.win.module.wms.service.supplieritem.SupplieritemService; +import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -37,9 +48,16 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { @Resource private PurchasePlanMainMapper purchasePlanMainMapper; - @Resource private PurchasePlanDetailMapper purchasePlanDetailMapper; + @Resource + private ShiftService shiftService; + @Resource + private ItembasicService itembasicService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private JobUtils jobUtils; @Override public Long createPurchasePlanMain(PurchasePlanMainCreateReqVO createReqVO) { @@ -130,28 +148,79 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - boolean isError = false; -// try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } -// } catch (ServiceException ex) { -// isError = true; -// importRemark += ex.getMessage() + ","; -// } - - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - PurchasePlanMainDO createObj =PurchasePlanMainConvert.INSTANCE.convert(createReqVO); - purchasePlanMainMapper.insert(createObj); - List< PurchasePlanDetailCreateReqVO> subList = createReqVO.getSubList(); - List< PurchasePlanDetailDO> subDOList = PurchasePlanDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for (PurchasePlanDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setNumber(createReqVO.getNumber()); + String messageMain = ""; + //主表的验证 + //校验供应商基础信息 + try { + ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode()); + BeanUtils.copyProperties(createReqVO, shiftDO); + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + //子表的验证 + List subList = createReqVO.getSubList(); + List subDOList = PurchasePlanDetailConvert.INSTANCE.convertList03(subList); + for (PurchasePlanDetailDO purchasePlanDetailDO : subDOList) { + String messageDetail = ""; + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode()); + if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ","; + } +// purchasePlanDetailDO.setProjectCode(itembasicDO.getCode()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验供应商物品 + try { + SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), purchasePlanDetailDO.getItemCode()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + PurchasePlanDetailCreateReqVO purchasePlanDetailCreateReqVO = PurchasePlanDetailConvert.INSTANCE.convert1(purchasePlanDetailDO); + PurchasePlanMainImportErrorVO importVO = PurchasePlanDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchasePlanDetailDO.setNumber(createReqVO.getNumber()); + } + } + + if (errorList.isEmpty()) { + // 判断如果不存在,在进行插入 + PurchasePlanMainDO existPurchaseclaimRequestMainDO = purchasePlanMainMapper.selectByNumber(createReqVO.getNumber()); + if (existPurchaseclaimRequestMainDO == null && mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePlan"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + PurchasePlanMainDO createObj = PurchasePlanMainConvert.INSTANCE.convert(createReqVO); + purchasePlanMainMapper.insert(createObj); + purchasePlanDetailMapper.insertBatch(subDOList); + } else if (existPurchaseclaimRequestMainDO != null && mode != 2) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + PurchasePlanMainDO createObj = PurchasePlanMainConvert.INSTANCE.convert(createReqVO); + purchasePlanMainMapper.updateById(createObj); + purchasePlanDetailMapper.updateBatch(subDOList); + } } - purchasePlanDetailMapper.insertBatch(subDOList); }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java index 935386a4..a73da957 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java @@ -36,8 +36,10 @@ import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.enums.request.RequestStatusState; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.purchase.PurchaseMainService; import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.rule.RuleService; +import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.supplier.SupplierService; import com.win.module.wms.service.supplieritem.SupplieritemService; import com.win.module.wms.util.JobUtils; @@ -90,6 +92,10 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq private PurchasereceiptJobDetailMapper purchasereceiptJobDetailMapper; @Resource private JobUtils jobUtils; + @Resource + private ShiftService shiftService; + @Resource + private PurchaseMainService purchaseMainService; @Override @Transactional diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java index 52271bdf..5fc7eb63 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java @@ -1,18 +1,30 @@ package com.win.module.wms.service.repleinshRequest; import cn.hutool.core.collection.CollUtil; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.wms.controller.repleinshRequest.vo.*; import com.win.module.wms.convert.repleinshRequest.RepleinshRequestDetailConvert; import com.win.module.wms.convert.repleinshRequest.RepleinshRequestMainConvert; +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.repleinshRequest.RepleinshRequestDetailDO; import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.mysql.repleinshRequest.RepleinshRequestDetailMapper; import com.win.module.wms.dal.mysql.repleinshRequest.RepleinshRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.businesstype.BusinesstypeService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.shift.ShiftService; +import com.win.module.wms.service.supplieritem.SupplieritemService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -32,12 +44,25 @@ import static com.win.module.wms.enums.ErrorCodeConstants.REPLEINSH_REQUEST_MAIN @Service @Validated public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainService { - @Resource private RepleinshRequestMainMapper repleinshRequestMainMapper; - @Resource private RepleinshRequestDetailMapper repleinshRequestDetailMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private ItempackagingService itempackagingService; + @Resource + private ShiftService shiftService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private JobUtils jobUtils; + @Resource + private BusinesstypeService businesstypeService; + @Resource + private RequestsettingService requestsettingService; + @Override public Long createRepleinshRequestMain(RepleinshRequestMainCreateReqVO createReqVO) { @@ -97,35 +122,111 @@ public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainServ } @Override - public List importRepleinshRequestMainList(List datas, Integer mode, boolean updatePart) { + public List importRepleinshRequestMainList(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 -> { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - boolean isError = false; + String messageMain = ""; + //主表的验证 + //校验供应商基础信息 // try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } +// ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode()); +// BeanUtils.copyProperties(createReqVO, shiftDO); // } catch (ServiceException ex) { -// isError = true; -// importRemark += ex.getMessage() + ","; +// messageMain += ex.getMessage() + ","; // } - - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - RepleinshRequestMainDO createObj =RepleinshRequestMainConvert.INSTANCE.convert(createReqVO); - repleinshRequestMainMapper.insert(createObj); + //子表的验证 List subList = createReqVO.getSubList(); List subDOList = RepleinshRequestDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for (RepleinshRequestDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setNumber(createReqVO.getNumber()); + for (RepleinshRequestDetailDO purchaseDetailDO : subDOList) { + String messageDetail = ""; + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); + purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1()); + purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2()); + purchaseDetailDO.setItemName(itembasicDO.getName()); + purchaseDetailDO.setProjectCode(itembasicDO.getProject()); + if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + // 校验业务类型相关属性 + try { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentRequest"); + jobUtils.selectItembasicExist(purchaseDetailDO.getItemCode(), businesstypeDO); + businesstypeService.selectBusinesstypeExist(purchaseDetailDO.getToLocationCode()); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + RepleinshRequestDetailCreateReqVO purchaseDetailCreateReqVO = RepleinshRequestDetailConvert.INSTANCE.convert1(purchaseDetailDO); + RepleinshRequestMainImportErrorVO importVO = RepleinshRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchaseDetailDO.setNumber(createReqVO.getNumber()); + purchaseDetailDO.setMasterId(createReqVO.getId()); + purchaseDetailDO.setInventoryStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.INVENTORY_STATUS, "新增")); + } + } + if (errorList.isEmpty()) { + // 判断如果不存在,在进行插入 + if (mode != 3) { + createReqVO.setNumber(""); + createReqVO.setStatus(null); + createReqVO.setFomWarehouseCode(null); + createReqVO.setToWarehouseCode(null); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + RepleinshRequestMainDO createObj = RepleinshRequestMainConvert.INSTANCE.convert(createReqVO); + repleinshRequestMainMapper.insert(createObj); + repleinshRequestDetailMapper.insertBatch(subDOList); + } else if (mode != 2) { + createReqVO.setNumber(""); + createReqVO.setStatus(null); + createReqVO.setFomWarehouseCode(null); + createReqVO.setToWarehouseCode(null); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + RepleinshRequestMainDO createObj = RepleinshRequestMainConvert.INSTANCE.convert(createReqVO); + repleinshRequestMainMapper.updateById(createObj); + repleinshRequestDetailMapper.updateBatch(subDOList); + } } - repleinshRequestDetailMapper.insertBatch(subDOList); }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/sale/SaleMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/sale/SaleMainServiceImpl.java index ea089597..1bcf3bf8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/sale/SaleMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/sale/SaleMainServiceImpl.java @@ -3,19 +3,28 @@ package com.win.module.wms.service.sale; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.sale.vo.*; import com.win.module.wms.convert.sale.SaleDetailConvert; import com.win.module.wms.convert.sale.SaleMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.customer.CustomerDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.sale.SaleDetailDO; import com.win.module.wms.dal.dataobject.sale.SaleMainDO; import com.win.module.wms.dal.mysql.sale.SaleDetailMapper; import com.win.module.wms.dal.mysql.sale.SaleMainMapper; +import com.win.module.wms.service.customer.CustomerService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -37,6 +46,15 @@ public class SaleMainServiceImpl implements SaleMainService { private SaleMainMapper saleMainMapper; @Resource private SaleDetailMapper saleDetailMapper; + @Resource + private CustomerService customerService; + @Resource + private ItembasicService itembasicService; + @Resource + private JobUtils jobUtils; + + + @Override public Long createSaleMain(SaleMainCreateReqVO createReqVO) { // 插入 @@ -122,27 +140,90 @@ public class SaleMainServiceImpl implements SaleMainService { List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - boolean isError = false; -// try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } -// } catch (ServiceException ex) { -// isError = true; -// importRemark += ex.getMessage() + ","; -// } - - SaleMainDO createObj = SaleMainConvert.INSTANCE.convert(createReqVO); - saleMainMapper.insert(createObj); + String messageMain = ""; + //主表的验证 + //校验客户代码 + try { + CustomerDO customerDO = customerService.selectCustomerExist(createReqVO.getCustomerCode()); + if (customerDO==null) { + messageMain += "客户代码" + createReqVO.getCustomerCode() + "无效" + ","; + } + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + + //子表的验证 List subList = createReqVO.getSubList(); List subDOList = SaleDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for (SaleDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setNumber(createReqVO.getNumber()); + for (SaleDetailDO purchaseDetailDO : subDOList) { + String messageDetail = ""; + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); + if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; + } else { +// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1()); +// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2()); +// purchaseDetailDO.setItemName(itembasicDO.getName()); + purchaseDetailDO.setProjectCode(itembasicDO.getProject()); + } + if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; + } + purchaseDetailDO.setProjectCode(itembasicDO.getCode()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + SaleDetailCreateReqVO purchaseDetailCreateReqVO =SaleDetailConvert.INSTANCE.convert1(purchaseDetailDO); + SaleMainImportErrorVO importVO =SaleDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchaseDetailDO.setNumber(createReqVO.getNumber()); + purchaseDetailDO.setStdPackQty(new BigDecimal(0)); + purchaseDetailDO.setStdPackUnit(null); + purchaseDetailDO.setCustomerPackQty(new BigDecimal(0)); + purchaseDetailDO.setCustomerPackUnit(null); + purchaseDetailDO.setConvertRate(new BigDecimal(0)); + purchaseDetailDO.setShippedQty(new BigDecimal(0)); + purchaseDetailDO.setReceivedQty(new BigDecimal(0)); + purchaseDetailDO.setReturnedQty(new BigDecimal(0)); + + } + } + + if (errorList.isEmpty()) { + // 判断如果不存在,在进行插入 + SaleMainDO existPurchaseclaimRequestMainDO = saleMainMapper.selectByNumber(createReqVO.getNumber()); + if (existPurchaseclaimRequestMainDO == null && mode != 3) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SaleOrder"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + SaleMainDO createObj = SaleMainConvert.INSTANCE.convert(createReqVO); + saleMainMapper.insert(createObj); + saleDetailMapper.insertBatch(subDOList); + } else if (existPurchaseclaimRequestMainDO != null && mode != 2) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SaleOrder"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + SaleMainDO createObj = SaleMainConvert.INSTANCE.convert(createReqVO); + saleMainMapper.updateById(createObj); + saleDetailMapper.updateBatch(subDOList); + } } - saleDetailMapper.insertBatch(subDOList); }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java index 7476232d..d88c71dd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java @@ -1,18 +1,35 @@ package com.win.module.wms.service.supplierdeliverRequest; import cn.hutool.core.collection.CollUtil; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.supplierdeliverRequest.vo.*; import com.win.module.wms.convert.supplierdeliverRequest.SupplierdeliverRequestDetailConvert; import com.win.module.wms.convert.supplierdeliverRequest.SupplierdeliverRequestMainConvert; +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.purchasePlan.PurchasePlanDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.shift.ShiftDO; import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestDetailDO; import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO; +import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverRequestDetailMapper; import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.purchasePlan.PurchasePlanMainService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.shift.ShiftService; +import com.win.module.wms.service.supplieritem.SupplieritemService; +import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -37,6 +54,20 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq private SupplierdeliverRequestMainMapper supplierdeliverRequestMainMapper; @Resource private SupplierdeliverRequestDetailMapper supplierdeliverRequestDetailMapper; + @Resource + private PurchasePlanMainService purchasePlanMainService; + @Resource + private ItembasicService itembasicService; + @Resource + private ShiftService shiftService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private JobUtils jobUtils; + @Resource + private RequestsettingService requestsettingService; @Override public Long createSupplierdeliverRequestMain(SupplierdeliverRequestMainCreateReqVO createReqVO) { @@ -103,28 +134,119 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - boolean isError = false; + String messageMain = ""; + //主表的验证 + //校验供应商基础信息 + try { + ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode()); + BeanUtils.copyProperties(createReqVO, shiftDO); + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + + //校验供应商送货策略 // try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } +// RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null); +// String json = ruleRespVO.getConfiguration(); // } catch (ServiceException ex) { -// isError = true; // importRemark += ex.getMessage() + ","; // } - - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - SupplierdeliverRequestMainDO createObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO); - supplierdeliverRequestMainMapper.insert(createObj); + //子表的验证 List subList = createReqVO.getSubList(); List subDOList = SupplierdeliverRequestDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for (SupplierdeliverRequestDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setNumber(createReqVO.getNumber()); + for (SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO : subDOList) { + String messageDetail = ""; + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(supplierdeliverRequestDetailDO.getItemCode()); + if (itembasicDO.getUom() != supplierdeliverRequestDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + supplierdeliverRequestDetailDO.getUom() + ","; + } + supplierdeliverRequestDetailDO.setProjectCode(itembasicDO.getCode()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + // 校验供应商物品 + try { + SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), supplierdeliverRequestDetailDO.getItemCode()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + // 校验要货计划 + try { + PurchasePlanDetailDO purchasePlanDetailDO = purchasePlanMainService.selectPurchasePlan(createReqVO.getNumber(), createReqVO.getSupplierCode(), + supplierdeliverRequestDetailDO.getPoNumber(), supplierdeliverRequestDetailDO.getPoLine(), supplierdeliverRequestDetailDO.getItemCode()); + if ((purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())).compareTo(supplierdeliverRequestDetailDO.getQty()) == -1) { + messageDetail += "供应商发货数量" + supplierdeliverRequestDetailDO.getQty() + "大于订单行" + supplierdeliverRequestDetailDO.getPoLine() + "的未发货数量" + purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty()) + ","; + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + SupplierdeliverRequestDetailCreateReqVO supplierdeliverRequestDetailCreateReqVO = SupplierdeliverRequestDetailConvert.INSTANCE.convert1(supplierdeliverRequestDetailDO); + SupplierdeliverRequestMainImportErrorVO importVO = SupplierdeliverRequestDetailConvert.INSTANCE.convert(createReqVO, supplierdeliverRequestDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + supplierdeliverRequestDetailDO.setNumber(createReqVO.getNumber()); + supplierdeliverRequestDetailDO.setMasterId(createReqVO.getId()); + supplierdeliverRequestDetailDO.setAltBatch(""); + } + } + + if (errorList.isEmpty()) { + // 判断如果不存在,在进行插入 + SupplierdeliverRequestMainDO existPurchaseclaimRequestMainDO = supplierdeliverRequestMainMapper.selectByNumberAndAsnNumber(createReqVO.getNumber(), createReqVO.getAsnNumber()); + if (existPurchaseclaimRequestMainDO == null && mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); + createReqVO.setNumber(number); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("SupplierDeliverRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + SupplierdeliverRequestMainDO createObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO); + supplierdeliverRequestMainMapper.insert(createObj); + supplierdeliverRequestDetailMapper.insertBatch(subDOList); + } else if (existPurchaseclaimRequestMainDO != null && mode != 2) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); + createReqVO.setNumber(number); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("SupplierDeliverRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + SupplierdeliverRequestMainDO createObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO); + supplierdeliverRequestMainMapper.updateById(createObj); + supplierdeliverRequestDetailMapper.updateBatch(subDOList); + } } - supplierdeliverRequestDetailMapper.insertBatch(subDOList); }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainService.java index 3635aead..ea663e61 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainService.java @@ -1,15 +1,13 @@ package com.win.module.wms.service.transferissueRequest; -import java.util.*; -import javax.validation.*; - import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainCreateReqVO; -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainExportReqVO; -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainPageReqVO; -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainUpdateReqVO; -import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.transferissueRequest.vo.*; +import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; /** * 调拨出库申请主 Service 接口 @@ -79,4 +77,14 @@ public interface TransferissueRequestMainService { */ List getTransferissueRequestMainList(TransferissueRequestMainExportReqVO exportReqVO); + /** + * 批量导入采计划外入库信息 + * @param datas 导入计划外入库主信息列表 + * @param mode 导入模式1更新2追加3覆盖 + * @param updatePart 是否支持更新 + * @return 导入结果 + */ + public List importTransferissueRequestMainList(List datas, Integer mode, boolean updatePart); + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainServiceImpl.java index 0b595cd7..c3418cfe 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainServiceImpl.java @@ -1,24 +1,43 @@ package com.win.module.wms.service.transferissueRequest; +import cn.hutool.core.collection.CollUtil; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainCreateReqVO; -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainExportReqVO; -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainPageReqVO; -import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainUpdateReqVO; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; - -import java.util.*; - -import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO; import com.win.framework.common.pojo.PageResult; - +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.transferissueRequest.vo.*; +import com.win.module.wms.convert.transferissueRequest.TransferissueRequestDetailConvert; import com.win.module.wms.convert.transferissueRequest.TransferissueRequestMainConvert; +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.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestDetailDO; +import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO; +import com.win.module.wms.dal.mysql.transferissueRequest.TransferissueRequestDetailMapper; import com.win.module.wms.dal.mysql.transferissueRequest.TransferissueRequestMainMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.businesstype.BusinesstypeService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.shift.ShiftService; +import com.win.module.wms.service.supplieritem.SupplieritemService; +import com.win.module.wms.util.JobUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import 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.*; +import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.ErrorCodeConstants.TRANSFERISSUE_REQUEST_MAIN_NOT_EXISTS; /** * 调拨出库申请主 Service 实现类 @@ -31,6 +50,25 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest @Resource private TransferissueRequestMainMapper transferissueRequestMainMapper; + @Resource + private TransferissueRequestDetailMapper transferissueRequestDetailMapper; + @Resource + private ShiftService shiftService; + @Resource + private ItembasicService itembasicService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private JobUtils jobUtils; + @Resource + private LocationService locationService; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private RequestsettingService requestsettingService; + @Resource + private BusinesstypeService businesstypeService; + @Override public Long createTransferissueRequestMain(TransferissueRequestMainCreateReqVO createReqVO) { @@ -49,6 +87,7 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest TransferissueRequestMainDO updateObj = TransferissueRequestMainConvert.INSTANCE.convert(updateReqVO); transferissueRequestMainMapper.updateById(updateObj); } + @Override public PageResult getTransferissueRequestMainSenior(CustomConditions conditions) { return transferissueRequestMainMapper.selectSenior(conditions); @@ -88,4 +127,116 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest return transferissueRequestMainMapper.selectList(exportReqVO); } + public List importTransferissueRequestMainList(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 -> { + // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList + String messageMain = ""; + //主表的验证 + //子表的验证 + List subList = createReqVO.getSubList(); + List subDOList = TransferissueRequestDetailConvert.INSTANCE.convertList03(subList); + for (TransferissueRequestDetailDO purchasePlanDetailDO : subDOList) { + String messageDetail = ""; + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode()); + if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ","; + } else { + purchasePlanDetailDO.setItemDesc1(itembasicDO.getDesc1()); + purchasePlanDetailDO.setItemDesc2(itembasicDO.getDesc2()); + purchasePlanDetailDO.setItemName(itembasicDO.getName()); + purchasePlanDetailDO.setProjectCode(itembasicDO.getProject()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验业务类型 + try { + BusinesstypeDO businesstypeDO = businesstypeService.selectBusinesstypeExist("UnplannedReceipt"); + jobUtils.ifInToLocationType(purchasePlanDetailDO.getToLocationCode(), businesstypeDO); +// jobUtils.ifInToLocationType(createReqVO.GETf(), businesstypeDO); + jobUtils.ifOutInventoryStatuses(purchasePlanDetailDO.getInventoryStatus(), businesstypeDO); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验库存余额是否存在 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add(purchasePlanDetailDO.getInventoryStatus()); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchasePlanDetailDO.getItemCode(), purchasePlanDetailDO.getPackingNumber() + , purchasePlanDetailDO.getBatch(), purchasePlanDetailDO.getToLocationCode(), inventoryStatus); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + TransferissueRequestDetailCreateReqVO purchasePlanDetailCreateReqVO = TransferissueRequestDetailConvert.INSTANCE.convert1(purchasePlanDetailDO); + TransferissueRequestMainImportErrorVO importVO = TransferissueRequestDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchasePlanDetailDO.setNumber(createReqVO.getNumber()); + purchasePlanDetailDO.setMasterId(createReqVO.getId()); + } + } + + if (errorList.isEmpty()) { + TransferissueRequestMainDO existPurchaseclaimRequestMainDO = transferissueRequestMainMapper.selectByCarrierCode(createReqVO.getCarrierCode()); + // 判断如果不存在,在进行插入 + if (existPurchaseclaimRequestMainDO == null &&mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_REQUEST.getCode()); + createReqVO.setNumber(number); + + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + TransferissueRequestMainDO createObj = TransferissueRequestMainConvert.INSTANCE.convert(createReqVO); + transferissueRequestMainMapper.insert(createObj); + transferissueRequestDetailMapper.insertBatch(subDOList); + } else if (existPurchaseclaimRequestMainDO == null &&mode != 2) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_REQUEST.getCode()); + createReqVO.setNumber(number); + + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + TransferissueRequestMainDO createObj = TransferissueRequestMainConvert.INSTANCE.convert(createReqVO); + transferissueRequestMainMapper.updateById(createObj); + transferissueRequestDetailMapper.updateBatch(subDOList); + } + } + }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainService.java index 53a752bf..0758c13e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainService.java @@ -1,15 +1,13 @@ package com.win.module.wms.service.unplannedreceiptRequest; -import java.util.*; -import javax.validation.*; - import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainCreateReqVO; -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainExportReqVO; -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainPageReqVO; -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainUpdateReqVO; -import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.unplannedreceiptRequest.vo.*; +import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; /** * 计划外入库申请主 Service 接口 @@ -80,4 +78,15 @@ public interface UnplannedreceiptRequestMainService { */ List getUnplannedreceiptRequestMainList(UnplannedreceiptRequestMainExportReqVO exportReqVO); + + + /** + * 批量导入采计划外入库信息 + * @param datas 导入计划外入库主信息列表 + * @param mode 导入模式1更新2追加3覆盖 + * @param updatePart 是否支持更新 + * @return 导入结果 + */ + public List importUnplannedreceiptRequestMainList(List datas, Integer mode, boolean updatePart); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainServiceImpl.java index 9a9e07ff..479d629c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainServiceImpl.java @@ -1,24 +1,43 @@ package com.win.module.wms.service.unplannedreceiptRequest; +import cn.hutool.core.collection.CollUtil; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainCreateReqVO; -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainExportReqVO; -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainPageReqVO; -import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainUpdateReqVO; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; - -import java.util.*; - -import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO; import com.win.framework.common.pojo.PageResult; - +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.unplannedreceiptRequest.vo.*; +import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestDetailConvert; import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestMainConvert; +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.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO; +import com.win.module.wms.dal.mysql.unplannedreceiptRequest.UnplannedreceiptRequestDetailMapper; import com.win.module.wms.dal.mysql.unplannedreceiptRequest.UnplannedreceiptRequestMainMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.businesstype.BusinesstypeService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.shift.ShiftService; +import com.win.module.wms.service.supplieritem.SupplieritemService; +import com.win.module.wms.util.JobUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import 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.*; +import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.ErrorCodeConstants.UNPLANNEDRECEIPT_REQUEST_MAIN_NOT_EXISTS; /** * 计划外入库申请主 Service 实现类 @@ -31,6 +50,25 @@ public class UnplannedreceiptRequestMainServiceImpl implements UnplannedreceiptR @Resource private UnplannedreceiptRequestMainMapper unplannedreceiptRequestMainMapper; + @Resource + private UnplannedreceiptRequestDetailMapper unplannedreceiptRequestDetailMapper; + @Resource + private ShiftService shiftService; + @Resource + private ItembasicService itembasicService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private JobUtils jobUtils; + @Resource + private LocationService locationService; + @Resource + private BusinesstypeService businesstypeService; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private RequestsettingService requestsettingService; + @Override public Long createUnplannedreceiptRequestMain(UnplannedreceiptRequestMainCreateReqVO createReqVO) { @@ -49,10 +87,12 @@ public class UnplannedreceiptRequestMainServiceImpl implements UnplannedreceiptR UnplannedreceiptRequestMainDO updateObj = UnplannedreceiptRequestMainConvert.INSTANCE.convert(updateReqVO); unplannedreceiptRequestMainMapper.updateById(updateObj); } + @Override public PageResult getUnplannedreceiptRequestMainSenior(CustomConditions conditions) { return unplannedreceiptRequestMainMapper.selectSenior(conditions); } + @Override public void deleteUnplannedreceiptRequestMain(Long id) { // 校验存在 @@ -87,4 +127,112 @@ public class UnplannedreceiptRequestMainServiceImpl implements UnplannedreceiptR return unplannedreceiptRequestMainMapper.selectList(exportReqVO); } + public List importUnplannedreceiptRequestMainList(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 -> { + // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList + String messageMain = ""; + //主表的验证 + //子表的验证 + List subList = createReqVO.getSubList(); + List subDOList = UnplannedreceiptRequestDetailConvert.INSTANCE.convertList03(subList); + for (UnplannedreceiptRequestDetailDO purchasePlanDetailDO : subDOList) { + String messageDetail = ""; + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode()); + if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ","; + } else { + purchasePlanDetailDO.setItemDesc1(itembasicDO.getDesc1()); + purchasePlanDetailDO.setItemDesc2(itembasicDO.getDesc2()); + purchasePlanDetailDO.setItemName(itembasicDO.getName()); + purchasePlanDetailDO.setProjectCode(itembasicDO.getProject()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + //校验库位基础信息 + try { + LocationDO locationDO = locationService.selectLocation(purchasePlanDetailDO.getToLocationCode()); + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + + // 校验业务类型 + try { + BusinesstypeDO businesstypeDO = businesstypeService.selectBusinesstypeExist("UnplannedReceipt"); + jobUtils.ifInToLocationType(purchasePlanDetailDO.getToLocationCode(), businesstypeDO); + jobUtils.ifOutInventoryStatuses(purchasePlanDetailDO.getInventoryStatus(), businesstypeDO); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + UnplannedreceiptRequestDetailCreateReqVO purchasePlanDetailCreateReqVO = UnplannedreceiptRequestDetailConvert.INSTANCE.convert1(purchasePlanDetailDO); + UnplannedreceiptRequestMainImportErrorVO importVO = UnplannedreceiptRequestDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchasePlanDetailDO.setNumber(createReqVO.getNumber()); + purchasePlanDetailDO.setMasterId(createReqVO.getId()); + } + } + + if (errorList.isEmpty()) { + // 判断如果不存在,在进行插入 + if (mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("UnplannedReceiptRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.UNPLANNED_RECEIPT_REQUEST.getCode()); + createReqVO.setNumber(number); + + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("UnplannedReceiptRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + UnplannedreceiptRequestMainDO createObj = UnplannedreceiptRequestMainConvert.INSTANCE.convert(createReqVO); + unplannedreceiptRequestMainMapper.insert(createObj); + unplannedreceiptRequestDetailMapper.insertBatch(subDOList); + } else if (mode != 2) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("UnplannedReceiptRequest"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.UNPLANNED_RECEIPT_REQUEST.getCode()); + createReqVO.setNumber(number); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("UnplannedReceiptRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + UnplannedreceiptRequestMainDO createObj = UnplannedreceiptRequestMainConvert.INSTANCE.convert(createReqVO); + unplannedreceiptRequestMainMapper.updateById(createObj); + unplannedreceiptRequestDetailMapper.updateBatch(subDOList); + } + } + }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java index 3c60904b..dc684d6e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java @@ -3,16 +3,30 @@ package com.win.module.wms.service.work; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.work.vo.*; import com.win.module.wms.convert.work.WorkDetailConvert; import com.win.module.wms.convert.work.WorkMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.customeritem.CustomeritemDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; +import com.win.module.wms.dal.dataobject.saleprice.SalepriceDO; import com.win.module.wms.dal.dataobject.work.WorkDetailDO; import com.win.module.wms.dal.dataobject.work.WorkMainDO; import com.win.module.wms.dal.mysql.work.WorkDetailMapper; import com.win.module.wms.dal.mysql.work.WorkMainMapper; +import com.win.module.wms.service.customeritem.CustomeritemService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.saleprice.SalepriceService; +import com.win.module.wms.service.shift.ShiftService; +import com.win.module.wms.service.supplieritem.SupplieritemService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -35,9 +49,22 @@ public class WorkMainServiceImpl implements WorkMainService { @Resource private WorkMainMapper workMainMapper; - @Resource private WorkDetailMapper workDetailMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private ItempackagingService itempackagingService; + @Resource + private ShiftService shiftService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private CustomeritemService customeritemService; + @Resource + private SalepriceService salepriceService; + @Resource + private JobUtils jobUtils; @Override public Long createWorkMain(WorkMainCreateReqVO createReqVO) { @@ -85,6 +112,7 @@ public class WorkMainServiceImpl implements WorkMainService { public PageResult getWorkMainPage(WorkMainPageReqVO pageReqVO) { return workMainMapper.selectPage(pageReqVO); } + @Override public PageResult getWorkMainSenior(CustomConditions conditions) { return workMainMapper.selectSenior(conditions); @@ -96,52 +124,133 @@ public class WorkMainServiceImpl implements WorkMainService { } @Override - public WorkDetailDO selectWorkExist(String pnumber, String pitemCode){ + public WorkDetailDO selectWorkExist(String pnumber, String pitemCode) { QueryWrapper queryWrapperMain = new QueryWrapper(); - queryWrapperMain.eq("number",pnumber); - queryWrapperMain.eq("available","TURE"); + queryWrapperMain.eq("number", pnumber); + queryWrapperMain.eq("available", "TURE"); WorkMainDO workMainDO = workMainMapper.selectOne(queryWrapperMain); - if(workMainDO != null){ + if (workMainDO != null) { QueryWrapper queryWrapperDetail = new QueryWrapper(); - queryWrapperDetail.eq("item_code",pitemCode); + queryWrapperDetail.eq("item_code", pitemCode); WorkDetailDO workDetailDO = workDetailMapper.selectOne(queryWrapperDetail); - if(workDetailDO != null){ + if (workDetailDO != null) { return workDetailDO; - }else { - throw new UtilException("生产订单明细:"+ pitemCode + "无效"); + } else { + throw new UtilException("生产订单明细:" + pitemCode + "无效"); } - }throw exception(WORK_MAIN_NOT_EXISTS); + } + throw exception(WORK_MAIN_NOT_EXISTS); } @Override - public List importWorkMainList(List datas, Integer mode, boolean updatePart) { + public List importWorkMainList(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 -> { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - boolean isError = false; -// try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } -// } catch (ServiceException ex) { -// isError = true; -// importRemark += ex.getMessage() + ","; -// } - - WorkMainDO createObj = WorkMainConvert.INSTANCE.convert(createReqVO); - workMainMapper.insert(createObj); + String messageMain = ""; + //主表的验证 + //子表的验证 List subList = createReqVO.getSubList(); List subDOList = WorkDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for (WorkDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setNumber(createReqVO.getNumber()); + for (WorkDetailDO purchaseDetailDO : subDOList) { + String messageDetail = ""; + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); + if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; + } else { +// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1()); +// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2()); +// purchaseDetailDO.setItemName(itembasicDO.getName()); + purchaseDetailDO.setProjectCode(itembasicDO.getProject()); + } + if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; + } + purchaseDetailDO.setProjectCode(itembasicDO.getCode()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + // 校验物品标包信息 + try { + ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(purchaseDetailDO.getItemCode()); +// purchaseDetailDO.setStdPackUnit(itempackagingDO.getStdPackUnit()); +// purchaseDetailDO.setStdPackQty(itempackagingDO.getStdPackQty()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验客户物品基础信息 + try { + CustomeritemDO customeritemDO = customeritemService.selectCustomeritemExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode()); + if (customeritemDO == null) { + messageDetail += "未查找到客户" + createReqVO.getCustomerCode() + "与物品" + purchaseDetailDO.getItemCode() + "的对应关系" + ","; + } else { + //根据customeritemdto赋值 + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验销售价格 + try { + SalepriceDO salepriceDO = salepriceService.selectItemPackagingExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode()); + if (salepriceDO != null) { + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + + WorkDetailCreateReqVO purchaseDetailCreateReqVO = WorkDetailConvert.INSTANCE.convert1(purchaseDetailDO); + WorkMainImportErrorVO importVO = WorkDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); + //进行子表的错误统计 + //主表没有错误 写入库里 + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + purchaseDetailDO.setNumber(createReqVO.getNumber()); +// purchaseDetailDO.setMasterId(createReqVO.getId()); + } + } + + if (errorList.isEmpty()) { + // 判断如果不存在,在进行插入 + WorkMainDO existPurchaseclaimRequestMainDO = workMainMapper.selectByNumber(createReqVO.getNumber()); + if (existPurchaseclaimRequestMainDO == null && mode != 3) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + createReqVO.setType(null); + createReqVO.setVersion(null); + createReqVO.setCurrentStage(null); + WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO); + workMainMapper.insert(createObj); + workDetailMapper.insertBatch(subDOList); + } else if (existPurchaseclaimRequestMainDO != null && mode != 2) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder"); + if (businesstypeDO != null) { + createReqVO.setBusinessType(businesstypeDO.getCode()); + } + createReqVO.setType(null); + createReqVO.setVersion(null); + createReqVO.setCurrentStage(null); + WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO); + workMainMapper.updateById(createObj); + workDetailMapper.updateBatch(subDOList); + } } - workDetailMapper.insertBatch(subDOList); }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } }