diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/ProjectController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/ProjectController.java index c4209496..424d753d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/ProjectController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/ProjectController.java @@ -8,13 +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.customeritem.vo.CustomeritemRespVO; -import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; import com.win.module.wms.controller.project.vo.*; -import com.win.module.wms.convert.customeritem.CustomeritemConvert; -import com.win.module.wms.convert.itembasic.ItembasicConvert; import com.win.module.wms.convert.project.ProjectConvert; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.project.ProjectDO; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.project.ProjectService; @@ -162,17 +158,18 @@ public class ProjectController { @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") }) @PreAuthorize("@ss.hasPermission('wms:project: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, ProjectImportExcelVO.class); - List errorList = projectService.importProjectList(list, mode, updatePart); + List errorList = projectService.importProjectList(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/project/vo/ProjectImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/vo/ProjectImportErrorVO.java new file mode 100644 index 00000000..e4e1fdd4 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/vo/ProjectImportErrorVO.java @@ -0,0 +1,54 @@ +package com.win.module.wms.controller.project.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 ProjectImportErrorVO { + + + @ExcelProperty("代码") + private String code; + + @ExcelProperty("名称") + private String name; + + @ExcelProperty("描述") + private String description; + + @ExcelProperty("客户代码") + private String customerCode; + + @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/project/ProjectConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/project/ProjectConvert.java index 55f558f3..3521f56a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/project/ProjectConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/project/ProjectConvert.java @@ -1,6 +1,8 @@ package com.win.module.wms.convert.project; 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.project.vo.*; import com.win.module.wms.dal.dataobject.project.ProjectDO; import org.mapstruct.Mapper; @@ -31,4 +33,6 @@ public interface ProjectConvert { List convertList02(List list); ProjectDO convert(ProjectImportExcelVO project); + + ProjectImportErrorVO convert2(ProjectDO bean); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customeritem/CustomeritemServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customeritem/CustomeritemServiceImpl.java index b319530b..16b5338b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customeritem/CustomeritemServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customeritem/CustomeritemServiceImpl.java @@ -132,6 +132,7 @@ public class CustomeritemServiceImpl implements CustomeritemService { + public CustomeritemDO existcustomeritem( CustomeritemDO customeritem){ QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("customer_code",customeritem.getCustomerCode()); @@ -141,6 +142,10 @@ public class CustomeritemServiceImpl implements CustomeritemService { } + + + + @Override public List CustomeritemimportCustomeritemList(List customeritems, Integer mode, Boolean updatePart) { if (CollUtil.isEmpty(customeritems)) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectService.java index e850dc10..f0f3a02a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectService.java @@ -77,5 +77,5 @@ public interface ProjectService { */ List getProjectList(ProjectExportReqVO exportReqVO); - List importProjectList(List projects, Integer mode, Boolean updatePart); + List importProjectList(List projects, Integer mode, Boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectServiceImpl.java index a860f6b6..8949304f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectServiceImpl.java @@ -2,13 +2,17 @@ package com.win.module.wms.service.project; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.annotations.VisibleForTesting; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.datapermission.core.util.DataPermissionUtils; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; import com.win.module.wms.controller.project.vo.*; +import com.win.module.wms.convert.bom.BomConvert; import com.win.module.wms.convert.project.ProjectConvert; +import com.win.module.wms.dal.dataobject.bom.BomDO; import com.win.module.wms.dal.dataobject.owner.OwnerDO; import com.win.module.wms.dal.dataobject.project.ProjectDO; import com.win.module.wms.dal.mysql.project.ProjectMapper; @@ -86,37 +90,56 @@ public class ProjectServiceImpl implements ProjectService { return projectMapper.selectList(exportReqVO); } + private String validateProjectImport( ProjectDO project ){ + StringBuilder message = new StringBuilder(); + try { + validateProjectForCreateOrUpdate(null,project.getCode(),project.getAvailable()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + public ProjectDO existProjectDO(ProjectDO project){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("code",project.getCode()); + ProjectDO projectDO = projectMapper.selectOne(queryWrapper); + return projectDO; + + } + + + + @Override - public List importProjectList(List projects, Integer mode, Boolean updatePart) { + public List importProjectList(List projects, Integer mode, Boolean updatePart) { if (CollUtil.isEmpty(projects)) { throw exception(PROJECT_IMPORT_LIST_IS_EMPTY); } - List errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); projects.forEach(project -> { + ProjectDO projectDo = ProjectConvert.INSTANCE.convert(project); // 校验,判断是否有不符合的原因 - try { - if(mode != null){ - validateProjectForCreateOrUpdate(null,project.getCode(),project.getAvailable()); - } - } catch (ServiceException ex) { - errorList.add(project); - return; - } - // 判断如果不存在,在进行插入 - OwnerDO existConfigurationSetting = null; - if (existConfigurationSetting == null&& mode != 3) { - projectMapper.insert(ProjectConvert.INSTANCE.convert(project)); + String message = this.validateProjectImport(projectDo); + boolean flag = true; + if(!message.isEmpty()){ + ProjectImportErrorVO importErrorVO = ProjectConvert.INSTANCE.convert2(projectDo); + importErrorVO.setImportStatus("失败"); + importErrorVO.setImportRemark(message.substring(0, message.length() - 1)); + errorList.add(importErrorVO); + flag = false; } - else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 - ProjectDO projectDo = ProjectConvert.INSTANCE.convert(project); - projectDo.setId(existConfigurationSetting.getId()); - projectMapper.updateById(projectDo); + if(flag) { + // 判断如果不存在,在进行插入 + ProjectDO existConfigurationSetting = existProjectDO(projectDo); + if (existConfigurationSetting == null && mode != 3) { + projectMapper.insert(ProjectConvert.INSTANCE.convert(project)); + } else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 + projectDo.setId(existConfigurationSetting.getId()); + projectMapper.updateById(projectDo); + } } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; } private void validateProjectForCreateOrUpdate(Long id, String code,String available) { @@ -125,7 +148,6 @@ public class ProjectServiceImpl implements ProjectService { validateProjectExists(id); validateCodeExists(id,code); validateAvailableExists(available); - }); } private void validateProjectExists(Long id) {