From 913efdc7a4447f70cffb9858594bcc9a4893a44a Mon Sep 17 00:00:00 2001 From: "hongxi.lian" Date: Tue, 7 Nov 2023 08:56:42 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=88=B6=E5=93=81=E6=8A=A5=E5=BA=9F?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=EF=BC=8C=E5=88=B6=E5=93=81=E4=B8=8A=E6=9E=B6?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=EF=BC=8C=E5=BA=93=E5=AD=98=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/system/api/dict/DictDataApi.java | 2 + .../system/api/dict/DictDataApiImpl.java | 6 + .../system/service/dict/DictDataService.java | 2 + .../service/dict/DictDataServiceImpl.java | 11 + .../module/wms/enums/ErrorCodeConstants.java | 5 + .../InventoryinitRequestMainController.java | 15 +- .../vo/InventoryinitRequestMainBaseVO.java | 2 + .../InventoryinitRequestMainExportReqVO.java | 2 +- .../vo/InventoryinitRequestMainImportVO.java | 16 +- .../vo/InventoryinitRequestMainPageReqVO.java | 2 +- .../ProductputawayRequestMainController.java | 60 ++++- .../vo/ProductputawayImportErrorVO.java | 23 ++ .../vo/ProductputawayImportExcelVO.java | 54 ++++ .../vo/ProductputawayImportVO.java | 59 ++++ .../vo/ProductputawayRequestMainBaseVO.java | 2 + .../ProductputawayRequestMainCreateReqVO.java | 7 +- .../ProductscrapRequestMainController.java | 36 ++- .../vo/ProductscrapRequestImportErrorVO.java | 26 ++ .../vo/ProductscrapRequestImportVO.java | 65 +++++ .../ProductscrapRequestMainCreateReqVO.java | 5 +- .../workstation/WorkstationController.java | 6 +- .../InventoryinitRequestDetailConvert.java | 29 +- .../ProductputawayRequestDetailConvert.java | 27 +- .../ProductputawayRequestMainConvert.java | 16 +- .../ProductscrapRequestDetailConvert.java | 11 +- .../InventoryinitRequestMainDO.java | 2 +- .../InventoryinitRequestMainMapper.java | 4 +- .../ProductputawayRequestMainMapper.java | 5 +- .../ProductscrapRequestMainMapper.java | 1 + .../service/balance/BalanceServiceImpl.java | 5 +- .../enterprise/EnterpriseServiceImpl.java | 2 +- .../InventoryinitRequestMainServiceImpl.java | 172 ++++++++++-- .../itembasic/ItembasicServiceImpl.java | 4 - .../ItempackagingServiceImpl.java | 2 +- .../ProductputawayRequestMainService.java | 24 +- .../ProductputawayRequestMainServiceImpl.java | 252 +++++++++++++++++- .../ProductscrapRequestMainService.java | 10 +- .../ProductscrapRequestMainServiceImpl.java | 210 +++++++++++++-- .../RequestsettingServiceImpl.java | 2 +- .../warehouse/WarehouseServiceImpl.java | 2 +- .../com/win/module/wms/util/JobUtils.java | 2 +- 41 files changed, 1072 insertions(+), 116 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportExcelVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportVO.java diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/DictDataApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/DictDataApi.java index 01942356..89f5e38b 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/DictDataApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/DictDataApi.java @@ -65,4 +65,6 @@ public interface DictDataApi { * @return */ DictDataRespDTO selectDictLabel( String plabel); + + DictDataRespDTO selectDictValue( String value); } diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dict/DictDataApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dict/DictDataApiImpl.java index 27b830e8..754bebf3 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dict/DictDataApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dict/DictDataApiImpl.java @@ -60,4 +60,10 @@ public class DictDataApiImpl implements DictDataApi { DictDataDO dictDataDO = dictDataService.selectDictLabel(plabel); return DictDataConvert.INSTANCE.convert02(dictDataDO); } + + @Override + public DictDataRespDTO selectDictValue( String value){ + DictDataDO dictDataDO = dictDataService.selectDictValue(value); + return DictDataConvert.INSTANCE.convert02(dictDataDO); + } } diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataService.java index e663ab9b..6b207276 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataService.java @@ -109,4 +109,6 @@ public interface DictDataService { DictDataDO selectDictTypeAndLabel(String ptype, String plabel); DictDataDO selectDictLabel(String plabel); + + DictDataDO selectDictValue(String value); } diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataServiceImpl.java index 5aa3e4e8..a51df976 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataServiceImpl.java @@ -218,4 +218,15 @@ public class DictDataServiceImpl implements DictDataService { throw new UtilException( "未查到字典相关标签"); } } + @Override + public DictDataDO selectDictValue(String value){ + QueryWrapper queryWrapper1 = new QueryWrapper(); + queryWrapper1.eq("value",value); + DictDataDO dictDataDO = dictDataMapper.selectOne(queryWrapper1); + if(dictDataDO != null && 0 == dictDataDO.getStatus()){ + return dictDataDO; + }else { + throw new UtilException( "未查到字典相关标签"); + } + } } 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 4fd1d97e..61d99318 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 @@ -623,6 +623,9 @@ public interface ErrorCodeConstants { ErrorCode PRODUCTSCRAP_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_110_000, "制品报废申请主不存在"); //制品报废申请子ErrorCode ErrorCode PRODUCTSCRAP_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_001_110_001, "制品报废申请子不存在"); + + //制品报废申请子ErrorCode + ErrorCode PRODUCTSCRAP_REQUEST_NOT_EXISTS = new ErrorCode(1_001_110_002, "制品报废申请不存在"); //制品报废任务主ErrorCode ErrorCode PRODUCTSCRAP_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_111_000, "制品报废任务主不存在"); //制品报废任务子ErrorCode @@ -634,6 +637,8 @@ public interface ErrorCodeConstants { //制品上架申请ErrorCode ErrorCode PRODUCTPUTAWAY_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_112_000, "制品上架申请主不存在"); ErrorCode PRODUCTPUTAWAY_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_112_001, "制品上架申请子不存在"); + //制品上架申请ErrorCode + ErrorCode PRODUCTPUTAWAY_REQUEST_NOT_EXISTS = new ErrorCode(1_000_112_002, "制品上架申请不存在"); //制品上架任务ErrorCode ErrorCode PRODUCTPUTAWAY_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_113_000, "制品上架任务主不存在"); ErrorCode PRODUCTPUTAWAY_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_113_001, "制品上架任务子不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/InventoryinitRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/InventoryinitRequestMainController.java index f9890b43..a105280c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/InventoryinitRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/InventoryinitRequestMainController.java @@ -3,6 +3,7 @@ package com.win.module.wms.controller.inventoryinitRequest; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ConvertUtil; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; @@ -11,6 +12,7 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.inventoryinitRequest.vo.*; import com.win.module.wms.convert.inventoryinitRequest.InventoryinitRequestMainConvert; import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestMainDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.inventoryinitRequest.InventoryinitRequestMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -129,16 +131,16 @@ public class InventoryinitRequestMainController { // 手动创建导出 demo List list = new ArrayList<>(); Map mapDropDown = new HashMap<>(); -// String[] purchaseReturnReason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON); -// mapDropDown.put(16, purchaseReturnReason); -// String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); -// mapDropDown.put(25, uom); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(10, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(13, uom); // 输出 ExcelUtils.write(response, "库存初始化申请信息导入模板.xlsx", "库存初始化申请信息列表", InventoryinitRequestMainImportVO.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"), @@ -156,10 +158,11 @@ public class InventoryinitRequestMainController { 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/inventoryinitRequest/vo/InventoryinitRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainBaseVO.java index 32dd560c..3a262a9c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.inventoryinitRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -25,6 +26,7 @@ public class InventoryinitRequestMainBaseVO { @Schema(description = "仓库代码") private String warehouseCode; + @OnlyOne @Schema(description = "单据号") private String number; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainExportReqVO.java index 5339b4f8..c11989a4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainExportReqVO.java @@ -27,7 +27,7 @@ public class InventoryinitRequestMainExportReqVO { @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] creationTime; + private LocalDateTime[] createTime; @Schema(description = "创建者用户名") private String creator; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainImportVO.java index 3cedd8f6..baf2b20f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainImportVO.java @@ -2,6 +2,9 @@ package com.win.module.wms.controller.inventoryinitRequest.vo; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.annotations.OnlyOne; +import com.win.module.wms.enums.DictTypeConstants; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -22,13 +25,21 @@ import java.time.LocalDateTime; public class InventoryinitRequestMainImportVO{ //主表数据 + @OnlyOne @ExcelProperty("仓库代码") private String warehouseCode; + @ExcelProperty("单据号") + private String number; + //子表数据 @ExcelProperty("包装号") private String packingNumber; + + @ExcelProperty("物品代码") + private String itemCode; + @ExcelProperty("器具号") private String containerNumber; @@ -47,10 +58,12 @@ public class InventoryinitRequestMainImportVO{ private String produceDate; @ExcelProperty("过期日期") + @ColumnWidth(value = 16) private String expireDate; @ExcelProperty("库存状态") - private LocalDateTime inventoryStatus; + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; @ExcelProperty("库位代码") private String locationCode; @@ -59,5 +72,6 @@ public class InventoryinitRequestMainImportVO{ private String qty; @ExcelProperty("计量单位") + @DictFormat(DictTypeConstants.UOM) private String uom; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainPageReqVO.java index f62435aa..e51f0f30 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainPageReqVO.java @@ -29,7 +29,7 @@ public class InventoryinitRequestMainPageReqVO extends PageParam { @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] creationTime; + private LocalDateTime[] createTime; @Schema(description = "创建者用户名") private String creator; 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 ffadb35f..7b846100 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 @@ -3,6 +3,8 @@ package com.win.module.wms.controller.productputawayRequest; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.framework.excel.core.util.ConvertUtil; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; @@ -10,20 +12,24 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.productputawayRequest.vo.*; import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestMainConvert; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.productputawayRequest.ProductputawayRequestMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.util.Collection; -import java.util.List; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -95,25 +101,25 @@ public class ProductputawayRequestMainController { @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:export')") @OperateLog(type = EXPORT) public void exportProductputawayRequestMainExcel(@Valid ProductputawayRequestMainExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { List list = productputawayRequestMainService.getProductputawayRequestMainList(exportReqVO); // 导出 Excel List datas = ProductputawayRequestMainConvert.INSTANCE.convertList02(list); - for(ProductputawayRequestMainExcelVO vo : datas) { + for (ProductputawayRequestMainExcelVO vo : datas) { AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); //后端创建个字段作为前端展示的虚拟字段 vo.setCreator(user.getNickname()); } ExcelUtils.write(response, "制品上架申请主.xls", "数据", ProductputawayRequestMainExcelVO.class, datas); } - + @PostMapping("/senior") @Operation(summary = "高级搜索获得制品上架申请主分页") @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:query')") public CommonResult> getProductputawayRequestMainSenior(@Valid @RequestBody CustomConditions conditions) { PageResult pageResult = productputawayRequestMainService.getProductputawayRequestMainSenior(conditions); PageResult result = ProductputawayRequestMainConvert.INSTANCE.convertPage(pageResult); - for(ProductputawayRequestMainRespVO vo : result.getList()) { + for (ProductputawayRequestMainRespVO vo : result.getList()) { AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); //后端创建个字段作为前端展示的虚拟字段 vo.setCreator(user.getNickname()); @@ -121,4 +127,46 @@ public class ProductputawayRequestMainController { return success(result); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入制品上架申请信息模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = Arrays.asList( +// ProductputawayImportExcelVO.builder().code("code").name("name").build() + ); + Map mapDropDown = new HashMap<>(); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(3, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(7, uom); + // 输出 + ExcelUtils.write(response, "制品上架申请信息导入模板.xls", "制品上架申请信息列表", ProductputawayImportVO.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:productputaway-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, ProductputawayImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(ProductputawayRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = productputawayRequestMainService.importProductputawayRequestList(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/productputawayRequest/vo/ProductputawayImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportErrorVO.java new file mode 100644 index 00000000..ddf5d2c3 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportErrorVO.java @@ -0,0 +1,23 @@ +package com.win.module.wms.controller.productputawayRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 采购索赔申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +@ToString(callSuper = true) +public class ProductputawayImportErrorVO { + + @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/productputawayRequest/vo/ProductputawayImportExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportExcelVO.java new file mode 100644 index 00000000..60b0849a --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportExcelVO.java @@ -0,0 +1,54 @@ +package com.win.module.wms.controller.productputawayRequest.vo; + + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.module.wms.enums.DictTypeConstants; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class ProductputawayImportExcelVO { + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("库存状态") + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty("计量单位") + @DictFormat(DictTypeConstants.UOM) + private String uom; + + + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java new file mode 100644 index 00000000..442d0926 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java @@ -0,0 +1,59 @@ +package com.win.module.wms.controller.productputawayRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + + +/** + * 采购索赔申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class ProductputawayImportVO { + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("库存状态") + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty("计量单位") + @DictFormat(DictTypeConstants.UOM) + private String uom; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainBaseVO.java index d0eb3099..385577b3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productputawayRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -44,6 +45,7 @@ public class ProductputawayRequestMainBaseVO { private String toAreaCodes; @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/productputawayRequest/vo/ProductputawayRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainCreateReqVO.java index 9df8979e..83c78bfc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainCreateReqVO.java @@ -1,12 +1,17 @@ package com.win.module.wms.controller.productputawayRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 制品上架申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductputawayRequestMainCreateReqVO extends ProductputawayRequestMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } 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 3ad21fba..09eed908 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,6 +2,7 @@ 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.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; @@ -9,6 +10,10 @@ 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 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; @@ -22,6 +27,16 @@ 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; @@ -30,6 +45,17 @@ 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; @Tag(name = "管理后台 - 制品报废申请主") @@ -138,7 +164,7 @@ public class ProductscrapRequestMainController { } @PostMapping("/import") - @Operation(summary = "导入要货计划") + @Operation(summary = "导入采购索赔基本信息") @Parameters({ @Parameter(name = "file", description = "Excel 文件", required = true), @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), @@ -149,19 +175,17 @@ public class ProductscrapRequestMainController { @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, ProductscrapRequestMainImportVO.class); + List list = ExcelUtils.read(file, ProductscrapRequestImportVO.class); ConvertUtil convertUtil = new ConvertUtil<>(ProductscrapRequestMainCreateReqVO.class); List createReqVOList = convertUtil.invoke(list).getDataList(); - List errorList = productscrapRequestMainService.importProductscrapRequestMainList(createReqVOList, mode, updatePart); + List errorList = productscrapRequestMainService.importProductscrapRequestList(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); + 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/ProductscrapRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportErrorVO.java new file mode 100644 index 00000000..80a3a842 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportErrorVO.java @@ -0,0 +1,26 @@ +package com.win.module.wms.controller.productscrapRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportVO; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 采购索赔申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductscrapRequestImportErrorVO extends ProductscrapRequestImportVO { + + @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/productscrapRequest/vo/ProductscrapRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportVO.java new file mode 100644 index 00000000..bd96d8e9 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportVO.java @@ -0,0 +1,65 @@ +package com.win.module.wms.controller.productscrapRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import groovyjarjarantlr4.v4.runtime.misc.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.time.LocalDateTime; + + +/** + * 采购索赔申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +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 枚举类中 + private String inventoryStatus; + + @ExcelProperty("物品代码") + @NotBlank(message = "物品代码不能为空") + private String itemCode; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String uom; + + @ExcelProperty("来源库位代码") + @NotBlank(message = "来源库位代码不能为空") + private String fromlocationcode; + + + + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainCreateReqVO.java index 65ce2bf1..e6667492 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainCreateReqVO.java @@ -1,10 +1,9 @@ package com.win.module.wms.controller.productscrapRequest.vo; import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailCreateReqVO; +import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; import java.util.List; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/WorkstationController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/WorkstationController.java index 4da0de9e..f95a53bb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/WorkstationController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/WorkstationController.java @@ -10,9 +10,7 @@ import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.workstation.vo.WorkstationRespVO; import com.win.module.wms.controller.workstation.vo.*; -import com.win.module.wms.convert.workstation.WorkstationConvert; -import com.win.module.wms.convert.workstation.WorkstationConvert; -import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; +import com.win.module.wms.convert.workstation.WorkstationConvert;; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.workstation.WorkstationService; @@ -24,7 +22,6 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; - import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; @@ -32,7 +29,6 @@ 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 static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestDetailConvert.java index 80733aa3..41a93cd0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestDetailConvert.java @@ -1,12 +1,18 @@ package com.win.module.wms.convert.inventoryinitRequest; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestDetailCreateReqVO; -import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestDetailExcelVO; -import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestDetailRespVO; -import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestDetailUpdateReqVO; +import com.win.module.wms.controller.inventoryinitRequest.vo.*; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportErrorVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailExcelVO; import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestDetailDO; +import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestMainDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -18,6 +24,21 @@ import java.util.List; */ @Mapper public interface InventoryinitRequestDetailConvert { + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + + InventoryinitRequestMainImportErrorVO convert(InventoryinitRequestMainCreateReqVO mainVo, InventoryinitRequestDetailDO detailVo); + + @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"), + }) + InventoryinitRequestDetailExcelVO convert(InventoryinitRequestMainDO mainDO, InventoryinitRequestDetailDO detailDO); InventoryinitRequestDetailConvert INSTANCE = Mappers.getMapper(InventoryinitRequestDetailConvert.class); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestDetailConvert.java index 234e2019..8ae161bb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestDetailConvert.java @@ -4,11 +4,17 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailCreateReqVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailExcelVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailRespVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO; +import com.win.module.wms.controller.productputawayRequest.vo.*; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailCreateReqVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailExcelVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainCreateReqVO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; @@ -33,5 +39,18 @@ public interface ProductputawayRequestDetailConvert { PageResult convertPage(PageResult page); 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"), + }) + ProductputawayRequestDetailExcelVO convert(ProductputawayRequestMainDO mainDO, ProductputawayRequestDetailDO detailDO); + + + ProductputawayImportErrorVO convert(ProductputawayRequestMainCreateReqVO mainVo, ProductputawayRequestDetailDO detailVo); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java index 7030487e..f05c09a9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java @@ -4,11 +4,15 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainExcelVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainRespVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO; +import com.win.module.wms.controller.productputawayRequest.vo.*; +import com.win.module.wms.controller.purchaseclaimRequest.vo.*; +import com.win.module.wms.controller.workstation.vo.WorkstationImportExcelVo; +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.workstation.WorkstationDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; @@ -34,4 +38,8 @@ public interface ProductputawayRequestMainConvert { List convertList02(List list); + ProductputawayRequestMainDO convert(ProductputawayImportExcelVO bean); + + + } 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 1e5d62ee..0172ed77 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,10 +1,11 @@ package com.win.module.wms.convert.productscrapRequest; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailCreateReqVO; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailExcelVO; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailRespVO; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailUpdateReqVO; +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 org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -35,4 +36,6 @@ public interface ProductscrapRequestDetailConvert { List convertList03(List list); + ProductscrapRequestImportErrorVO convert(ProductscrapRequestMainCreateReqVO mainVo, ProductscrapRequestDetailDO detailVo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventoryinitRequest/InventoryinitRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventoryinitRequest/InventoryinitRequestMainDO.java index a7c6151a..0e09c635 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventoryinitRequest/InventoryinitRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventoryinitRequest/InventoryinitRequestMainDO.java @@ -51,7 +51,7 @@ public class InventoryinitRequestMainDO extends BaseDO { /** * 创建时间 */ - private LocalDateTime creationTime; + private LocalDateTime createTime; /** * 扩展属性 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventoryinitRequest/InventoryinitRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventoryinitRequest/InventoryinitRequestMainMapper.java index d3a151f7..31563e38 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventoryinitRequest/InventoryinitRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventoryinitRequest/InventoryinitRequestMainMapper.java @@ -26,7 +26,7 @@ public interface InventoryinitRequestMainMapper extends BaseMapperX { - + default ProductputawayRequestMainDO selectByNumber(String number) { + return selectOne(ProductputawayRequestMainDO::getNumber, number); + } default PageResult selectPage(ProductputawayRequestMainPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(ProductputawayRequestMainDO::getSupplierCode, reqVO.getSupplierCode()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productscrapRequest/ProductscrapRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productscrapRequest/ProductscrapRequestMainMapper.java index ce97dd03..46706351 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productscrapRequest/ProductscrapRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productscrapRequest/ProductscrapRequestMainMapper.java @@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestMainExportReqVO; import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestMainPageReqVO; import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import org.apache.ibatis.annotations.Mapper; /** diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java index 4d471bd1..f6588fef 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java @@ -103,11 +103,12 @@ public class BalanceServiceImpl implements BalanceService { */ @Override public List selectPackaging(String itemCode, String packingNumber, String batch, List inventoryStatus, String locationCode) { - QueryWrapper queryWrapper = new QueryWrapper<>(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("item_code", itemCode); queryWrapper.eq("packing_number", packingNumber); queryWrapper.eq("batch", batch); - queryWrapper.eq("inventory_status", inventoryStatus); + queryWrapper.in("inventory_status", inventoryStatus); queryWrapper.eq("location_code", locationCode); List balanceDO = balanceMapper.selectList(queryWrapper); if (!balanceDO.isEmpty()) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/enterprise/EnterpriseServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/enterprise/EnterpriseServiceImpl.java index 8a2ecbd0..6f8da189 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/enterprise/EnterpriseServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/enterprise/EnterpriseServiceImpl.java @@ -17,7 +17,7 @@ import com.win.module.wms.convert.enterprise.EnterpriseConvert; import com.win.module.wms.dal.mysql.enterprise.EnterpriseMapper; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.ENTERPRISE_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 企业 Service 实现类 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventoryinitRequest/InventoryinitRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventoryinitRequest/InventoryinitRequestMainServiceImpl.java index d89e291d..79246f69 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventoryinitRequest/InventoryinitRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventoryinitRequest/InventoryinitRequestMainServiceImpl.java @@ -1,26 +1,45 @@ package com.win.module.wms.service.inventoryinitRequest; import cn.hutool.core.collection.CollUtil; +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.productputawayRequest.vo.ProductputawayImportErrorVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailCreateReqVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO; +import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert; +import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestDetailConvert; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.util.*; +import com.win.module.wms.service.requestsetting.*; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.inventoryinitRequest.vo.*; import com.win.module.wms.convert.inventoryinitRequest.InventoryinitRequestDetailConvert; import com.win.module.wms.convert.inventoryinitRequest.InventoryinitRequestMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestDetailDO; import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestMainDO; +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.location.LocationDO; +import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO; import com.win.module.wms.dal.mysql.inventoryinitRequest.InventoryinitRequestDetailMapper; import com.win.module.wms.dal.mysql.inventoryinitRequest.InventoryinitRequestMainMapper; 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; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - +import java.util.*; +import com.win.module.wms.service.itembasic.*; +import com.win.module.wms.service.location.*; +import com.win.module.wms.service.itempackaging.*; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.INVENTORYINIT_REQUEST_MAIN_NOT_EXISTS; -import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.ErrorCodeConstants.*; +import com.win.module.wms.service.recordsetting.*; /** * 库存初始化申请主 Service 实现类 @@ -33,8 +52,30 @@ public class InventoryinitRequestMainServiceImpl implements InventoryinitRequest @Resource private InventoryinitRequestMainMapper inventoryinitRequestMainMapper; + + + @Resource + private SerialNumberApi serialNumberApi; + + + @Resource + private RequestsettingService requestsettingService; + + @Resource + private JobUtils jobUtils; + + @Resource + private RecordsettingService recordsettingService; @Resource private InventoryinitRequestDetailMapper inventoryinitRequestDetailMapper; + @Resource + private ItempackagingService itempackagingService; + + @Resource + private LocationService locationService; + + @Resource + private ItembasicService itembasicService; @Override public Long createInventoryinitRequestMain(InventoryinitRequestMainCreateReqVO createReqVO) { @@ -67,7 +108,16 @@ public class InventoryinitRequestMainServiceImpl implements InventoryinitRequest throw exception(INVENTORYINIT_REQUEST_MAIN_NOT_EXISTS); } } + private void validatesInventoryinitRequestMainExists(Long id) { + if (id == null) { + return; + } + InventoryinitRequestMainDO inventoryinitRequestMainDO = inventoryinitRequestMainMapper.selectById(id); + if (inventoryinitRequestMainDO == null) { + throw exception(INVENTORYINIT_REQUEST_MAIN_NOT_EXISTS); + } + } @Override public InventoryinitRequestMainDO getInventoryinitRequestMain(Long id) { return inventoryinitRequestMainMapper.selectById(id); @@ -91,35 +141,119 @@ public class InventoryinitRequestMainServiceImpl implements InventoryinitRequest return inventoryinitRequestMainMapper.selectList(exportReqVO); } + + @Override + @Transactional public List importInventoryinitRequestMainList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { + String message = ""; // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList + + boolean isError = false; -// try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } -// } catch (ServiceException ex) { -// isError = true; -// importRemark += ex.getMessage() + ","; -// } - - InventoryinitRequestMainDO createObj = InventoryinitRequestMainConvert.INSTANCE.convert(createReqVO); - inventoryinitRequestMainMapper.insert(createObj); + if(mode != null) { + try { + validatesInventoryinitRequestMainExists(null); + } catch (Exception ex) { + isError = true; + message += ex.getMessage() + ","; + } + } + + try { + RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("TransferDeliverRequest"); + createReqVO.setAutoAgree(requestsetting.getAutoAgree()); + createReqVO.setAutoCommit(requestsetting.getAutoCommit()); + createReqVO.setAutoExecute(requestsetting.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsetting.getDirectCreateRecord()); + }catch (Exception ex) { + isError = true; + message += ex.getMessage() + ","; + } + try { + BusinesstypeDO businesstype = jobUtils.selectDocumentSettingFromBusinessType("InventoryInitialRequest"); + createReqVO.setBusinessType(businesstype.getCode()); + }catch (Exception ex) { + isError = true; + message += ex.getMessage() + ","; + } List subList = createReqVO.getSubList(); List subDOList = InventoryinitRequestDetailConvert.INSTANCE.convertList03(subList); // 新增子表数据 for (InventoryinitRequestDetailDO detailDO : subDOList) { // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList detailDO.setNumber(createReqVO.getNumber()); + + try{ + LocationDO location = locationService.selectLocation(detailDO.getLocationCode()); + detailDO.setAreaCode(location.getAreaCode()); + detailDO.setLocationCode(location.getCode()); + detailDO.setLocationGroupCode(location.getLocationGroupCode()); + }catch (Exception ex) { + isError = true; + message += ex.getMessage() + ","; + } + try{ + + //TODO 传入的实体里没有itemcode detailDO.getItemCode() + ItembasicDO itembasic = itembasicService.selectItembasic(detailDO.getItemCode()); + detailDO.setItemDesc1(itembasic.getDesc1()); + detailDO.setItemDesc2(itembasic.getDesc2()); + detailDO.setItemName(itembasic.getName()); + detailDO.setUom(itembasic.getUom()); + detailDO.setProjectCode(itembasic.getProject()); + + }catch (Exception ex) { + isError = true; + message += ex.getMessage() + ","; + } + try{ + //TODO 传入的实体里没有itemcode detailDO.getItemCode() + ItempackagingDO itempackaging = itempackagingService.selectItemPackagingExist(detailDO.getItemCode()); + detailDO.setStdPackUnit(itempackaging.getStdPackUnit()); + detailDO.setStdPackQty(itempackaging.getStdPackQty()); + }catch (Exception ex) { + isError = true; + message += ex.getMessage() + ","; + } + if(isError){ + InventoryinitRequestMainImportErrorVO importVO = InventoryinitRequestDetailConvert.INSTANCE.convert(createReqVO,detailDO); + importVO.setImportStatus("失败"); + importVO.setImportRemark(message.substring(0, message.length() - 1)); + errorList.add(importVO); + }else{ + if(mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + createReqVO.setNumber(number); + detailDO.setNumber(createReqVO.getNumber()); + detailDO.setMasterId(createReqVO.getId()); + InventoryinitRequestMainDO createObj = InventoryinitRequestMainConvert.INSTANCE.convert(createReqVO); + inventoryinitRequestMainMapper.insert(createObj); + inventoryinitRequestDetailMapper.insertBatch(subDOList); + } + else if( mode != 2){ + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + createReqVO.setNumber(number); + detailDO.setNumber(createReqVO.getNumber()); + detailDO.setMasterId(createReqVO.getId()); + InventoryinitRequestMainDO createObj = InventoryinitRequestMainConvert.INSTANCE.convert(createReqVO); + inventoryinitRequestMainMapper.updateById(createObj); + inventoryinitRequestDetailMapper.updateBatch(subDOList); + } + } } - inventoryinitRequestDetailMapper.insertBatch(subDOList); }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java index 510a000f..c0f39058 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java @@ -1,10 +1,8 @@ package com.win.module.wms.service.itembasic; - import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.annotations.VisibleForTesting; - import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; @@ -19,12 +17,10 @@ import com.win.module.wms.dal.mysql.itembasic.ItembasicMapper; 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.*; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingServiceImpl.java index c485e65d..e1f586fc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingServiceImpl.java @@ -223,7 +223,7 @@ public class ItempackagingServiceImpl implements ItempackagingService { @Override public ItempackagingDO selectItemPackagingExist(String pitemCode){ QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("itemcode",pitemCode); + queryWrapper.eq("item_code",pitemCode); ItempackagingDO itempackagingDO = itempackagingMapper.selectOne(queryWrapper); if(itempackagingDO != null && "TRUE".equals(itempackagingDO.getAvailable())){ return itempackagingDO; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java index ea546a91..b8244a7b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java @@ -2,10 +2,7 @@ package com.win.module.wms.service.productputawayRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainExportReqVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainPageReqVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO; +import com.win.module.wms.controller.productputawayRequest.vo.*; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import javax.validation.Valid; @@ -81,4 +78,23 @@ public interface ProductputawayRequestMainService { * @return 分页列表 */ PageResult getProductputawayRequestMainSenior(CustomConditions conditions); + /** + * 批量导入物品基本信息 + * + * @param importProductputaways 导入物品基本信息列表 + * @param updatePart 是否支持更新 + * @return 导入结果 + */ + List importProductputawayList(List importProductputaways, Integer mode, boolean updatePart); + /** + * 批量导入采购索赔申请主信息 + * + * @param datas 导入采购索赔申请主信息列表 + * @param mode 导入模式1更新2追加3覆盖 + * @param updatePart 是否支持更新 + * @return 导入结果 + */ + public List importProductputawayRequestList(List datas, Integer mode, boolean updatePart); + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java index 1d0dbc00..0e902492 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java @@ -1,24 +1,47 @@ package com.win.module.wms.service.productputawayRequest; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.exceptions.UtilException; +import cn.hutool.core.util.StrUtil; +import com.google.common.annotations.VisibleForTesting; +import com.win.framework.datapermission.core.util.DataPermissionUtils; +import com.win.module.system.api.dict.DictDataApi; +import com.win.module.system.api.dict.dto.DictDataRespDTO; +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.mysql.productputawayRequest.ProductputawayRequestDetailMapper; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.util.*; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainExportReqVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainPageReqVO; -import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO; +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.productputawayRequest.vo.*; import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestMainConvert; -import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; +import com.win.module.wms.service.businesstype.*; import com.win.module.wms.dal.mysql.productputawayRequest.ProductputawayRequestMainMapper; +import com.win.module.wms.enums.DictTypeConstants; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; - +import com.win.module.wms.convert.productputawayRequest.*; 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 com.win.module.wms.service.location.*; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTPUTAWAY_REQUEST_MAIN_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.*; +import com.win.module.wms.service.recordsetting.*; +import com.win.module.wms.service.itembasic.*; /** * 制品上架申请主 Service 实现类 @@ -31,7 +54,31 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque @Resource private ProductputawayRequestMainMapper productputawayRequestMainMapper; + @Resource + private RequestsettingService requestsettingService; + + @Resource + private ProductputawayRequestDetailMapper productputawayRequestDetailMapper; + + @Resource + private ItembasicService itembasicService; + + + @Resource + private JobUtils jobUtils; + + @Resource + private BusinesstypeService businesstypeService; + + + @Resource + private LocationService locationService; + + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private DictDataApi dictDataApi; @Override public Long createProductputawayRequestMain(ProductputawayRequestMainCreateReqVO createReqVO) { // 插入 @@ -88,4 +135,193 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque public PageResult getProductputawayRequestMainSenior(CustomConditions conditions) { return productputawayRequestMainMapper.selectSenior(conditions); } + @Override + @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入 + public List importProductputawayList(List importProductputaways, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(importProductputaways)) { + throw exception(WORKSTATION_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + importProductputaways.forEach(productputaway -> { + String massage = ""; + // 校验,判断是否有不符合的原因 + if(mode != null){ + try{ + validateProductputawayExists(null); + } catch(Exception ex){ + massage += ex.getMessage() + ","; + } + + if(StrUtil.isNotEmpty(massage)){ + massage.substring(0,massage.length()-1); + errorList.add(productputaway); + } + // 判断如果不存在,在进行插入 + if(errorList == null){ + ProductputawayRequestMainDO existAccountcalendar = productputawayRequestMainMapper.selectByNumber(productputaway.getPackingNumber()); + if (existAccountcalendar == null&& mode != 3) { + productputawayRequestMainMapper.insert(ProductputawayRequestMainConvert.INSTANCE.convert(productputaway)); + } + else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新 + ProductputawayRequestMainDO productputawayDo = ProductputawayRequestMainConvert.INSTANCE.convert(productputaway); + productputawayDo.setId(existAccountcalendar.getId()); + productputawayRequestMainMapper.updateById(productputawayDo); + } + } + } + }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + + private void validateproductputawayForCreateOrUpdate(Long id,String code,String workshopCode,String productionLineCode,String available) { + // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 + DataPermissionUtils.executeIgnore(() -> { + // 校验code唯一 + + }); + } + + @VisibleForTesting + private void validateProductputawayExists(Long id) { + if (id == null) { + return; + } + ProductputawayRequestMainDO productputaway = productputawayRequestMainMapper.selectById(id); + if (productputaway == null) { + throw exception(PRODUCTPUTAWAY_REQUEST_NOT_EXISTS); + } + } + + + 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 qty1, BigDecimal qty2) { + if(qty1.compareTo(qty2) < 0){ + return "ture"; + } else { + throw new UtilException("上架数量"+qty2+ "不能大于库存数量"+ qty1); + } + } + public List importProductputawayRequestList(List datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(PRODUCTPUTAWAY_REQUEST_NOT_EXISTS); + } + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + String massage = ""; + boolean isError = false; + RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest"); + createReqVO.setAutoCommit(requestsetting.getAutoCommit()); + createReqVO.setAutoAgree(requestsetting.getAutoAgree()); + createReqVO.setAutoExecute(requestsetting.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsetting.getDirectCreateRecord()); + + List subList = createReqVO.getSubList(); + List subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList03(subList); + // 新增子表数据 + for (ProductputawayRequestDetailDO detailDO : subDOList) { + if (mode != null) { + try { + validateProductputawayExists(null); + } catch (Exception ex) { + massage += ex.getMessage() + ","; + } + // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList + try { + ItembasicDO item = itembasicService.selectItembasic(detailDO.getItemCode()); + detailDO.setItemDesc1(item.getDesc1()); + detailDO.setItemDesc2(item.getDesc2()); + detailDO.setItemName(item.getName()); + detailDO.setProjectCode(item.getProject()); + try{ + Isuom(item.getUom(),detailDO.getUom()); + }catch (Exception ex) { + isError = true; + massage += ex.getMessage() + ","; + } + } catch (Exception ex) { + isError = true; + massage += ex.getMessage() + ","; + } + try{ + locationService.selectLocation(detailDO.getFromLocationCode()); + }catch (Exception ex) { + isError = true; + massage += ex.getMessage() + ","; + } + try{ + BusinesstypeDO bus = businesstypeService.selectBusinesstypeExist("ProductPutawayRequest"); + createReqVO.setBusinessType(bus.getCode()); + createReqVO.setFromLocationTypes(bus.getOutLocationTypes()); + createReqVO.setToLocationTypes(bus.getInLocationTypes()); + createReqVO.setFromAreaCodes(bus.getOutAreaCodes()); + createReqVO.setToAreaCodes(bus.getInAreaCodes()); + //TODO TB ---TB1 效验业务类型相关属性 + try{ + jobUtils.ifInToLocationType(detailDO.getFromLocationCode(),bus); + 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() + ","; + + } + }catch (Exception ex) { + isError = true; + massage += ex.getMessage() + ","; + } + if(isError) { + ProductputawayImportErrorVO importVO = ProductputawayRequestDetailConvert.INSTANCE.convert(createReqVO,detailDO); + importVO.setImportStatus("失败"); + importVO.setImportRemark(massage.substring(0, massage.length() - 1)); + errorList.add(importVO); + } + if(!isError) { + if( mode != 3) { + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + createReqVO.setNumber(number); + ProductputawayRequestMainDO createObj = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO); + productputawayRequestMainMapper.insert(createObj); + productputawayRequestDetailMapper.insertBatch(subDOList); + } + else if(mode != 2){ + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + createReqVO.setNumber(number); + ProductputawayRequestMainDO createObj = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO); + productputawayRequestMainMapper.updateById(createObj); + productputawayRequestDetailMapper.updateBatch(subDOList); + } + } + } + } + }); + return errorList; + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainService.java index c5ce947f..14d80177 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainService.java @@ -1,6 +1,13 @@ package com.win.module.wms.service.productscrapRequest; +import java.util.*; +import javax.validation.*; + import com.win.framework.common.pojo.CustomConditions; +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.PurchaseclaimRequestMainCreateReqVO; +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.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; @@ -80,11 +87,12 @@ public interface ProductscrapRequestMainService { /** * 批量导入采购索赔申请主信息 + * * @param datas 导入采购索赔申请主信息列表 * @param mode 导入模式1更新2追加3覆盖 * @param updatePart 是否支持更新 * @return 导入结果 */ - public List importProductscrapRequestMainList(List datas, Integer mode, boolean updatePart); + public List importProductscrapRequestList(List datas, Integer mode, boolean updatePart); } 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 d08888fb..9885a852 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 @@ -1,7 +1,43 @@ package com.win.module.wms.service.productscrapRequest; 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.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.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.requestsetting.RequestsettingDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.util.JobUtils; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; + +import org.springframework.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; @@ -19,8 +55,7 @@ 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.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 制品报废申请主 Service 实现类 @@ -37,6 +72,19 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa @Resource private ProductscrapRequestDetailMapper productscrapRequestDetailMapper; + @Resource + private SerialNumberApi serialNumberApi; + + @Resource + private DictDataApi dictDataApi; + + @Resource + private JobUtils jobUtils; + + @Resource + private ItembasicService itembasicService; + @Resource + private RequestsettingService requestsettingService; @Override public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) { // 插入 @@ -46,6 +94,18 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa return productscrapRequestMain.getId(); } + + @VisibleForTesting + private void validateProductscrapExists(Long id) { + if (id == null) { + return; + } + ProductscrapRequestMainDO productscrap = productscrapRequestMainMapper.selectById(id); + if (productscrap == null) { + throw exception(PRODUCTSCRAP_REQUEST_NOT_EXISTS); + } + } + @Override public void updateProductscrapRequestMain(ProductscrapRequestMainUpdateReqVO updateReqVO) { // 校验存在 @@ -91,37 +151,141 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa public List getProductscrapRequestMainList(ProductscrapRequestMainExportReqVO exportReqVO) { return productscrapRequestMainMapper.selectList(exportReqVO); } - - @Override - public List importProductscrapRequestMainList(List datas, Integer mode, boolean updatePart) { + + 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 qty1, BigDecimal qty2) { + if(qty1.compareTo(qty2) < 0){ + return "ture"; + } else { + throw new UtilException("上架数量"+qty2+ "不能大于库存数量"+ qty1); + } + } + public List importProductscrapRequestList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { - throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); + throw exception(PRODUCTSCRAP_REQUEST_NOT_EXISTS); } - List errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList + String massage = ""; boolean isError = false; -// try { -// if(mode != null){ -// validatePurchaseclaimRequestMainExists(null); -// } -// } catch (ServiceException ex) { -// isError = true; -// importRemark += ex.getMessage() + ","; -// } - - ProductscrapRequestMainDO createObj = ProductscrapRequestMainConvert.INSTANCE.convert(createReqVO); - productscrapRequestMainMapper.insert(createObj); + List subList = createReqVO.getSubList(); List subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 for (ProductscrapRequestDetailDO detailDO : subDOList) { - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - detailDO.setNumber(createReqVO.getNumber()); + 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); + } + } } - productscrapRequestDetailMapper.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/requestsetting/RequestsettingServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/requestsetting/RequestsettingServiceImpl.java index eb409fbb..96a889df 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/requestsetting/RequestsettingServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/requestsetting/RequestsettingServiceImpl.java @@ -247,7 +247,7 @@ public class RequestsettingServiceImpl implements RequestsettingService { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("code",pcode); RequestsettingDO requestsettingDO = requestsettingMapper.selectOne(queryWrapper); - if(requestsettingDO != null && "TRUE".equals(requestsettingDO.getAutoAgree())){ + if(requestsettingDO != null && "TRUE".equals(requestsettingDO.getAvailable())){ return requestsettingDO; }else { throw exception(REQUESTSETTING_NOT_EXISTS); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java index 968b54cf..98f4c1b6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java @@ -108,7 +108,7 @@ public class WarehouseServiceImpl implements WarehouseService { try { validateWarehouseExists(null); } catch (ServiceException ex) { - massage += ex.getMessage() + ","; + massage += ex.getMessage() + ","; } try { validateCodeExists(null,warehouse.getCode()); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java index 61a6b71d..99d6fcad 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java @@ -374,7 +374,7 @@ public class JobUtils { if (ifOutLocationType == true) { return true; } else { - throw new UtilException("出库库位" + plocationCode + "的库位类型" + locationDO.getType() + "与业务类型" + + throw new UtilException("出库库位" + plocationCode + "的库位类型" + locationDO.getType() + "与业务类型与业务类型" + businesstypeDO.getName() + "的出库库位类型" + businesstypeDO.getOutLocationTypes() + "不一致"); } } From 108cdb627f006f412b69643223fa30eb56ca0317 Mon Sep 17 00:00:00 2001 From: "hongxi.lian" Date: Thu, 9 Nov 2023 09:36:41 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E9=80=80=E8=B4=A7?= =?UTF-8?q?=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/excel/core/util/ExcelUtils.java | 2 +- .../module/wms/enums/ErrorCodeConstants.java | 2 + .../vo/CustomerreturnRecordMainExcelVO.java | 2 - .../CustomerreturnRecordMainExportReqVO.java | 2 - .../vo/CustomerreturnRecordMainPageReqVO.java | 2 - .../CustomerreturnRequestMainController.java | 56 ++++ .../vo/CustomerreturnRequestDetailBaseVO.java | 4 + .../CustomerreturnRequestImportErrorVO.java | 24 ++ .../vo/CustomerreturnRequestImportVO.java | 73 +++++ .../vo/CustomerreturnRequestMainBaseVO.java | 43 ++- .../CustomerreturnRequestMainCreateReqVO.java | 7 +- .../IssueRequestMainController.java | 3 - ...ProductionreturnRequestMainController.java | 14 +- .../CustomerreturnRequestDetailConvert.java | 32 ++- .../CustomerreturnRequestDetailDO.java | 4 + .../CustomerreturnRequestMainDO.java | 5 +- .../CustomerreturnRecordMainMapper.java | 2 - .../CustomerreturnRequestMainMapper.java | 7 +- .../CustomerreturnRequestMainService.java | 10 +- .../CustomerreturnRequestMainServiceImpl.java | 251 +++++++++++++++++- .../DeliverRecordMainService.java | 20 +- .../DeliverRecordMainServiceImpl.java | 29 ++ .../issueRequest/IssueRequestMainService.java | 2 - .../IssueRequestMainServiceImpl.java | 5 - .../PurchaseclaimRequestMainServiceImpl.java | 12 +- 25 files changed, 537 insertions(+), 76 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestImportVO.java diff --git a/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/util/ExcelUtils.java b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/util/ExcelUtils.java index 8d8dc737..c2704dd5 100644 --- a/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/util/ExcelUtils.java +++ b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/util/ExcelUtils.java @@ -83,7 +83,7 @@ public class ExcelUtils { public static List read(MultipartFile file, Class head) throws IOException { return EasyExcel.read(file.getInputStream(), head, null) .autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理 - .doReadAllSync(); + . doReadAllSync(); } public static List read(MultipartFile file, Class head, AnalysisEventListener listener) throws IOException { 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 8fbe9c32..e00ab0bb 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 @@ -678,6 +678,8 @@ public interface ErrorCodeConstants { //客户退货申请ErrorCode ErrorCode CUSTOMERRETURN_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_124_000, "客户退货申请主不存在"); ErrorCode CUSTOMERRETURN_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_124_001, "客户退货申请子不存在"); + + ErrorCode CUSTOMERRETURN_REQUEST_NOT_EXISTS = new ErrorCode(1_000_124_000, "客户退货申请不存在"); //客户退货任务ErrorCode ErrorCode CUSTOMERRETURN_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_125_000, "客户退货任务主不存在"); ErrorCode CUSTOMERRETURN_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_125_001, "客户退货任务子不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java index ca38ec14..d63365da 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java @@ -22,8 +22,6 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class CustomerreturnRecordMainExcelVO { - @ExcelProperty("申请单号") - private String requestNumber; @ExcelProperty("任务单号") private String jobNumber; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExportReqVO.java index f25bd49e..52099b32 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExportReqVO.java @@ -13,8 +13,6 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @Data public class CustomerreturnRecordMainExportReqVO { - @Schema(description = "申请单号") - private String requestNumber; @Schema(description = "任务单号") private String jobNumber; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainPageReqVO.java index 8bfab2a0..3b322b96 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainPageReqVO.java @@ -15,8 +15,6 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @ToString(callSuper = true) public class CustomerreturnRecordMainPageReqVO extends PageParam { - @Schema(description = "申请单号") - private String requestNumber; @Schema(description = "任务单号") private String jobNumber; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/CustomerreturnRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/CustomerreturnRequestMainController.java index 1fdaad55..72f7b52d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/CustomerreturnRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/CustomerreturnRequestMainController.java @@ -1,8 +1,16 @@ package com.win.module.wms.controller.customerreturnRequest; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.framework.excel.core.util.ConvertUtil; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportErrorVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainCreateReqVO; +import com.win.module.wms.enums.DictTypeConstants; +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 +21,8 @@ import io.swagger.v3.oas.annotations.Operation; import javax.validation.*; import javax.servlet.http.*; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import java.io.IOException; @@ -29,6 +39,7 @@ import com.win.module.wms.controller.customerreturnRequest.vo.*; import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; import com.win.module.wms.convert.customerreturnRequest.CustomerreturnRequestMainConvert; import com.win.module.wms.service.customerreturnRequest.CustomerreturnRequestMainService; +import org.springframework.web.multipart.MultipartFile; @Tag(name = "管理后台 - 客户退货申请主") @RestController @@ -121,4 +132,49 @@ public class CustomerreturnRequestMainController { ExcelUtils.write(response, "客户退货申请主.xls", "数据", CustomerreturnRequestMainExcelVO.class, datas); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入制客户退货信息模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = Arrays.asList( + + ); + Map mapDropDown = new HashMap<>(); + String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE); + mapDropDown.put(3, transferMode); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(13, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(12, uom); + // 输出 + ExcelUtils.write(response, "客户退货申请信息导入模板.xls", "客户退货申请信息列表", CustomerreturnRequestImportVO.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:customerreturn-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, CustomerreturnRequestImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(CustomerreturnRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = customerreturnRequestMainService.importCustomerreturnMainList(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/customerreturnRequest/vo/CustomerreturnRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestDetailBaseVO.java index d5feaf8d..17080a3e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestDetailBaseVO.java @@ -50,6 +50,10 @@ public class CustomerreturnRequestDetailBaseVO { @NotNull(message = "从库位代码不能为空") private String fromLocationCode; + @Schema(description = "到库位代码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "到库位代码不能为空") + private String toLocationCode; + @Schema(description = "单据号") private String number; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestImportErrorVO.java new file mode 100644 index 00000000..f8d5b40a --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestImportErrorVO.java @@ -0,0 +1,24 @@ +package com.win.module.wms.controller.customerreturnRequest.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 CustomerreturnRequestImportErrorVO extends CustomerreturnRequestImportVO{ + + @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/customerreturnRequest/vo/CustomerreturnRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestImportVO.java new file mode 100644 index 00000000..f795350f --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestImportVO.java @@ -0,0 +1,73 @@ +package com.win.module.wms.controller.customerreturnRequest.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 CustomerreturnRequestImportVO { +//主表字段 + @ExcelProperty("发货记录单号") + private String deliverRecordNumber; + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("承运商") + private String carrierCode; + + @ExcelProperty(value = "运输方式", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRANSFER_MODE) + private String transferMode; + + @ExcelProperty("车牌号") + private String vehiclePlateNumber; + //子表字段 + @ExcelProperty("销售订单号") + private String soNumber; + + @ExcelProperty("销售订单行") + private String soLine; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainBaseVO.java index a5c384d4..37e068f9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainBaseVO.java @@ -1,11 +1,8 @@ package com.win.module.wms.controller.customerreturnRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; import java.time.LocalDateTime; import javax.validation.constraints.*; import org.springframework.format.annotation.DateTimeFormat; @@ -22,10 +19,6 @@ public class CustomerreturnRequestMainBaseVO { @Schema(description = "id", example = "id") private Long id; - @Schema(description = "申请单号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "申请单号不能为空") - private String requestNumber; - @Schema(description = "发货记录单号") private String deliverRecordNumber; @@ -33,11 +26,11 @@ public class CustomerreturnRequestMainBaseVO { private String deliverPlanNumber; @Schema(description = "客户代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "客户代码不能为空") + @NotBlank(message = "客户代码不能为空") private String customerCode; @Schema(description = "客户月台代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "客户月台代码不能为空") + @NotBlank(message = "客户月台代码不能为空") private String customerDockCode; @Schema(description = "承运商") @@ -50,11 +43,12 @@ public class CustomerreturnRequestMainBaseVO { private String vehiclePlateNumber; @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "单据号不能为空") + @OnlyOne + @NotBlank(message = "单据号不能为空") private String number; @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "业务类型不能为空") + @NotBlank(message = "业务类型不能为空") private String businessType; @Schema(description = "备注") @@ -76,8 +70,7 @@ public class CustomerreturnRequestMainBaseVO { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime dueTime; - @Schema(description = "部门", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "部门不能为空") + @Schema(description = "部门") private String departmentCode; @Schema(description = "状态") @@ -90,47 +83,45 @@ public class CustomerreturnRequestMainBaseVO { @Schema(description = "最后更新者用户名") private String updater; - @Schema(description = "从仓库代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从仓库代码不能为空") + @Schema(description = "从仓库代码") private String fromWarehouseCode; @Schema(description = "从库位类型范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从库位类型范围不能为空") + @NotBlank(message = "从库位类型范围不能为空") private String fromLocationTypes; @Schema(description = "从库区代码范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从库区代码范围不能为空") + @NotBlank(message = "从库区代码范围不能为空") private String fromAreaCodes; - @Schema(description = "到仓库代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "到仓库代码不能为空") + @Schema(description = "到仓库代码") private String toWarehouseCode; @Schema(description = "到库位类型范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "到库位类型范围不能为空") + @NotBlank(message = "到库位类型范围不能为空") private String toLocationTypes; @Schema(description = "到库区代码范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "到库区代码范围不能为空") + @NotBlank(message = "到库区代码范围不能为空") private String toAreaCodes; @Schema(description = "到月台代码") private String toDockCode; @Schema(description = "自动提交", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "自动提交不能为空") + @NotBlank(message = "自动提交不能为空") private String autoCommit; @Schema(description = "自动通过", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "自动通过不能为空") + @NotBlank(message = "自动通过不能为空") private String autoAgree; @Schema(description = "自动执行", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "自动执行不能为空") + @NotBlank(message = "自动执行不能为空") private String autoExecute; @Schema(description = "直接生成记录", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "直接生成记录不能为空") + @NotBlank(message = "直接生成记录不能为空") private String directCreateRecord; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainCreateReqVO.java index 923a42ee..d9d4fd1b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainCreateReqVO.java @@ -1,12 +1,17 @@ package com.win.module.wms.controller.customerreturnRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 客户退货申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class CustomerreturnRequestMainCreateReqVO extends CustomerreturnRequestMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java index eccaefb5..87efa409 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java @@ -5,9 +5,6 @@ import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ConvertUtil; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; -import com.win.module.wms.controller.inspectRequest.vo.IssueRequestImportErrorVO; -import com.win.module.wms.controller.inspectRequest.vo.IssueRequestImportVO; -import com.win.module.wms.controller.inspectRequest.vo.IssueRequestMainCreateReqVO; import com.win.module.wms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.Parameters; import org.springframework.web.bind.annotation.*; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java index fc2d0bd7..5cb20393 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java @@ -3,27 +3,36 @@ package com.win.module.wms.controller.productionreturnRequest; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.framework.excel.core.util.ConvertUtil; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.productionreturnRequest.vo.*; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportErrorVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.productionreturnRequest.ProductionreturnRequestMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.util.Collection; -import java.util.List; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -121,4 +130,5 @@ public class ProductionreturnRequestMainController { return success(result); } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRequest/CustomerreturnRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRequest/CustomerreturnRequestDetailConvert.java index 98902e71..200173cc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRequest/CustomerreturnRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRequest/CustomerreturnRequestDetailConvert.java @@ -4,11 +4,17 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailCreateReqVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailExcelVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailRespVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailUpdateReqVO; +import com.win.module.wms.controller.customerreturnRequest.vo.*; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailCreateReqVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailExcelVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainCreateReqVO; +import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestDetailDO; @@ -33,5 +39,21 @@ public interface CustomerreturnRequestDetailConvert { PageResult convertPage(PageResult page); List convertList02(List list); - + CustomerreturnRequestDetailCreateReqVO convert1(CustomerreturnRequestDetailDO bean); + + 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"), + }) + CustomerreturnRequestDetailExcelVO convert(CustomerreturnRequestMainDO mainDO, CustomerreturnRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + CustomerreturnRequestImportErrorVO convert(CustomerreturnRequestMainCreateReqVO mainVo, CustomerreturnRequestDetailCreateReqVO detailVo); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestDetailDO.java index 14e8f515..c265b4b8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestDetailDO.java @@ -61,6 +61,10 @@ public class CustomerreturnRequestDetailDO extends BaseDO { * 从库位代码 */ private String fromLocationCode; + /** + * 到库位代码 + */ + private String toLocationCode; /** * 主表ID */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestMainDO.java index c6802688..56834890 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestMainDO.java @@ -28,10 +28,7 @@ public class CustomerreturnRequestMainDO extends BaseDO { */ @TableId private Long id; - /** - * 申请单号 - */ - private String requestNumber; + /** * 发货记录单号 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordMainMapper.java index 488d6101..b88c438d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordMainMapper.java @@ -22,7 +22,6 @@ public interface CustomerreturnRecordMainMapper extends BaseMapperX selectPage(CustomerreturnRecordMainPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(CustomerreturnRecordMainDO::getRequestNumber, reqVO.getRequestNumber()) .eqIfPresent(CustomerreturnRecordMainDO::getJobNumber, reqVO.getJobNumber()) .eqIfPresent(CustomerreturnRecordMainDO::getDeliverRecordNumber, reqVO.getDeliverRecordNumber()) .eqIfPresent(CustomerreturnRecordMainDO::getDeliverPlanNumber, reqVO.getDeliverPlanNumber()) @@ -60,7 +59,6 @@ public interface CustomerreturnRecordMainMapper extends BaseMapperX selectList(CustomerreturnRecordMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() - .eqIfPresent(CustomerreturnRecordMainDO::getRequestNumber, reqVO.getRequestNumber()) .eqIfPresent(CustomerreturnRecordMainDO::getJobNumber, reqVO.getJobNumber()) .eqIfPresent(CustomerreturnRecordMainDO::getDeliverRecordNumber, reqVO.getDeliverRecordNumber()) .eqIfPresent(CustomerreturnRecordMainDO::getDeliverPlanNumber, reqVO.getDeliverPlanNumber()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRequest/CustomerreturnRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRequest/CustomerreturnRequestMainMapper.java index f5e17b19..18418b2d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRequest/CustomerreturnRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRequest/CustomerreturnRequestMainMapper.java @@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainExportReqVO; import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainPageReqVO; import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import org.apache.ibatis.annotations.Mapper; /** @@ -22,7 +23,6 @@ public interface CustomerreturnRequestMainMapper extends BaseMapperX selectPage(CustomerreturnRequestMainPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(CustomerreturnRequestMainDO::getRequestNumber, reqVO.getRequestNumber()) .eqIfPresent(CustomerreturnRequestMainDO::getDeliverRecordNumber, reqVO.getDeliverRecordNumber()) .eqIfPresent(CustomerreturnRequestMainDO::getDeliverPlanNumber, reqVO.getDeliverPlanNumber()) .eqIfPresent(CustomerreturnRequestMainDO::getCustomerCode, reqVO.getCustomerCode()) @@ -57,9 +57,12 @@ public interface CustomerreturnRequestMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } + + default CustomerreturnRequestMainDO selectByDeliverrecordnumberAndSupplierCode(String deliverrecordnumber) { + return selectOne(CustomerreturnRequestMainDO::getDeliverRecordNumber,deliverrecordnumber); + } default List selectList(CustomerreturnRequestMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() - .eqIfPresent(CustomerreturnRequestMainDO::getRequestNumber, reqVO.getRequestNumber()) .eqIfPresent(CustomerreturnRequestMainDO::getDeliverRecordNumber, reqVO.getDeliverRecordNumber()) .eqIfPresent(CustomerreturnRequestMainDO::getDeliverPlanNumber, reqVO.getDeliverPlanNumber()) .eqIfPresent(CustomerreturnRequestMainDO::getCustomerCode, reqVO.getCustomerCode()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainService.java index ea6048a3..08fbf23d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainService.java @@ -4,10 +4,10 @@ import java.util.*; import javax.validation.*; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainCreateReqVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainExportReqVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainPageReqVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainUpdateReqVO; +import com.win.module.wms.controller.customerreturnRequest.vo.*; +import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainCreateReqVO; +import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainImportErrorVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportErrorVO; import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; import com.win.framework.common.pojo.PageResult; @@ -79,4 +79,6 @@ public interface CustomerreturnRequestMainService { */ List getCustomerreturnRequestMainList(CustomerreturnRequestMainExportReqVO exportReqVO); + public List importCustomerreturnMainList(List datas, Integer mode, boolean updatePart); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java index 71658fd5..70e4f9e2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java @@ -1,25 +1,50 @@ package com.win.module.wms.service.customerreturnRequest; +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.customerreturnRequest.vo.CustomerreturnRequestMainCreateReqVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainExportReqVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainPageReqVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainUpdateReqVO; +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.customerreturnRequest.vo.*; +import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; +import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordMainDO; +import com.win.module.wms.service.deliverRecord.*; +import com.win.module.wms.dal.mysql.customerreturnRequest.CustomerreturnRequestDetailMapper; +import com.win.module.wms.service.requestsetting.*; +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.requestsetting.RequestsettingDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.util.*; +import com.win.module.wms.service.location.*; +import com.win.module.wms.convert.customerreturnRequest.CustomerreturnRequestDetailConvert; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO; +import com.win.module.wms.service.purchasereceiptRecord.*; +import com.win.module.wms.service.itembasic.*; +import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestDetailDO; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.validation.Validator; +import java.time.LocalDateTime; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; +import java.math.BigDecimal; import java.util.*; - import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; import com.win.framework.common.pojo.PageResult; - import com.win.module.wms.convert.customerreturnRequest.CustomerreturnRequestMainConvert; import com.win.module.wms.dal.mysql.customerreturnRequest.CustomerreturnRequestMainMapper; - import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.module.wms.enums.ErrorCodeConstants.*; + /** * 客户退货申请主 Service 实现类 * @@ -32,6 +57,32 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque @Resource private CustomerreturnRequestMainMapper customerreturnRequestMainMapper; + @Resource + private CustomerreturnRequestDetailMapper customerreturnRequestDetailMapper; + + @Resource + private RequestsettingService requestsettingService; + + @Resource + private DeliverRecordMainService deliverRecordMainService; + + @Resource + private ItembasicService itembasicService; + @Resource + private JobUtils jobUtils; + + + @Resource + private SerialNumberApi serialNumberApi; + + @Resource + private DictDataApi dictDataApi; + + @Resource + private LocationService locationService; + + @Resource + private Validator validator; @Override public Long createCustomerreturnRequestMain(CustomerreturnRequestMainCreateReqVO createReqVO) { // 插入 @@ -87,4 +138,190 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque return customerreturnRequestMainMapper.selectList(exportReqVO); } + private void validatePurchaseclaimRequestMainExists(Long id) { + CustomerreturnRequestMainDO customerRequestMainDO = customerreturnRequestMainMapper.selectById(id); + if (customerRequestMainDO == null) { + return; + }else { + throw exception(CUSTOMERRETURN_REQUEST_NOT_EXISTS); + } + } + public String isqty(BigDecimal qty1, BigDecimal qty2) { + if(qty1.compareTo(qty2) < 0){ + return "ture"; + } else { + throw new UtilException("上架数量"+qty2+ "不能大于库存数量"+ qty1); + } + } + + + @Override + @Transactional + public List importCustomerreturnMainList(List datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(CUSTOMERRETURN_REQUEST_NOT_EXISTS); + } + List< CustomerreturnRequestImportErrorVO> errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList + String messageMain = ""; + BusinesstypeDO businesstypeDO = null; + //主表校验方法 + try { + DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(createReqVO.getDeliverRecordNumber()); + createReqVO.setDeliverPlanNumber(deliverRecordMainDO.getDeliverPlanNumber()); + createReqVO.setCustomerCode(deliverRecordMainDO.getCustomerCode()); + createReqVO.setCustomerDockCode(deliverRecordMainDO.getCustomerDockCode()); + createReqVO.setCreateTime(LocalDateTime.now()); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + + 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.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 = CustomerreturnRequestDetailConvert.INSTANCE.convertList03(subList); + for(CustomerreturnRequestDetailDO 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() + ","; + } + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); + detailDO.setItemDesc1(itembasicDO.getDesc1()); + detailDO.setItemDesc2(itembasicDO.getDesc2()); + detailDO.setItemName(itembasicDO.getName()); + detailDO.setProjectCode(itembasicDO.getProject()); + detailDO.setUom(itembasicDO.getUom()); + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + try { + locationService.selectLocation(detailDO.getFromLocationCode()); + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + + try{ + if(!detailDO.getFromLocationCode().isEmpty()){ + jobUtils.ifInToLocationType(detailDO.getFromLocationCode(),businesstypeDO); + } + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + try{ + jobUtils.ifInFromLocationType(detailDO.getToLocationCode(),businesstypeDO); + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + try{ + jobUtils.ifInInventoryStatuses(detailDO.getInventoryStatus(),businesstypeDO); + }catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + + try{ + if("客户寄售库".equals(detailDO.getFromLocationCode())){ + 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) { + messageDetail += ex.getMessage() + ","; + } + } + }catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + CustomerreturnRequestDetailCreateReqVO customerreturnRequestDetailCreateReqVO = CustomerreturnRequestDetailConvert.INSTANCE.convert1(detailDO); + CustomerreturnRequestImportErrorVO importVO = CustomerreturnRequestDetailConvert.INSTANCE.convert(createReqVO, customerreturnRequestDetailCreateReqVO); + 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()); + } + } + CustomerreturnRequestMainDO createObj = CustomerreturnRequestMainConvert.INSTANCE.convert(createReqVO); + + if (errorList.isEmpty()) { + CustomerreturnRequestMainDO existCustomerreturnRequestMainDO = customerreturnRequestMainMapper.selectByDeliverrecordnumberAndSupplierCode(createReqVO.getDeliverRecordNumber()); + if (existCustomerreturnRequestMainDO == null && mode != 3) { + customerreturnRequestMainMapper.insert(createObj); + customerreturnRequestDetailMapper.insertBatch(subDOList); + } + else if (existCustomerreturnRequestMainDO == null && mode != 2) { + customerreturnRequestMainMapper.updateById(createObj); + customerreturnRequestDetailMapper.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/deliverRecord/DeliverRecordMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordMainService.java index a933a95b..d6facebf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordMainService.java @@ -2,7 +2,6 @@ package com.win.module.wms.service.deliverRecord; import java.util.*; import javax.validation.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainCreateReqVO; import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainExportReqVO; @@ -93,4 +92,23 @@ public interface DeliverRecordMainService { */ List getDeliverRecordMainList(DeliverRecordMainExportReqVO exportReqVO); + + /** + * Record-----QProdD_Main + * 校验成品发货记录 + * author lianhongxi + * @param pnumber 单据号 + * @return + */ + DeliverRecordMainDO selectsMainRecordExist(String pnumber); + + + /** + * Record-----QProdD_Detail + * 查询成品发货记录子表 + * author lianhongxi + * @param pnumber 单据号 + * @return + */ + List selectsDeliverRecordExist(String pnumber); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordMainServiceImpl.java index c9454194..b8759838 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRecord/DeliverRecordMainServiceImpl.java @@ -8,6 +8,7 @@ import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainExportReq import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainPageReqVO; import com.win.module.wms.controller.deliverRecord.vo.DeliverRecordMainUpdateReqVO; import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; +import com.win.module.wms.dal.dataobject.rule.RuleDO; import com.win.module.wms.dal.mysql.deliverRecord.DeliverRecordDetailMapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -98,6 +99,34 @@ public class DeliverRecordMainServiceImpl implements DeliverRecordMainService { } } @Override + public DeliverRecordMainDO selectsMainRecordExist(String pnumber){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("number",pnumber); + DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainMapper.selectOne(queryWrapper); + if(deliverRecordMainDO != null && "TRUE".equals(deliverRecordMainDO.getAvailable())){ + return deliverRecordMainDO; + } + else{ + throw new UtilException( "发货记录无效"+pnumber+"无效"); + } + } + @Override + public List selectsDeliverRecordExist(String pnumber) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.in("number",pnumber); + List deliverRecordDetailDO = deliverRecordDetailMapper.selectList(queryWrapper); + if(!deliverRecordDetailDO.isEmpty()) { + for (DeliverRecordDetailDO detail : deliverRecordDetailDO) { + if (detail != null && "TRUE".equals(detail.getAvailable())) { + return deliverRecordDetailDO; + } else { + throw new UtilException("发货记录明细:单据号" + pnumber + "无效"); + } + } + } + return null; + } + @Override public List getDeliverRecordMainList(Collection ids) { return deliverRecordMainMapper.selectBatchIds(ids); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java index 0d1cfdb1..b583395a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java @@ -5,8 +5,6 @@ import javax.validation.*; import com.win.framework.common.pojo.CustomConditions; import com.win.module.wms.controller.issueRequest.vo.*; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestImportErrorVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainCreateReqVO; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.framework.common.pojo.PageResult; 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 9d30d7f0..7a668b83 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 @@ -172,11 +172,6 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { String messageMain = ""; BusinesstypeDO businesstypeDO = null; //主表校验方法 - try { - validateIssueRequestMainExists(null); - } catch (Exception ex) { - messageMain += ex.getMessage() + ","; - } try { workshopService.selectWorkshopExist(createReqVO.getWorkshopCode()); } catch (Exception ex) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java index c14aa3a5..de165a16 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java @@ -183,11 +183,7 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest } catch (Exception ex) { messageMain += ex.getMessage() + ","; } - try{ - ValidationUtils.validate(validator,createReqVO); - }catch (Exception ex) { - messageMain += ex.getMessage() + ","; - } + try { supplierService.selectSupplier(createReqVO.getSupplierCode()); } catch (Exception ex) { @@ -228,6 +224,11 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest }catch (Exception ex) { messageDetail += ex.getMessage() + ","; } + try{ + ValidationUtils.validate(validator,createReqVO); + }catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } PurchaseclaimRequestDetailCreateReqVO purchaseclaimRequestDetailCreateReqVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert1(detailDO); PurchaseclaimRequestImportErrorVO importVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseclaimRequestDetailCreateReqVO); //进行子表的错误统计 @@ -244,6 +245,7 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_REQUEST.getCode()); createReqVO.setNumber(number); } + } if(errorList.isEmpty()){ // 判断如果不存在,在进行插入 From 387ddd8d119e788de19ceb48bf553f2011cb581d Mon Sep 17 00:00:00 2001 From: "hongxi.lian" Date: Thu, 9 Nov 2023 15:56:03 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 3 + .../CustomersettleRequestMainController.java | 42 ++++ .../CustomersettleRequestImportErrorVO.java | 23 +++ .../vo/CustomersettleRequestMainBaseVO.java | 2 + .../CustomersettleRequestMainCreateReqVO.java | 8 +- .../vo/CustomersettleRequestMainImportVO.java | 39 ++++ .../vo/DeliverPlanMainImportVO.java | 7 +- .../DeliverRequestMainController.java | 42 ++++ .../vo/DeliverRequestImportErrorVO.java | 24 +++ .../vo/DeliverRequestImportVO.java | 55 ++++++ .../vo/DeliverRequestMainBaseVO.java | 2 + .../vo/DeliverRequestMainCreateReqVO.java | 8 +- .../ProductputawayRequestMainController.java | 4 +- .../ProductscrapRequestMainController.java | 12 +- .../CustomersettleRequestDetailConvert.java | 23 ++- .../DeliverRequestDetailConvert.java | 27 ++- .../CustomersettleRequestMainMapper.java | 5 + .../DeliverRequestMainMapper.java | 5 + .../CustomersettleRequestMainService.java | 10 +- .../CustomersettleRequestMainServiceImpl.java | 153 ++++++++++++++- .../DeliverRequestMainService.java | 10 +- .../DeliverRequestMainServiceImpl.java | 185 +++++++++++++++++- .../IssueRequestMainServiceImpl.java | 14 -- 23 files changed, 648 insertions(+), 55 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customersettleRequest/vo/CustomersettleRequestMainImportVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestImportVO.java diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index 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; From 501692c27ba0757ef49821a0971c68b95fc5f808 Mon Sep 17 00:00:00 2001 From: chenfang Date: Thu, 9 Nov 2023 16:15:08 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E5=8F=91=E8=B4=A7=E7=94=B3=E8=AF=B7=20=20?= =?UTF-8?q?=E5=AF=BC=E5=85=A5/=E6=96=B0=E5=A2=9E/=E4=BF=AE=E6=94=B9=20=20?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../issueRequest/IssueRequestMainConvert.java | 1 + .../IssueRequestMainServiceImpl.java | 155 ++++++++---------- 2 files changed, 72 insertions(+), 84 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java index 12b9181d..1a92e15b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java @@ -26,6 +26,7 @@ public interface IssueRequestMainConvert { IssueRequestMainConvert INSTANCE = Mappers.getMapper(IssueRequestMainConvert.class); IssueRequestMainDO convert(IssueRequestMainCreateReqVO bean); + IssueRequestMainDO convert(IssueRequestMainBaseVO bean); IssueRequestMainDO convert(IssueRequestMainUpdateReqVO bean); 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 b6e75314..731f83f4 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 @@ -2,12 +2,13 @@ package com.win.module.wms.service.issueRequest; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; -import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.util.validation.ValidationUtils; import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.issueRequest.vo.*; @@ -21,6 +22,7 @@ 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; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.productionline.ProductionlineService; import com.win.module.wms.service.productionlineitem.ProductionlineitemService; @@ -82,23 +84,31 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { private RuleService ruleService; @Resource private RequestsettingService requestsettingService; + @Resource + private TrendsApi trendsApi; @Override public Long createIssueRequestMain(IssueRequestMainCreateReqVO createReqVO) { - // 插入 - IssueRequestMainDO issueRequestMain = IssueRequestMainConvert.INSTANCE.convert(createReqVO); - issueRequestMainMapper.insert(issueRequestMain); - // 返回 - return issueRequestMain.getId(); + RequestsettingDO requestsettingDO = new RequestsettingDO(); + IssueRequestMainDO issueRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(issueRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE); + return issueRequestMainDO.getId(); } @Override public void updateIssueRequestMain(IssueRequestMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = new RequestsettingDO(); // 校验存在 validateIssueRequestMainExists(updateReqVO.getId()); - // 更新 - IssueRequestMainDO updateObj = IssueRequestMainConvert.INSTANCE.convert(updateReqVO); - issueRequestMainMapper.updateById(updateObj); + IssueRequestMainDO issueRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(issueRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE); } @Override @@ -233,101 +243,78 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { } //新增校验 - private void validatorToCreate(IssueRequestMainCreateReqVO createReqVO) { - IssueRequestMainDO issueRequestMainDO = IssueRequestMainConvert.INSTANCE.convert(createReqVO); - //主表校验 - this.validatorWorkshop(issueRequestMainDO.getWorkshopCode()); - issueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - issueRequestMainDO.setRequestTime(LocalDateTime.now()); - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); - issueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); - issueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); - issueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); - issueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); - issueRequestMainDO.setBusinessType(businesstypeDO.getCode()); - issueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); - issueRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); - issueRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); - issueRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); - issueRequestMainDO.setNumber(number); - issueRequestMainMapper.insert(issueRequestMainDO); + private IssueRequestMainDO validatorToCreate(IssueRequestMainCreateReqVO createReqVO,RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + IssueRequestMainDO issueRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); //子表校验 List subList = createReqVO.getSubList(); List subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList); for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { - ItembasicDO itembasicDO = validatorItembasic(issueRequestDetailDO.getItemCode()); - this.validatorIfInType(itembasicDO.getType(), businesstypeDO); - this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom()); - ProductionlineDO productionlineDO = validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode()); - issueRequestDetailDO.setToLocationCode(productionlineDO.getRawLocationCode()); - WorkstationDO workstationDO = validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode()); - issueRequestDetailDO.setToLocationCode(workstationDO.getRawLocationCode()); - this.validatorProductionLineCodeAndpItemCodeExist(issueRequestDetailDO.getProductionLineCode(), issueRequestDetailDO.getItemCode()); - RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, issueRequestDetailDO.getItemCode(), null, null, null, null, null, null); - if (grounding == null) { - throw exception(555, "未查找到该条上架策略"); - } else { - JSONObject json = JSONUtil.parseObj(grounding); - String locationCode = json.get("LocationCode").toString(); - this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode); - } - issueRequestDetailDO.setMasterId(issueRequestMainDO.getId()); - issueRequestDetailDO.setNumber(number); - issueRequestDetailMapper.insertBatch(subDOList); + validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO); } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + issueRequestMainDO.setNumber(number); + issueRequestMainMapper.insert(issueRequestMainDO); + issueRequestDetailMapper.insertBatch(subDOList); + return issueRequestMainDO; } //修改校验 - private void validatorToUpdate(IssueRequestMainUpdateReqVO updateReqVO) { - IssueRequestMainDO issueRequestMainDO = IssueRequestMainConvert.INSTANCE.convert(updateReqVO); - //主表校验 - validateIssueRequestMainExists(updateReqVO.getId()); + private IssueRequestMainDO validatorToUpdate(IssueRequestMainUpdateReqVO updateReqVO,RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + IssueRequestMainDO issueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = updateReqVO.getSubList(); + List subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList); + for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { + validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO); + } + issueRequestMainMapper.updateById(issueRequestMainDO); + issueRequestDetailMapper.updateBatch(subDOList); + return issueRequestMainDO; + } + //校验主表公共方法(适用于新增/修改) + private IssueRequestMainDO validateMainMethod(IssueRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO){ + IssueRequestMainDO issueRequestMainDO = IssueRequestMainConvert.INSTANCE.convert(baseVO); + validateIssueRequestMainExists(baseVO.getId()); this.validatorWorkshop(issueRequestMainDO.getWorkshopCode()); issueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); issueRequestMainDO.setRequestTime(LocalDateTime.now()); - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); + requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); issueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); issueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); issueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); issueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); issueRequestMainDO.setBusinessType(businesstypeDO.getCode()); issueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); issueRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); issueRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); issueRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); - issueRequestMainDO.setNumber(number); - issueRequestMainMapper.insert(issueRequestMainDO); - //子表校验 - List subList = updateReqVO.getSubList(); - List subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList); - for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { - validateIssueRequestDetailExists(issueRequestDetailDO.getId()); - ItembasicDO itembasicDO = validatorItembasic(issueRequestDetailDO.getItemCode()); - this.validatorIfInType(itembasicDO.getType(), businesstypeDO); - this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom()); - ProductionlineDO productionlineDO = validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode()); - issueRequestDetailDO.setToLocationCode(productionlineDO.getRawLocationCode()); - WorkstationDO workstationDO = validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode()); - issueRequestDetailDO.setToLocationCode(workstationDO.getRawLocationCode()); - this.validatorProductionLineCodeAndpItemCodeExist(issueRequestDetailDO.getProductionLineCode(), issueRequestDetailDO.getItemCode()); - RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, issueRequestDetailDO.getItemCode(), null, null, null, null, null, null); - if (grounding == null) { - throw exception(555, "未查找到该条上架策略"); - } else { - JSONObject json = JSONUtil.parseObj(grounding); - String locationCode = json.get("LocationCode").toString(); - this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode); - } - issueRequestDetailDO.setMasterId(issueRequestMainDO.getId()); - issueRequestDetailDO.setNumber(number); - issueRequestDetailMapper.insertBatch(subDOList); + return issueRequestMainDO; + } + //校验子表公共方法(适用于新增/修改) + private void validateDetailMethod(IssueRequestDetailDO issueRequestDetailDO,BusinesstypeDO businesstypeDO,IssueRequestMainDO issueRequestMainDO) { + validateIssueRequestDetailExists(issueRequestDetailDO.getId()); + ItembasicDO itembasicDO = validatorItembasic(issueRequestDetailDO.getItemCode()); + this.validatorIfInType(itembasicDO.getType(), businesstypeDO); + this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom()); + ProductionlineDO productionlineDO = validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode()); + issueRequestDetailDO.setToLocationCode(productionlineDO.getRawLocationCode()); + WorkstationDO workstationDO = validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode()); + issueRequestDetailDO.setToLocationCode(workstationDO.getRawLocationCode()); + this.validatorProductionLineCodeAndpItemCodeExist(issueRequestDetailDO.getProductionLineCode(), issueRequestDetailDO.getItemCode()); + RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, issueRequestDetailDO.getItemCode(), null, null, null, null, null, null); + if (grounding == null) { + throw exception(555, "未查找到该条上架策略"); + } else { + JSONObject json = JSONUtil.parseObj(grounding); + String locationCode = json.get("LocationCode").toString(); + this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode); } + issueRequestDetailDO.setMasterId(issueRequestMainDO.getId()); + issueRequestDetailDO.setNumber(issueRequestMainDO.getNumber()); } - /** * 校验导入,并赋值一些参数 * @@ -394,13 +381,13 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { message.append(ex.getMessage()).append(","); } try { - ProductionlineDO productionlineDO = validatorProductionLineCode(detailDo.getProductionLineCode()); + ProductionlineDO productionlineDO = this.validatorProductionLineCode(detailDo.getProductionLineCode()); detailDo.setToLocationCode(productionlineDO.getRawLocationCode()); } catch (Exception ex) { message.append(ex.getMessage()).append(","); } try { - WorkstationDO workstationDO = validatorWorkstation(detailDo.getWorkStationCode(), mainDo.getWorkshopCode(), detailDo.getProductionLineCode()); + WorkstationDO workstationDO = this.validatorWorkstation(detailDo.getWorkStationCode(), mainDo.getWorkshopCode(), detailDo.getProductionLineCode()); detailDo.setToLocationCode(workstationDO.getRawLocationCode()); } catch (Exception ex) { message.append(ex.getMessage()).append(","); From a20a82bdf71350e378bfd888e59d63782f262b21 Mon Sep 17 00:00:00 2001 From: zhang_li <2235006734@qqq.com> Date: Thu, 9 Nov 2023 17:08:31 +0800 Subject: [PATCH 5/8] Changes --- .../vo/PurchasereceiptRequestDetailBaseVO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailBaseVO.java index 620c5556..bd70d4b0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailBaseVO.java @@ -99,7 +99,7 @@ public class PurchasereceiptRequestDetailBaseVO { private String projectCode; @Schema(description = "数量") - @NotBlank(message = "数量不能为空") + @NotNull(message = "数量不能为空") private BigDecimal qty; @Schema(description = "计量单位") From 4785b2a44ebee7806ee7cf27edf4509467033835 Mon Sep 17 00:00:00 2001 From: chenfang Date: Thu, 9 Nov 2023 17:41:57 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=20=20=E5=AF=BC=E5=85=A5/=E6=96=B0=E5=A2=9E/?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=20=E6=A0=A1=E9=AA=8C=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dal/dataobject/issueRequest/IssueRequestDetailDO.java | 7 +++++++ .../dal/dataobject/issueRequest/IssueRequestMainDO.java | 7 +++++++ .../service/issueRequest/IssueRequestMainServiceImpl.java | 1 - 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestDetailDO.java index 52faaf72..4567b0ca 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestDetailDO.java @@ -1,5 +1,6 @@ package com.win.module.wms.dal.dataobject.issueRequest; +import com.sun.xml.bind.v2.TODO; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -8,6 +9,8 @@ import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import com.win.framework.mybatis.core.dataobject.BaseDO; +import javax.validation.constraints.NotBlank; + /** * 发料申请子 DO * @@ -40,10 +43,12 @@ public class IssueRequestDetailDO extends BaseDO { * * 枚举 {@link TODO inventory_status 对应的类} */ + @NotBlank private String inventoryStatus; /** * 包装号 */ + @NotBlank private String packingNumber; /** * 器具号 @@ -52,10 +57,12 @@ public class IssueRequestDetailDO extends BaseDO { /** * 批次 */ + @NotBlank private String batch; /** * 到库位代码 */ + @NotBlank private String toLocationCode; /** * 主表ID diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestMainDO.java index 427f6b8a..c03bb3bb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestMainDO.java @@ -1,5 +1,6 @@ package com.win.module.wms.dal.dataobject.issueRequest; +import com.sun.xml.bind.v2.TODO; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -9,6 +10,8 @@ import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import com.win.framework.mybatis.core.dataobject.BaseDO; +import javax.validation.constraints.NotBlank; + /** * 发料申请主 DO * @@ -35,22 +38,26 @@ public class IssueRequestMainDO extends BaseDO { /** * 从仓库代码 */ + @NotBlank private String fromWarehouseCode; /** * 到仓库代码 */ + @NotBlank private String toWarehouseCode; /** * 从库位类型范围 * * 枚举 {@link TODO location_type 对应的类} */ + @NotBlank private String fromLocationTypes; /** * 到库位类型范围 * * 枚举 {@link TODO location_type 对应的类} */ + @NotBlank private String toLocationTypes; /** * 从库区代码范围 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 731f83f4..18df32bf 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 @@ -295,7 +295,6 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { } //校验子表公共方法(适用于新增/修改) private void validateDetailMethod(IssueRequestDetailDO issueRequestDetailDO,BusinesstypeDO businesstypeDO,IssueRequestMainDO issueRequestMainDO) { - validateIssueRequestDetailExists(issueRequestDetailDO.getId()); ItembasicDO itembasicDO = validatorItembasic(issueRequestDetailDO.getItemCode()); this.validatorIfInType(itembasicDO.getType(), businesstypeDO); this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom()); From 3480f9c97ccb24fc68e4da2544cbf69b9d236d07 Mon Sep 17 00:00:00 2001 From: chenfang Date: Thu, 9 Nov 2023 19:27:49 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=20=20=E5=AF=BC=E5=85=A5/=E6=96=B0=E5=A2=9E/?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=20=E6=A0=A1=E9=AA=8C=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/issueRequest/IssueRequestMainServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 18df32bf..14c43024 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 @@ -255,6 +255,10 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); issueRequestMainDO.setNumber(number); issueRequestMainMapper.insert(issueRequestMainDO); + for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { + issueRequestDetailDO.setMasterId(issueRequestMainDO.getId()); + issueRequestDetailDO.setNumber(issueRequestMainDO.getNumber()); + } issueRequestDetailMapper.insertBatch(subDOList); return issueRequestMainDO; } @@ -311,8 +315,6 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { String locationCode = json.get("LocationCode").toString(); this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode); } - issueRequestDetailDO.setMasterId(issueRequestMainDO.getId()); - issueRequestDetailDO.setNumber(issueRequestMainDO.getNumber()); } /** * 校验导入,并赋值一些参数 From 338c4740f382fee72b78ad7a2a79f6a829bbc43f Mon Sep 17 00:00:00 2001 From: chenfang Date: Thu, 9 Nov 2023 19:43:08 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=20=20=E5=AF=BC=E5=85=A5/=E6=96=B0=E5=A2=9E/?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=20=E6=A0=A1=E9=AA=8C=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../issueRequest/vo/IssueRequestMainUpdateReqVO.java | 2 +- .../convert/issueRequest/IssueRequestDetailConvert.java | 3 ++- .../service/issueRequest/IssueRequestMainServiceImpl.java | 4 ++-- .../SupplierdeliverRecordMainService.java | 2 +- .../SupplierdeliverRecordMainServiceImpl.java | 7 +++---- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainUpdateReqVO.java index 8cb79179..cc74a313 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainUpdateReqVO.java @@ -14,6 +14,6 @@ public class IssueRequestMainUpdateReqVO extends IssueRequestMainBaseVO { @SubObject @Schema(description = "子表数据") - private List subList; + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java index 586d2d0a..579e5dc2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java @@ -35,9 +35,10 @@ public interface IssueRequestDetailConvert { List convertList02(List list); List convertList03(List list); - List convertList04(List list); + List convertList05(List list); + @Mappings({ @Mapping(source = "mainDO.number", target = "number"), @Mapping(source = "mainDO.remark", target = "remark"), 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 14c43024..3599b62b 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 @@ -268,8 +268,8 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { BusinesstypeDO businesstypeDO = new BusinesstypeDO(); IssueRequestMainDO issueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); //子表校验 - List subList = updateReqVO.getSubList(); - List subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList); + List subList = updateReqVO.getSubList(); + List subDOList = IssueRequestDetailConvert.INSTANCE.convertList05(subList); for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRecord/SupplierdeliverRecordMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRecord/SupplierdeliverRecordMainService.java index 03f74dda..42415b0f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRecord/SupplierdeliverRecordMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRecord/SupplierdeliverRecordMainService.java @@ -90,5 +90,5 @@ public interface SupplierdeliverRecordMainService { * @param ppoLine 订单行 * @return 供应商发货记录子 */ - public SupplierdeliverRecordDetailDO selectSupplierdeliverRecordMainDO(String psupplierCode,String pnumber, String pitemCode, String ppoNumber, String ppoLine); + public SupplierdeliverRecordDetailDO selectSupplierdeliverRecordMainDO(String psupplierCode,String pasnNumber, String pitemCode, String ppoNumber, String ppoLine); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRecord/SupplierdeliverRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRecord/SupplierdeliverRecordMainServiceImpl.java index 18286d50..2f37f87b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRecord/SupplierdeliverRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRecord/SupplierdeliverRecordMainServiceImpl.java @@ -93,9 +93,9 @@ public class SupplierdeliverRecordMainServiceImpl implements SupplierdeliverReco return supplierdeliverRecordMainMapper.selectList(exportReqVO); } @Override - public SupplierdeliverRecordDetailDO selectSupplierdeliverRecordMainDO(String psupplierCode,String pnumber, String pitemCode, String ppoNumber, String ppoLine) { + public SupplierdeliverRecordDetailDO selectSupplierdeliverRecordMainDO(String psupplierCode,String pasnNumber, String pitemCode, String ppoNumber, String ppoLine) { QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("number",pnumber); + queryWrapper.eq("asn_number",pasnNumber); queryWrapper.eq("supplier_code",psupplierCode); SupplierdeliverRecordMainDO supplierdeliverRecordMainDO = supplierdeliverRecordMainMapper.selectOne(queryWrapper); if(supplierdeliverRecordMainDO != null && "TRUE".equals(supplierdeliverRecordMainDO.getAvailable())){ @@ -104,7 +104,6 @@ public class SupplierdeliverRecordMainServiceImpl implements SupplierdeliverReco queryWrapper1.eq("item_code",pitemCode); queryWrapper1.eq("po_number",ppoNumber); queryWrapper1.eq("po_line",ppoLine); - queryWrapper1.eq("number",pnumber); SupplierdeliverRecordDetailDO supplierdeliverRecordDetailDO = supplierdeliverRecordDetailMapper.selectOne(queryWrapper1); if(supplierdeliverRecordDetailDO != null){ return supplierdeliverRecordDetailDO; @@ -113,7 +112,7 @@ public class SupplierdeliverRecordMainServiceImpl implements SupplierdeliverReco } }else { - throw new UtilException( "发货订单无效" + pnumber + "无效"); + throw new UtilException( "发货订单" + pasnNumber + "无效"); } } }