From b3ef23e28621cef518799d68bd3f5d091436f45f Mon Sep 17 00:00:00 2001 From: lijiarao Date: Mon, 1 Nov 2021 20:15:10 +0800 Subject: [PATCH] =?UTF-8?q?fix=20bug=20=E7=BB=84=E7=BB=87=E6=9C=BA?= =?UTF-8?q?=E6=9E=84=E5=AF=BC=E5=85=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SysDepartController.java | 29 ++++++--- .../modules/system/model/SysDepartExcel.java | 1 + .../system/model/SysDepartImportExcel.java | 61 +++++++++++++++++++ 3 files changed, 84 insertions(+), 7 deletions(-) create mode 100644 jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysDepartImportExcel.java diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDepartController.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDepartController.java index e6f0fc39..c6fb337f 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDepartController.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDepartController.java @@ -13,6 +13,7 @@ import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.SysDepartTreeModel; import com.jero.common.util.ValidUtil; import com.jero.modules.system.model.SysDepartExcel; +import com.jero.modules.system.model.SysDepartImportExcel; import com.jero.modules.system.util.FindsDepartsChildrenUtil; import io.swagger.models.auth.In; import org.apache.commons.collections.CollectionUtils; @@ -390,7 +391,7 @@ public class SysDepartController { @CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true) public Result importExcel(HttpServletRequest request, HttpServletResponse response) throws IOException{ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; - List listSysDeparts = null; + List listSysDeparts = null; Map fileMap = multipartRequest.getFileMap(); for (Map.Entry entity : fileMap.entrySet()) { MultipartFile file = entity.getValue();// 获取上传文件对象 @@ -403,7 +404,7 @@ public class SysDepartController { params.setHeadRows(1); params.setNeedSave(true); //导入Excel格式校验,看匹配的字段文本概率 - Boolean t = ExcelImportCheckUtil.check(file.getInputStream(), SysDepartExcel.class, params,1.0); + Boolean t = ExcelImportCheckUtil.check(file.getInputStream(), SysDepartImportExcel.class, params,1.0); if (t == null){ return Result.error("文件导入失败: 导入数据为空"); } @@ -413,33 +414,47 @@ public class SysDepartController { try { // orgCode编码长度 int codeLength = YouBianCodeUtil.zhanweiLength; - listSysDeparts = ExcelImportUtil.importExcel(file.getInputStream(), SysDepartExcel.class, params); + listSysDeparts = ExcelImportUtil.importExcel(file.getInputStream(), SysDepartImportExcel.class, params); listSysDeparts = listSysDeparts.stream().filter(i -> !oConvertUtils.checkObjAllFieldsIsNull(i)).collect(Collectors.toList()); if (CollectionUtils.isEmpty(listSysDeparts)){ return Result.error("文件导入失败: 导入数据为空"); } //按长度排序 - Collections.sort(listSysDeparts, new Comparator() { + Collections.sort(listSysDeparts, new Comparator() { @Override - public int compare(SysDepartExcel arg0, SysDepartExcel arg1) { + public int compare(SysDepartImportExcel arg0, SysDepartImportExcel arg1) { return arg0.getOrgCode().length() - arg1.getOrgCode().length(); } }); List errorMessage = new ArrayList<>(); int num = 0; - for (SysDepartExcel sysDepart : listSysDeparts) { + for (SysDepartImportExcel sysDepart : listSysDeparts) { int lineNumber = num +1; List errorList = ValidUtil.validateReturnList(sysDepart); if (!errorList.isEmpty()){ errorMessage.add("第 " + lineNumber + " 行:"+ StringUtils.join(errorList,",")); } + String parentId = sysDepart.getParentId(); + if (errorMessage.isEmpty()){ String orgCode = sysDepart.getOrgCode(); + if(orgCode.length() > codeLength) { String parentCode = orgCode.substring(0, orgCode.length()-codeLength); - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("org_code", parentCode); SysDepart parentDept = sysDepartService.getOne(queryWrapper); + if (StringUtils.isNotBlank(parentId)){ + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("depart_name", parentId); + SysDepart parentDept1 = sysDepartService.getOne(queryWrapper1); + if(parentDept1 == null) { + errorMessage.add("第 " + lineNumber + " 行:上级部门不存在"); + } + if (!Objects.equals(parentDept,parentDept1)){ + errorMessage.add("第 " + lineNumber + " 行:上级部门与机构编码不匹配"); + } + } if(parentDept != null) { sysDepart.setParentId(parentDept.getId()); } else { diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysDepartExcel.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysDepartExcel.java index 51e6af69..04e2fad9 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysDepartExcel.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysDepartExcel.java @@ -35,6 +35,7 @@ public class SysDepartExcel { /**机构编码*/ @Excel(name="机构编码",width=15,orderNum = "2") @NotBlank(message = "机构编码不能为空") + @Size(max = 50,message = "机构编码最长为50字符") private String orgCode; /**手机号*/ @Excel(name="手机号",width=15,orderNum = "5") diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysDepartImportExcel.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysDepartImportExcel.java new file mode 100644 index 00000000..cd2ca4cc --- /dev/null +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysDepartImportExcel.java @@ -0,0 +1,61 @@ +package com.jero.modules.system.model; + +import com.jero.common.aspect.annotation.Dict; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +import javax.validation.constraints.*; + +/** + * @author liJiaRao + * @date 2021-11-01 19:28 + */ +@Data +public class SysDepartImportExcel { + /**父机构ID*/ + @Excel(name="上级部门",width=15,orderNum = "1") + @Size(max = 50,message = "上级部门最长为50字符") + private String parentId; + /**机构/部门名称*/ + @Excel(name="机构名称",width=15) + @NotBlank(message = "机构名称不能为空") + @Size(max = 50,message = "机构名称最长为50字符") + private String departName; + /**排序*/ + @Excel(name="排序",width=15,orderNum = "4") + @Min(value = 1,message = "排序最小为1") + @Max(value = 99999,message = "排序最大为99999") + @Pattern(regexp = "^[1-9]{0,5}(\\.[0-9]{1,2})?$",message = "排序格式错误") + private String departOrder; + /**描述*/ + private String description; + /**机构类别 1公司,2组织机构,2岗位*/ + private String orgCategory; + + /**机构编码*/ + @Excel(name="机构编码",width=15,orderNum = "2") + @NotBlank(message = "机构编码不能为空") + @Size(max = 50,message = "机构编码最长为50字符") + private String orgCode; + /**手机号*/ + @Excel(name="手机号",width=15,orderNum = "5") + @Pattern(regexp = "^((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(17[0135678])|(18[0-9])|(19[8|9])|(16[6]))\\d{8}$",message = "手机号格式错误") + private String mobile; + /**传真*/ + private String fax; + /**地址*/ + @Excel(name="地址",width=15,orderNum = "6") + @Size(max = 50,message = "地址最长为50字符") + private String address; + /**备注*/ + @Excel(name="备注",width=15,orderNum = "7") + @Size(max = 200,message = "备注最长为200字符") + private String memo; + + /**机构类型*/ + private String orgType; + + /**删除状态(0,正常,1已删除)*/ + @Dict(dicCode = "del_flag") + private String delFlag; +}