From fc8aaf7729764c3c49febe1547649c28f9efe880 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Wed, 27 Jul 2022 10:48:43 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E9=97=A8=E5=AF=BC=E5=85=A5=E3=80=81?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/extend/ExtendInfoMapper.java | 2 +- .../mapper/extend/ExtendInfoMapper.xml | 2 +- .../JclImportHistoryDetailMapper.java | 3 + .../JclImportHistoryDetailMapper.xml | 9 +- .../service/ImportCommonService.java | 8 +- .../service/impl/DepartmentServiceImpl.java | 6 +- .../service/impl/ImportCommonServiceImpl.java | 205 +++++++++++++++++- .../web/ImportCommonController.java | 6 +- .../wrapper/ImportCommonWrapper.java | 4 +- 9 files changed, 225 insertions(+), 20 deletions(-) diff --git a/src/com/engine/organization/mapper/extend/ExtendInfoMapper.java b/src/com/engine/organization/mapper/extend/ExtendInfoMapper.java index 8323ff99..f4545f35 100644 --- a/src/com/engine/organization/mapper/extend/ExtendInfoMapper.java +++ b/src/com/engine/organization/mapper/extend/ExtendInfoMapper.java @@ -37,7 +37,7 @@ public interface ExtendInfoMapper { int updateExtendGroupId(@Param("groupId") Long groupId, @Param("ids") Collection ids); - ExtendInfoPO getInfoByGroupAndLabelName(@Param("extendType") Long extendType, @Param("labelName") String labelName); + ExtendInfoPO getInfoByExtendAndLabelName(@Param("extendType") Long extendType, @Param("labelName") String labelName); } diff --git a/src/com/engine/organization/mapper/extend/ExtendInfoMapper.xml b/src/com/engine/organization/mapper/extend/ExtendInfoMapper.xml index 60053f92..0fb7bcbf 100644 --- a/src/com/engine/organization/mapper/extend/ExtendInfoMapper.xml +++ b/src/com/engine/organization/mapper/extend/ExtendInfoMapper.xml @@ -284,7 +284,7 @@ #{id} - select from jcl_field_extendinfo t diff --git a/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.java b/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.java index 32ad1309..01023178 100644 --- a/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.java +++ b/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.java @@ -1,6 +1,7 @@ package com.engine.organization.mapper.jclimport; import com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO; +import org.apache.ibatis.annotations.Param; /** * @author:dxfeng @@ -10,4 +11,6 @@ import com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO; public interface JclImportHistoryDetailMapper { void insertHistoryDetail(JclImportHistoryDetailPO historyDetailPO); + + int countRows(@Param("status") String status, @Param("pId") String pId); } diff --git a/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.xml b/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.xml index 3751306e..477a7c99 100644 --- a/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.xml +++ b/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.xml @@ -21,7 +21,8 @@ , t.operate_detail , t.related_name - INSERT INTO jcl_import_history_detail @@ -59,4 +60,10 @@ + \ No newline at end of file diff --git a/src/com/engine/organization/service/ImportCommonService.java b/src/com/engine/organization/service/ImportCommonService.java index eeb3ff02..7fe7680e 100644 --- a/src/com/engine/organization/service/ImportCommonService.java +++ b/src/com/engine/organization/service/ImportCommonService.java @@ -55,6 +55,12 @@ public interface ImportCommonService { */ Map saveImport(Map params); - Map getImportProcessLog(Map params); + /** + * 导入日志详情列表 + * + * @param params + * @return + */ + Map getImportResult(Map params); } diff --git a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java index ca225fce..4e5c52ca 100644 --- a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java +++ b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java @@ -86,7 +86,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService private static final Long GROUP_ID = 2L; - private DepartmentMapper getDepartmentMapper() { + private static DepartmentMapper getDepartmentMapper() { return MapperProxyFactory.getProxy(DepartmentMapper.class); } @@ -594,7 +594,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService * * @return */ - private String repeatDetermine(String deptNo) { + public static String repeatDetermine(String deptNo) { CodeRulePO codeRuleByType = MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleByType(RuleCodeType.DEPARTMENT.getValue()); if (StringUtils.isNotBlank(deptNo)) { deptNo = CodeRuleUtil.generateCode(RuleCodeType.DEPARTMENT, deptNo); @@ -613,7 +613,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService * * @return */ - private String autoCreateCompanyNo() { + private static String autoCreateCompanyNo() { String generateCode = CodeRuleUtil.generateCode(RuleCodeType.DEPARTMENT, ""); List list = getDepartmentMapper().listByNo(Util.null2String(generateCode)); if (CollectionUtils.isNotEmpty(list)) { diff --git a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java index ac51893e..73a99421 100644 --- a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java +++ b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java @@ -162,6 +162,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ break; case "department": extendType = "2"; + exculdeFields.add("parent_dept"); tableName = "JCL_ORG_DEPT"; break; case "jobtitle": @@ -238,6 +239,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ returnMap.put("pId", companyImport(operateType, excelFile, 1L)); break; case "department": + returnMap.put("pId", departmentImport(operateType, excelFile, 2L)); break; case "jobtitle": break; @@ -255,17 +257,20 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ } @Override - public Map getImportProcessLog(Map params) { + public Map getImportResult(Map params) { String pId = (String) params.get("pId"); Map resultMap = new HashMap<>(); // 刷新引用状态 OrganizationWeaTable table = new OrganizationWeaTable<>(user, JclImportHistoryDetailVO.class); - String sqlWhere = " where pId = '" + pId + "'"; + String sqlWhere = " where status = '0' and pId = '" + pId + "'"; table.setSqlwhere(sqlWhere); WeaResultMsg result = new WeaResultMsg(false); result.putAll(table.makeDataResult()); result.success(); resultMap.putAll(result.getResultMap()); + resultMap.put("importStatus", "over"); + resultMap.put("succnum", MapperProxyFactory.getProxy(JclImportHistoryDetailMapper.class).countRows("1", pId)); + resultMap.put("failnum", MapperProxyFactory.getProxy(JclImportHistoryDetailMapper.class).countRows("0", pId)); return resultMap; } @@ -498,13 +503,12 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ String cellValue = getCellValue(cell).trim(); if (i == 0) { // 首行 初始化字段信息 - ExtendInfoPO extendInfoPO = getExtendInfoMapper().getInfoByGroupAndLabelName(extendType, cellValue); + ExtendInfoPO extendInfoPO = getExtendInfoMapper().getInfoByExtendAndLabelName(extendType, cellValue); extendInfoPOS.add(extendInfoPO); } else { ExtendInfoPO infoPO = extendInfoPOS.get(cellIndex); // 数据校验 if (infoPO.getIsrequired() == 1 && StringUtils.isBlank(cellValue)) { - // TODO 记录日志 historyDetailPO.setOperateDetail(infoPO.getFieldNameDesc() + "为必填项"); historyDetailPO.setStatus("0"); saveImportDetailLog(historyDetailPO); @@ -521,7 +525,6 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ continue nextRow; } if (StringUtils.isNotBlank(cellValue) && StringUtils.isBlank(Util.null2String(reallyValue))) { - // TODO 记录日志 historyDetailPO.setOperateDetail(infoPO.getFieldNameDesc() + "数据转换失败,未找到对应数据"); historyDetailPO.setStatus("0"); saveImportDetailLog(historyDetailPO); @@ -533,7 +536,6 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ String[] split = cellValue.split(">"); if (split.length > 1) { if (split.length > 8) { - // TODO 记录日志 historyDetailPO.setOperateDetail("分部层级不能大于10"); historyDetailPO.setStatus("0"); saveImportDetailLog(historyDetailPO); @@ -542,7 +544,6 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ for (int index = split.length - 2; index >= 0; index--) { parentCompanyId = MapperProxyFactory.getProxy(CompMapper.class).getIdByNameAndPid(split[index], parentCompanyId == null ? 0 : parentCompanyId); if (null == parentCompanyId) { - // TODO 记录日志 historyDetailPO.setOperateDetail(split[index] + "分部未找到对应数据"); historyDetailPO.setStatus("0"); saveImportDetailLog(historyDetailPO); @@ -583,7 +584,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ // 查询对应ID if (StringUtils.isNotBlank(compNo)) { if (companyId == null) { - historyDetailPO.setOperateDetail(companyName + ":未找到对应数据"); + historyDetailPO.setOperateDetail("未找到对应数据"); historyDetailPO.setStatus("0"); saveImportDetailLog(historyDetailPO); } @@ -608,6 +609,194 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ return importHistoryId; } + /** + * 导入部门 + * + * @param operateType + * @param excelFile + * @param extendType + * @return + */ + private Long departmentImport(String operateType, String excelFile, Long extendType) { + Long importHistoryId = saveImportLog("department", operateType); + JclImportHistoryDetailPO historyDetailPO; + + ImageFileManager manager = new ImageFileManager(); + manager.getImageFileInfoById(Util.getIntValue(excelFile)); + XSSFWorkbook workbook; + try { + workbook = new XSSFWorkbook(manager.getInputStream()); + } catch (IOException e) { + throw new RuntimeException(e); + } + // 当前sheet + XSSFSheet sheetAt = workbook.getSheetAt(0); + int lastRow = sheetAt.getLastRowNum(); + List extendInfoPOS = new ArrayList<>(); + OrganizationAssert.isTrue(lastRow > 1, "导入数据为空"); + + + // 遍历每一行数据 + nextRow: + for (int i = 0; i <= lastRow; i++) { + historyDetailPO = new JclImportHistoryDetailPO(); + historyDetailPO.setPid(importHistoryId); + XSSFRow row = sheetAt.getRow(i); + // 组装待处理数据 + Map map = new HashMap<>(); + Long parentCompanyId = null; + Long parentDepartmentId = null; + String departmentName = ""; + + historyDetailPO.setRowNums(String.valueOf(i + 1)); + for (int cellIndex = 0; cellIndex < row.getLastCellNum(); cellIndex++) { + XSSFCell cell = row.getCell((short) cellIndex); + if (cell == null) { + continue; + } + String cellValue = getCellValue(cell).trim(); + if (i == 0) { + // 首行 初始化字段信息 + ExtendInfoPO extendInfoPO = getExtendInfoMapper().getInfoByExtendAndLabelName(extendType, cellValue); + extendInfoPOS.add(extendInfoPO); + } else { + ExtendInfoPO infoPO = extendInfoPOS.get(cellIndex); + // 数据校验 + if (infoPO.getIsrequired() == 1 && StringUtils.isBlank(cellValue)) { + // TODO 记录日志 + historyDetailPO.setOperateDetail(infoPO.getFieldNameDesc() + "为必填项"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + + Object reallyValue; + try { + reallyValue = getReallyValue(infoPO, cellValue); + } catch (Exception e) { + historyDetailPO.setOperateDetail(cellValue + "转换失败"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + if (StringUtils.isNotBlank(cellValue) && StringUtils.isBlank(Util.null2String(reallyValue))) { + // TODO 记录日志 + historyDetailPO.setOperateDetail(infoPO.getFieldNameDesc() + "数据转换失败,未找到对应数据"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + map.put(infoPO.getFieldName(), reallyValue); + // 上级分部 + if ("parent_comp".equals(infoPO.getFieldName())) { + String[] split = cellValue.split(">"); + if (split.length > 1) { + if (split.length > 8) { + historyDetailPO.setOperateDetail("分部层级不能大于10"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + for (int index = split.length - 1; index >= 0; index--) { + parentCompanyId = MapperProxyFactory.getProxy(CompMapper.class).getIdByNameAndPid(split[index], parentDepartmentId == null ? 0 : parentDepartmentId); + if (null == parentDepartmentId) { + historyDetailPO.setOperateDetail(cellValue + "分部未找到对应数据"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + } + } + } + + // 部门名称、上级部门 + if ("dept_name".equals(infoPO.getFieldName())) { + if (null == parentCompanyId) { + historyDetailPO.setOperateDetail(cellValue + "所属分部未找到"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + historyDetailPO.setRelatedName(cellValue); + String[] split = cellValue.split(">"); + if (split.length > 1) { + if (split.length > 8) { + historyDetailPO.setOperateDetail("部门层级不能大于10"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + for (int index = split.length - 2; index >= 0; index--) { + parentDepartmentId = MapperProxyFactory.getProxy(DepartmentMapper.class).getIdByNameAndPid(split[index], parentCompanyId, parentDepartmentId == null ? 0 : parentDepartmentId); + if (null == parentDepartmentId) { + historyDetailPO.setOperateDetail(split[index] + "部门未找到对应数据"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + } + } + map.put("parent_comp", parentCompanyId); + map.put("parent_dept", parentDepartmentId); + departmentName = split[split.length - 1]; + map.put("dept_name", departmentName); + } + } + } + // 校验、数据交互 + if (i == 0) { + continue; + } + // TODO + String deptNo = (String) map.get("dept_no"); + Long departmentId = MapperProxyFactory.getProxy(DepartmentMapper.class).getIdByNameAndPid(departmentName, parentCompanyId, parentDepartmentId == null ? 0 : parentDepartmentId); + if ("add".equals(operateType)) { + if (departmentId != null) { + historyDetailPO.setOperateDetail("数据已存在"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + // 自动编号 + deptNo = DepartmentServiceImpl.repeatDetermine(deptNo); + map.put("dept_no", deptNo); + map.put("creator", user.getUID()); + map.put("delete_type", 0); + map.put("create_time", new Date()); + MapperProxyFactory.getProxy(ExtMapper.class).insertExt(ExtendInfoParams.builder().tableName("JCL_ORG_DEPT").params(map).build()); + historyDetailPO.setOperateDetail("添加成功"); + historyDetailPO.setStatus("1"); + saveImportDetailLog(historyDetailPO); + } else if ("update".equals(operateType)) { + // 查询对应ID + if (StringUtils.isNotBlank(deptNo)) { + if (departmentId == null) { + historyDetailPO.setOperateDetail("未找到对应数据"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + } + if (checkRepeatNo(deptNo, extendType, departmentId)) { + map.put("update_time", new Date()); + MapperProxyFactory.getProxy(ExtMapper.class).updateExt(ExtendInfoParams.builder().id(departmentId).tableName("JCL_ORG_DEPT").params(map).build()); + historyDetailPO.setOperateDetail("更新成功"); + historyDetailPO.setStatus("1"); + saveImportDetailLog(historyDetailPO); + } else { + historyDetailPO.setOperateDetail(deptNo + "编号已存在"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + } + } else { + historyDetailPO.setOperateDetail("编号为空,更新失败"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + } + } + } + return importHistoryId; + } + + /** * 读取表格文本内容 * diff --git a/src/com/engine/organization/web/ImportCommonController.java b/src/com/engine/organization/web/ImportCommonController.java index 5e700c3d..0c8c3b75 100644 --- a/src/com/engine/organization/web/ImportCommonController.java +++ b/src/com/engine/organization/web/ImportCommonController.java @@ -87,13 +87,13 @@ public class ImportCommonController { @GET - @Path("/getImportProcessLog") + @Path("/getImportResult") @Produces(MediaType.APPLICATION_JSON) - public ReturnResult getImportProcessLog(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public ReturnResult getImportResult(@Context HttpServletRequest request, @Context HttpServletResponse response) { try { User user = HrmUserVarify.getUser(request, response); Map map = ParamUtil.request2Map(request); - return ReturnResult.successed(getImportCommonWrapper(user).getImportProcessLog(map)); + return ReturnResult.successed(getImportCommonWrapper(user).getImportResult(map)); } catch (Exception e) { return ReturnResult.exceptionHandle(e); } diff --git a/src/com/engine/organization/wrapper/ImportCommonWrapper.java b/src/com/engine/organization/wrapper/ImportCommonWrapper.java index c1dc44f4..d2238c09 100644 --- a/src/com/engine/organization/wrapper/ImportCommonWrapper.java +++ b/src/com/engine/organization/wrapper/ImportCommonWrapper.java @@ -61,7 +61,7 @@ public class ImportCommonWrapper extends Service { * @param params * @return */ - public Map getImportProcessLog(Map params) { - return getImportCommonService(user).getImportProcessLog(params); + public Map getImportResult(Map params) { + return getImportCommonService(user).getImportResult(params); } }