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 74c09cde..50a7e214 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 @@ -8,14 +8,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.productionline.vo.ProductionlineRespVO; import com.win.module.wms.controller.workstation.vo.WorkstationRespVO; import com.win.module.wms.controller.workstation.vo.*; -import com.win.module.wms.convert.itembasic.ItembasicConvert; -import com.win.module.wms.convert.productionline.ProductionlineConvert; import com.win.module.wms.convert.workstation.WorkstationConvert;; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.workstation.WorkstationService; @@ -170,16 +165,19 @@ public class WorkstationController { @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") }) @PreAuthorize("@ss.hasPermission('wms:workstation: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, WorkstationImportExcelVo.class); - List errorList = workstationService.importWorkstationList(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); - }} + } + return success(returnMap); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/vo/WorkstationImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/vo/WorkstationImportErrorVO.java new file mode 100644 index 00000000..652045c2 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/vo/WorkstationImportErrorVO.java @@ -0,0 +1,69 @@ +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; +import lombok.Builder; +import lombok.Data; +import lombok.ToString; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +@Data +@Builder +@ToString(callSuper = true) +public class WorkstationImportErrorVO { + @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; + + @ExcelProperty("车间代码") + private String workshopCode; + + @ExcelProperty("生产线代码") + private String productionLineCode; + + @ExcelProperty("原料库位") + private String rawLocationCode; + + @ExcelProperty("成品库位") + private String fgLocationCode; + + @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; + + @ExcelProperty("创建时间") + @ColumnWidth(value = 16) + private LocalDateTime createTime; + + @ExcelProperty("创建者ID") + private String creator; + + @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/workstation/WorkstationConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/workstation/WorkstationConvert.java index 32433432..2b87631f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/workstation/WorkstationConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/workstation/WorkstationConvert.java @@ -1,6 +1,8 @@ package com.win.module.wms.convert.workstation; 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.workstation.vo.*; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import org.mapstruct.Mapper; @@ -32,4 +34,6 @@ public interface WorkstationConvert { List convertList02(List list); + WorkstationImportErrorVO convert2(WorkstationDO bean); + } 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 ff09ec95..2e17cf1e 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 @@ -79,7 +79,7 @@ public interface WorkstationService { */ List getWorkstationList(WorkstationExportReqVO exportReqVO); - List importWorkstationList(List workstations, Integer mode,Boolean updatePart); + List importWorkstationList(List workstations, Integer mode,Boolean updatePart); /** * BQ-----QWStation 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 47858c15..12f0a966 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 @@ -9,8 +9,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.workstation.vo.*; +import com.win.module.wms.convert.bom.BomConvert; import com.win.module.wms.convert.workstation.WorkstationConvert; +import com.win.module.wms.dal.dataobject.bom.BomDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.workstation.WorkstationMapper; import org.springframework.stereotype.Service; @@ -85,66 +88,68 @@ public class WorkstationServiceImpl implements WorkstationService { public List getWorkstationList(WorkstationExportReqVO exportReqVO) { return workstationMapper.selectList(exportReqVO); } + + private String validateWorkstationImport( WorkstationDO workstation ){ + StringBuilder message = new StringBuilder(); + try{ + validateWorkstationExists(null); + } catch(ServiceException ex){ + message.append(ex.getMessage()).append(","); + } + try{ + validateCodeExists(null,workstation.getCode()); + } catch(ServiceException ex){ + message.append(ex.getMessage()).append(","); + } + try{ + validateWorkshopCodeExists(workstation.getWorkshopCode()); + } catch(ServiceException ex){ + message.append(ex.getMessage()).append(","); + } + try{ + validateProductionLineCodeExists(workstation.getProductionLineCode()); + } catch(ServiceException ex){ + message.append(ex.getMessage()).append(","); + } + try{ + validateAvailableExists(workstation.getAvailable()); + } catch(ServiceException ex){ + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } @Override @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入 - public List importWorkstationList(List workstations, Integer mode,Boolean updatePart) { + public List importWorkstationList(List workstations, Integer mode,Boolean updatePart) { if (CollUtil.isEmpty(workstations)) { throw exception(WORKSTATION_IMPORT_LIST_IS_EMPTY); } - List errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); workstations.forEach(workstation -> { - String massage = ""; - // 校验,判断是否有不符合的原因 - if(mode != null){ - try{ - validateWorkstationExists(null); - } catch(ServiceException ex){ - massage += ex.getMessage() + ","; - } - try{ - validateCodeExists(null,workstation.getCode()); - } catch(ServiceException ex){ - massage += ex.getMessage() + ","; - } - try{ - validateWorkshopCodeExists(workstation.getWorkshopCode()); - } catch(ServiceException ex){ - massage += ex.getMessage() + ","; - } - try{ - validateProductionLineCodeExists(workstation.getProductionLineCode()); - } catch(ServiceException ex){ - massage += ex.getMessage() + ","; - } - try{ - validateAvailableExists(workstation.getAvailable()); - } catch(ServiceException ex){ - massage += ex.getMessage() + ","; - } - if(StrUtil.isNotEmpty(massage)){ - massage.substring(0,massage.length()-1); - errorList.add(workstation); - } - // 判断如果不存在,在进行插入 - if(errorList == null){ - WorkstationDO existAccountcalendar = workstationMapper.selectByCode(workstation.getCode()); - if (existAccountcalendar == null&& mode != 3) { - workstationMapper.insert(WorkstationConvert.INSTANCE.convert(workstation)); - } - else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新 - WorkstationDO workstationDo = WorkstationConvert.INSTANCE.convert(workstation); - workstationDo.setId(existAccountcalendar.getId()); - workstationMapper.updateById(workstationDo); - } - } + WorkstationDO workstationDO = WorkstationConvert.INSTANCE.convert(workstation); + String message =this.validateWorkstationImport(workstationDO); + boolean flag = true; + if(!message.isEmpty()){ + WorkstationImportErrorVO importErrorVO = WorkstationConvert.INSTANCE.convert2(workstationDO); + importErrorVO.setImportStatus("失败"); + importErrorVO.setImportRemark(message.substring(0, message.length() - 1)); + errorList.add(importErrorVO); + flag = false; + } + if(flag) { + WorkstationDO existAccountcalendar = workstationMapper.selectByCode(workstation.getCode()); + if (existAccountcalendar == null && mode != 3) { + workstationMapper.insert(workstationDO); + } else if (existAccountcalendar != null && mode != 2) { + // 如果存在,判断是否允许更新 + workstationDO.setId(existAccountcalendar.getId()); + workstationMapper.updateById(workstationDO); } + } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } + return errorList; }