From b0c2b96ae62b156d0c16ad8566da213100acce63 Mon Sep 17 00:00:00 2001 From: chenfang Date: Fri, 13 Oct 2023 17:30:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=94=9F=E6=88=90=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=20=20=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD=20=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E6=A8=A1=E6=9D=BF=20=20=E5=8A=9F=E8=83=BD=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=BC=96=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/DictTypeConstants.java | 3 + .../module/wms/enums/ErrorCodeConstants.java | 24 +++- .../currencyexchange/ErrorCodeConstants.java | 4 + .../enums/customer/ErrorCodeConstants.java | 4 + .../customerdock/ErrorCodeConstants.java | 6 + .../AccountcalendarController.java | 10 +- .../areabasic/AreabasicController.java | 10 +- .../wms/controller/bom/BomController.java | 11 +- .../businesstype/BusinesstypeController.java | 12 +- .../controller/carrier/CarrierController.java | 10 +- .../condition/ConditionController.java | 40 +++++- .../condition/vo/ConditionImportExcelVo.java | 38 ++++++ .../ConfigurationController.java | 71 +++++++--- .../vo/ConfigurationImportExcelVo.java | 34 +++++ .../ConfigurationsettingController.java | 79 ++++++++--- .../vo/ConfigurationSettingImportExcelVo.java | 46 +++++++ .../CurrencyexchangeController.java | 42 +++++- .../vo/CurrencyexchangeImportExcelVo.java | 48 +++++++ .../customer/CustomerController.java | 45 ++++++- .../customer/vo/CustomerImportExcelVo.java | 83 ++++++++++++ .../customerdock/CustomerdockController.java | 41 +++++- .../vo/CustomerdockImportExcelVo.java | 67 ++++++++++ .../itembasic/ItembasicController.java | 10 +- .../workstation/WorkstationController.java | 36 +++-- .../vo/WorkstationImportExcelVo.java | 26 ++++ .../convert/condition/ConditionConvert.java | 6 +- .../configuration/ConfigurationConvert.java | 15 +-- .../ConfigurationsettingConvert.java | 13 +- .../CurrencyexchangeConvert.java | 14 +- .../wms/convert/customer/CustomerConvert.java | 14 +- .../customerdock/CustomerdockConvert.java | 13 +- .../dal/mysql/customer/CustomerMapper.java | 8 +- .../customerdock/CustomerdockMapper.java | 8 +- .../AccountcalendarServiceImpl.java | 3 +- .../areabasic/AreabasicServiceImpl.java | 4 +- .../wms/service/bom/BomServiceImpl.java | 3 +- .../businesstype/BusinesstypeServiceImpl.java | 4 +- .../service/carrier/CarrierServiceImpl.java | 4 +- .../service/condition/ConditionService.java | 7 +- .../condition/ConditionServiceImpl.java | 114 ++++++++++++++-- .../configuration/ConfigurationService.java | 15 +-- .../ConfigurationServiceImpl.java | 117 +++++++++++++--- .../ConfigurationsettingService.java | 15 +-- .../ConfigurationsettingServiceImpl.java | 126 ++++++++++++++++-- .../CurrencyexchangeService.java | 6 +- .../CurrencyexchangeServiceImpl.java | 99 +++++++++++++- .../wms/service/customer/CustomerService.java | 15 +-- .../service/customer/CustomerServiceImpl.java | 113 ++++++++++++++-- .../customerdock/CustomerdockService.java | 15 +-- .../customerdock/CustomerdockServiceImpl.java | 115 +++++++++++++++- .../service/itembasic/ItembasicService.java | 2 +- .../itembasic/ItembasicServiceImpl.java | 5 +- .../workstation/WorkstationService.java | 2 +- .../workstation/WorkstationServiceImpl.java | 90 ++++++++----- 54 files changed, 1478 insertions(+), 287 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/condition/vo/ConditionImportExcelVo.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configuration/vo/ConfigurationImportExcelVo.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/vo/ConfigurationSettingImportExcelVo.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/currencyexchange/vo/CurrencyexchangeImportExcelVo.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customer/vo/CustomerImportExcelVo.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerdock/vo/CustomerdockImportExcelVo.java diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java index 9f145608..5722a894 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java @@ -54,6 +54,9 @@ public interface DictTypeConstants { String WORK_STATION_TYPE = "work_station_type";//工位类型 String PROCESS_TYPE = "process_type";//工序类型 + String STRATEGY_PARAM_OPEARTOR = "strategy_param_opeartor";//策略参数操作符 NULL >= <= == != + String DATA_TYPE = "data_type";//策略参数操作符 NULL >= <= == != + String STRATEGY_TYPE = "strategy_type";//策略参数操作符 NULL >= <= == != 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 266173c8..64345e22 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 @@ -10,13 +10,29 @@ import com.win.framework.common.exception.ErrorCode; public interface ErrorCodeConstants { ErrorCode RULE_NOT_EXISTS = new ErrorCode(1_045_000_000, "规则不存在"); - + //条件ErrorCode ErrorCode CONDITION_NOT_EXISTS = new ErrorCode(1_046_000_000, "条件不存在"); - + ErrorCode CONDITION_STRATEG_CODE_NOT_EXISTS = new ErrorCode(1_046_000_001, "策略代码不存在"); + ErrorCode CONDITION_RULE_CODE_NOT_EXISTS = new ErrorCode(1_046_000_002, "规则代码不存在"); + ErrorCode CONDITION_PARAM_CODE_NOT_EXISTS = new ErrorCode(1_046_000_003, "参数不存在"); + ErrorCode CONDITION_OPERATOR_NOT_EXISTS = new ErrorCode(1_046_000_004, "操作符不存在"); + ErrorCode CONDITION_VALUE_NOT_EXISTS = new ErrorCode(1_046_000_005, "值不存在"); + //配置ErrorCode ErrorCode CONFIGURATION_NOT_EXISTS = new ErrorCode(1_047_000_000, "配置不存在"); - + ErrorCode CONFIGURATION_STRATEG_CODE_NOT_EXISTS = new ErrorCode(1_047_000_001, "策略代码不存在"); + ErrorCode CONFIGURATION_RULE_CODE_NOT_EXISTS = new ErrorCode(1_047_000_002, "规则代码不存在"); + ErrorCode CONFIGURATION_CONFIGURATION_CODE_NOT_EXISTS = new ErrorCode(1_047_000_002, "规则代码不存在"); + ErrorCode CONFIGURATION_CONFIGURATION_VALUE_NOT_EXISTS = new ErrorCode(1_047_000_002, "规则代码不存在"); + //配置设置ErrorCode ErrorCode CONFIGURATIONSETTING_NOT_EXISTS = new ErrorCode(1_048_000_000, "配置设置不存在"); - + ErrorCode CONFIGURATIONSETTING_STRATEG_CODE_NOT_EXISTS = new ErrorCode(1_048_000_001, "策略代码不存在"); + ErrorCode CONFIGURATIONSETTING_CONFIGURATION_CODE_NOT_EXISTS = new ErrorCode(1_048_000_002, "规则代码不存在"); + ErrorCode CONFIGURATIONSETTING_CONFIGURATION_NAME_NOT_EXISTS = new ErrorCode(1_048_000_003, "规则名称不存在"); + ErrorCode CONFIGURATIONSETTING_IS_REQUIRED_NOT_EXISTS = new ErrorCode(1_048_000_004, "是否必填不存在"); + ErrorCode CONFIGURATIONSETTING_DATA_TYPE_NOT_EXISTS = new ErrorCode(1_048_000_005, "数据类型不存在"); + ErrorCode CONFIGURATIONSETTING_VALUE_SCOPE_NOT_EXISTS = new ErrorCode(1_048_000_006, "值范围不存在"); + + //参数设置ErrorCode ErrorCode PARAMSETTING_NOT_EXISTS = new ErrorCode(1_048_000_000, "参数设置不存在"); ErrorCode TRANSACTIONTYPE_NOT_EXISTS = new ErrorCode(1_049_000_000, "事务类型不存在"); diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/currencyexchange/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/currencyexchange/ErrorCodeConstants.java index 4f91d752..8ad7d445 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/currencyexchange/ErrorCodeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/currencyexchange/ErrorCodeConstants.java @@ -10,5 +10,9 @@ import com.win.framework.common.exception.ErrorCode; public interface ErrorCodeConstants { ErrorCode CURRENCYEXCHANGE_NOT_EXISTS = new ErrorCode(1_044_000_000, "货币转换不存在"); + ErrorCode CURRENCYEXCHANGE_CURRENCY_NOT_EXISTS = new ErrorCode(1_044_000_001, "货币不存在"); + ErrorCode CURRENCYEXCHANGE_BASICCURRENCY_NOT_EXISTS = new ErrorCode(1_044_000_002, "基础货币转换不存在"); + ErrorCode CURRENCYEXCHANGE_RATE_NOT_EXISTS = new ErrorCode(1_044_000_003, "比率不存在"); + ErrorCode CURRENCYEXCHANGE_AVAILABLE_NOT_EXISTS = new ErrorCode(1_044_000_004, "是否可用不存在"); } diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/customer/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/customer/ErrorCodeConstants.java index 49590407..8df535f9 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/customer/ErrorCodeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/customer/ErrorCodeConstants.java @@ -10,5 +10,9 @@ import com.win.framework.common.exception.ErrorCode; public interface ErrorCodeConstants { ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(1_028_000_000, "客户不存在"); + ErrorCode CUSTOMER_CODE_EXISTS = new ErrorCode(1_028_000_001, "code已存在"); + ErrorCode CUSTOMER_CODE_NOT_EXISTS = new ErrorCode(1_028_000_002, "code不存在"); + ErrorCode CUSTOMER_SHORTNAME_NOT_EXISTS = new ErrorCode(1_028_000_003, "简称不存在"); + ErrorCode CUSTOMER_AVAILABLE_NOT_EXISTS = new ErrorCode(1_028_000_004, "是否可用不存在"); } diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/customerdock/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/customerdock/ErrorCodeConstants.java index 38885f82..ca4e52a4 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/customerdock/ErrorCodeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/customerdock/ErrorCodeConstants.java @@ -11,4 +11,10 @@ public interface ErrorCodeConstants { ErrorCode CUSTOMERDOCK_NOT_EXISTS = new ErrorCode(1_029_000_000, "客户月台不存在"); + ErrorCode CUSTOMERDOCK_CODE_EXISTS = new ErrorCode(1_029_000_001, "code已存在"); + ErrorCode CUSTOMERDOCK_CODE_NOT_EXISTS = new ErrorCode(1_029_000_002, "code不存在"); + ErrorCode CUSTOMERDOCK_CUSTOMER_CODE_NOT_EXISTS = new ErrorCode(1_029_000_003, "客户代码不存在"); + ErrorCode CUSTOMERDOCK_DEFAULT_LOCATION_CODE_NOT_EXISTS = new ErrorCode(1_029_000_004, "默认库位不存在"); + ErrorCode CUSTOMERDOCK_AVAILABLE_NOT_EXISTS = new ErrorCode(1_029_000_005, "是否可用不存在"); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java index 1e16e148..bbacfe06 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java @@ -23,6 +23,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; @@ -128,6 +130,10 @@ public class AccountcalendarController { @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { List list = ExcelUtils.read(file, AccountcalendarImportExcelVo.class); List errorList = accountcalendarService.importAccountcalendarList(list, mode, updatePart); - ExcelUtils.write(response, "账期日历导入错误数据.xls", "错误列表", AccountcalendarImportExcelVo.class, errorList); - } + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("账期日历导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + }} } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/AreabasicController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/AreabasicController.java index 90bb4951..ba2ebe8a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/AreabasicController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/AreabasicController.java @@ -23,6 +23,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; @@ -129,6 +131,10 @@ public class AreabasicController { @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { List list = ExcelUtils.read(file, AreabasicImportExcelVo.class); List errorList = areabasicService.importAreabasicList(list, mode, updatePart); - ExcelUtils.write(response, "库区导入错误数据.xls", "错误列表", AreabasicImportExcelVo.class, errorList); - } + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("库区导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + }} } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/bom/BomController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/bom/BomController.java index 39187bac..88d5f417 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/bom/BomController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/bom/BomController.java @@ -23,6 +23,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; @@ -120,13 +122,18 @@ public class BomController { @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") }) - @PreAuthorize("@ss.hasPermission('wms:areabasic:import')") + @PreAuthorize("@ss.hasPermission('wms:bom:import')") public void 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, BomImportExcelVo.class); List errorList = bomService.importBomList(list, mode, updatePart); - ExcelUtils.write(response, "物料清单导入错误数据.xls", "错误列表", BomImportExcelVo.class, errorList); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("物料清单导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + } } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/businesstype/BusinesstypeController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/businesstype/BusinesstypeController.java index a7581987..be6e2c5a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/businesstype/BusinesstypeController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/businesstype/BusinesstypeController.java @@ -23,6 +23,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; @@ -122,13 +124,17 @@ public class BusinesstypeController { @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") }) - @PreAuthorize("@ss.hasPermission('wms:areabasic:import')") + @PreAuthorize("@ss.hasPermission('wms:businesstype:import')") public void 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, BusinesstypeImportExcelVo.class); List errorList = businesstypeService.importBusinesstypeList(list, mode, updatePart); - ExcelUtils.write(response, "业务类型导入错误数据.xls", "错误列表", BusinesstypeImportExcelVo.class, errorList); - } + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("业务类型导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + }} } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/carrier/CarrierController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/carrier/CarrierController.java index df5f9eea..cff2da11 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/carrier/CarrierController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/carrier/CarrierController.java @@ -23,6 +23,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; @@ -125,6 +127,10 @@ public class CarrierController { @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { List list = ExcelUtils.read(file, CarrierImportExcelVo.class); List errorList = carrierService.importCarrierList(list, mode, updatePart); - ExcelUtils.write(response, "承运商导入错误数据.xls", "错误列表", CarrierImportExcelVo.class, errorList); - } + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("承运商导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + }} } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/condition/ConditionController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/condition/ConditionController.java index 0c603934..1ada7220 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/condition/ConditionController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/condition/ConditionController.java @@ -2,25 +2,30 @@ package com.win.module.wms.controller.condition; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.wms.controller.condition.vo.*; import com.win.module.wms.convert.condition.ConditionConvert; import com.win.module.wms.dal.dataobject.condition.ConditionDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.condition.ConditionService; 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,5 +100,36 @@ public class ConditionController { List datas = ConditionConvert.INSTANCE.convertList02(list); ExcelUtils.write(response, "条件.xls", "数据", ConditionExcelVO.class, datas); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入工位模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = Arrays.asList(); + Map mapDropDown = new HashMap<>(); + String[] operator = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.STRATEGY_PARAM_OPEARTOR); + mapDropDown.put(3, operator); + // 输出 + ExcelUtils.write(response, "工位导入模板.xls", "工位列表", ConditionImportExcelVo.class, list); + } + @PostMapping("/import") + @Operation(summary = "导入工位") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + @PreAuthorize("@ss.hasPermission('wms:condition:import')") + public void 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, ConditionImportExcelVo.class); + List errorList = conditionService.importConditionList(list, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("工位导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + }} } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/condition/vo/ConditionImportExcelVo.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/condition/vo/ConditionImportExcelVo.java new file mode 100644 index 00000000..25c871ad --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/condition/vo/ConditionImportExcelVo.java @@ -0,0 +1,38 @@ +package com.win.module.wms.controller.condition.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class ConditionImportExcelVo { + + @ExcelProperty("策略代码") + private String strategyCode; + + @ExcelProperty("规则代码") + private String ruleCode; + + @ExcelProperty("参数") + private String paramCode; + + @ExcelProperty(value = "操作符", converter = DictConvert.class) + @DictFormat(DictTypeConstants.STRATEGY_PARAM_OPEARTOR) + private String operator; + + @ExcelProperty("值") + private String value; + + @ExcelProperty("条件分组") + private String groupCode; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configuration/ConfigurationController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configuration/ConfigurationController.java index fdfb45a4..9dceeebf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configuration/ConfigurationController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configuration/ConfigurationController.java @@ -1,32 +1,32 @@ package com.win.module.wms.controller.configuration; -import com.win.module.wms.controller.configuration.vo.*; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.CommonResult; -import static com.win.framework.common.pojo.CommonResult.success; - +import com.win.framework.common.pojo.PageResult; 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.configuration.vo.*; -import com.win.module.wms.dal.dataobject.configuration.ConfigurationDO; import com.win.module.wms.convert.configuration.ConfigurationConvert; +import com.win.module.wms.dal.dataobject.configuration.ConfigurationDO; import com.win.module.wms.service.configuration.ConfigurationService; +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.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; @Tag(name = "管理后台 - 配置") @RestController @@ -99,4 +99,33 @@ public class ConfigurationController { ExcelUtils.write(response, "配置.xls", "数据", ConfigurationExcelVO.class, datas); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入配置模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = Arrays.asList(); + // 输出 + ExcelUtils.write(response, "配置导入模板.xls", "配置列表", ConfigurationImportExcelVo.class, list); + } + + @PostMapping("/import") + @Operation(summary = "导入工位") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + @PreAuthorize("@ss.hasPermission('wms:configuration:import')") + public void 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, ConfigurationImportExcelVo.class); + List errorList = configurationService.importConfigurationList(list, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("工位导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + }} } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configuration/vo/ConfigurationImportExcelVo.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configuration/vo/ConfigurationImportExcelVo.java new file mode 100644 index 00000000..82e847b1 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configuration/vo/ConfigurationImportExcelVo.java @@ -0,0 +1,34 @@ +package com.win.module.wms.controller.configuration.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class ConfigurationImportExcelVo { + + @ExcelProperty("策略代码") + private String strategyCode; + + @ExcelProperty("规则代码") + private String ruleCode; + + @ExcelProperty("配置名称") + private String configurationCode; + + @ExcelProperty("配置值") + private String configurationValue; + + @ExcelProperty("描述") + private String value; + + @ExcelProperty("配置分组") + private String groupCode; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/ConfigurationsettingController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/ConfigurationsettingController.java index ad2fbe66..c26160fe 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/ConfigurationsettingController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/ConfigurationsettingController.java @@ -1,32 +1,34 @@ package com.win.module.wms.controller.configurationsetting; -import com.win.module.wms.controller.configurationsetting.vo.*; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.CommonResult; -import static com.win.framework.common.pojo.CommonResult.success; - +import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; 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.configurationsetting.vo.*; -import com.win.module.wms.dal.dataobject.configurationsetting.ConfigurationsettingDO; import com.win.module.wms.convert.configurationsetting.ConfigurationsettingConvert; +import com.win.module.wms.dal.dataobject.configurationsetting.ConfigurationsettingDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.configurationsetting.ConfigurationsettingService; +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.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; @Tag(name = "管理后台 - 配置设置") @RestController @@ -98,5 +100,40 @@ public class ConfigurationsettingController { List datas = ConfigurationsettingConvert.INSTANCE.convertList02(list); ExcelUtils.write(response, "配置设置.xls", "数据", ConfigurationsettingExcelVO.class, datas); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入配置模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = Arrays.asList(); + Map mapDropDown = new HashMap<>(); + String[] strategyType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.STRATEGY_TYPE); + mapDropDown.put(0, strategyType); + String[] isRequired = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(3, isRequired); + String[] dataType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.DATA_TYPE); + mapDropDown.put(4, dataType); + // 输出 + ExcelUtils.write(response, "配置导入模板.xls", "配置列表", ConfigurationSettingImportExcelVo.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:configurationsetting:import')") + public void 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, ConfigurationSettingImportExcelVo.class); + List errorList = configurationsettingService.importConfigurationsettingList(list, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("工位导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + }} } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/vo/ConfigurationSettingImportExcelVo.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/vo/ConfigurationSettingImportExcelVo.java new file mode 100644 index 00000000..960deefd --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/vo/ConfigurationSettingImportExcelVo.java @@ -0,0 +1,46 @@ +package com.win.module.wms.controller.configurationsetting.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class ConfigurationSettingImportExcelVo { + + @ExcelProperty(value = "策略类型", converter = DictConvert.class) + @DictFormat(DictTypeConstants.STRATEGY_TYPE) + private String strategyType; + + @ExcelProperty("配置代码") + private String configurationCode; + + @ExcelProperty("配置名称") + private String configurationName; + + @ExcelProperty(value = "必填", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String isRequired; + + @ExcelProperty(value = "数据类型", converter = DictConvert.class) + @DictFormat(DictTypeConstants.DATA_TYPE) + private String dataType; + + @ExcelProperty("值范围") + private String valueScope; + + @ExcelProperty("关联到") + private String relatedTo; + + @ExcelProperty("描述") + private String description; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/currencyexchange/CurrencyexchangeController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/currencyexchange/CurrencyexchangeController.java index fb3cb332..4ac1b0cf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/currencyexchange/CurrencyexchangeController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/currencyexchange/CurrencyexchangeController.java @@ -2,25 +2,30 @@ package com.win.module.wms.controller.currencyexchange; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.wms.controller.currencyexchange.vo.*; import com.win.module.wms.convert.currencyexchange.CurrencyexchangeConvert; import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.currencyexchange.CurrencyexchangeService; 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,5 +100,38 @@ public class CurrencyexchangeController { List datas = CurrencyexchangeConvert.INSTANCE.convertList02(list); ExcelUtils.write(response, "货币转换.xls", "数据", CurrencyexchangeExcelVO.class, datas); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入货币转换模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = Arrays.asList(); + Map mapDropDown = new HashMap<>(); + String[] currency = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.CURRENCY); + mapDropDown.put(0, currency); + String[] isRequired = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(3, isRequired); + // 输出 + ExcelUtils.write(response, "货币转换导入模板.xls", "货币转换列表", CurrencyexchangeImportExcelVo.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:configurationsetting:import')") + public void 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, CurrencyexchangeImportExcelVo.class); + List errorList = currencyexchangeService.importCurrencyexchangeList(list, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("货币转换导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + }} } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/currencyexchange/vo/CurrencyexchangeImportExcelVo.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/currencyexchange/vo/CurrencyexchangeImportExcelVo.java new file mode 100644 index 00000000..794e6a0c --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/currencyexchange/vo/CurrencyexchangeImportExcelVo.java @@ -0,0 +1,48 @@ +package com.win.module.wms.controller.currencyexchange.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 lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class CurrencyexchangeImportExcelVo { + + @ExcelProperty(value = "货币", converter = DictConvert.class) + @DictFormat(DictTypeConstants.CURRENCY) + private String currency; + + @ExcelProperty("基础货币") + private String basiccurrency; + + @ExcelProperty("比率") + private BigDecimal rate; + + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String available; + + @ExcelProperty("生效时间") + @ColumnWidth(value = 16) + private LocalDateTime activeTime; + + @ExcelProperty("失效时间") + @ColumnWidth(value = 16) + private LocalDateTime expireTime; + + @ExcelProperty("备注") + private String remark; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customer/CustomerController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customer/CustomerController.java index da4899d2..43a1ecab 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customer/CustomerController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customer/CustomerController.java @@ -2,25 +2,31 @@ package com.win.module.wms.controller.customer; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; +import com.win.module.wms.controller.customer.vo.CustomerImportExcelVo; import com.win.module.wms.controller.customer.vo.*; import com.win.module.wms.convert.customer.CustomerConvert; import com.win.module.wms.dal.dataobject.customer.CustomerDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.customer.CustomerService; 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,5 +101,40 @@ public class CustomerController { List datas = CustomerConvert.INSTANCE.convertList02(list); ExcelUtils.write(response, "客户.xls", "数据", CustomerExcelVO.class, datas); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入客户模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = Arrays.asList(); + Map mapDropDown = new HashMap<>(); + String[] currency = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.CURRENCY); + mapDropDown.put(11, currency); + String[] type = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.CUSTOMER_TYPE); + mapDropDown.put(13, type); + String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(14, available); + // 输出 + ExcelUtils.write(response, "客户导入模板.xls", "客户列表", CustomerImportExcelVo.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:customer:import')") + public void 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, CustomerImportExcelVo.class); + List errorList = customerService.importCustomerList(list, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("客户导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + }} } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customer/vo/CustomerImportExcelVo.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customer/vo/CustomerImportExcelVo.java new file mode 100644 index 00000000..645dd21d --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customer/vo/CustomerImportExcelVo.java @@ -0,0 +1,83 @@ +package com.win.module.wms.controller.customer.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 lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class CustomerImportExcelVo { + + + @ExcelProperty("代码") + private String code; + + @ExcelProperty("名称") + private String name; + + @ExcelProperty("简称") + private String shortName; + + @ExcelProperty("地址") + private String address; + + @ExcelProperty("国家") + private String country; + + @ExcelProperty("城市") + private String city; + + @ExcelProperty("电话") + private String phone; + + @ExcelProperty("传真") + private String fax; + + @ExcelProperty("邮编") + private String postId; + + @ExcelProperty("联系人") + private String contacts; + + @ExcelProperty("银行") + private String bank; + + @ExcelProperty(value = "币种",converter = DictConvert.class) + @DictFormat(DictTypeConstants.CURRENCY) + private String currency; + + @ExcelProperty("税率") + private BigDecimal taxRate; + + @ExcelProperty(value = "类型",converter = DictConvert.class) + @DictFormat(DictTypeConstants.CUSTOMER_TYPE) + private String type; + + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String available; + + @ExcelProperty("生效时间") + @ColumnWidth(value = 16) + private LocalDateTime activeTime; + + @ExcelProperty("失效时间") + @ColumnWidth(value = 16) + private LocalDateTime expireTime; + + @ExcelProperty("备注") + private String remark; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerdock/CustomerdockController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerdock/CustomerdockController.java index 8e70824b..bd7fb774 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerdock/CustomerdockController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerdock/CustomerdockController.java @@ -2,25 +2,31 @@ package com.win.module.wms.controller.customerdock; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; +import com.win.module.wms.controller.customer.vo.CustomerImportExcelVo; import com.win.module.wms.controller.customerdock.vo.*; import com.win.module.wms.convert.customerdock.CustomerdockConvert; import com.win.module.wms.dal.dataobject.customerdock.CustomerdockDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.customerdock.CustomerdockService; 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,5 +101,36 @@ public class CustomerdockController { List datas = CustomerdockConvert.INSTANCE.convertList02(list); ExcelUtils.write(response, "客户月台.xls", "数据", CustomerdockExcelVO.class, datas); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入客户月台模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = Arrays.asList(); + Map mapDropDown = new HashMap<>(); + String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(10, available); + // 输出 + ExcelUtils.write(response, "客户月台导入模板.xls", "客户月台列表", CustomerdockImportExcelVo.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:customer:import')") + public void 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, CustomerdockImportExcelVo.class); + List errorList = customerdockService.importCustomerdockList(list, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("客户月台导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + }} } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerdock/vo/CustomerdockImportExcelVo.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerdock/vo/CustomerdockImportExcelVo.java new file mode 100644 index 00000000..0439c9af --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerdock/vo/CustomerdockImportExcelVo.java @@ -0,0 +1,67 @@ +package com.win.module.wms.controller.customerdock.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 lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class CustomerdockImportExcelVo { + + @ExcelProperty("代码") + private String code; + + @ExcelProperty("名称") + private String name; + + @ExcelProperty("描述") + private String description; + + @ExcelProperty("城市") + private String city; + + @ExcelProperty("地址") + private String address; + + @ExcelProperty("联系人姓名") + private String contactPerson; + + @ExcelProperty("联系人电话") + private String contactPhone; + + @ExcelProperty("客户代码") + private String customerCode; + + @ExcelProperty("仓库") + private String warehouseCode; + + @ExcelProperty("默认库位") + private String defaultLocationCode; + + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String available; + + @ExcelProperty("生效时间") + @ColumnWidth(value = 16) + private LocalDateTime activeTime; + + @ExcelProperty("失效时间") + @ColumnWidth(value = 16) + private LocalDateTime expireTime; + + @ExcelProperty("备注") + private String remark; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java index 1366f1ff..657c0b80 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java @@ -139,11 +139,7 @@ public class ItembasicController { public void importTemplate(HttpServletResponse response) throws IOException { // 手动创建导出 demo List list = Arrays.asList( -// ItembasicImportExcelVo.builder().code("code").name("name").desc1("描述1").desc2("描述2").status("ENABLE").uom("EA").altUom("EA") -// .isStdPack("TRUE'").enableBuy("TRUE").enableMake("TRUE").enableOutsourcing("TRUE") -// .isRecycled("TRUE").isPhantom("TRUE").abcClass("A").type("OTS").category("DEFAULT").itemGroup("DEFAULT") -// .color("DEFAULT").configuration("DEFAULT").project("项目").eqLevel("DEFAULT").validityDays(1).available("TRUE") -// .activeTime(LocalDateTime.now()).expireTime(LocalDateTime.now()).remark("备注").build() +// ItembasicImportExcelVo.builder().code("code").name("name").build() ); Map mapDropDown = new HashMap<>(); String[] status = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.ITEM_STATUS); @@ -199,11 +195,11 @@ public class ItembasicController { @RequestParam(value = "mode") Integer mode, @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { List list = ExcelUtils.read(file, ItembasicImportExcelVo.class); - List errorList = itembasicService.importUserList(list, mode, updatePart); + List errorList = itembasicService.importItembasicList(list, mode, updatePart); Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); if(!errorList.isEmpty()) { - String url = ExcelUtils.writeLocalFile("用户导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + String url = ExcelUtils.writeLocalFile("物品基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", 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/workstation/WorkstationController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/WorkstationController.java index 0961708a..b99d73fe 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 @@ -2,11 +2,13 @@ package com.win.module.wms.controller.workstation; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.wms.controller.workstation.vo.*; 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; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -21,9 +23,9 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.util.Arrays; -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; @@ -103,26 +105,34 @@ public class WorkstationController { @Operation(summary = "获得导入用户模板") public void importTemplate(HttpServletResponse response) throws IOException { // 手动创建导出 demo - List list = Arrays.asList( - WorkstationImportExcelVo.builder().code("yunai") - .workshopCode("1").productionLineCode("1").available("TRUE").build()); - + List list = Arrays.asList(); + Map mapDropDown = new HashMap<>(); + String[] type = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.WORK_STATION_TYPE); + mapDropDown.put(3, type); + String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(10, available); // 输出 ExcelUtils.write(response, "用户导入模板.xls", "用户列表", WorkstationImportExcelVo.class, list); } @PostMapping("/import") - @Operation(summary = "导入用户") + @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:workstation:import')") - public CommonResult importExcel(@RequestParam("file") MultipartFile file, - @RequestParam(value = "mode") Integer mode, - @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + public void 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, WorkstationImportExcelVo.class); - return success(workstationService.importUserList(list, mode,updatePart)); - } + List errorList = workstationService.importWorkstationList(list, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("工位导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); + returnMap.put("errorFile", url); + }} } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/vo/WorkstationImportExcelVo.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/vo/WorkstationImportExcelVo.java index ee3cdeb6..325768ad 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/vo/WorkstationImportExcelVo.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/vo/WorkstationImportExcelVo.java @@ -1,6 +1,7 @@ package com.win.module.wms.controller.workstation.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; @@ -10,6 +11,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import java.time.LocalDateTime; + @Data @Builder @AllArgsConstructor @@ -20,6 +23,12 @@ public class WorkstationImportExcelVo { @ExcelProperty("代码") private String code; + @ExcelProperty("名称") + private String name; + + @ExcelProperty("描述") + private String description; + @ExcelProperty(value = "类型", converter = DictConvert.class) @DictFormat(DictTypeConstants.WORK_STATION_TYPE) private String type; @@ -30,9 +39,26 @@ public class WorkstationImportExcelVo { @ExcelProperty(value = "生产线代码") private String productionLineCode; + @ExcelProperty(value = "原料库位") + private String rawLocationCode; + + @ExcelProperty(value = "成品库位") + private String fgLocationCode; + + @ExcelProperty(value = "生效时间") + @ColumnWidth(value = 16) + private LocalDateTime activeTime; + + @ExcelProperty(value = "失效时间") + @ColumnWidth(value = 16) + private LocalDateTime expireTime; + @ExcelProperty(value = "是否可用", converter = DictConvert.class) @DictFormat(DictTypeConstants.TRUE_FALSE) private String available; + @ExcelProperty(value = "备注") + private String remark; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/condition/ConditionConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/condition/ConditionConvert.java index 4e4612fa..336527cd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/condition/ConditionConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/condition/ConditionConvert.java @@ -1,10 +1,7 @@ package com.win.module.wms.convert.condition; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.condition.vo.ConditionCreateReqVO; -import com.win.module.wms.controller.condition.vo.ConditionExcelVO; -import com.win.module.wms.controller.condition.vo.ConditionRespVO; -import com.win.module.wms.controller.condition.vo.ConditionUpdateReqVO; +import com.win.module.wms.controller.condition.vo.*; import com.win.module.wms.dal.dataobject.condition.ConditionDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -24,6 +21,7 @@ public interface ConditionConvert { ConditionDO convert(ConditionCreateReqVO bean); ConditionDO convert(ConditionUpdateReqVO bean); + ConditionDO convert(ConditionImportExcelVo bean); ConditionRespVO convert(ConditionDO bean); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/configuration/ConfigurationConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/configuration/ConfigurationConvert.java index cf0618a4..716c9b0e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/configuration/ConfigurationConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/configuration/ConfigurationConvert.java @@ -1,16 +1,12 @@ package com.win.module.wms.convert.configuration; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.configuration.vo.ConfigurationCreateReqVO; -import com.win.module.wms.controller.configuration.vo.ConfigurationExcelVO; -import com.win.module.wms.controller.configuration.vo.ConfigurationRespVO; -import com.win.module.wms.controller.configuration.vo.ConfigurationUpdateReqVO; +import com.win.module.wms.controller.configuration.vo.*; +import com.win.module.wms.dal.dataobject.configuration.ConfigurationDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.configuration.ConfigurationDO; + +import java.util.List; /** * 配置 Convert @@ -28,10 +24,11 @@ public interface ConfigurationConvert { ConfigurationRespVO convert(ConfigurationDO bean); + ConfigurationDO convert(ConfigurationImportExcelVo configuration); + List convertList(List list); PageResult convertPage(PageResult page); List convertList02(List list); - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/configurationsetting/ConfigurationsettingConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/configurationsetting/ConfigurationsettingConvert.java index 55e722aa..7e691864 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/configurationsetting/ConfigurationsettingConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/configurationsetting/ConfigurationsettingConvert.java @@ -1,16 +1,12 @@ package com.win.module.wms.convert.configurationsetting; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingCreateReqVO; -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingExcelVO; -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingRespVO; -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingUpdateReqVO; +import com.win.module.wms.controller.configurationsetting.vo.*; +import com.win.module.wms.dal.dataobject.configurationsetting.ConfigurationsettingDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.configurationsetting.ConfigurationsettingDO; + +import java.util.List; /** * 配置设置 Convert @@ -34,4 +30,5 @@ public interface ConfigurationsettingConvert { List convertList02(List list); + ConfigurationsettingDO convert(ConfigurationSettingImportExcelVo importConfigurationSetting); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/currencyexchange/CurrencyexchangeConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/currencyexchange/CurrencyexchangeConvert.java index 91842f5b..c93b9fc3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/currencyexchange/CurrencyexchangeConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/currencyexchange/CurrencyexchangeConvert.java @@ -1,16 +1,12 @@ package com.win.module.wms.convert.currencyexchange; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangeCreateReqVO; -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangeExcelVO; -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangeRespVO; -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangeUpdateReqVO; +import com.win.module.wms.controller.currencyexchange.vo.*; +import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO; + +import java.util.List; /** * 货币转换 Convert @@ -34,4 +30,6 @@ public interface CurrencyexchangeConvert { List convertList02(List list); + CurrencyexchangeDO convert(CurrencyexchangeImportExcelVo currencyexchange); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customer/CustomerConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customer/CustomerConvert.java index 36f1fe6b..34b5178b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customer/CustomerConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customer/CustomerConvert.java @@ -1,16 +1,12 @@ package com.win.module.wms.convert.customer; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.customer.vo.CustomerCreateReqVO; -import com.win.module.wms.controller.customer.vo.CustomerExcelVO; -import com.win.module.wms.controller.customer.vo.CustomerRespVO; -import com.win.module.wms.controller.customer.vo.CustomerUpdateReqVO; +import com.win.module.wms.controller.customer.vo.*; +import com.win.module.wms.dal.dataobject.customer.CustomerDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.customer.CustomerDO; + +import java.util.List; /** * 客户 Convert @@ -34,4 +30,6 @@ public interface CustomerConvert { List convertList02(List list); + CustomerDO convert(CustomerImportExcelVo customer); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerdock/CustomerdockConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerdock/CustomerdockConvert.java index 36aea1af..7352ff0f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerdock/CustomerdockConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerdock/CustomerdockConvert.java @@ -1,16 +1,12 @@ package com.win.module.wms.convert.customerdock; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.customerdock.vo.CustomerdockCreateReqVO; -import com.win.module.wms.controller.customerdock.vo.CustomerdockExcelVO; -import com.win.module.wms.controller.customerdock.vo.CustomerdockRespVO; -import com.win.module.wms.controller.customerdock.vo.CustomerdockUpdateReqVO; +import com.win.module.wms.controller.customerdock.vo.*; +import com.win.module.wms.dal.dataobject.customerdock.CustomerdockDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.customerdock.CustomerdockDO; + +import java.util.List; /** * 客户月台 Convert @@ -34,4 +30,5 @@ public interface CustomerdockConvert { List convertList02(List list); + CustomerdockDO convert(CustomerdockImportExcelVo customerdock); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customer/CustomerMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customer/CustomerMapper.java index 615f85d2..f955ba4e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customer/CustomerMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customer/CustomerMapper.java @@ -1,15 +1,15 @@ package com.win.module.wms.dal.mysql.customer; -import java.util.*; - import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.module.wms.controller.customer.vo.CustomerExportReqVO; import com.win.module.wms.controller.customer.vo.CustomerPageReqVO; import com.win.module.wms.dal.dataobject.customer.CustomerDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 客户 Mapper * @@ -68,4 +68,6 @@ public interface CustomerMapper extends BaseMapperX { .orderByDesc(CustomerDO::getId)); } + default CustomerDO selectByCode(String code){return selectOne(CustomerDO::getCode, code); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerdock/CustomerdockMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerdock/CustomerdockMapper.java index 2e228471..134b0c7b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerdock/CustomerdockMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerdock/CustomerdockMapper.java @@ -1,15 +1,15 @@ package com.win.module.wms.dal.mysql.customerdock; -import java.util.*; - import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.module.wms.controller.customerdock.vo.CustomerdockExportReqVO; import com.win.module.wms.controller.customerdock.vo.CustomerdockPageReqVO; import com.win.module.wms.dal.dataobject.customerdock.CustomerdockDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 客户月台 Mapper * @@ -60,4 +60,6 @@ public interface CustomerdockMapper extends BaseMapperX { .orderByDesc(CustomerdockDO::getId)); } + default CustomerdockDO selectByCode(String code){return selectOne(CustomerdockDO::getCode, code); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarServiceImpl.java index 0ecb01a0..c3a7fbdb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarServiceImpl.java @@ -38,6 +38,7 @@ public class AccountcalendarServiceImpl implements AccountcalendarService { @Override public Long createAccountcalendar(AccountcalendarCreateReqVO createReqVO) { + validateAccountcalendarForCreateOrUpdate(createReqVO.getId(),createReqVO.getAvailable()); // 插入 AccountcalendarDO accountcalendar = AccountcalendarConvert.INSTANCE.convert(createReqVO); validateAccountcalendarForCreateOrUpdate(null,createReqVO.getAvailable()); @@ -91,7 +92,7 @@ public class AccountcalendarServiceImpl implements AccountcalendarService { importAccountcalendars.forEach(importAccountcalendar -> { // 校验,判断是否有不符合的原因 try { - if(mode == 2){ + if(mode != null){ validateAccountcalendarForCreateOrUpdate(null,importAccountcalendar.getAvailable()); } } catch (ServiceException ex) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/areabasic/AreabasicServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/areabasic/AreabasicServiceImpl.java index 2e05a956..aefbe6d8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/areabasic/AreabasicServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/areabasic/AreabasicServiceImpl.java @@ -37,7 +37,7 @@ public class AreabasicServiceImpl implements AreabasicService { @Override public Long createAreabasic(AreabasicCreateReqVO createReqVO) { - validateAreabasicForCreateOrUpdate(null,createReqVO.getCode(),createReqVO.getWarehouseCode(),createReqVO.getIsFunctional(),createReqVO.getAvailable()); + validateAreabasicForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getWarehouseCode(),createReqVO.getIsFunctional(),createReqVO.getAvailable()); // 插入 AreabasicDO areabasic = AreabasicConvert.INSTANCE.convert(createReqVO); areabasicMapper.insert(areabasic); @@ -48,7 +48,7 @@ public class AreabasicServiceImpl implements AreabasicService { @Override public void updateAreabasic(AreabasicUpdateReqVO updateReqVO) { // 校验存在 - validateAreabasicForCreateOrUpdate(null,updateReqVO.getCode(),updateReqVO.getWarehouseCode(),updateReqVO.getIsFunctional(),updateReqVO.getAvailable()); + validateAreabasicForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getCode(),updateReqVO.getWarehouseCode(),updateReqVO.getIsFunctional(),updateReqVO.getAvailable()); // 更新 AreabasicDO updateObj = AreabasicConvert.INSTANCE.convert(updateReqVO); areabasicMapper.updateById(updateObj); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java index b02028fa..3e25bd06 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java @@ -38,9 +38,8 @@ public class BomServiceImpl implements BomService { @Override public Long createBom(BomCreateReqVO createReqVO) { - validateBomForCreateOrUpdate(null,createReqVO.getProductItemCode(),createReqVO.getComponentItemCode(),createReqVO.getComponentUom(),createReqVO.getComponentQty(), + validateBomForCreateOrUpdate(createReqVO.getId(),createReqVO.getProductItemCode(),createReqVO.getComponentItemCode(),createReqVO.getComponentUom(),createReqVO.getComponentQty(), createReqVO.getProcessCode(),createReqVO.getAvailable()); - // 插入 BomDO bom = BomConvert.INSTANCE.convert(createReqVO); bomMapper.insert(bom); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/businesstype/BusinesstypeServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/businesstype/BusinesstypeServiceImpl.java index af61f281..2dd9b27c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/businesstype/BusinesstypeServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/businesstype/BusinesstypeServiceImpl.java @@ -37,7 +37,7 @@ public class BusinesstypeServiceImpl implements BusinesstypeService { @Override public Long createBusinesstype(BusinesstypeCreateReqVO createReqVO) { - validateBusinesstypeForCreateOrUpdate(null,createReqVO.getCode(),createReqVO.getName() + validateBusinesstypeForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getName() ,createReqVO.getItemTypes(),createReqVO.getItemStatuses(),createReqVO.getOutTransactionType() ,createReqVO.getInTransactionType(),createReqVO.getOnTheWayArea(),createReqVO.getAvailable()); // 插入 @@ -49,7 +49,7 @@ public class BusinesstypeServiceImpl implements BusinesstypeService { @Override public void updateBusinesstype(BusinesstypeUpdateReqVO updateReqVO) { - validateBusinesstypeForCreateOrUpdate(null,updateReqVO.getCode(),updateReqVO.getName() + validateBusinesstypeForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getCode(),updateReqVO.getName() ,updateReqVO.getItemTypes(),updateReqVO.getItemStatuses(),updateReqVO.getOutTransactionType() ,updateReqVO.getInTransactionType(),updateReqVO.getOnTheWayArea(),updateReqVO.getAvailable()); // 校验存在 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/carrier/CarrierServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/carrier/CarrierServiceImpl.java index 88583d9d..917d16e2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/carrier/CarrierServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/carrier/CarrierServiceImpl.java @@ -39,7 +39,7 @@ public class CarrierServiceImpl implements CarrierService { @Override public Long createCarrier(CarrierCreateReqVO createReqVO) { - validateCarrierForCreateOrUpdate(null,createReqVO.getCode(),createReqVO.getShortName(),createReqVO.getAvailable()); + validateCarrierForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getShortName(),createReqVO.getAvailable()); // 插入 CarrierDO carrier = CarrierConvert.INSTANCE.convert(createReqVO); carrierMapper.insert(carrier); @@ -50,7 +50,7 @@ public class CarrierServiceImpl implements CarrierService { @Override public void updateCarrier(CarrierUpdateReqVO updateReqVO) { // 校验存在 - validateCarrierForCreateOrUpdate(null,updateReqVO.getCode(),updateReqVO.getShortName(),updateReqVO.getAvailable()); + validateCarrierForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getCode(),updateReqVO.getShortName(),updateReqVO.getAvailable()); // 更新 CarrierDO updateObj = CarrierConvert.INSTANCE.convert(updateReqVO); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/condition/ConditionService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/condition/ConditionService.java index 23729387..ea3263a9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/condition/ConditionService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/condition/ConditionService.java @@ -1,10 +1,7 @@ package com.win.module.wms.service.condition; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.condition.vo.ConditionCreateReqVO; -import com.win.module.wms.controller.condition.vo.ConditionExportReqVO; -import com.win.module.wms.controller.condition.vo.ConditionPageReqVO; -import com.win.module.wms.controller.condition.vo.ConditionUpdateReqVO; +import com.win.module.wms.controller.condition.vo.*; import com.win.module.wms.dal.dataobject.condition.ConditionDO; import javax.validation.Valid; @@ -72,4 +69,6 @@ public interface ConditionService { */ List getConditionList(ConditionExportReqVO exportReqVO); + List importConditionList(List conditions, Integer mode, Boolean updatePart); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/condition/ConditionServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/condition/ConditionServiceImpl.java index 1ce6ca1d..fe4f4141 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/condition/ConditionServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/condition/ConditionServiceImpl.java @@ -1,22 +1,28 @@ package com.win.module.wms.service.condition; +import cn.hutool.core.collection.CollUtil; +import com.google.common.annotations.VisibleForTesting; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.condition.vo.ConditionCreateReqVO; -import com.win.module.wms.controller.condition.vo.ConditionExportReqVO; -import com.win.module.wms.controller.condition.vo.ConditionPageReqVO; -import com.win.module.wms.controller.condition.vo.ConditionUpdateReqVO; +import com.win.framework.datapermission.core.util.DataPermissionUtils; +import com.win.module.wms.controller.condition.vo.*; import com.win.module.wms.convert.condition.ConditionConvert; import com.win.module.wms.dal.dataobject.condition.ConditionDO; import com.win.module.wms.dal.mysql.condition.ConditionMapper; 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 static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.CONDITION_NOT_EXISTS; +import static com.win.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.ErrorCodeConstants.*; + /** * 条件 Service 实现类 @@ -32,7 +38,8 @@ public class ConditionServiceImpl implements ConditionService { @Override public Long createCondition(ConditionCreateReqVO createReqVO) { - // 插入 + validateConditionForCreateOrUpdate(createReqVO.getId(),createReqVO.getStrategyCode(),createReqVO.getRuleCode(),createReqVO.getParamCode(),createReqVO.getOperator(),createReqVO.getValue()); + // 插入 ConditionDO condition = ConditionConvert.INSTANCE.convert(createReqVO); conditionMapper.insert(condition); // 返回 @@ -42,7 +49,7 @@ public class ConditionServiceImpl implements ConditionService { @Override public void updateCondition(ConditionUpdateReqVO updateReqVO) { // 校验存在 - validateConditionExists(updateReqVO.getId()); + validateConditionForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getStrategyCode(),updateReqVO.getRuleCode(),updateReqVO.getParamCode(),updateReqVO.getOperator(),updateReqVO.getValue()); // 更新 ConditionDO updateObj = ConditionConvert.INSTANCE.convert(updateReqVO); conditionMapper.updateById(updateObj); @@ -56,12 +63,6 @@ public class ConditionServiceImpl implements ConditionService { conditionMapper.deleteById(id); } - private void validateConditionExists(Long id) { - if (conditionMapper.selectById(id) == null) { - throw exception(CONDITION_NOT_EXISTS); - } - } - @Override public ConditionDO getCondition(Long id) { return conditionMapper.selectById(id); @@ -82,4 +83,91 @@ public class ConditionServiceImpl implements ConditionService { return conditionMapper.selectList(exportReqVO); } + @Override + @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入 + public List importConditionList(List conditions, Integer mode, Boolean updatePart) { + if (CollUtil.isEmpty(conditions)) { + throw exception(USER_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + conditions.forEach(condition -> { + // 校验,判断是否有不符合的原因 + try { + if(mode != null){ + validateConditionForCreateOrUpdate(null,condition.getStrategyCode(),condition.getRuleCode(),condition.getParamCode(),condition.getOperator(),condition.getValue());} + } + catch (ServiceException ex) { + errorList.add(condition); + return; + } + // 判断如果不存在,在进行插入 + ConditionDO existAccountcalendar = null; + if (existAccountcalendar == null&& mode != 3) { + conditionMapper.insert(ConditionConvert.INSTANCE.convert(condition)); + } + else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新 + ConditionDO conditionDo = ConditionConvert.INSTANCE.convert(condition); + conditionDo.setId(existAccountcalendar.getId()); + conditionMapper.updateById(conditionDo); + } + }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + private void validateConditionForCreateOrUpdate(Long id,String strategyCode,String ruleCode,String paramCode,String operator, + String value) { + // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 + DataPermissionUtils.executeIgnore(() -> { + // 校验code唯一 + validateConditionExists(id); + validateStrategyCodeExists(strategyCode); + validateRuleCodeExists(ruleCode); + validateParamCodeExists(paramCode); + validateOperatorExists(operator); + validateValueExists(value); + }); + } + @VisibleForTesting + private void validateConditionExists(Long id) { + if (id == null) { + return; + } + ConditionDO condition = conditionMapper.selectById(id); + if (condition == null) { + throw exception(CONDITION_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateStrategyCodeExists(String strategyCode) { + if (strategyCode.isEmpty()) { + throw exception(CONDITION_STRATEG_CODE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateRuleCodeExists(String ruleCode) { + if (ruleCode.isEmpty()) { + throw exception(CONDITION_RULE_CODE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateParamCodeExists(String paramCode) { + if (paramCode.isEmpty()) { + throw exception(CONDITION_PARAM_CODE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateOperatorExists(String operator) { + if (operator.isEmpty()) { + throw exception(CONDITION_OPERATOR_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateValueExists(String value) { + if (value.isEmpty()) { + throw exception(CONDITION_VALUE_NOT_EXISTS); + } + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configuration/ConfigurationService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configuration/ConfigurationService.java index 8906f7f1..05e6c701 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configuration/ConfigurationService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configuration/ConfigurationService.java @@ -1,14 +1,12 @@ package com.win.module.wms.service.configuration; -import java.util.*; -import javax.validation.*; - -import com.win.module.wms.controller.configuration.vo.ConfigurationCreateReqVO; -import com.win.module.wms.controller.configuration.vo.ConfigurationExportReqVO; -import com.win.module.wms.controller.configuration.vo.ConfigurationPageReqVO; -import com.win.module.wms.controller.configuration.vo.ConfigurationUpdateReqVO; -import com.win.module.wms.dal.dataobject.configuration.ConfigurationDO; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.configuration.vo.*; +import com.win.module.wms.dal.dataobject.configuration.ConfigurationDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; /** * 配置 Service 接口 @@ -71,4 +69,5 @@ public interface ConfigurationService { */ List getConfigurationList(ConfigurationExportReqVO exportReqVO); + List importConfigurationList(List configurations, Integer mode, Boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configuration/ConfigurationServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configuration/ConfigurationServiceImpl.java index 655b1150..e120ea59 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configuration/ConfigurationServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configuration/ConfigurationServiceImpl.java @@ -1,22 +1,25 @@ package com.win.module.wms.service.configuration; -import com.win.module.wms.controller.configuration.vo.ConfigurationCreateReqVO; -import com.win.module.wms.controller.configuration.vo.ConfigurationExportReqVO; -import com.win.module.wms.controller.configuration.vo.ConfigurationPageReqVO; -import com.win.module.wms.controller.configuration.vo.ConfigurationUpdateReqVO; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; - -import java.util.*; - -import com.win.module.wms.dal.dataobject.configuration.ConfigurationDO; +import cn.hutool.core.collection.CollUtil; +import com.google.common.annotations.VisibleForTesting; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.PageResult; - +import com.win.framework.datapermission.core.util.DataPermissionUtils; +import com.win.module.wms.controller.configuration.vo.*; import com.win.module.wms.convert.configuration.ConfigurationConvert; +import com.win.module.wms.dal.dataobject.configuration.ConfigurationDO; import com.win.module.wms.dal.mysql.configuration.ConfigurationMapper; +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.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY; import static com.win.module.wms.enums.ErrorCodeConstants.*; /** @@ -33,6 +36,8 @@ public class ConfigurationServiceImpl implements ConfigurationService { @Override public Long createConfiguration(ConfigurationCreateReqVO createReqVO) { + validateConfigurationForCreateOrUpdate(createReqVO.getId(),createReqVO.getStrategyCode(),createReqVO. + getRuleCode(),createReqVO.getConfigurationCode(),createReqVO.getConfigurationValue()); // 插入 ConfigurationDO configuration = ConfigurationConvert.INSTANCE.convert(createReqVO); configurationMapper.insert(configuration); @@ -43,7 +48,8 @@ public class ConfigurationServiceImpl implements ConfigurationService { @Override public void updateConfiguration(ConfigurationUpdateReqVO updateReqVO) { // 校验存在 - validateConfigurationExists(updateReqVO.getId()); + validateConfigurationForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getStrategyCode(),updateReqVO. + getRuleCode(),updateReqVO.getConfigurationCode(),updateReqVO.getConfigurationValue()); // 更新 ConfigurationDO updateObj = ConfigurationConvert.INSTANCE.convert(updateReqVO); configurationMapper.updateById(updateObj); @@ -57,12 +63,6 @@ public class ConfigurationServiceImpl implements ConfigurationService { configurationMapper.deleteById(id); } - private void validateConfigurationExists(Long id) { - if (configurationMapper.selectById(id) == null) { - throw exception(CONFIGURATION_NOT_EXISTS); - } - } - @Override public ConfigurationDO getConfiguration(Long id) { return configurationMapper.selectById(id); @@ -83,4 +83,83 @@ public class ConfigurationServiceImpl implements ConfigurationService { return configurationMapper.selectList(exportReqVO); } + @Override + public List importConfigurationList(List configurations, Integer mode, Boolean updatePart) { + if (CollUtil.isEmpty(configurations)) { + throw exception(USER_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + configurations.forEach(configuration -> { + // 校验,判断是否有不符合的原因 + try { + if(mode != null){ + validateConfigurationForCreateOrUpdate(null,configuration.getStrategyCode(),configuration. + getRuleCode(),configuration.getConfigurationCode(),configuration.getConfigurationValue());} + } + catch (ServiceException ex) { + errorList.add(configuration); + return; + } + // 判断如果不存在,在进行插入 + ConfigurationDO existAccountcalendar = null; + if (existAccountcalendar == null&& mode != 3) { + configurationMapper.insert(ConfigurationConvert.INSTANCE.convert(configuration)); + } + else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新 + ConfigurationDO configurationDo = ConfigurationConvert.INSTANCE.convert(configuration); + configurationDo.setId(existAccountcalendar.getId()); + configurationMapper.updateById(configurationDo); + } + }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + private void validateConfigurationForCreateOrUpdate(Long id,String strategyCode,String ruleCode,String configurationCode,String configurationValue) { + // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 + DataPermissionUtils.executeIgnore(() -> { + // 校验code唯一 + validateConfigurationExists(id); + validateStrategyCodeExists(strategyCode); + validateRuleCodeExists(ruleCode); + validateConfigurationCodeExists(configurationCode); + validateConfigurationValueExists(configurationValue); + }); + } + @VisibleForTesting + private void validateConfigurationExists(Long id) { + if (id == null) { + return; + } + ConfigurationDO configuration = configurationMapper.selectById(id); + if (configuration == null) { + throw exception(CONFIGURATION_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateStrategyCodeExists(String strategyCode) { + if (strategyCode.isEmpty()) { + throw exception(CONFIGURATION_STRATEG_CODE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateRuleCodeExists(String ruleCode) { + if (ruleCode.isEmpty()) { + throw exception(CONFIGURATION_RULE_CODE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateConfigurationCodeExists(String configurationCode) { + if (configurationCode.isEmpty()) { + throw exception(CONFIGURATION_CONFIGURATION_CODE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateConfigurationValueExists(String configurationValue) { + if (configurationValue.isEmpty()) { + throw exception(CONFIGURATION_CONFIGURATION_VALUE_NOT_EXISTS); + } + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configurationsetting/ConfigurationsettingService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configurationsetting/ConfigurationsettingService.java index 4023bb1c..09df72ab 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configurationsetting/ConfigurationsettingService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configurationsetting/ConfigurationsettingService.java @@ -1,14 +1,12 @@ package com.win.module.wms.service.configurationsetting; -import java.util.*; -import javax.validation.*; - -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingCreateReqVO; -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingExportReqVO; -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingPageReqVO; -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingUpdateReqVO; -import com.win.module.wms.dal.dataobject.configurationsetting.ConfigurationsettingDO; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.configurationsetting.vo.*; +import com.win.module.wms.dal.dataobject.configurationsetting.ConfigurationsettingDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; /** * 配置设置 Service 接口 @@ -71,4 +69,5 @@ public interface ConfigurationsettingService { */ List getConfigurationsettingList(ConfigurationsettingExportReqVO exportReqVO); + List importConfigurationsettingList(List configurationSettings, Integer mode, Boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configurationsetting/ConfigurationsettingServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configurationsetting/ConfigurationsettingServiceImpl.java index f5905f44..61bc8c0b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configurationsetting/ConfigurationsettingServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/configurationsetting/ConfigurationsettingServiceImpl.java @@ -1,23 +1,27 @@ package com.win.module.wms.service.configurationsetting; -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingCreateReqVO; -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingExportReqVO; -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingPageReqVO; -import com.win.module.wms.controller.configurationsetting.vo.ConfigurationsettingUpdateReqVO; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; - -import java.util.*; - -import com.win.module.wms.dal.dataobject.configurationsetting.ConfigurationsettingDO; +import cn.hutool.core.collection.CollUtil; +import com.google.common.annotations.VisibleForTesting; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.PageResult; - +import com.win.framework.datapermission.core.util.DataPermissionUtils; +import com.win.module.wms.controller.configurationsetting.vo.*; import com.win.module.wms.convert.configurationsetting.ConfigurationsettingConvert; +import com.win.module.wms.dal.dataobject.configurationsetting.ConfigurationsettingDO; import com.win.module.wms.dal.mysql.configurationsetting.ConfigurationsettingMapper; +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.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY; import static com.win.module.wms.enums.ErrorCodeConstants.*; +import static com.win.module.wms.enums.itembasic.ErrorCodeConstants.ITEMBASIC_NOT_EXISTS; /** * 配置设置 Service 实现类 @@ -33,6 +37,9 @@ public class ConfigurationsettingServiceImpl implements ConfigurationsettingServ @Override public Long createConfigurationsetting(ConfigurationsettingCreateReqVO createReqVO) { + validateConfigurationSettingForCreateOrUpdate(null,createReqVO.getStrategyType() + ,createReqVO.getConfigurationCode(),createReqVO.getConfigurationName(),createReqVO.getIsRequired() + ,createReqVO.getDataType(),createReqVO.getValueScope()); // 插入 ConfigurationsettingDO configurationsetting = ConfigurationsettingConvert.INSTANCE.convert(createReqVO); configurationsettingMapper.insert(configurationsetting); @@ -43,7 +50,8 @@ public class ConfigurationsettingServiceImpl implements ConfigurationsettingServ @Override public void updateConfigurationsetting(ConfigurationsettingUpdateReqVO updateReqVO) { // 校验存在 - validateConfigurationsettingExists(updateReqVO.getId()); + validateConfigurationSettingForCreateOrUpdate(null,updateReqVO.getStrategyType(),updateReqVO.getConfigurationCode(),updateReqVO.getConfigurationName(),updateReqVO.getIsRequired() + ,updateReqVO.getDataType(),updateReqVO.getValueScope()); // 更新 ConfigurationsettingDO updateObj = ConfigurationsettingConvert.INSTANCE.convert(updateReqVO); configurationsettingMapper.updateById(updateObj); @@ -83,4 +91,96 @@ public class ConfigurationsettingServiceImpl implements ConfigurationsettingServ return configurationsettingMapper.selectList(exportReqVO); } + @Override + public List importConfigurationsettingList(List configurationSettings, Integer mode, Boolean updatePart) { + if (CollUtil.isEmpty(configurationSettings)) { + throw exception(USER_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + configurationSettings.forEach(importConfigurationSetting -> { + // 校验,判断是否有不符合的原因 + try { + if(mode != null){ + validateConfigurationSettingForCreateOrUpdate(null,importConfigurationSetting.getStrategyType(),importConfigurationSetting.getConfigurationCode(), + importConfigurationSetting.getConfigurationName(),importConfigurationSetting.getIsRequired(),importConfigurationSetting.getDataType(),importConfigurationSetting.getValueScope()); + } + } catch (ServiceException ex) { + errorList.add(importConfigurationSetting); + return; + } + // 判断如果不存在,在进行插入 + ConfigurationsettingDO existConfigurationSetting = null; + if (existConfigurationSetting == null&& mode != 3) { + configurationsettingMapper.insert(ConfigurationsettingConvert.INSTANCE.convert(importConfigurationSetting)); + } + else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 + ConfigurationsettingDO configurationSettingDO = ConfigurationsettingConvert.INSTANCE.convert(importConfigurationSetting); + configurationSettingDO.setId(existConfigurationSetting.getId()); + configurationsettingMapper.updateById(configurationSettingDO); + } + }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + private void validateConfigurationSettingForCreateOrUpdate(Long id,String strategyType, String configurationCode, + String configurationName,String isRequired,String dataType,String valueScope) { + // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 + DataPermissionUtils.executeIgnore(() -> { + validateConfigurationSettingExists(id); + // 校验code唯一 + validateStrategyTypeExists(strategyType); + validateConfigurationCodeExists(configurationCode); + validateConfigurationNameExists(configurationName); + validateIsRequiredExists(isRequired); + validateDataTypeExists(dataType); + validateValueScopeExists(valueScope); + }); + } + @VisibleForTesting + private void validateConfigurationSettingExists(Long id) { + if (id == null) { + return; + } + ConfigurationsettingDO configurationSetting = configurationsettingMapper.selectById(id); + if (configurationSetting == null) { + throw exception(ITEMBASIC_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateStrategyTypeExists(String strategyType) { + if (strategyType.isEmpty()) { + throw exception(CONFIGURATIONSETTING_STRATEG_CODE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateConfigurationCodeExists(String configurationCode) { + if (configurationCode.isEmpty()) { + throw exception(CONFIGURATIONSETTING_CONFIGURATION_CODE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateConfigurationNameExists(String configurationName) { + if (configurationName.isEmpty()) { + throw exception(CONFIGURATIONSETTING_CONFIGURATION_NAME_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateIsRequiredExists(String isRequired) { + if (isRequired.isEmpty()) { + throw exception(CONFIGURATIONSETTING_IS_REQUIRED_NOT_EXISTS); + } + } + private void validateDataTypeExists(String dataType) { + if (dataType.isEmpty()) { + throw exception(CONFIGURATIONSETTING_DATA_TYPE_NOT_EXISTS); + } + } + private void validateValueScopeExists(String valueScope) { + if (valueScope.isEmpty()) { + throw exception(CONFIGURATIONSETTING_VALUE_SCOPE_NOT_EXISTS); + } + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/currencyexchange/CurrencyexchangeService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/currencyexchange/CurrencyexchangeService.java index f08f49c4..321d2240 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/currencyexchange/CurrencyexchangeService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/currencyexchange/CurrencyexchangeService.java @@ -1,10 +1,7 @@ package com.win.module.wms.service.currencyexchange; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangeCreateReqVO; -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangeExportReqVO; -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangePageReqVO; -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangeUpdateReqVO; +import com.win.module.wms.controller.currencyexchange.vo.*; import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO; import javax.validation.Valid; @@ -72,4 +69,5 @@ public interface CurrencyexchangeService { */ List getCurrencyexchangeList(CurrencyexchangeExportReqVO exportReqVO); + List importCurrencyexchangeList(List currencyexchanges, Integer mode, Boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/currencyexchange/CurrencyexchangeServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/currencyexchange/CurrencyexchangeServiceImpl.java index 6799c23c..8380a1df 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/currencyexchange/CurrencyexchangeServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/currencyexchange/CurrencyexchangeServiceImpl.java @@ -1,22 +1,27 @@ package com.win.module.wms.service.currencyexchange; +import cn.hutool.core.collection.CollUtil; +import com.google.common.annotations.VisibleForTesting; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangeCreateReqVO; -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangeExportReqVO; -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangePageReqVO; -import com.win.module.wms.controller.currencyexchange.vo.CurrencyexchangeUpdateReqVO; +import com.win.framework.datapermission.core.util.DataPermissionUtils; +import com.win.module.wms.controller.currencyexchange.vo.*; import com.win.module.wms.convert.currencyexchange.CurrencyexchangeConvert; import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO; import com.win.module.wms.dal.mysql.currencyexchange.CurrencyexchangeMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.currencyexchange.ErrorCodeConstants.CURRENCYEXCHANGE_NOT_EXISTS; +import static com.win.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.currencyexchange.ErrorCodeConstants.*; /** * 货币转换 Service 实现类 @@ -32,6 +37,8 @@ public class CurrencyexchangeServiceImpl implements CurrencyexchangeService { @Override public Long createCurrencyexchange(CurrencyexchangeCreateReqVO createReqVO) { + validateCurrencyexchangeForCreateOrUpdate(createReqVO.getId(),createReqVO.getCurrency(),createReqVO.getBasiccurrency(),createReqVO.getRate(),createReqVO.getAvailable()); + // 插入 CurrencyexchangeDO currencyexchange = CurrencyexchangeConvert.INSTANCE.convert(createReqVO); currencyexchangeMapper.insert(currencyexchange); @@ -41,6 +48,8 @@ public class CurrencyexchangeServiceImpl implements CurrencyexchangeService { @Override public void updateCurrencyexchange(CurrencyexchangeUpdateReqVO updateReqVO) { + validateCurrencyexchangeForCreateOrUpdate(null,updateReqVO.getCurrency(),updateReqVO.getBasiccurrency(),updateReqVO.getRate(),updateReqVO.getAvailable()); + // 校验存在 validateCurrencyexchangeExists(updateReqVO.getId()); // 更新 @@ -82,4 +91,84 @@ public class CurrencyexchangeServiceImpl implements CurrencyexchangeService { return currencyexchangeMapper.selectList(exportReqVO); } + @Override + public List importCurrencyexchangeList(List currencyexchanges, Integer mode, Boolean updatePart) { + if (CollUtil.isEmpty(currencyexchanges)) { + throw exception(USER_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + currencyexchanges.forEach(currencyexchange -> { + // 校验,判断是否有不符合的原因 + try { + if(mode != null){ + validateCurrencyexchangeForCreateOrUpdate(null,currencyexchange.getCurrency(),currencyexchange.getBasiccurrency(),currencyexchange.getRate(),currencyexchange.getAvailable()); + } + } catch (ServiceException ex) { + errorList.add(currencyexchange); + return; + } + // 判断如果不存在,在进行插入 + CurrencyexchangeDO existConfigurationSetting = null; + if (existConfigurationSetting == null&& mode != 3) { + currencyexchangeMapper.insert(CurrencyexchangeConvert.INSTANCE.convert(currencyexchange)); + } + else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 + CurrencyexchangeDO currencyexchangeDO = CurrencyexchangeConvert.INSTANCE.convert(currencyexchange); + currencyexchangeDO.setId(existConfigurationSetting.getId()); + currencyexchangeMapper.updateById(currencyexchangeDO); + } + }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + + private void validateCurrencyexchangeForCreateOrUpdate(Long id, String currency, String basiccurrency, + BigDecimal rate, String available) { + // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 + DataPermissionUtils.executeIgnore(() -> { + validateConfigurationSettingExists(id); + // 校验code唯一 + validateCurrencyExists(currency); + validateBasiccurrencyExists(basiccurrency); + validateRateExists(rate); + validateAvailableExists(available); + }); + } + @VisibleForTesting + private void validateConfigurationSettingExists(Long id) { + if (id == null) { + return; + } + CurrencyexchangeDO currencyexchange = currencyexchangeMapper.selectById(id); + if (currencyexchange == null) { + throw exception(CURRENCYEXCHANGE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateCurrencyExists(String currency) { + if (currency.isEmpty()) { + throw exception(CURRENCYEXCHANGE_CURRENCY_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateBasiccurrencyExists(String basiccurrency) { + if (basiccurrency.isEmpty()) { + throw exception(CURRENCYEXCHANGE_BASICCURRENCY_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateRateExists(BigDecimal rate) { + if (rate == null) { + throw exception(CURRENCYEXCHANGE_RATE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateAvailableExists(String available) { + if (available.isEmpty()) { + throw exception(CURRENCYEXCHANGE_AVAILABLE_NOT_EXISTS); + } + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customer/CustomerService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customer/CustomerService.java index 2052c7b6..ce015715 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customer/CustomerService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customer/CustomerService.java @@ -1,14 +1,12 @@ package com.win.module.wms.service.customer; -import java.util.*; -import javax.validation.*; - -import com.win.module.wms.controller.customer.vo.CustomerCreateReqVO; -import com.win.module.wms.controller.customer.vo.CustomerExportReqVO; -import com.win.module.wms.controller.customer.vo.CustomerPageReqVO; -import com.win.module.wms.controller.customer.vo.CustomerUpdateReqVO; -import com.win.module.wms.dal.dataobject.customer.CustomerDO; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.customer.vo.*; +import com.win.module.wms.dal.dataobject.customer.CustomerDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; /** * 客户 Service 接口 @@ -71,4 +69,5 @@ public interface CustomerService { */ List getCustomerList(CustomerExportReqVO exportReqVO); + List importCustomerList(List customers, Integer mode, Boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customer/CustomerServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customer/CustomerServiceImpl.java index f3ca8a3d..7f199d2d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customer/CustomerServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customer/CustomerServiceImpl.java @@ -1,22 +1,29 @@ package com.win.module.wms.service.customer; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.google.common.annotations.VisibleForTesting; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.customer.vo.CustomerCreateReqVO; -import com.win.module.wms.controller.customer.vo.CustomerExportReqVO; -import com.win.module.wms.controller.customer.vo.CustomerPageReqVO; -import com.win.module.wms.controller.customer.vo.CustomerUpdateReqVO; +import com.win.framework.datapermission.core.util.DataPermissionUtils; +import com.win.module.wms.controller.customer.vo.*; import com.win.module.wms.convert.customer.CustomerConvert; +import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO; import com.win.module.wms.dal.dataobject.customer.CustomerDO; import com.win.module.wms.dal.mysql.customer.CustomerMapper; 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.customer.ErrorCodeConstants.CUSTOMER_NOT_EXISTS; +import static com.win.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.customer.ErrorCodeConstants.*; + /** * 客户 Service 实现类 @@ -32,6 +39,7 @@ public class CustomerServiceImpl implements CustomerService { @Override public Long createCustomer(CustomerCreateReqVO createReqVO) { + validateCurrencyexchangeForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getShortName(),createReqVO.getAvailable()); // 插入 CustomerDO customer = CustomerConvert.INSTANCE.convert(createReqVO); customerMapper.insert(customer); @@ -42,7 +50,7 @@ public class CustomerServiceImpl implements CustomerService { @Override public void updateCustomer(CustomerUpdateReqVO updateReqVO) { // 校验存在 - validateCustomerExists(updateReqVO.getId()); + validateCurrencyexchangeForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getCode(),updateReqVO.getShortName(),updateReqVO.getAvailable()); // 更新 CustomerDO updateObj = CustomerConvert.INSTANCE.convert(updateReqVO); customerMapper.updateById(updateObj); @@ -56,12 +64,6 @@ public class CustomerServiceImpl implements CustomerService { customerMapper.deleteById(id); } - private void validateCustomerExists(Long id) { - if (customerMapper.selectById(id) == null) { - throw exception(CUSTOMER_NOT_EXISTS); - } - } - @Override public CustomerDO getCustomer(Long id) { return customerMapper.selectById(id); @@ -82,4 +84,91 @@ public class CustomerServiceImpl implements CustomerService { return customerMapper.selectList(exportReqVO); } + @Override + public List importCustomerList(List customers, Integer mode, Boolean updatePart) { + if (CollUtil.isEmpty(customers)) { + throw exception(USER_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + customers.forEach(customer -> { + // 校验,判断是否有不符合的原因 + try { + if(mode != null){ + validateCurrencyexchangeForCreateOrUpdate(null,customer.getCode(),customer.getShortName(),customer.getAvailable()); + } + } catch (ServiceException ex) { + errorList.add(customer); + return; + } + // 判断如果不存在,在进行插入 + CurrencyexchangeDO existConfigurationSetting = null; + if (existConfigurationSetting == null&& mode != 3) { + customerMapper.insert(CustomerConvert.INSTANCE.convert(customer)); + } + else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 + CustomerDO customerDO = CustomerConvert.INSTANCE.convert(customer); + customerDO.setId(existConfigurationSetting.getId()); + customerMapper.updateById(customerDO); + } + }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + + private void validateCurrencyexchangeForCreateOrUpdate(Long id, String code, String shortName, String available) { + // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 + DataPermissionUtils.executeIgnore(() -> { + validateCustomerExists(id); + validateCodeExists(id,code); + // 校验code唯一 + validateShortNameExists(shortName); + validateAvailableExists(available); + }); + } + @VisibleForTesting + private void validateCustomerExists(Long id) { + if (id == null) { + return; + } + CustomerDO customer = customerMapper.selectById(id); + if (customer == null) { + throw exception(CUSTOMER_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateCodeExists(Long id,String code) { + if (code.isEmpty()) { + throw exception(CUSTOMER_CODE_NOT_EXISTS); + } + if (StrUtil.isBlank(code)) { + return; + } + CustomerDO customer = customerMapper.selectByCode(code); + if (customer == null) { + return; + } + // 如果 id 为空,说明不用比较是否为相同 id 的用户 + if (id == null) { + throw exception(CUSTOMER_CODE_EXISTS); + } + if (!customer.getId().equals(id)) { + throw exception(CUSTOMER_CODE_EXISTS); + } + } + @VisibleForTesting + private void validateShortNameExists(String shortName) { + if (shortName.isEmpty()) { + throw exception(CUSTOMER_SHORTNAME_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateAvailableExists(String available) { + if (available.isEmpty()) { + throw exception(CUSTOMER_AVAILABLE_NOT_EXISTS); + } + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockService.java index 5dc603bf..c3fdc324 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockService.java @@ -1,14 +1,12 @@ package com.win.module.wms.service.customerdock; -import java.util.*; -import javax.validation.*; - -import com.win.module.wms.controller.customerdock.vo.CustomerdockCreateReqVO; -import com.win.module.wms.controller.customerdock.vo.CustomerdockExportReqVO; -import com.win.module.wms.controller.customerdock.vo.CustomerdockPageReqVO; -import com.win.module.wms.controller.customerdock.vo.CustomerdockUpdateReqVO; -import com.win.module.wms.dal.dataobject.customerdock.CustomerdockDO; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.customerdock.vo.*; +import com.win.module.wms.dal.dataobject.customerdock.CustomerdockDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; /** * 客户月台 Service 接口 @@ -71,4 +69,5 @@ public interface CustomerdockService { */ List getCustomerdockList(CustomerdockExportReqVO exportReqVO); + List importCustomerdockList(List customerdocks, Integer mode, Boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockServiceImpl.java index ba533b3a..74741dc5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockServiceImpl.java @@ -1,22 +1,28 @@ package com.win.module.wms.service.customerdock; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.google.common.annotations.VisibleForTesting; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.customerdock.vo.CustomerdockCreateReqVO; -import com.win.module.wms.controller.customerdock.vo.CustomerdockExportReqVO; -import com.win.module.wms.controller.customerdock.vo.CustomerdockPageReqVO; -import com.win.module.wms.controller.customerdock.vo.CustomerdockUpdateReqVO; +import com.win.framework.datapermission.core.util.DataPermissionUtils; +import com.win.module.wms.controller.customerdock.vo.*; import com.win.module.wms.convert.customerdock.CustomerdockConvert; +import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO; import com.win.module.wms.dal.dataobject.customerdock.CustomerdockDO; import com.win.module.wms.dal.mysql.customerdock.CustomerdockMapper; 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.customerdock.ErrorCodeConstants.CUSTOMERDOCK_NOT_EXISTS; +import static com.win.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.customerdock.ErrorCodeConstants.*; /** * 客户月台 Service 实现类 @@ -32,6 +38,8 @@ public class CustomerdockServiceImpl implements CustomerdockService { @Override public Long createCustomerdock(CustomerdockCreateReqVO createReqVO) { + validateCurrencyexchangeForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getCustomerCode(),createReqVO.getDefaultLocationCode(),createReqVO.getAvailable()); + // 插入 CustomerdockDO customerdock = CustomerdockConvert.INSTANCE.convert(createReqVO); customerdockMapper.insert(customerdock); @@ -42,7 +50,8 @@ public class CustomerdockServiceImpl implements CustomerdockService { @Override public void updateCustomerdock(CustomerdockUpdateReqVO updateReqVO) { // 校验存在 - validateCustomerdockExists(updateReqVO.getId()); + validateCurrencyexchangeForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getCode(),updateReqVO.getCustomerCode(),updateReqVO.getDefaultLocationCode(),updateReqVO.getAvailable()); + // 更新 CustomerdockDO updateObj = CustomerdockConvert.INSTANCE.convert(updateReqVO); customerdockMapper.updateById(updateObj); @@ -82,4 +91,98 @@ public class CustomerdockServiceImpl implements CustomerdockService { return customerdockMapper.selectList(exportReqVO); } + @Override + public List importCustomerdockList(List customerdocks, Integer mode, Boolean updatePart) { + if (CollUtil.isEmpty(customerdocks)) { + throw exception(USER_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + customerdocks.forEach(customerdock -> { + // 校验,判断是否有不符合的原因 + try { + if(mode != null){ + validateCurrencyexchangeForCreateOrUpdate(null,customerdock.getCode(),customerdock.getCustomerCode(),customerdock.getDefaultLocationCode(),customerdock.getAvailable()); + } + } catch (ServiceException ex) { + errorList.add(customerdock); + return; + } + // 判断如果不存在,在进行插入 + CurrencyexchangeDO existConfigurationSetting = null; + if (existConfigurationSetting == null&& mode != 3) { + customerdockMapper.insert(CustomerdockConvert.INSTANCE.convert(customerdock)); + } + else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 + CustomerdockDO customerdockDO = CustomerdockConvert.INSTANCE.convert(customerdock); + customerdockDO.setId(existConfigurationSetting.getId()); + customerdockMapper.updateById(customerdockDO); + } + }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + + private void validateCurrencyexchangeForCreateOrUpdate(Long id, String code, String customerCode,String defaultLocationCode, String available) { + // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 + DataPermissionUtils.executeIgnore(() -> { + validateCustomerExists(id); + validateCodeExists(id,code); + // 校验code唯一 + validateCustomerCodeExists(customerCode); + validateDefaultLocationCodeExists(defaultLocationCode); + validateAvailableExists(available); + }); + } + @VisibleForTesting + private void validateCustomerExists(Long id) { + if (id == null) { + return; + } + CustomerdockDO customerdock = customerdockMapper.selectById(id); + if (customerdock == null) { + throw exception(CUSTOMERDOCK_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateCodeExists(Long id,String code) { + if (code.isEmpty()) { + throw exception(CUSTOMERDOCK_CODE_NOT_EXISTS); + } + if (StrUtil.isBlank(code)) { + return; + } + CustomerdockDO customerdock = customerdockMapper.selectByCode(code); + if (customerdock == null) { + return; + } + // 如果 id 为空,说明不用比较是否为相同 id 的用户 + if (id == null) { + throw exception(CUSTOMERDOCK_CODE_EXISTS); + } + if (!customerdock.getId().equals(id)) { + throw exception(CUSTOMERDOCK_CODE_EXISTS); + } + } + @VisibleForTesting + private void validateCustomerCodeExists(String customerCode) { + if (customerCode.isEmpty()) { + throw exception(CUSTOMERDOCK_CUSTOMER_CODE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateDefaultLocationCodeExists(String defaultLocationCode) { + if (defaultLocationCode.isEmpty()) { + throw exception(CUSTOMERDOCK_DEFAULT_LOCATION_CODE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateAvailableExists(String available) { + if (available.isEmpty()) { + throw exception(CUSTOMERDOCK_AVAILABLE_NOT_EXISTS); + } + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java index 24a29a02..25eedfb9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java @@ -76,6 +76,6 @@ public interface ItembasicService { * @param updatePart 是否支持更新 * @return 导入结果 */ - List importUserList(List importItembasics, Integer mode,boolean updatePart); + List importItembasicList(List importItembasics, Integer mode,boolean updatePart); } 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 dde0b86a..29679723 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 @@ -38,6 +38,9 @@ public class ItembasicServiceImpl implements ItembasicService { @Override public Long createItembasic(ItembasicCreateReqVO createReqVO) { + validateItembasicForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getStatus(),createReqVO.getUom(),createReqVO.getIsStdPack(),createReqVO.getEnableBuy() + ,createReqVO.getEnableMake(),createReqVO.getEnableOutsourcing(),createReqVO.getIsRecycled(),createReqVO.getIsPhantom(),createReqVO.getAbcClass(),createReqVO.getType() + ,createReqVO.getValidityDays(),createReqVO.getAvailable()); // 插入 ItembasicDO itembasic = ItembasicConvert.INSTANCE.convert(createReqVO); itembasicMapper.insert(itembasic); @@ -86,7 +89,7 @@ public class ItembasicServiceImpl implements ItembasicService { return itembasicMapper.selectList(exportReqVO); } - public List importUserList(List importItembasics, Integer mode, boolean updatePart) { + public List importItembasicList(List importItembasics, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(importItembasics)) { throw exception(USER_IMPORT_LIST_IS_EMPTY); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationService.java index bc01e5b1..5092dc29 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationService.java @@ -69,5 +69,5 @@ public interface WorkstationService { */ List getWorkstationList(WorkstationExportReqVO exportReqVO); - WorkstationImportRespVO importUserList(List list, Integer mode,Boolean updatePart); + List importWorkstationList(List workstations, Integer mode,Boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java index 5e03089f..a98403d7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java @@ -2,6 +2,7 @@ package com.win.module.wms.service.workstation; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.google.common.annotations.VisibleForTesting; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.PageResult; import com.win.framework.datapermission.core.util.DataPermissionUtils; @@ -17,12 +18,13 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collection; -import java.util.LinkedHashMap; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY; -import static com.win.module.wms.enums.workstation.ErrorCodeConstants.*; +import static com.win.module.wms.enums.itembasic.ErrorCodeConstants.*; +import static com.win.module.wms.enums.workstation.ErrorCodeConstants.CODE_EXISTS; +import static com.win.module.wms.enums.workstation.ErrorCodeConstants.WORKSTATION_NOT_EXISTS; /** * 工位 Service 实现类 @@ -38,6 +40,7 @@ public class WorkstationServiceImpl implements WorkstationService { @Override public Long createWorkstation(WorkstationCreateReqVO createReqVO) { + validateWorkstationForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getWorkshopCode(),createReqVO.getProductionLineCode(),createReqVO.getAvailable()); // 插入 WorkstationDO workstation = WorkstationConvert.INSTANCE.convert(createReqVO); workstationMapper.insert(workstation); @@ -47,6 +50,7 @@ public class WorkstationServiceImpl implements WorkstationService { @Override public void updateWorkstation(WorkstationUpdateReqVO updateReqVO) { + validateWorkstationForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getCode(),updateReqVO.getWorkshopCode(),updateReqVO.getProductionLineCode(),updateReqVO.getAvailable()); // 校验存在 validateWorkstationExists(updateReqVO.getId()); // 更新 @@ -62,12 +66,6 @@ public class WorkstationServiceImpl implements WorkstationService { workstationMapper.deleteById(id); } - private void validateWorkstationExists(Long id) { - if (workstationMapper.selectById(id) == null) { - throw exception(WORKSTATION_NOT_EXISTS); - } - } - @Override public WorkstationDO getWorkstation(Long id) { return workstationMapper.selectById(id); @@ -91,53 +89,65 @@ public class WorkstationServiceImpl implements WorkstationService { @Override @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入 - public WorkstationImportRespVO importUserList(List workstations, Integer mode,Boolean updatePart) { + public List importWorkstationList(List workstations, Integer mode,Boolean updatePart) { if (CollUtil.isEmpty(workstations)) { throw exception(USER_IMPORT_LIST_IS_EMPTY); } - WorkstationImportRespVO respVO = WorkstationImportRespVO.builder().createWorkstations(new ArrayList<>()) - .updateWorkstations(new ArrayList<>()).failureWorkstations(new LinkedHashMap<>()).build(); + List errorList = new ArrayList<>(); workstations.forEach(workstation -> { // 校验,判断是否有不符合的原因 try { - validateUserForCreateOrUpdate(null,workstation.getCode()); - } catch (ServiceException ex) { - respVO.getFailureWorkstations().put(workstation.getCode(), ex.getMessage()); + if(mode != null){ + validateWorkstationForCreateOrUpdate(null,workstation.getCode(),workstation.getWorkshopCode(),workstation.getProductionLineCode(),workstation.getAvailable()); + } + } + catch (ServiceException ex) { + errorList.add(workstation); return; } // 判断如果不存在,在进行插入 - WorkstationDO existWorkstation = workstationMapper.selectByCode(workstation.getCode()); - if (existWorkstation == null&& mode != 3) { + WorkstationDO existAccountcalendar = workstationMapper.selectByCode(workstation.getCode()); + if (existAccountcalendar == null&& mode != 3) { workstationMapper.insert(WorkstationConvert.INSTANCE.convert(workstation)); - respVO.getCreateWorkstations().add(workstation.getCode()); } - else if (existWorkstation != null && mode != 2) {// 如果存在,判断是否允许更新 - WorkstationDO workstationDO = WorkstationConvert.INSTANCE.convert(workstation); - workstationDO.setId(existWorkstation.getId()); - workstationMapper.updateById(workstationDO); - respVO.getUpdateWorkstations().add(workstation.getCode()); + else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新 + WorkstationDO workstationDo = WorkstationConvert.INSTANCE.convert(workstation); + workstationDo.setId(existAccountcalendar.getId()); + workstationMapper.updateById(workstationDo); } }); //错误不为空并非部分更新,手工回滚 - if(respVO.getUpdateWorkstations().isEmpty() && !updatePart) { - respVO.setUpdateWorkstations(new ArrayList<>()); - respVO.setCreateWorkstations(new ArrayList<>()); + if(!errorList.isEmpty() && !updatePart) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } - return respVO; + return errorList; } - private void validateUserForCreateOrUpdate(Long id,String code) { + private void validateWorkstationForCreateOrUpdate(Long id,String code,String workshopCode,String productionLineCode,String available) { // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 DataPermissionUtils.executeIgnore(() -> { // 校验code唯一 - codeExists(id,code); + validateWorkstationExists(id); + validateCodeExists(id,code); + validateWorkshopCodeExists(workshopCode); + validateProductionLineCodeExists(productionLineCode); + validateAvailableExists(available); }); } - - private void codeExists(Long id, String code) { + @VisibleForTesting + private void validateWorkstationExists(Long id) { + if (id == null) { + return; + } + WorkstationDO workstation = workstationMapper.selectById(id); + if (workstation == null) { + throw exception(WORKSTATION_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateCodeExists(Long id, String code) { if (code.isEmpty()) { - throw exception(CODE_EXISTS); + throw exception(CODE_NOT_EXISTS); } if (StrUtil.isBlank(code)) { return; @@ -154,4 +164,22 @@ public class WorkstationServiceImpl implements WorkstationService { throw exception(CODE_EXISTS); } } + @VisibleForTesting + private void validateWorkshopCodeExists(String workshopCode) { + if (workshopCode.isEmpty()) { + throw exception(TYPE_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateProductionLineCodeExists(String productionLineCode) { + if (productionLineCode == null) { + throw exception(VALIDITY_DAYS_NOT_EXISTS); + } + } + @VisibleForTesting + private void validateAvailableExists(String available) { + if (available == null) { + throw exception(AVAIABLE_NOT_EXISTS); + } + } }