From ddafc854b68e68d2d822ebbb439c4c4445bdc07d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98ml=E2=80=99?= Date: Wed, 9 Nov 2022 18:48:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BB=84=E7=BB=87=E6=9C=BA?= =?UTF-8?q?=E6=9E=84=E5=9B=BE=E8=99=9A=E6=8B=9F=E7=BB=84=E7=BB=87=E4=B8=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ImportCommonServiceImpl.java | 268 +++++++++++++++++- 1 file changed, 260 insertions(+), 8 deletions(-) diff --git a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java index 325d80b4..e633c5a1 100644 --- a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java +++ b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java @@ -20,6 +20,9 @@ import com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO; import com.engine.organization.entity.jclimport.po.JclImportHistoryPO; import com.engine.organization.entity.jclimport.vo.JclImportHistoryDetailVO; import com.engine.organization.entity.job.po.JobPO; +import com.engine.organization.entity.scheme.po.GradePO; +import com.engine.organization.entity.scheme.po.LevelPO; +import com.engine.organization.entity.scheme.po.SchemePO; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; import com.engine.organization.enums.OrgImportEnum; @@ -32,6 +35,9 @@ import com.engine.organization.mapper.hrmresource.SystemDataMapper; import com.engine.organization.mapper.jclimport.JclImportHistoryDetailMapper; import com.engine.organization.mapper.jclimport.JclImportHistoryMapper; import com.engine.organization.mapper.job.JobMapper; +import com.engine.organization.mapper.scheme.GradeMapper; +import com.engine.organization.mapper.scheme.LevelMapper; +import com.engine.organization.mapper.scheme.SchemeMapper; import com.engine.organization.service.ImportCommonService; import com.engine.organization.thread.*; import com.engine.organization.util.HasRightUtil; @@ -81,7 +87,20 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ private static final String HRM_DEPARTMENT = "hrmdepartment"; private static final String HRM_RESOURCE = "hrmresource"; + static Map importFieldsMap; + static { + importFieldsMap = new HashMap<>(); + importFieldsMap.put("方案编号", ExtendInfoPO.builder().tableName("jcl_org_scheme").fieldName("scheme_no").fieldNameDesc("方案编号").isrequired(1).controlType(1).browserType("1").customValue("[\"input\",\"text\",\"100\"]").build()); + importFieldsMap.put("方案名称", ExtendInfoPO.builder().tableName("jcl_org_scheme").fieldName("scheme_name").fieldNameDesc("方案名称").isrequired(1).controlType(1).browserType("1").customValue("[\"input\",\"text\",\"100\"]").build()); + importFieldsMap.put("职级编号", ExtendInfoPO.builder().tableName("jcl_org_grade").fieldName("grade_no").fieldNameDesc("职级编号").isrequired(1).controlType(1).browserType("1").customValue("[\"input\",\"text\",\"100\"]").build()); + importFieldsMap.put("职级名称", ExtendInfoPO.builder().tableName("jcl_org_grade").fieldName("grade_name").fieldNameDesc("职级名称").isrequired(1).controlType(1).browserType("1").customValue("[\"input\",\"text\",\"100\"]").build()); + importFieldsMap.put("职等编号", ExtendInfoPO.builder().tableName("jcl_org_level").fieldName("level_no").fieldNameDesc("职等编号").isrequired(1).controlType(1).browserType("1").customValue("[\"input\",\"text\",\"100\"]").build()); + importFieldsMap.put("职等名称", ExtendInfoPO.builder().tableName("jcl_org_level").fieldName("level_name").fieldNameDesc("职等名称").isrequired(1).controlType(1).browserType("1").customValue("[\"input\",\"text\",\"100\"]").build()); + importFieldsMap.put("方案说明", ExtendInfoPO.builder().tableName("jcl_org_scheme").fieldName("scheme_description").fieldNameDesc("方案说明").isrequired(0).controlType(1).browserType("1").customValue("[\"input\",\"text\",\"100\"]").build()); + importFieldsMap.put("职等说明", ExtendInfoPO.builder().tableName("jcl_org_level").fieldName("level_description").fieldNameDesc("职等说明").isrequired(0).controlType(1).browserType("1").customValue("[\"input\",\"text\",\"100\"]").build()); + importFieldsMap.put("职级说明", ExtendInfoPO.builder().tableName("jcl_org_grade").fieldName("grade_description").fieldNameDesc("职级说明").isrequired(0).controlType(1).browserType("1").customValue("[\"input\",\"text\",\"100\"]").build()); + } private ExtendInfoMapper getExtendInfoMapper() { return MapperProxyFactory.getProxy(ExtendInfoMapper.class); } @@ -126,6 +145,10 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ excludeFields.add("job_grade"); excludeFields.add("job_level"); break; + case "joblevel": + extendType = "0"; + tableName = "JCL_ORG_SCHEME"; + break; default: errorMsg = "未找到对应的导入类型,请确认"; break; @@ -138,14 +161,33 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ return returnMaps; } - List infoPOList = getExtendInfoMapper().listFields(extendType, "", tableName, ExtendInfoOperateType.LIST.getValue(), "1"); - List filterList = infoPOList.stream().filter(item -> !excludeFields.contains(item.getFieldName()) && 6 != item.getControlType()).collect(Collectors.toList()); - List fieldDatas = filterList.stream().map(item -> FieldTransferParam.builder().id(item.getId().toString()).name(item.getFieldNameDesc()).build()).collect(Collectors.toList()); - //fieldDatas.addAll(0, includeFields); - List selectedKeys = filterList.stream().filter(item -> (0 == item.getIsSystemDefault()) && 1 == item.getIsrequired()).map(item -> item.getId().toString()).collect(Collectors.toList()); - //selectedKeys.addAll(0, selectedList); - returnMaps.put("data", fieldDatas); - returnMaps.put("selectedKeys", selectedKeys); + if("joblevel".equals(importType)){ + List fieldDatas = new ArrayList<>(); + fieldDatas.add(FieldTransferParam.builder().id("1").name("方案编号").build()); + fieldDatas.add(FieldTransferParam.builder().id("2").name("方案名称").build()); + fieldDatas.add(FieldTransferParam.builder().id("3").name("职级编号").build()); + fieldDatas.add(FieldTransferParam.builder().id("4").name("职级名称").build()); + fieldDatas.add(FieldTransferParam.builder().id("5").name("职等编号").build()); + fieldDatas.add(FieldTransferParam.builder().id("6").name("职等名称").build()); + fieldDatas.add(FieldTransferParam.builder().id("7").name("方案说明").build()); + fieldDatas.add(FieldTransferParam.builder().id("8").name("职级说明").build()); + fieldDatas.add(FieldTransferParam.builder().id("9").name("职等说明").build()); + List selectedKeys = new ArrayList<>(); + for(int i=0;i infoPOList = getExtendInfoMapper().listFields(extendType, "", tableName, ExtendInfoOperateType.LIST.getValue(), "1"); + List filterList = infoPOList.stream().filter(item -> !excludeFields.contains(item.getFieldName()) && 6 != item.getControlType()).collect(Collectors.toList()); + + List fieldDatas = filterList.stream().map(item -> FieldTransferParam.builder().id(item.getId().toString()).name(item.getFieldNameDesc()).build()).collect(Collectors.toList()); + List selectedKeys = filterList.stream().filter(item -> (0 == item.getIsSystemDefault()) && 1 == item.getIsrequired()).map(item -> item.getId().toString()).collect(Collectors.toList()); + returnMaps.put("data", fieldDatas); + returnMaps.put("selectedKeys", selectedKeys); + } return returnMaps; } @@ -169,6 +211,9 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ case "resource": returnMap.put("condition", getResourceImportForm(templatePath)); break; + case "joblevel": + returnMap.put("condition", getJobTitleImportForm(templatePath)); + break; default: returnMap.put("status", "-1"); returnMap.put("message", "请选择合适的导入类型"); @@ -227,6 +272,9 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ returnMap.put("pId", hrmResourceImport(operateType, excelFile,keyField)); break; + case "joblevel": + returnMap.put("pId", jobLevelImport(operateType, excelFile)); + break; default: break; } @@ -1445,6 +1493,210 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ return importHistoryId; } + /** + * 方案职等职级导入 + */ + private Long jobLevelImport(String operateType, String excelFile){ + + Long importHistoryId = saveImportLog("joblevel", 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(); + OrganizationAssert.isTrue(lastRow > 0, "导入数据为空"); + short lastCellNum = sheetAt.getRow(0).getLastCellNum(); + List extendInfoPOS = new ArrayList<>(); + + // 遍历每一行数据 + nextRow: + for (int i = 0; i <= lastRow; i++) { + historyDetailPO = new JclImportHistoryDetailPO(); + historyDetailPO.setPid(importHistoryId); + XSSFRow row = sheetAt.getRow(i); + // 组装待处理数据 + Map map = new HashMap<>(); + SchemePO schemePO = new SchemePO(); + SchemePO schemeNew = null; + GradePO gradePO = new GradePO(); + GradePO gradeNew = null; + LevelPO levelPO = new LevelPO(); + LevelPO levelNew = null; + + historyDetailPO.setRowNums(String.valueOf(i + 1)); + for (int cellIndex = 0; cellIndex < lastCellNum; cellIndex++) { + XSSFCell cell = row.getCell((short) cellIndex); + String cellValue = getCellValue(cell).trim(); + if (i == 0) { + // 首行 初始化字段信息 + ExtendInfoPO extendInfoPO = importFieldsMap.get(cellValue); + extendInfoPOS.add(extendInfoPO); + }else{ + ExtendInfoPO infoPO = extendInfoPOS.get(cellIndex); + // 数据校验 + if (infoPO.getIsrequired() == 1 && StringUtils.isBlank(cellValue)) { + 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)) && !"ec_company".equals(infoPO.getFieldName()) && !"ec_department".equals(infoPO.getFieldName())) { + historyDetailPO.setOperateDetail(infoPO.getFieldNameDesc() + "数据转换失败,未找到对应数据"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + map.put(infoPO.getFieldName(), reallyValue); + // 方案 + if("scheme_no".equals(infoPO.getFieldName())){ + List schemePOS = MapperProxyFactory.getProxy(SchemeMapper.class).listByNo(Util.null2String(reallyValue)); + if(schemePOS.size()>0){ + historyDetailPO.setOperateDetail("方案编号"+reallyValue+"与原有编号重复"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + } + + // 职等 +// if ("level_no".equals(infoPO.getFieldName())){ +// List levelPOS = MapperProxyFactory.getProxy(LevelMapper.class).listByNo(Util.null2String(reallyValue)); +// if(levelPOS.size()>0){ +// historyDetailPO.setOperateDetail("职等编号"+reallyValue+"与原有编号重复"); +// historyDetailPO.setStatus("0"); +// saveImportDetailLog(historyDetailPO); +// continue nextRow; +// } +// } + + // 职级 +// if("grade_no".equals(infoPO.getFieldName())){ +// List gradePOS = MapperProxyFactory.getProxy(GradeMapper.class).listByNo(Util.null2String(reallyValue)); +// if(gradePOS.size()>0){ +// historyDetailPO.setOperateDetail("职级编号"+reallyValue+"与原有编号重复"); +// historyDetailPO.setStatus("0"); +// saveImportDetailLog(historyDetailPO); +// continue nextRow; +// } +// } + } + } + // 校验、数据交互 + if (i == 0){ + continue; + } + String schemeNo = (String) map.get("scheme_no"); + //Long schemeId = MapperProxyFactory.getProxy(SchemeMapper.class) + if("add".equals(operateType)){ + + map.put("creator", user.getUID()); + map.put("delete_type", 0); + Date currDate = new Date(); + map.put("create_time", currDate); + map.put("update_time", currDate); + // 禁用表示为空,默认启用 + map.put("forbidden_tag", 0); + map.put("is_used", 1); +// param = JSONObject.toJavaObject((JSON) JSONObject.toJSON(map), StaffSearchParam.class); + + } + schemePO.setSchemeNo((String)map.get("scheme_no")); + schemePO.setSchemeName((String)map.get("scheme_name")); + schemePO.setSchemeDescription((String)map.get("scheme_description")); + schemePO.setForbiddenTag((int)map.get("forbidden_tag")); + schemePO.setIsUsed(1); + schemePO.setCreator((long) user.getUID()); + schemePO.setDeleteType((int)map.get("delete_type")); + schemePO.setCreateTime((Date) map.get("create_time")); + schemePO.setUpdateTime((Date) map.get("update_time")); + + schemeNew = MapperProxyFactory.getProxy(SchemeMapper.class).getSchemeByNo(schemePO.getSchemeNo()); + if (schemeNew==null){ + MapperProxyFactory.getProxy(SchemeMapper.class).insertIgnoreNull(schemePO); + }else{ + historyDetailPO.setOperateDetail("方案编号"+schemePO.getSchemeNo()+"与原有编号重复"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + } + + // 新增完成后,再次插入 + schemeNew = MapperProxyFactory.getProxy(SchemeMapper.class).getSchemeByNo(schemePO.getSchemeNo()); + levelPO.setLevelNo((String) map.get("level_no")); + levelPO.setLevelName((String) map.get("level_name")); + levelPO.setDescription((String) map.get("level_description")); + //关联方案id + levelPO.setSchemeId(schemeNew.getId()); + levelPO.setForbiddenTag((int) map.get("forbidden_tag")); + levelPO.setIsUsed(1); + levelPO.setCreator((long) user.getUID()); + levelPO.setDeleteType((int)map.get("delete_type")); + levelPO.setCreateTime((Date) map.get("create_time")); + levelPO.setUpdateTime((Date) map.get("update_time")); + + levelNew = MapperProxyFactory.getProxy(LevelMapper.class).getLevelByNoAndSid(levelPO.getLevelNo(),schemeNew.getId()); + if(levelNew==null){ + MapperProxyFactory.getProxy(LevelMapper.class).insertIgnoreNull(levelPO); + } + + levelNew = MapperProxyFactory.getProxy(LevelMapper.class).getLevelByNoAndSid(levelPO.getLevelNo(),schemeNew.getId()); + gradePO.setGradeNo((String) map.get("grade_no")); + gradePO.setGradeName((String) map.get("grade_name")); + gradePO.setDescription((String) map.get("grade_description")); + // 关联方案id + gradePO.setSchemeId(schemeNew.getId()); + // 关联职等id + gradePO.setLevelId(String.valueOf(levelNew.getId())); + gradePO.setGradeNo((String) map.get("grade_no")); + gradePO.setForbiddenTag((int) map.get("forbidden_tag")); + gradePO.setIsUsed(1); + gradePO.setCreator((long) user.getUID()); + gradePO.setDeleteType((int)map.get("delete_type")); + gradePO.setCreateTime((Date) map.get("create_time")); + gradePO.setUpdateTime((Date) map.get("update_time")); + + + gradeNew = MapperProxyFactory.getProxy(GradeMapper.class).getGradeByNoAndSid(gradePO.getGradeNo(),gradePO.getSchemeId()); + if (gradeNew != null) { + //职级已存在,重新拼接level_id + gradePO.setLevelId(gradeNew.getLevelId()+","+levelNew.getId()); + + gradePO.setId(gradeNew.getId()); + gradePO.setCreateTime(null); + gradePO.setUpdateTime(new Date()); + MapperProxyFactory.getProxy(GradeMapper.class).updateGrade(gradePO); + }else{ + MapperProxyFactory.getProxy(GradeMapper.class).insertIgnoreNull(gradePO); + } + + + + historyDetailPO.setOperateDetail("添加成功"); + historyDetailPO.setStatus("1"); + saveImportDetailLog(historyDetailPO); + + + } + return importHistoryId; + } /** * 读取表格文本内容