diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java index bd119495..49e95f89 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java @@ -9,13 +9,9 @@ import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; -import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; import com.win.module.wms.controller.location.vo.*; -import com.win.module.wms.controller.locationgroup.vo.LocationgroupRespVO; -import com.win.module.wms.convert.itembasic.ItembasicConvert; import com.win.module.wms.convert.location.LocationConvert; -import com.win.module.wms.convert.locationgroup.LocationgroupConvert; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.mysql.balance.BalanceMapper; import com.win.module.wms.dal.mysql.expectout.ExpectoutMapper; @@ -36,7 +32,6 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.*; @@ -158,16 +153,12 @@ public class LocationController { ExcelUtils.write(response, "库位.xlsx", "数据", LocationExcelVO.class, resultList, mapDropDown); } private List getExcelVo(List list, Map mapDropDown) { - String[] warehouseCode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.WAREHOUSE_TYPE); - mapDropDown.put(3, warehouseCode); - String[] areaCode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.AREA_TYPE); - mapDropDown.put(4, areaCode); String[] erpLocationCode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.ERP_LOCATION); mapDropDown.put(6, erpLocationCode); String[] type = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); mapDropDown.put(7, type); String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); - mapDropDown.put(18, available);; + mapDropDown.put(17, available);; // 导出 Excel List resultList =LocationConvert.INSTANCE.convertList02(list); for(LocationExcelVO vo : resultList) { @@ -184,16 +175,12 @@ public class LocationController { // 手动创建导出 demo List list = Arrays.asList(); Map mapDropDown = new HashMap<>(); - String[] warehouseCode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.WAREHOUSE_TYPE); - mapDropDown.put(3, warehouseCode); - String[] areaCode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.AREA_TYPE); - mapDropDown.put(4, areaCode); String[] erpLocationCode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.ERP_LOCATION); mapDropDown.put(6, erpLocationCode); String[] type = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); mapDropDown.put(7, type); String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); - mapDropDown.put(18, available);; + mapDropDown.put(17, available);; // 输出 ExcelUtils.write(response, "库位导入模板.xls", "库位列表", LocationImportExcelVO.class, list,mapDropDown); } @@ -206,18 +193,19 @@ public class LocationController { @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") }) @PreAuthorize("@ss.hasPermission('wms:location: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 { + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { List list = ExcelUtils.read(file, LocationImportExcelVO.class); - List errorList = locationService.importLocationList(list, mode, updatePart); + List errorList = locationService.importLocationList(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); } + return success(returnMap); } public LocationDO selectLocation(String pcode) { QueryWrapper queryWrapper = new QueryWrapper(); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/vo/LocationImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/vo/LocationImportErrorVO.java new file mode 100644 index 00000000..2d9d1c77 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/vo/LocationImportErrorVO.java @@ -0,0 +1,95 @@ +package com.win.module.wms.controller.location.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.Builder; +import lombok.Data; +import lombok.ToString; + + +import java.time.LocalDateTime; + +@Data +@Builder +@ToString(callSuper = true) +public class LocationImportErrorVO { + + @ExcelProperty("代码") + private String code; + + @ExcelProperty("名称") + private String name; + + @ExcelProperty("描述") + private String description; + + @ExcelProperty(value = "仓库代码", converter = DictConvert.class) + @DictFormat(DictTypeConstants.WAREHOUSE_TYPE) + private String warehouseCode; + + @ExcelProperty(value = "区域代码", converter = DictConvert.class) + @DictFormat(DictTypeConstants.AREA_TYPE) + private String areaCode; + + @ExcelProperty("库位组代码") + private String locationGroupCode; + + @ExcelProperty(value = "ERP库位代码", converter = DictConvert.class) + @DictFormat(DictTypeConstants.ERP_LOCATION) + private String erpLocationCode; + + @ExcelProperty(value = "类型", converter = DictConvert.class) + @DictFormat(DictTypeConstants.LOCATION_TYPE) + private String type; + + @ExcelProperty("巷道") + private String aisle; + + @ExcelProperty("货架") + private String shelf; + + @ExcelProperty("行") + private String locationRow; + + @ExcelProperty("列") + private String locationColum; + + @ExcelProperty("拣料优先级") + private Integer pickPriority; + + @ExcelProperty("最大承重") + private String maxWeight; + + @ExcelProperty("最大面积") + private String maxArea; + + @ExcelProperty("最大体积") + private String maxVolume; + + @ExcelProperty("用户组代码") + private String userGroupCode; + + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String available; + + @ExcelProperty(value = "生效时间") + @ColumnWidth(value = 16) + private LocalDateTime activeTime; + + @ExcelProperty(value = "失效时间") + @ColumnWidth(value = 16) + private LocalDateTime expireTime; + + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty(value = "导入状态", index = 0) + private String importStatus; + + @ExcelProperty(value = "导入说明", index = 1) + private String importRemark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/vo/LocationImportExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/vo/LocationImportExcelVO.java index e1c2a19e..cedc38a5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/vo/LocationImportExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/vo/LocationImportExcelVO.java @@ -29,12 +29,10 @@ public class LocationImportExcelVO { @ExcelProperty("描述") private String description; - @ExcelProperty(value = "仓库代码", converter = DictConvert.class) - @DictFormat(DictTypeConstants.WAREHOUSE_TYPE) + @ExcelProperty("仓库代码") private String warehouseCode; - @ExcelProperty(value = "区域代码", converter = DictConvert.class) - @DictFormat(DictTypeConstants.AREA_TYPE) + @ExcelProperty("区域代码") private String areaCode; @ExcelProperty("库位组代码") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/WorkshopController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/WorkshopController.java index dd26d402..fcb75782 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/WorkshopController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/WorkshopController.java @@ -8,6 +8,7 @@ import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO; import com.win.module.wms.controller.location.vo.LocationRespVO; import com.win.module.wms.controller.workshop.vo.WorkshopRespVO; @@ -176,7 +177,7 @@ public class WorkshopController { @RequestParam(value = "mode") Integer mode, @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { List list = ExcelUtils.read(file, WorkshopImportExcelVo.class); - List errorList = workshopService.importUserList(list, mode, updatePart); + List errorList = workshopService.importUserList(list, mode, updatePart); Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); if(!errorList.isEmpty()) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/vo/WorkshopImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/vo/WorkshopImportErrorVO.java new file mode 100644 index 00000000..5da8dfff --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/vo/WorkshopImportErrorVO.java @@ -0,0 +1,55 @@ +package com.win.module.wms.controller.workshop.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.Builder; +import lombok.Data; +import lombok.ToString; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@Builder +@ToString(callSuper = true) +public class WorkshopImportErrorVO { + + @ExcelProperty("代码") + private String code; + + @ExcelProperty("名称") + private String name; + + @ExcelProperty("描述") + private String description; + + @ExcelProperty(value = "类型", converter = DictConvert.class) + @DictFormat(DictTypeConstants.WORKSHOP_TYPE) + private String type; + + + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String available; + + @ExcelProperty(value = "生效时间") + @ColumnWidth(value = 16) + private LocalDateTime activeTime; + + @ExcelProperty(value = "失效时间") + @ColumnWidth(value = 16) + private LocalDateTime expireTime; + + @ExcelProperty("备注") + private String remark; + + @ExcelProperty(value = "导入状态", index = 0) + private String importStatus; + + @ExcelProperty(value = "导入说明", index = 1) + private String importRemark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/location/LocationConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/location/LocationConvert.java index 4ffaf264..fc06d590 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/location/LocationConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/location/LocationConvert.java @@ -1,6 +1,8 @@ package com.win.module.wms.convert.location; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; +import com.win.module.wms.controller.bom.vo.BomImportExcelVo; import com.win.module.wms.controller.location.vo.*; import com.win.module.wms.controller.locationgroup.vo.LocationGroupImportExcelVO; import com.win.module.wms.dal.dataobject.location.LocationDO; @@ -35,4 +37,6 @@ public interface LocationConvert { LocationDO convert(LocationImportExcelVO location); LocationgroupDO convert(LocationGroupImportExcelVO locationGroup); + + LocationImportErrorVO convert2(LocationDO bean); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/workshop/WorkshopConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/workshop/WorkshopConvert.java index d2a317ab..3b08d8b1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/workshop/WorkshopConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/workshop/WorkshopConvert.java @@ -5,6 +5,8 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.areabasic.vo.AreabasicImportExcelVo; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; +import com.win.module.wms.controller.bom.vo.BomImportExcelVo; import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO; import com.win.module.wms.controller.workshop.vo.*; import com.win.module.wms.dal.dataobject.areabasic.AreabasicDO; @@ -36,4 +38,6 @@ public interface WorkshopConvert { List convertList02(List list); WorkshopDO convert(WorkshopImportExcelVo importWorkshop); + + WorkshopImportErrorVO convert2(WorkshopDO bean); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationService.java index a06b9b38..280b7b41 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationService.java @@ -78,7 +78,7 @@ public interface LocationService { */ List getLocationList(LocationExportReqVO exportReqVO); - List importLocationList(List locations, Integer mode, Boolean updatePart); + List importLocationList(List locations, Integer mode, Boolean updatePart); /*** * BQ-----QL diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java index d00e3905..cb6f7f94 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java @@ -12,7 +12,9 @@ import com.win.framework.common.pojo.PageResult; import com.win.framework.datapermission.core.util.DataPermissionUtils; import com.win.module.wms.controller.location.vo.*; import com.win.module.wms.controller.rule.vo.RuleRespVO; +import com.win.module.wms.convert.bom.BomConvert; import com.win.module.wms.convert.location.LocationConvert; +import com.win.module.wms.dal.dataobject.bom.BomDO; import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.mysql.balance.BalanceMapper; import com.win.module.wms.dal.mysql.expectout.ExpectoutMapper; @@ -105,89 +107,91 @@ public class LocationServiceImpl implements LocationService { public PageResult getLocationSenior(CustomConditions conditions) { return locationMapper.selectSenior(conditions); } + private String validateLocationImport( LocationDO location ){ + StringBuilder message = new StringBuilder(); + try { + validateLocationExists(null); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateCodeExists(null,location.getCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateWarehouseCodeExists(location.getWarehouseCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateAreaCodeExists(location.getAreaCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateErpLocationCodeExists(location.getErpLocationCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateLocationGroupCodeExists(location.getUserGroupCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateTypeExists(location.getType()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validatePickPriorityExists(location.getPickPriority()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateUserGroupCodeExists(location.getUserGroupCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateAvailableExists(location.getAvailable()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + @Override - public List importLocationList(List locations, Integer mode, Boolean updatePart) { + public List importLocationList(List locations, Integer mode, Boolean updatePart) { if (CollUtil.isEmpty(locations)) { throw exception(LOCATION_IMPORT_LIST_IS_EMPTY); } - List errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); locations.forEach(location -> { - String massage = ""; - - // 校验,判断是否有不符合的原因 - if(mode != null){ - try { - validateLocationExists(null); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateCodeExists(null,location.getCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateWarehouseCodeExists(location.getWarehouseCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateAreaCodeExists(location.getAreaCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateErpLocationCodeExists(location.getErpLocationCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateLocationGroupCodeExists(location.getUserGroupCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateTypeExists(location.getType()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validatePickPriorityExists(location.getPickPriority()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateUserGroupCodeExists(location.getUserGroupCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateAvailableExists(location.getAvailable()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - } - if(StrUtil.isNotEmpty(massage)){ - massage.substring(0,massage.length()-1); - errorList.add(location); + LocationDO locationDO = LocationConvert.INSTANCE.convert(location); + String message =this.validateLocationImport(locationDO); + boolean flag = true; + if(!message.isEmpty()){ + LocationImportErrorVO importErrorVO = LocationConvert.INSTANCE.convert2(locationDO); + importErrorVO.setImportStatus("失败"); + importErrorVO.setImportRemark(message.substring(0, message.length() - 1)); + errorList.add(importErrorVO); + flag = false; } - if(errorList == null){ - // 判断如果不存在,在进行插入 - LocationDO existConfigurationSetting = null; + if(flag){ + LocationDO existConfigurationSetting = locationMapper.selectByCode(locationDO.getCode()); if (existConfigurationSetting == null&& mode != 3) { locationMapper.insert(LocationConvert.INSTANCE.convert(location)); } - else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 - LocationDO locationDO = LocationConvert.INSTANCE.convert(location); + else if (existConfigurationSetting != null && mode != 2) { + // 如果存在,判断是否允许更新 locationDO.setId(existConfigurationSetting.getId()); locationMapper.updateById(locationDO); } } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; } private void validateLocationForCreateOrUpdate(Long id, String code,String warehouseCode, String areaCode,String erpLocationCode, String locationGroupCode, diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopService.java index 01c0f968..2b200a92 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopService.java @@ -78,7 +78,7 @@ public interface WorkshopService { */ List getWorkshopList(WorkshopExportReqVO exportReqVO); - List importUserList(List importWorkshop, Integer mode, boolean updatePart); + List importUserList(List importWorkshop, Integer mode, boolean updatePart); /** * 查询车间是否存在 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java index f8fe0a32..19496b34 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java @@ -8,8 +8,11 @@ import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.datapermission.core.util.DataPermissionUtils; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; import com.win.module.wms.controller.workshop.vo.*; +import com.win.module.wms.convert.bom.BomConvert; import com.win.module.wms.convert.workshop.WorkshopConvert; +import com.win.module.wms.dal.dataobject.bom.BomDO; import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; import com.win.module.wms.dal.mysql.workshop.WorkshopMapper; import org.springframework.stereotype.Service; @@ -88,52 +91,54 @@ public class WorkshopServiceImpl implements WorkshopService { return workshopMapper.selectSenior(conditions); } - public List importUserList(List importWork, Integer mode, boolean updatePart) { + private String validateWorkshop( WorkshopDO importWorkshop ){ + StringBuilder message = new StringBuilder(); + try { + validateWorkshopExists(null); + } catch(ServiceException ex){ + message.append(ex.getMessage()).append(","); + } + try { + validateCodeExists(null,importWorkshop.getCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateAvailableExists(importWorkshop.getAvailable()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + + public List importUserList(List importWork, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(importWork)) { throw exception(WORKSHOP_IMPORT_LIST_IS_EMPTY); } - List errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); importWork.forEach(importWorkshop -> { - String massage = ""; - // 校验,判断是否有不符合的原因 - - if (mode != null) { - try { - validateWorkshopExists(null); - } catch(ServiceException ex){ - massage += ex.getMessage() + ","; - } - try { - validateCodeExists(null,importWorkshop.getCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateAvailableExists(importWorkshop.getAvailable()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - } - if(StrUtil.isNotEmpty(massage)){ - massage.substring(0,massage.length()-1); - errorList.add(importWorkshop); + WorkshopDO workshopDO = WorkshopConvert.INSTANCE.convert(importWorkshop); + String message =this.validateWorkshop(workshopDO); + // 校验,判断是否有不符合的原因 + boolean flag = true; + if(!message.isEmpty()){ + WorkshopImportErrorVO importErrorVO = WorkshopConvert.INSTANCE.convert2(workshopDO); + importErrorVO.setImportStatus("失败"); + importErrorVO.setImportRemark(message.substring(0, message.length() - 1)); + errorList.add(importErrorVO); + flag = false; } - // 判断如果不存在,在进行插入 - if(errorList == null) { + if(flag){ WorkshopDO existWorkshop = workshopMapper.selectByCode(importWorkshop.getCode()); if (existWorkshop == null && mode != 3) { workshopMapper.insert(WorkshopConvert.INSTANCE.convert(importWorkshop)); } else if (existWorkshop != null && mode != 2) {// 如果存在,判断是否允许更新 - WorkshopDO workshopDO = WorkshopConvert.INSTANCE.convert(importWorkshop); workshopDO.setId(existWorkshop.getId()); workshopMapper.updateById(workshopDO); } } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; }