diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index d410f9e3..690210e9 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java @@ -658,6 +658,7 @@ public interface ErrorCodeConstants { ErrorCode DELIVER_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_000_118_001, "发货计划子不存在"); //发货申请ErrorCode ErrorCode DELIVER_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_119_000, "发货申请主不存在"); + ErrorCode DELIVER_REQUEST_NOT_EXISTS = new ErrorCode(1_000_119_000, "发货申请不存在"); ErrorCode DELIVER_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_119_001, "发货申请子不存在"); //发货任务ErrorCode ErrorCode DELIVER_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_120_000, "发货任务主不存在"); @@ -687,6 +688,8 @@ public interface ErrorCodeConstants { //客户结算申请ErrorCode ErrorCode CUSTOMERSETTLE_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_127_000, "客户结算申请主不存在"); ErrorCode CUSTOMERSETTLE_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_127_001, "客户结算申请子不存在"); + + ErrorCode CUSTOMERSETTLE_REQUEST_NOT_EXISTS = new ErrorCode(1_000_127_001, "客户结算申请不存在"); //客户结算记录ErrorCode ErrorCode CUSTOMERSETTLE_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_128_000, "客户结算记录主不存在"); ErrorCode CUSTOMERSETTLE_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_128_001, "客户结算记录子不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/CustomersettleRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/CustomersettleRequestMainController.java index 6968cca7..ec3cb6ca 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/CustomersettleRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/CustomersettleRequestMainController.java @@ -1,8 +1,11 @@ package com.win.module.wms.controller.customersettleRequest; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.excel.core.util.ConvertUtil; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.controller.customersettleRequest.vo.CustomersettleRequestMainCreateReqVO; +import io.swagger.v3.oas.annotations.Parameters; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -13,6 +16,8 @@ import io.swagger.v3.oas.annotations.Operation; import javax.validation.*; import javax.servlet.http.*; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import java.io.IOException; @@ -29,6 +34,7 @@ import com.win.module.wms.controller.customersettleRequest.vo.*; import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestMainDO; import com.win.module.wms.convert.customersettleRequest.CustomersettleRequestMainConvert; import com.win.module.wms.service.customersettleRequest.CustomersettleRequestMainService; +import org.springframework.web.multipart.MultipartFile; @Tag(name = "管理后台 - 客户结算申请主") @RestController @@ -120,4 +126,40 @@ public class CustomersettleRequestMainController { ExcelUtils.write(response, "客户结算申请主.xls", "数据", CustomersettleRequestMainExcelVO.class, datas); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入制客户结算申请信息模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = Arrays.asList( + + ); + + // 输出 + ExcelUtils.write(response, "客户退货申请信息导入模板.xls", "客户退货申请信息列表", CustomersettleRequestMainImportVO.class, list); + } + @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:inspect-request-main:import')") + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + List list = ExcelUtils.read(file, CustomersettleRequestMainImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(CustomersettleRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = customersettleRequestMainService.customersettleRequestMainService(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/customersettleRequest/vo/CustomersettleRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestImportErrorVO.java new file mode 100644 index 00000000..3a361c7b --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestImportErrorVO.java @@ -0,0 +1,23 @@ +package com.win.module.wms.controller.customersettleRequest.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 CustomersettleRequestImportErrorVO extends CustomersettleRequestMainImportVO { + + @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/customersettleRequest/vo/CustomersettleRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestMainBaseVO.java index 6cd0b710..0ef5575d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.customersettleRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -41,6 +42,7 @@ public class CustomersettleRequestMainBaseVO { private String fromAreaCodes; @Schema(description = "单据号") + @OnlyOne private String number; @Schema(description = "业务类型") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestMainCreateReqVO.java index f99fe6c6..a3add1ee 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestMainCreateReqVO.java @@ -1,12 +1,18 @@ package com.win.module.wms.controller.customersettleRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailCreateReqVO; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 客户结算申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class CustomersettleRequestMainCreateReqVO extends CustomersettleRequestMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestMainImportVO.java new file mode 100644 index 00000000..e1a3a726 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestMainImportVO.java @@ -0,0 +1,39 @@ +package com.win.module.wms.controller.customersettleRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class CustomersettleRequestMainImportVO { + //主表字段 + @ExcelProperty("发货记录单号") + private String deliverRecordNumber; + + //子表字段 + @ExcelProperty("销售订单号") + private String soNumber; + + @ExcelProperty("销售订单行") + private String soLine; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("批次") + private String batch; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainImportVO.java index e6e415cb..a39f6c85 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainImportVO.java @@ -1,6 +1,9 @@ package com.win.module.wms.controller.deliverPlan.vo; import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -40,6 +43,8 @@ public class DeliverPlanMainImportVO { private String itemCode; @ExcelProperty("计划数量") private BigDecimal qty; - @ExcelProperty("计量单位") + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) private String uom; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/DeliverRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/DeliverRequestMainController.java index a1ed56d7..8690a32d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/DeliverRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/DeliverRequestMainController.java @@ -1,11 +1,15 @@ package com.win.module.wms.controller.deliverRequest; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.framework.excel.core.util.ConvertUtil; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.convert.deliverRequest.DeliverRequestDetailConvert; import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.deliverRequest.DeliverRequestDetailService; +import io.swagger.v3.oas.annotations.Parameters; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -16,6 +20,8 @@ import io.swagger.v3.oas.annotations.Operation; import javax.validation.*; import javax.servlet.http.*; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import java.io.IOException; @@ -32,6 +38,7 @@ import com.win.module.wms.controller.deliverRequest.vo.*; import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; import com.win.module.wms.convert.deliverRequest.DeliverRequestMainConvert; import com.win.module.wms.service.deliverRequest.DeliverRequestMainService; +import org.springframework.web.multipart.MultipartFile; @Tag(name = "管理后台 - 发货申请主") @RestController @@ -146,4 +153,39 @@ public class DeliverRequestMainController { 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[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(7, uom); + // 输出 + ExcelUtils.write(response, "发货申请导入模板.xlsx", "发料申请信息列表", DeliverRequestImportVO.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:inspect-request-main:import')") + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + List list = ExcelUtils.read(file, DeliverRequestImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(DeliverRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = deliverRequestMainService.importDeliverRequestList(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/deliverRequest/vo/DeliverRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestImportErrorVO.java new file mode 100644 index 00000000..c9bf5676 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestImportErrorVO.java @@ -0,0 +1,24 @@ +package com.win.module.wms.controller.deliverRequest.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 DeliverRequestImportErrorVO extends DeliverRequestImportVO { + + @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/deliverRequest/vo/DeliverRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestImportVO.java new file mode 100644 index 00000000..f1a62524 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestImportVO.java @@ -0,0 +1,55 @@ +package com.win.module.wms.controller.deliverRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import java.math.BigDecimal; +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 DeliverRequestImportVO { + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("客户") + private String customerCode; + + @ExcelProperty("计划日期") + private String planDate; + + + + //子表数据 + @ExcelProperty("销售订单号") + private String soNumber; + + @ExcelProperty("销售订单行") + private BigDecimal soLine; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("计划数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainBaseVO.java index aa50ad97..9066ab42 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.deliverRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -56,6 +57,7 @@ public class DeliverRequestMainBaseVO { private String fromAreaCodes; @Schema(description = "单据号") + @OnlyOne private String number; @Schema(description = "业务类型") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainCreateReqVO.java index 6028b684..0bb73981 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainCreateReqVO.java @@ -1,12 +1,18 @@ package com.win.module.wms.controller.deliverRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailCreateReqVO; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 发货申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class DeliverRequestMainCreateReqVO extends DeliverRequestMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java index 7b846100..567a7eff 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java @@ -146,7 +146,7 @@ public class ProductputawayRequestMainController { @PostMapping("/import") - @Operation(summary = "导入采购索赔基本信息") + @Operation(summary = "导入制品上架申请基本信息") @Parameters({ @Parameter(name = "file", description = "Excel 文件", required = true), @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), @@ -164,7 +164,7 @@ public class ProductputawayRequestMainController { Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); if(!errorList.isEmpty()) { - String url = ExcelUtils.writeLocalFile("采购索赔基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); + String url = ExcelUtils.writeLocalFile("制品上架申请基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); returnMap.put("errorFile", url); } return success(returnMap); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/ProductscrapRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/ProductscrapRequestMainController.java index 09eed908..46caa3ce 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/ProductscrapRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/ProductscrapRequestMainController.java @@ -152,15 +152,11 @@ public class ProductscrapRequestMainController { @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", "制品报废申请信息列表", ProductscrapRequestMainImportVO.class, list, mapDropDown); + + + ExcelUtils.write(response, "制品报废申请信息导入模板.xlsx", "制品报废申请信息列表", ProductscrapRequestMainImportVO.class, list); } @PostMapping("/import") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customersettleRequest/CustomersettleRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customersettleRequest/CustomersettleRequestDetailConvert.java index d9b040f9..bb0f1be1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customersettleRequest/CustomersettleRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customersettleRequest/CustomersettleRequestDetailConvert.java @@ -4,11 +4,11 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.customersettleRequest.vo.CustomersettleRequestDetailCreateReqVO; -import com.win.module.wms.controller.customersettleRequest.vo.CustomersettleRequestDetailExcelVO; -import com.win.module.wms.controller.customersettleRequest.vo.CustomersettleRequestDetailRespVO; -import com.win.module.wms.controller.customersettleRequest.vo.CustomersettleRequestDetailUpdateReqVO; +import com.win.module.wms.controller.customersettleRequest.vo.*; +import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestDetailDO; @@ -33,5 +33,20 @@ public interface CustomersettleRequestDetailConvert { PageResult convertPage(PageResult page); List convertList02(List list); + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + CustomersettleRequestDetailExcelVO convert(CustomersettleRequestMainDO mainDO, CustomersettleRequestDetailDO detailDO); + + CustomersettleRequestImportErrorVO convert(CustomersettleRequestMainCreateReqVO mainVo, CustomersettleRequestDetailCreateReqVO detailVo); + + CustomersettleRequestDetailCreateReqVO convert1(CustomersettleRequestDetailDO detailDO); + + List convertList03(List list); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRequest/DeliverRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRequest/DeliverRequestDetailConvert.java index 31109d47..641b41c8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRequest/DeliverRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRequest/DeliverRequestDetailConvert.java @@ -4,11 +4,11 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailCreateReqVO; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailExcelVO; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailRespVO; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailUpdateReqVO; +import com.win.module.wms.controller.deliverRequest.vo.*; +import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO; @@ -34,4 +34,23 @@ public interface DeliverRequestDetailConvert { List convertList02(List list); + List convertList03(List list); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + DeliverRequestDetailExcelVO convert(DeliverRequestMainDO mainDO, DeliverRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + DeliverRequestImportErrorVO convert(DeliverRequestMainCreateReqVO mainVo, DeliverRequestDetailCreateReqVO detailVo); + + DeliverRequestDetailCreateReqVO convert1(DeliverRequestDetailDO detailDO); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customersettleRequest/CustomersettleRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customersettleRequest/CustomersettleRequestMainMapper.java index c7a23588..ee58c854 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customersettleRequest/CustomersettleRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customersettleRequest/CustomersettleRequestMainMapper.java @@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.customersettleRequest.vo.CustomersettleRequestMainExportReqVO; import com.win.module.wms.controller.customersettleRequest.vo.CustomersettleRequestMainPageReqVO; +import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestMainDO; import org.apache.ibatis.annotations.Mapper; @@ -48,6 +49,10 @@ public interface CustomersettleRequestMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } + + default CustomersettleRequestMainDO selectByDeliverrecordnumberAndSupplierCode(String deliverrecordnumber) { + return selectOne(CustomersettleRequestMainDO::getDeliverRecordNumber,deliverrecordnumber); + } default List selectList(CustomersettleRequestMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(CustomersettleRequestMainDO::getDeliverRecordNumber, reqVO.getDeliverRecordNumber()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestMainMapper.java index f13bad8a..993c933f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestMainMapper.java @@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainExportReqVO; import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainPageReqVO; import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import org.apache.ibatis.annotations.Mapper; /** @@ -90,4 +91,8 @@ public interface DeliverRequestMainMapper extends BaseMapperX getCustomersettleRequestMainList(CustomersettleRequestMainExportReqVO exportReqVO); + + public List customersettleRequestMainService(List datas, Integer mode, boolean updatePart); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java index 0ccf1ccf..e3936c3b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java @@ -1,14 +1,33 @@ package com.win.module.wms.service.customersettleRequest; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.exceptions.UtilException; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.customersettleRequest.vo.CustomersettleRequestMainCreateReqVO; -import com.win.module.wms.controller.customersettleRequest.vo.CustomersettleRequestMainExportReqVO; -import com.win.module.wms.controller.customersettleRequest.vo.CustomersettleRequestMainPageReqVO; -import com.win.module.wms.controller.customersettleRequest.vo.CustomersettleRequestMainUpdateReqVO; +import com.win.framework.common.util.validation.ValidationUtils; +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.customersettleRequest.vo.*; +import com.win.module.wms.convert.customersettleRequest.CustomersettleRequestDetailConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestDetailDO; +import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; +import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.customersettleRequest.CustomersettleRequestDetailMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.deliverRecord.DeliverRecordMainService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.validation.Validator; + +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.*; import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestMainDO; @@ -32,6 +51,22 @@ public class CustomersettleRequestMainServiceImpl implements CustomersettleReque @Resource private CustomersettleRequestMainMapper customersettleRequestMainMapper; + @Resource + private CustomersettleRequestDetailMapper customersettleRequestDetailMapper; + + @Resource + private DeliverRecordMainService deliverRecordMainService; + + @Resource + private RequestsettingService requestsettingService; + + @Resource + private JobUtils jobUtils; + @Resource + private Validator validator; + + @Resource + private SerialNumberApi serialNumberApi; @Override public Long createCustomersettleRequestMain(CustomersettleRequestMainCreateReqVO createReqVO) { // 插入 @@ -87,4 +122,114 @@ public class CustomersettleRequestMainServiceImpl implements CustomersettleReque return customersettleRequestMainMapper.selectList(exportReqVO); } + @Override + @Transactional + public List customersettleRequestMainService(List datas, Integer mode, boolean updatePart){ + if (CollUtil.isEmpty(datas)) { + throw exception(CUSTOMERSETTLE_REQUEST_NOT_EXISTS); + } + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + String messageMain = ""; + BusinesstypeDO businesstypeDO = null; + //主表校验方法 + try { + DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(createReqVO.getDeliverRecordNumber()); + createReqVO.setDeliverPlanNumber(deliverRecordMainDO.getDeliverPlanNumber()); + createReqVO.setCustomerCode(deliverRecordMainDO.getCustomerCode()); + createReqVO.setFromWarehouseCode(deliverRecordMainDO.getFromWarehouseCode()); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + createReqVO.setCreateTime(LocalDateTime.now()); + try { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("CustomerRejectRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + + } + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest"); + createReqVO.setBusinessType(businesstypeDO.getCode()); + createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + try { + ValidationUtils.validate(validator, createReqVO); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_SETTLE_RECORD.getCode()); + createReqVO.setNumber(number); + List subList = createReqVO.getSubList(); + List subDOList = CustomersettleRequestDetailConvert.INSTANCE.convertList03(subList); + for(CustomersettleRequestDetailDO detailDO : subDOList){ + String messageDetail = ""; + // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList + //子表校验方法 + try { + List deliverRecordDetailDO = deliverRecordMainService.selectsDeliverRecordExist(createReqVO.getDeliverRecordNumber()); + try{ + for( DeliverRecordDetailDO deliver : deliverRecordDetailDO){ + if(deliver.getSoNumber().equals(detailDO.getSoNumber())&& + deliver.getSoLine().equals(detailDO.getSoLine()) + &&deliver.getItemCode().equals(detailDO.getItemCode())&& + deliver.getBatch().equals(detailDO.getBatch())&& + deliver.getPackingNumber().equals(detailDO.getPackingNumber())){ + detailDO.setQty(deliver.getQty()); + detailDO.setUom(deliver.getUom()); + } + else{ + throw new UtilException("销售订单号"+detailDO.getSoNumber()+"销售订单行"+detailDO.getSoLine() + +"物料代码"+detailDO.getItemCode()+"批次"+detailDO.getBatch()+"箱码"+detailDO.getPackingNumber()+"不在发货记录单" + +createReqVO.getDeliverRecordNumber()+"中"); + } + } + }catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + CustomersettleRequestDetailCreateReqVO purchaseturnRequestDetailCreateReqVO = CustomersettleRequestDetailConvert.INSTANCE.convert1(detailDO); + CustomersettleRequestImportErrorVO importVO = CustomersettleRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseturnRequestDetailCreateReqVO); + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + detailDO.setNumber(createReqVO.getNumber()); + detailDO.setMasterId(createReqVO.getId()); + } + } + CustomersettleRequestMainDO createobj = CustomersettleRequestMainConvert.INSTANCE.convert(createReqVO); + if (errorList.isEmpty()) { + CustomersettleRequestMainDO existCustomersettleRequestMainDO = customersettleRequestMainMapper.selectByDeliverrecordnumberAndSupplierCode(createReqVO.getDeliverRecordNumber()); + if (existCustomersettleRequestMainDO == null && mode != 3) { + customersettleRequestMainMapper.insert(createobj); + customersettleRequestDetailMapper.insertBatch(subDOList); + } else if (existCustomersettleRequestMainDO != null && mode != 2) { + customersettleRequestMainMapper.updateById(createobj); + customersettleRequestDetailMapper.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/deliverRequest/DeliverRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainService.java index 58905373..cabaaabf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainService.java @@ -4,10 +4,9 @@ import java.util.*; import javax.validation.*; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainCreateReqVO; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainExportReqVO; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainPageReqVO; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainUpdateReqVO; +import com.win.module.wms.controller.deliverRequest.vo.*; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestImportErrorVO; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainCreateReqVO; import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; import com.win.framework.common.pojo.PageResult; @@ -81,4 +80,7 @@ public interface DeliverRequestMainService { */ List getDeliverRequestMainList(DeliverRequestMainExportReqVO exportReqVO); + + public List importDeliverRequestList(List datas, Integer mode, boolean updatePart); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java index 78bc5707..3d5c8185 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java @@ -1,24 +1,48 @@ package com.win.module.wms.service.deliverRequest; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.exceptions.UtilException; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainCreateReqVO; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainExportReqVO; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainPageReqVO; -import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainUpdateReqVO; +import com.win.framework.common.util.validation.ValidationUtils; +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.deliverRequest.vo.*; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailCreateReqVO; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestImportErrorVO; +import com.win.module.wms.convert.deliverRequest.DeliverRequestDetailConvert; +import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert; +import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; +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.sale.SaleDetailDO; +import com.win.module.wms.dal.mysql.deliverRequest.DeliverRequestDetailMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.customer.*; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.validation.Validator; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; - +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.*; - import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; import com.win.framework.common.pojo.PageResult; - import com.win.module.wms.convert.deliverRequest.DeliverRequestMainConvert; import com.win.module.wms.dal.mysql.deliverRequest.DeliverRequestMainMapper; - import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.module.wms.enums.ErrorCodeConstants.*; +import com.win.module.wms.service.deliverJob.*; /** * 发货申请主 Service 实现类 @@ -32,6 +56,29 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService @Resource private DeliverRequestMainMapper deliverRequestMainMapper; + @Resource + private DeliverRequestDetailMapper deliverRequestDetailMapper; + @Resource + private JobUtils jobUtils; + @Resource + private ItembasicService itembasicService; + @Resource + private SerialNumberApi serialNumberApi; + + @Resource + private Validator validator; + + @Resource + private DictDataApi dictDataApi; + @Resource + private CustomerService customerService; + + @Resource + private RequestsettingService requestsettingService; + + @Resource + private DeliverJobMainService deliverJobMainService; + @Override public Long createDeliverRequestMain(DeliverRequestMainCreateReqVO createReqVO) { // 插入 @@ -88,5 +135,127 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService public List getDeliverRequestMainList(DeliverRequestMainExportReqVO exportReqVO) { return deliverRequestMainMapper.selectList(exportReqVO); } + public String Isuom(String uom1, String uom2) { + DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1); + String value = dictDataRespDTO.getLabel(); + if(uom2.equals(value)){ + return "ture"; + }else { + throw new UtilException("计量单位"+uom2+"错误,应该是"+value); + } + } + public String Isqty(BigDecimal shippedqty, BigDecimal detailqty, BigDecimal orderqty,String sonumber,String soline,String itemcode) { + BigDecimal resultqty = orderqty.subtract(shippedqty); + if( resultqty.compareTo(detailqty)>0 ) + return "TURE"; + else{ + throw new UtilException("发货数量"+detailqty+"大于订单号"+sonumber+"、订单行"+soline+"、物品代码"+itemcode+"的未发货数量"+ resultqty ); + } + } + @Override + @Transactional + public List importDeliverRequestList(List datas, Integer mode, boolean updatePart){ + if (CollUtil.isEmpty(datas)) { + throw exception(DELIVER_REQUEST_NOT_EXISTS); + } + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + String messageMain = ""; + BusinesstypeDO businesstypeDO = null; + try{ + customerService.selectCustomerExist(createReqVO.getCustomerCode()); + }catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + createReqVO.setRequestTime(LocalDateTime.now()); + try { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequest"); + createReqVO.setBusinessType(businesstypeDO.getCode()); + createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + try { + ValidationUtils.validate(validator, createReqVO); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RETURN_REQUEST.getCode()); + createReqVO.setNumber(number); + List subList = createReqVO.getSubList(); + List subDOList = DeliverRequestDetailConvert.INSTANCE.convertList03(subList); + for (DeliverRequestDetailDO detailDO : subDOList) { + String messageDetail = ""; + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); + detailDO.setItemDesc1(itembasicDO.getDesc1()); + detailDO.setItemDesc2(itembasicDO.getDesc2()); + detailDO.setItemName(itembasicDO.getName()); + detailDO.setProjectCode(itembasicDO.getProject()); + try{ + Isuom(itembasicDO.getUom(),detailDO.getUom()); + }catch (Exception ex) { + + messageDetail += ex.getMessage() + ","; + } + }catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + try{ + SaleDetailDO saleDetailDO =deliverJobMainService.saleDetailExist(detailDO.getSoNumber(),detailDO.getSoLine(),detailDO.getItemCode()); + try{ + if(saleDetailDO!=null){ + Isqty(saleDetailDO.getShippedQty(),detailDO.getQty(),saleDetailDO.getOrderQty(),detailDO.getSoNumber(),detailDO.getSoLine(),detailDO.getItemCode()); + } + }catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + }catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + DeliverRequestDetailCreateReqVO purchaseturnRequestDetailCreateReqVO = DeliverRequestDetailConvert.INSTANCE.convert1(detailDO); + DeliverRequestImportErrorVO importVO = DeliverRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseturnRequestDetailCreateReqVO); + if (!messageMain.equals("") || !messageDetail.equals("")) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } else { + detailDO.setNumber(createReqVO.getNumber()); + detailDO.setMasterId(createReqVO.getId()); + } + } + DeliverRequestMainDO createobj = DeliverRequestMainConvert.INSTANCE.convert(createReqVO); + if (errorList.isEmpty()) { + DeliverRequestMainDO existDeliverRequestMainDO = deliverRequestMainMapper.selectWorkShopCodeAndUseOnTheWayLocation(createReqVO.getCustomerCode()); + if (existDeliverRequestMainDO == null && mode != 3) { + deliverRequestMainMapper.insert(createobj); + deliverRequestDetailMapper.insertBatch(subDOList); + } else if (existDeliverRequestMainDO != null && mode != 2) { + deliverRequestMainMapper.updateById(createobj); + deliverRequestDetailMapper.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/issueRequest/IssueRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java index 662b2e71..b6e75314 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java @@ -10,27 +10,13 @@ import com.win.framework.common.util.validation.ValidationUtils; 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.inspectRequest.vo.InspectRequestImportErrorVO; -import com.win.module.wms.controller.inspectRequest.vo.InspectRequestMainCreateReqVO; import com.win.module.wms.controller.issueRequest.vo.*; -import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailCreateReqVO; -import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailCreateReqVO; -import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO; import com.win.module.wms.controller.rule.vo.RuleRespVO; import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert; -import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestDetailConvert; -import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestMainConvert; -import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestDetailConvert; -import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; -import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestDetailDO; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; -import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; -import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; -import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; -import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.issueRequest.IssueRequestDetailMapper;