|
|
|
@ -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<String, ExtendInfoPO> 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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if("joblevel".equals(importType)){
|
|
|
|
|
List<FieldTransferParam> 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<String> selectedKeys = new ArrayList<>();
|
|
|
|
|
for(int i=0;i<fieldDatas.size();i++){
|
|
|
|
|
selectedKeys.add(fieldDatas.get(i).getId());
|
|
|
|
|
}
|
|
|
|
|
returnMaps.put("data", fieldDatas);
|
|
|
|
|
returnMaps.put("selectedKeys", selectedKeys);
|
|
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
List<ExtendInfoPO> infoPOList = getExtendInfoMapper().listFields(extendType, "", tableName, ExtendInfoOperateType.LIST.getValue(), "1");
|
|
|
|
|
List<ExtendInfoPO> filterList = infoPOList.stream().filter(item -> !excludeFields.contains(item.getFieldName()) && 6 != item.getControlType()).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
List<FieldTransferParam> fieldDatas = filterList.stream().map(item -> FieldTransferParam.builder().id(item.getId().toString()).name(item.getFieldNameDesc()).build()).collect(Collectors.toList());
|
|
|
|
|
//fieldDatas.addAll(0, includeFields);
|
|
|
|
|
List<String> 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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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<ExtendInfoPO> extendInfoPOS = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
// 遍历每一行数据
|
|
|
|
|
nextRow:
|
|
|
|
|
for (int i = 0; i <= lastRow; i++) {
|
|
|
|
|
historyDetailPO = new JclImportHistoryDetailPO();
|
|
|
|
|
historyDetailPO.setPid(importHistoryId);
|
|
|
|
|
XSSFRow row = sheetAt.getRow(i);
|
|
|
|
|
// 组装待处理数据
|
|
|
|
|
Map<String, Object> 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<SchemePO> 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<LevelPO> 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<GradePO> 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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 读取表格文本内容
|
|
|
|
|