!169 部门导入

Merge pull request !169 from dxfeng/feature/dxf
pull/170/MERGE
dxfeng 3 years ago committed by Gitee
commit a36ffd95cd
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F

@ -37,7 +37,7 @@ public interface ExtendInfoMapper {
int updateExtendGroupId(@Param("groupId") Long groupId, @Param("ids") Collection<Long> ids); int updateExtendGroupId(@Param("groupId") Long groupId, @Param("ids") Collection<Long> ids);
ExtendInfoPO getInfoByGroupAndLabelName(@Param("extendType") Long extendType, @Param("labelName") String labelName); ExtendInfoPO getInfoByExtendAndLabelName(@Param("extendType") Long extendType, @Param("labelName") String labelName);
} }

@ -284,7 +284,7 @@
#{id} #{id}
</foreach> </foreach>
</select> </select>
<select id="getInfoByGroupAndLabelName" resultMap="BaseResultMap"> <select id="getInfoByExtendAndLabelName" resultMap="BaseResultMap">
select select
<include refid="baseColumns"/> <include refid="baseColumns"/>
from jcl_field_extendinfo t from jcl_field_extendinfo t

@ -1,6 +1,7 @@
package com.engine.organization.mapper.jclimport; package com.engine.organization.mapper.jclimport;
import com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO; import com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO;
import org.apache.ibatis.annotations.Param;
/** /**
* @author:dxfeng * @author:dxfeng
@ -10,4 +11,6 @@ import com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO;
public interface JclImportHistoryDetailMapper { public interface JclImportHistoryDetailMapper {
void insertHistoryDetail(JclImportHistoryDetailPO historyDetailPO); void insertHistoryDetail(JclImportHistoryDetailPO historyDetailPO);
int countRows(@Param("status") String status, @Param("pId") String pId);
} }

@ -21,7 +21,8 @@
, t.operate_detail , t.operate_detail
, t.related_name , t.related_name
</sql> </sql>
<insert id="insertHistoryDetail" parameterType="com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO" keyProperty="id" <insert id="insertHistoryDetail"
parameterType="com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO" keyProperty="id"
keyColumn="id" useGeneratedKeys="true"> keyColumn="id" useGeneratedKeys="true">
INSERT INTO jcl_import_history_detail INSERT INTO jcl_import_history_detail
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
@ -59,4 +60,10 @@
</if> </if>
</trim> </trim>
</insert> </insert>
<select id="countRows" resultType="java.lang.Integer">
select count(1)
from jcl_import_history_detail
where status = #{status}
and pid = #{pId}
</select>
</mapper> </mapper>

@ -55,6 +55,12 @@ public interface ImportCommonService {
*/ */
Map<String, Object> saveImport(Map<String, Object> params); Map<String, Object> saveImport(Map<String, Object> params);
Map<String, Object> getImportProcessLog(Map<String, Object> params); /**
*
*
* @param params
* @return
*/
Map<String, Object> getImportResult(Map<String, Object> params);
} }

@ -86,7 +86,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
private static final Long GROUP_ID = 2L; private static final Long GROUP_ID = 2L;
private DepartmentMapper getDepartmentMapper() { private static DepartmentMapper getDepartmentMapper() {
return MapperProxyFactory.getProxy(DepartmentMapper.class); return MapperProxyFactory.getProxy(DepartmentMapper.class);
} }
@ -594,7 +594,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
* *
* @return * @return
*/ */
private String repeatDetermine(String deptNo) { public static String repeatDetermine(String deptNo) {
CodeRulePO codeRuleByType = MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleByType(RuleCodeType.DEPARTMENT.getValue()); CodeRulePO codeRuleByType = MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleByType(RuleCodeType.DEPARTMENT.getValue());
if (StringUtils.isNotBlank(deptNo)) { if (StringUtils.isNotBlank(deptNo)) {
deptNo = CodeRuleUtil.generateCode(RuleCodeType.DEPARTMENT, deptNo); deptNo = CodeRuleUtil.generateCode(RuleCodeType.DEPARTMENT, deptNo);
@ -613,7 +613,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
* *
* @return * @return
*/ */
private String autoCreateCompanyNo() { private static String autoCreateCompanyNo() {
String generateCode = CodeRuleUtil.generateCode(RuleCodeType.DEPARTMENT, ""); String generateCode = CodeRuleUtil.generateCode(RuleCodeType.DEPARTMENT, "");
List<DepartmentPO> list = getDepartmentMapper().listByNo(Util.null2String(generateCode)); List<DepartmentPO> list = getDepartmentMapper().listByNo(Util.null2String(generateCode));
if (CollectionUtils.isNotEmpty(list)) { if (CollectionUtils.isNotEmpty(list)) {

@ -162,6 +162,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ
break; break;
case "department": case "department":
extendType = "2"; extendType = "2";
exculdeFields.add("parent_dept");
tableName = "JCL_ORG_DEPT"; tableName = "JCL_ORG_DEPT";
break; break;
case "jobtitle": case "jobtitle":
@ -238,6 +239,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ
returnMap.put("pId", companyImport(operateType, excelFile, 1L)); returnMap.put("pId", companyImport(operateType, excelFile, 1L));
break; break;
case "department": case "department":
returnMap.put("pId", departmentImport(operateType, excelFile, 2L));
break; break;
case "jobtitle": case "jobtitle":
break; break;
@ -255,17 +257,20 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ
} }
@Override @Override
public Map<String, Object> getImportProcessLog(Map<String, Object> params) { public Map<String, Object> getImportResult(Map<String, Object> params) {
String pId = (String) params.get("pId"); String pId = (String) params.get("pId");
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
// 刷新引用状态 // 刷新引用状态
OrganizationWeaTable<JclImportHistoryDetailVO> table = new OrganizationWeaTable<>(user, JclImportHistoryDetailVO.class); OrganizationWeaTable<JclImportHistoryDetailVO> table = new OrganizationWeaTable<>(user, JclImportHistoryDetailVO.class);
String sqlWhere = " where pId = '" + pId + "'"; String sqlWhere = " where status = '0' and pId = '" + pId + "'";
table.setSqlwhere(sqlWhere); table.setSqlwhere(sqlWhere);
WeaResultMsg result = new WeaResultMsg(false); WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult()); result.putAll(table.makeDataResult());
result.success(); result.success();
resultMap.putAll(result.getResultMap()); 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; return resultMap;
} }
@ -498,13 +503,12 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ
String cellValue = getCellValue(cell).trim(); String cellValue = getCellValue(cell).trim();
if (i == 0) { if (i == 0) {
// 首行 初始化字段信息 // 首行 初始化字段信息
ExtendInfoPO extendInfoPO = getExtendInfoMapper().getInfoByGroupAndLabelName(extendType, cellValue); ExtendInfoPO extendInfoPO = getExtendInfoMapper().getInfoByExtendAndLabelName(extendType, cellValue);
extendInfoPOS.add(extendInfoPO); extendInfoPOS.add(extendInfoPO);
} else { } else {
ExtendInfoPO infoPO = extendInfoPOS.get(cellIndex); ExtendInfoPO infoPO = extendInfoPOS.get(cellIndex);
// 数据校验 // 数据校验
if (infoPO.getIsrequired() == 1 && StringUtils.isBlank(cellValue)) { if (infoPO.getIsrequired() == 1 && StringUtils.isBlank(cellValue)) {
// TODO 记录日志
historyDetailPO.setOperateDetail(infoPO.getFieldNameDesc() + "为必填项"); historyDetailPO.setOperateDetail(infoPO.getFieldNameDesc() + "为必填项");
historyDetailPO.setStatus("0"); historyDetailPO.setStatus("0");
saveImportDetailLog(historyDetailPO); saveImportDetailLog(historyDetailPO);
@ -521,7 +525,6 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ
continue nextRow; continue nextRow;
} }
if (StringUtils.isNotBlank(cellValue) && StringUtils.isBlank(Util.null2String(reallyValue))) { if (StringUtils.isNotBlank(cellValue) && StringUtils.isBlank(Util.null2String(reallyValue))) {
// TODO 记录日志
historyDetailPO.setOperateDetail(infoPO.getFieldNameDesc() + "数据转换失败,未找到对应数据"); historyDetailPO.setOperateDetail(infoPO.getFieldNameDesc() + "数据转换失败,未找到对应数据");
historyDetailPO.setStatus("0"); historyDetailPO.setStatus("0");
saveImportDetailLog(historyDetailPO); saveImportDetailLog(historyDetailPO);
@ -533,7 +536,6 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ
String[] split = cellValue.split(">"); String[] split = cellValue.split(">");
if (split.length > 1) { if (split.length > 1) {
if (split.length > 8) { if (split.length > 8) {
// TODO 记录日志
historyDetailPO.setOperateDetail("分部层级不能大于10"); historyDetailPO.setOperateDetail("分部层级不能大于10");
historyDetailPO.setStatus("0"); historyDetailPO.setStatus("0");
saveImportDetailLog(historyDetailPO); saveImportDetailLog(historyDetailPO);
@ -542,7 +544,6 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ
for (int index = split.length - 2; index >= 0; index--) { for (int index = split.length - 2; index >= 0; index--) {
parentCompanyId = MapperProxyFactory.getProxy(CompMapper.class).getIdByNameAndPid(split[index], parentCompanyId == null ? 0 : parentCompanyId); parentCompanyId = MapperProxyFactory.getProxy(CompMapper.class).getIdByNameAndPid(split[index], parentCompanyId == null ? 0 : parentCompanyId);
if (null == parentCompanyId) { if (null == parentCompanyId) {
// TODO 记录日志
historyDetailPO.setOperateDetail(split[index] + "分部未找到对应数据"); historyDetailPO.setOperateDetail(split[index] + "分部未找到对应数据");
historyDetailPO.setStatus("0"); historyDetailPO.setStatus("0");
saveImportDetailLog(historyDetailPO); saveImportDetailLog(historyDetailPO);
@ -583,7 +584,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ
// 查询对应ID // 查询对应ID
if (StringUtils.isNotBlank(compNo)) { if (StringUtils.isNotBlank(compNo)) {
if (companyId == null) { if (companyId == null) {
historyDetailPO.setOperateDetail(companyName + "未找到对应数据"); historyDetailPO.setOperateDetail("未找到对应数据");
historyDetailPO.setStatus("0"); historyDetailPO.setStatus("0");
saveImportDetailLog(historyDetailPO); saveImportDetailLog(historyDetailPO);
} }
@ -608,6 +609,194 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ
return importHistoryId; 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<ExtendInfoPO> 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<String, Object> 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;
}
/** /**
* *
* *

@ -87,13 +87,13 @@ public class ImportCommonController {
@GET @GET
@Path("/getImportProcessLog") @Path("/getImportResult")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public ReturnResult getImportProcessLog(@Context HttpServletRequest request, @Context HttpServletResponse response) { public ReturnResult getImportResult(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try { try {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
Map<String, Object> map = ParamUtil.request2Map(request); Map<String, Object> map = ParamUtil.request2Map(request);
return ReturnResult.successed(getImportCommonWrapper(user).getImportProcessLog(map)); return ReturnResult.successed(getImportCommonWrapper(user).getImportResult(map));
} catch (Exception e) { } catch (Exception e) {
return ReturnResult.exceptionHandle(e); return ReturnResult.exceptionHandle(e);
} }

@ -61,7 +61,7 @@ public class ImportCommonWrapper extends Service {
* @param params * @param params
* @return * @return
*/ */
public Map<String, Object> getImportProcessLog(Map<String, Object> params) { public Map<String, Object> getImportResult(Map<String, Object> params) {
return getImportCommonService(user).getImportProcessLog(params); return getImportCommonService(user).getImportResult(params);
} }
} }

Loading…
Cancel
Save