From 913efdc7a4447f70cffb9858594bcc9a4893a44a Mon Sep 17 00:00:00 2001 From: "hongxi.lian" Date: Tue, 7 Nov 2023 08:56:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=B6=E5=93=81=E6=8A=A5=E5=BA=9F=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=EF=BC=8C=E5=88=B6=E5=93=81=E4=B8=8A=E6=9E=B6=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=EF=BC=8C=E5=BA=93=E5=AD=98=E5=88=9D=E5=A7=8B=E5=8C=96?= =?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/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() + "不一致"); } }