From f3080c5f032835fe2f4137a9838927846ba7c3af Mon Sep 17 00:00:00 2001 From: "hongxi.lian" Date: Mon, 13 Nov 2023 11:50:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=B6=E5=93=81=E6=8A=A5=E5=BA=9F=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 4 + .../ProductscrapRequestMainController.java | 43 +-- .../vo/ProductscrapRequestImportVO.java | 12 +- .../vo/ProductscrapRequestMainBaseVO.java | 2 + .../vo/ProductscrapRequestMainImportVO.java | 6 +- .../ProductscrapRequestMainUpdateReqVO.java | 8 +- .../ProductscrapRequestDetailConvert.java | 8 + .../ProductscrapRequestMainConvert.java | 20 +- .../ProductscrapRequestMainServiceImpl.java | 354 ++++++++++++------ 9 files changed, 293 insertions(+), 164 deletions(-) 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 f0e7f563..953834bb 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 @@ -818,6 +818,10 @@ public interface ErrorCodeConstants { ErrorCode UOM_ERROR = new ErrorCode(1_000_300_000, "计量单位单位应是【{}】"); + ErrorCode UOM_ERRORR = new ErrorCode(1_000_300_001, "计量单位【{}】错误,应该是【{}】"); + ErrorCode QTY_ERROR = new ErrorCode(1_000_301_000, "发货数量【{}】大于订单号【{}】、订单行【{}】、物品代码【{}】的未发货数量【{}】"); + + ErrorCode QTY_ERRORR = new ErrorCode(1_000_301_001, "上架数量【{}】不能大于库存数量【{}】"); } 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 46caa3ce..c09d8172 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 @@ -2,24 +2,21 @@ package com.win.module.wms.controller.productscrapRequest; import com.win.framework.common.pojo.CommonResult; 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.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.productscrapRequest.vo.*; -import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO; -import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportVO; -import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainCreateReqVO; +import com.win.module.wms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.Parameters; import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; import com.win.module.wms.service.productscrapRequest.ProductscrapRequestMainService; 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; @@ -27,36 +24,17 @@ 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.time.LocalDateTime; import java.time.ZoneOffset; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.time.LocalDateTime; -import java.time.ZoneOffset; import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; - -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.productscrapRequest.vo.*; -import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; -import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; -import com.win.module.wms.service.productscrapRequest.ProductscrapRequestMainService; -import org.springframework.web.multipart.MultipartFile; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; +import static com.win.module.wms.enums.DictTypeConstants.INVENTORY_STATUS; @Tag(name = "管理后台 - 制品报废申请主") @RestController @@ -153,14 +131,17 @@ public class ProductscrapRequestMainController { @Operation(summary = "获得导入制品报废申请信息模板") public void importTemplate(HttpServletResponse response) throws IOException { - List list = new ArrayList<>(); - - - ExcelUtils.write(response, "制品报废申请信息导入模板.xlsx", "制品报废申请信息列表", ProductscrapRequestMainImportVO.class, list); + List list = new ArrayList<>(); + Map mapDropDown = new HashMap<>(); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(3, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(6, uom); + ExcelUtils.write(response, "制品报废申请信息导入模板.xlsx", "制品报废申请信息列表", ProductscrapRequestImportVO.class, list,mapDropDown); } @PostMapping("/import") - @Operation(summary = "导入采购索赔基本信息") + @Operation(summary = "导入制品报废申请基本信息") @Parameters({ @Parameter(name = "file", description = "Excel 文件", required = true), @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), @@ -178,7 +159,7 @@ public class ProductscrapRequestMainController { 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/vo/ProductscrapRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportVO.java index bd96d8e9..6ad6400c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportVO.java @@ -28,20 +28,19 @@ import java.time.LocalDateTime; public class ProductscrapRequestImportVO { + + @ExcelProperty("包装号") - @NotBlank(message = "包装号不能为空") private String packingNumber; @ExcelProperty("器具号") private String containerNumber; @ExcelProperty("批次") - @NotBlank(message = "批次不能为空") private String batch; @ExcelProperty(value = "库存状态", converter = DictConvert.class) - @NotBlank(message = "库存状态不能为空") - @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.INVENTORY_STATUS) private String inventoryStatus; @ExcelProperty("物品代码") @@ -52,12 +51,11 @@ public class ProductscrapRequestImportVO { private BigDecimal qty; @ExcelProperty(value = "计量单位", converter = DictConvert.class) - @DictFormat("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.UOM) private String uom; @ExcelProperty("来源库位代码") - @NotBlank(message = "来源库位代码不能为空") - private String fromlocationcode; + private String fromLocationCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java index 8180e677..b922abd7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productscrapRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -27,6 +28,7 @@ public class ProductscrapRequestMainBaseVO { private String fromWarehouseCode; @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) + @OnlyOne @NotNull(message = "单据号不能为空") private String number; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainImportVO.java index c0ba017d..af43db18 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainImportVO.java @@ -1,6 +1,9 @@ package com.win.module.wms.controller.productscrapRequest.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; @@ -34,7 +37,8 @@ public class ProductscrapRequestMainImportVO { @ExcelProperty("数量") private String qty; - @ExcelProperty("记录单位") + @ExcelProperty(value = "记录单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) private String uom ; @ExcelProperty("来源库位") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainUpdateReqVO.java index 727ca310..556695c4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainUpdateReqVO.java @@ -1,12 +1,18 @@ package com.win.module.wms.controller.productscrapRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailUpdateReqVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.util.List; + @Schema(description = "管理后台 - 制品报废申请主更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductscrapRequestMainUpdateReqVO extends ProductscrapRequestMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } 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 40b38a30..c9ac6175 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,7 +1,13 @@ package com.win.module.wms.convert.productscrapRequest; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailUpdateReqVO; +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.issueRequest.IssueRequestDetailDO; +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; @@ -35,6 +41,8 @@ public interface ProductscrapRequestDetailConvert { List convertList03(List list); + List convertList05(List list); + ProductscrapRequestImportErrorVO convert(ProductscrapRequestMainCreateReqVO mainVo, ProductscrapRequestDetailDO detailVo); ProductscrapRequestDetailCreateReqVO convert1(ProductscrapRequestDetailDO bean); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productscrapRequest/ProductscrapRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productscrapRequest/ProductscrapRequestMainConvert.java index c1234721..3440b770 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productscrapRequest/ProductscrapRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productscrapRequest/ProductscrapRequestMainConvert.java @@ -4,11 +4,16 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestMainCreateReqVO; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestMainExcelVO; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestMainRespVO; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestMainUpdateReqVO; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestImportErrorVO; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainBaseVO; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainCreateReqVO; +import com.win.module.wms.controller.productscrapRequest.vo.*; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; +import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; @@ -24,6 +29,8 @@ public interface ProductscrapRequestMainConvert { ProductscrapRequestMainDO convert(ProductscrapRequestMainCreateReqVO bean); + ProductscrapRequestMainDO convert( ProductscrapRequestMainBaseVO bean); + ProductscrapRequestMainDO convert(ProductscrapRequestMainUpdateReqVO bean); ProductscrapRequestMainRespVO convert(ProductscrapRequestMainDO bean); @@ -34,4 +41,9 @@ public interface ProductscrapRequestMainConvert { List convertList02(List list); + /* @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + })*/ + ProductscrapRequestImportErrorVO convert(ProductscrapRequestMainCreateReqVO mainVo, ProductscrapRequestDetailDO detailDo); + } 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 4b10f36d..e120bb5b 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,13 +4,22 @@ 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.util.validation.ValidationUtils; import com.win.framework.common.pojo.PageResult; import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.dict.DictDataApi; import com.win.module.system.api.dict.dto.DictDataRespDTO; import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.issueRequest.vo.*; import com.win.module.wms.controller.productscrapRequest.vo.*; +import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert; +import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; +import com.win.module.wms.dal.mysql.productscrapRequest.*; import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestDetailConvert; import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; import com.win.module.wms.dal.dataobject.balance.BalanceDO; @@ -22,6 +31,7 @@ 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.enums.request.RequestStatusEnum; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.requestsetting.RequestsettingService; @@ -31,17 +41,34 @@ 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 com.win.module.wms.service.itembasic.ItembasicService.*; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +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 javax.validation.Validator; 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.PRODUCTSCRAP_REQUEST_MAIN_NOT_EXISTS; -import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTSCRAP_REQUEST_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 制品报废申请主 Service 实现类 @@ -55,6 +82,9 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa @Resource private ProductscrapRequestMainMapper productscrapRequestMainMapper; + @Resource + private Validator validator; + @Resource private ProductscrapRequestDetailMapper productscrapRequestDetailMapper; @@ -66,6 +96,8 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa @Resource private JobUtils jobUtils; + @Resource + private TrendsApi trendsApi; @Resource private ItembasicService itembasicService; @@ -85,13 +117,69 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa @Override public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) { - // 插入 - ProductscrapRequestMainDO productscrapRequestMain = ProductscrapRequestMainConvert.INSTANCE.convert(createReqVO); - productscrapRequestMainMapper.insert(productscrapRequestMain); - // 返回 - return productscrapRequestMain.getId(); + RequestsettingDO requestsettingDO = new RequestsettingDO(); + ProductscrapRequestMainDO productscrapRequestMainDO = validatorToCreate(createReqVO, requestsettingDO); + //调用自动执行方法 + if (RequestStatusEnum.HANDLING.getCode().equals(productscrapRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE); + return productscrapRequestMainDO.getId(); + } + + private ProductscrapRequestMainDO validatorToCreate(ProductscrapRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + ProductscrapRequestMainDO productscrapRequestMainDO = validateMainMethod(createReqVO, businesstypeDO, requestsettingDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList03(subList); + for (ProductscrapRequestDetailDO productscrapRequestDetailDO : subDOList) { + validateDetailMethod(productscrapRequestDetailDO, businesstypeDO, productscrapRequestMainDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + productscrapRequestMainDO.setNumber(number); + productscrapRequestMainMapper.insert(productscrapRequestMainDO); + for (ProductscrapRequestDetailDO productscrapRequestDetailDO : subDOList) { + productscrapRequestDetailDO.setMasterId(productscrapRequestMainDO.getId()); + productscrapRequestDetailDO.setNumber(productscrapRequestMainDO.getNumber()); + } + productscrapRequestDetailMapper.insertBatch(subDOList); + return productscrapRequestMainDO; + } + + private void validateDetailMethod(ProductscrapRequestDetailDO productscrapRequestDetailDO, BusinesstypeDO businesstypeDO, ProductscrapRequestMainDO productscrapRequestMainDO) { + ItembasicDO itembasic = validatorItembasic(productscrapRequestDetailDO.getItemCode()); + productscrapRequestDetailDO.setItemDesc1(itembasic.getDesc1()); + productscrapRequestDetailDO.setItemDesc2(itembasic.getDesc2()); + productscrapRequestDetailDO.setItemName(itembasic.getName()); + productscrapRequestDetailDO.setProjectCode(itembasic.getProject()); + Isuom(productscrapRequestDetailDO.getUom(), itembasic.getUom()); + jobUtils.selectItembasicExist(itembasic.getType(), businesstypeDO); + jobUtils.ifInToLocationType(productscrapRequestDetailDO.getFromLocationCode(), businesstypeDO); + jobUtils.ifOutInventoryStatuses(productscrapRequestDetailDO.getInventoryStatus(), businesstypeDO); + List business = validatorbusinessbasic(productscrapRequestDetailDO.getInventoryStatus()); + List balance = validatorbalance(productscrapRequestDetailDO.getItemCode(), productscrapRequestDetailDO.getPackingNumber(), + productscrapRequestDetailDO.getBatch(), productscrapRequestDetailDO.getFromLocationCode(), business); + BalanceDO blance1 = balance.get(0); + isqty(productscrapRequestDetailDO.getQty(), blance1.getQty()); + } + private ProductscrapRequestMainDO validateMainMethod(ProductscrapRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { + ProductscrapRequestMainDO productscrapRequestMainDO = ProductscrapRequestMainConvert.INSTANCE.convert(baseVO); + productscrapRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + productscrapRequestMainDO.setRequestTime(LocalDateTime.now()); + requestsettingDO = requestsettingService.selectRequestsettingExist("ProductScrapRequest"); + productscrapRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); + productscrapRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); + productscrapRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); + productscrapRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest"); + productscrapRequestMainDO.setBusinessType(businesstypeDO.getCode()); + productscrapRequestMainDO.setFromLocationTypes(businesstypeDO.getInLocationTypes()); + productscrapRequestMainDO.setFromAreaCodes(businesstypeDO.getInAreaCodes()); + return productscrapRequestMainDO; + } @VisibleForTesting private void validateProductscrapExists(Long id) { @@ -123,7 +211,9 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa @Override public PageResult getProductscrapRequestMainSenior(CustomConditions conditions) { + return productscrapRequestMainMapper.selectSenior(conditions); + } private void validateProductscrapRequestMainExists(Long id) { @@ -152,142 +242,166 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa return productscrapRequestMainMapper.selectList(exportReqVO); } - public String Isuom(String uom1, String uom2) { + private String validateIssueRequestMainImport(ProductscrapRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + mainDo.setRequestTime(LocalDateTime.now()); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductScrapRequest"); + if (requestsettingDO == null) { + message.append("未查找到制品报废申请的相关申请设置"); + } else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + + if (businesstypeDO == null) { + message.append("根据单据设置未查找到制品报废申请申请的相关业务类型"); + } else { + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getInLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getInAreaCodes()); + } + + return message.toString(); + } + + + public void 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); + DictDataRespDTO dictDataRespDTO1 = dictDataApi.selectDictValue(uom2); + String value1 = dictDataRespDTO1.getLabel(); + if (!value1.equals(value)) { + throw exception(UOM_ERRORR, value1, value); } } - public String isqty(BigDecimal qty1, BigDecimal qty2) { + private String isqty(BigDecimal qty1, BigDecimal qty2) { if (qty1.compareTo(qty2) < 0) { return "ture"; } else { - throw new UtilException("上架数量" + qty2 + "不能大于库存数量" + qty1); + throw exception(QTY_ERRORR, qty2, qty1); + } + } + + private ItembasicDO validatorItembasic(String itemCode) { + return itembasicService.selectItembasic(itemCode); + } + + private List validatorbusinessbasic(String inventoryStatus) { + DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(inventoryStatus); + String value = dictDataRespDTO.getValue(); + String[] businessArray = value.split(","); + List business = Arrays.asList(businessArray); + return business; + } + + private List validatorbalance(String itemCode, String packingnumber, String batch, String fromLocationCode, List business) { + List balabce = jobUtils.selectlocationReturnManagementAccuracy(itemCode, packingnumber, batch, fromLocationCode, business); + return balabce; + } + + private String validateProductscrapvRequestDetailImport(ProductscrapRequestDetailDO detailDo, ProductscrapRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + try { + ItembasicDO itembasic = validatorItembasic(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) { + message.append(ex.getMessage()).append(","); + } + try { + jobUtils.selectItembasicExist(detailDo.getItemCode(), businesstypeDO); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + List business = validatorbusinessbasic(detailDo.getInventoryStatus()); + try { + List balance = validatorbalance(detailDo.getItemCode(), detailDo.getPackingNumber(), + detailDo.getBatch(), detailDo.getFromLocationCode(), business); + try { + for(BalanceDO balance2 :balance){ + mainDo.setFromWarehouseCode(balance2.getWarehouseCode()); + mainDo.setDueTime(balance2.getExpireDate()); + } + BalanceDO blance1 = balance.get(0); + isqty(detailDo.getQty(), blance1.getQty()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); } + return message.toString(); } + public List importProductscrapRequestList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { throw exception(PRODUCTSCRAP_REQUEST_NOT_EXISTS); } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - String massage = ""; - boolean isError = false; - + BusinesstypeDO businesstypeDO = businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest"); + ProductscrapRequestMainDO mainDo = ProductscrapRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validateIssueRequestMainImport(mainDo, businesstypeDO); List subList = createReqVO.getSubList(); List subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; 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()); - 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) { - isError = true; - massage += ex.getMessage() + ","; - } - 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) { - isError = true; - massage += ex.getMessage() + ","; - } - try { - jobUtils.ifInToLocationType(detailDO.getFromLocationCode(), businesstype); - } catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - try { - jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(), businesstype); - } catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - } catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - - } catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - 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()); - - } catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - } catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - if (isError) { - ProductscrapRequestImportErrorVO importVO = ProductscrapRequestDetailConvert.INSTANCE.convert(createReqVO, detailDO); - importVO.setImportStatus("失败"); - importVO.setImportRemark(massage.substring(0, massage.length() - 1)); - errorList.add(importVO); - } - if (!isError) { - detailDO.setNumber(createReqVO.getNumber()); - detailDO.setMasterId(createReqVO.getId()); - } - if (!errorList.isEmpty()) { - // 判断如果不存在,在进行插入 - - RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("ProductPutawayRequest"); - if (requestsetting != null) { - createReqVO.setAutoCommit(requestsetting.getAutoCommit()); - createReqVO.setAutoAgree(requestsetting.getAutoAgree()); - createReqVO.setAutoExecute(requestsetting.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsetting.getDirectCreateRecord()); - } - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); - createReqVO.setNumber(number); - ProductscrapRequestMainDO createObj = ProductscrapRequestMainConvert.INSTANCE.convert(createReqVO); - productscrapRequestMainMapper.insert(createObj); - productscrapRequestDetailMapper.insertBatch(subDOList); - } + String messageDetail = validateProductscrapvRequestDetailImport(detailDO, mainDo, businesstypeDO); + if (!"".equals(messageMain) ||!"".equals(messageDetail) ) { + ProductscrapRequestImportErrorVO importErrorVO = ProductscrapRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; + } + } + //写入数据 + if (flag) { + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + productscrapRequestMainMapper.insert(mainDo); + for (ProductscrapRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); } + productscrapRequestDetailMapper.insertBatch(subDOList); } }); - //错误不为空并非部分更新,手工回滚 - if (!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; } - - } +