分部更新EC

pull/159/MERGE^2
dxfeng 3 years ago committed by Chengliang
parent 92b2f54ddd
commit 1db3f999f9

@ -39,6 +39,8 @@ public class DepartmentPO {
private Integer forbiddenTag; private Integer forbiddenTag;
private String uuid;
private Long creator; private Long creator;
private int deleteType; private int deleteType;

@ -16,6 +16,8 @@
<result column="delete_type" property="deleteType"/> <result column="delete_type" property="deleteType"/>
<result column="create_time" property="createTime"/> <result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/> <result column="update_time" property="updateTime"/>
<result column="uuid" property="uuid"/>
</resultMap> </resultMap>
<!-- 表字段 --> <!-- 表字段 -->
@ -32,7 +34,8 @@
t.dept_principal, t.dept_principal,
t.show_order, t.show_order,
t.description, t.description,
t.forbidden_tag t.forbidden_tag,
t.uuid
</sql> </sql>
<select id="getDeptListByCompId" resultType="com.engine.organization.entity.department.po.DepartmentPO"> <select id="getDeptListByCompId" resultType="com.engine.organization.entity.department.po.DepartmentPO">

@ -31,8 +31,9 @@ public interface SystemDataMapper {
String getScHrmResourceNameById(@Param("managerId") String managerId); String getScHrmResourceNameById(@Param("managerId") String managerId);
JSONObject getHrmSubCompanyByID(@Param("id") String id); JSONObject getHrmObjectByID(@Param("tableName") String tableName, @Param("id") String id);
JSONObject getHrmObjectByUUID(@Param("tableName") String tableName, @Param("uuid") String uuid);
JSONObject getHrmSubCompanyByUUID(@Param("uuid") String uuid);
} }

@ -48,14 +48,15 @@
from hrmresource from hrmresource
where id = #{managerId} where id = #{managerId}
</select> </select>
<select id="getHrmSubCompanyByID" resultType="com.alibaba.fastjson.JSONObject"> <select id="getHrmObjectByID" resultType="com.alibaba.fastjson.JSONObject">
select * select *
from hrmsubcompany from ${tableName}
where id = #{id} where id = #{id}
</select> </select>
<select id="getHrmSubCompanyByUUID" resultType="com.alibaba.fastjson.JSONObject"> <select id="getHrmObjectByUUID" resultType="com.alibaba.fastjson.JSONObject">
select * select *
from hrmsubcompany from ${tableName}
where uuid = #{uuid} where uuid = #{uuid}
</select> </select>
</mapper> </mapper>

@ -149,7 +149,7 @@ public class CompServiceImpl extends Service implements CompService {
params.put("show_order", maxShowOrder + 1); params.put("show_order", maxShowOrder + 1);
} }
Long id = getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_COMP, params, "", null); Long id = getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_COMP, params, "", null);
params.put("companyId", id); params.put("id", id);
new Thread(new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.ADD, params)).start(); new Thread(new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.ADD, params)).start();
return id; return id;
} }

@ -24,6 +24,8 @@ import com.engine.organization.entity.job.po.JobPO;
import com.engine.organization.entity.job.vo.SingleJobTreeVO; import com.engine.organization.entity.job.vo.SingleJobTreeVO;
import com.engine.organization.entity.searchtree.SearchTree; import com.engine.organization.entity.searchtree.SearchTree;
import com.engine.organization.entity.searchtree.SearchTreeParams; import com.engine.organization.entity.searchtree.SearchTreeParams;
import com.engine.organization.enums.LogModuleNameEnum;
import com.engine.organization.enums.OperateTypeEnum;
import com.engine.organization.mapper.codesetting.CodeRuleMapper; import com.engine.organization.mapper.codesetting.CodeRuleMapper;
import com.engine.organization.mapper.comp.CompMapper; import com.engine.organization.mapper.comp.CompMapper;
import com.engine.organization.mapper.department.DepartmentMapper; import com.engine.organization.mapper.department.DepartmentMapper;
@ -31,6 +33,7 @@ import com.engine.organization.mapper.extend.ExtendTitleMapper;
import com.engine.organization.mapper.job.JobMapper; import com.engine.organization.mapper.job.JobMapper;
import com.engine.organization.service.DepartmentService; import com.engine.organization.service.DepartmentService;
import com.engine.organization.service.ExtService; import com.engine.organization.service.ExtService;
import com.engine.organization.thread.OrganizationRunable;
import com.engine.organization.util.*; import com.engine.organization.util.*;
import com.engine.organization.util.coderule.CodeRuleUtil; import com.engine.organization.util.coderule.CodeRuleUtil;
import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.db.MapperProxyFactory;
@ -192,18 +195,24 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
// 判断是否开启自动编号 // 判断是否开启自动编号
deptNo = repeatDetermine(deptNo); deptNo = repeatDetermine(deptNo);
params.put("dept_no", deptNo); params.put("dept_no", deptNo);
if (StringUtils.isBlank((String) params.get("show_order"))) { if (StringUtils.isBlank(Util.null2String(params.get("show_order")))) {
int maxShowOrder = getDepartmentMapper().getMaxShowOrder(); int maxShowOrder = getDepartmentMapper().getMaxShowOrder();
params.put("show_order", maxShowOrder + 1); params.put("show_order", maxShowOrder + 1);
} }
Long departmentId = getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPT, params, "", null);
return getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPT, params, "", null); params.put("id", departmentId);
new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.ADD, params)).start();
return departmentId;
} }
@Override @Override
public int updateForbiddenTagById(DeptSearchParam params) { public int updateForbiddenTagById(DeptSearchParam params) {
HasRightUtil.hasRight(user, RIGHT_NAME, false); HasRightUtil.hasRight(user, RIGHT_NAME, false);
DepartmentPO departmentPO = DepartmentPO.builder().id(params.getId()).forbiddenTag(params.getForbiddenTag() ? 0 : 1).build(); DepartmentPO departmentPO = DepartmentPO.builder().id(params.getId()).forbiddenTag(params.getForbiddenTag() ? 0 : 1).build();
Map<String, Object> map = new HashMap<>();
map.put("id", departmentPO.getId());
map.put("forbiddenTag", departmentPO.getForbiddenTag());
new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map)).start();
return getDepartmentMapper().updateForbiddenTagById(departmentPO); return getDepartmentMapper().updateForbiddenTagById(departmentPO);
} }
@ -224,6 +233,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
} }
// 更新主表数据 // 更新主表数据
getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPT, params, "", searchParam.getId()); getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPT, params, "", searchParam.getId());
new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.UPDATE, params)).start();
// 更新主表拓展表 // 更新主表拓展表
getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPTEXT, params, groupId, searchParam.getId()); getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPTEXT, params, groupId, searchParam.getId());
//更新明细表 //更新明细表
@ -236,6 +246,9 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
public int deleteByIds(Collection<Long> ids) { public int deleteByIds(Collection<Long> ids) {
HasRightUtil.hasRight(user, RIGHT_NAME, false); HasRightUtil.hasRight(user, RIGHT_NAME, false);
OrganizationAssert.notEmpty(ids, "请选择要删除的数据"); OrganizationAssert.notEmpty(ids, "请选择要删除的数据");
Map<String, Object> map = new HashMap<>();
map.put("id", StringUtils.join(ids, ","));
new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map)).start();
return getDepartmentMapper().deleteByIds(ids); return getDepartmentMapper().deleteByIds(ids);
} }
@ -392,6 +405,9 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
// 显示顺序字段 // 显示顺序字段
deptById.setShowOrder(maxShowOrder + i + 1); deptById.setShowOrder(maxShowOrder + i + 1);
insertCount += getDepartmentMapper().insertIgnoreNull(deptById); insertCount += getDepartmentMapper().insertIgnoreNull(deptById);
// 更新EC表部门
updateEcDepartment(deptById);
// TODO 新增岗位信息
if ("1".equals(copyParam.getCopyJob())) { if ("1".equals(copyParam.getCopyJob())) {
List<JobPO> jobPOS = MapperProxyFactory.getProxy(JobMapper.class).listJobsByDepartmentId(idList.get(i)); List<JobPO> jobPOS = MapperProxyFactory.getProxy(JobMapper.class).listJobsByDepartmentId(idList.get(i));
Integer maxJobOrder = MapperProxyFactory.getProxy(JobMapper.class).getMaxShowOrder(); Integer maxJobOrder = MapperProxyFactory.getProxy(JobMapper.class).getMaxShowOrder();
@ -441,6 +457,10 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
// 禁用 // 禁用
mergeDepartment.setForbiddenTag(1); mergeDepartment.setForbiddenTag(1);
updateCount += getDepartmentMapper().updateBaseDept(mergeDepartment); updateCount += getDepartmentMapper().updateBaseDept(mergeDepartment);
// 更新EC表部门
updateEcDepartment(mergeDepartment);
// 封存EC表部门
cancelEcDepartment(mergeDepartment.getId());
// 合并后部门及子部门禁用 // 合并后部门及子部门禁用
List<DepartmentPO> deptList = getDepartmentMapper().getDeptListByPId(mergeParam.getId()); List<DepartmentPO> deptList = getDepartmentMapper().getDeptListByPId(mergeParam.getId());
forbiddenChildTag(parentComp, deptList); forbiddenChildTag(parentComp, deptList);
@ -486,9 +506,13 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
Long department = moveParam.getDepartment(); Long department = moveParam.getDepartment();
OrganizationAssert.notNull(department, "请选择要转移到的部门"); OrganizationAssert.notNull(department, "请选择要转移到的部门");
deptById.setParentDept(department); deptById.setParentDept(department);
deptById.setParentComp(null); DepartmentPO parentDepartment = getDepartmentMapper().getDeptById(department);
deptById.setParentComp(parentDepartment.getParentComp());
} }
return getDepartmentMapper().updateBaseDept(deptById); int updateBaseDept = getDepartmentMapper().updateBaseDept(deptById);
// 更新EC部门
updateEcDepartment(deptById);
return updateBaseDept;
} }
/** /**
@ -503,6 +527,10 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
departmentPO.setParentComp(parentComp); departmentPO.setParentComp(parentComp);
departmentPO.setForbiddenTag(1); departmentPO.setForbiddenTag(1);
getDepartmentMapper().updateBaseDept(departmentPO); getDepartmentMapper().updateBaseDept(departmentPO);
// 更新EC表部门
updateEcDepartment(departmentPO);
// 封存EC表部门
cancelEcDepartment(departmentPO.getId());
List<DepartmentPO> childList = getDepartmentMapper().getDeptListByPId(departmentPO.getId()); List<DepartmentPO> childList = getDepartmentMapper().getDeptListByPId(departmentPO.getId());
forbiddenChildTag(parentComp, childList); forbiddenChildTag(parentComp, childList);
} }
@ -619,4 +647,33 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
} }
} }
/**
* EC
*
* @param departmentPO
*/
private void updateEcDepartment(DepartmentPO departmentPO) {
Map<String, Object> map = new HashMap<>();
map.put("dept_name_short", departmentPO.getDeptNameShort());
map.put("dept_name", departmentPO.getDeptName());
map.put("parent_comp", departmentPO.getParentComp());
map.put("parent_dept", departmentPO.getParentDept());
map.put("show_order", departmentPO.getShowOrder());
map.put("dept_no", departmentPO.getDeptNo());
map.put("dept_principal", departmentPO.getDeptPrincipal());
map.put("id", departmentPO.getId());
new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.UPDATE, map)).start();
}
/**
* EC
*
* @param id
*/
private void cancelEcDepartment(Long id) {
Map<String, Object> map = new HashMap<>();
map.put("id", id);
new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map)).start();
}
} }

@ -4,10 +4,12 @@ import com.alibaba.fastjson.JSONObject;
import com.engine.common.util.ServiceUtil; import com.engine.common.util.ServiceUtil;
import com.engine.hrm.service.impl.OrganizationServiceImpl; import com.engine.hrm.service.impl.OrganizationServiceImpl;
import com.engine.organization.entity.company.po.CompPO; import com.engine.organization.entity.company.po.CompPO;
import com.engine.organization.entity.department.po.DepartmentPO;
import com.engine.organization.entity.extend.param.ExtendInfoParams; import com.engine.organization.entity.extend.param.ExtendInfoParams;
import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.LogModuleNameEnum;
import com.engine.organization.enums.OperateTypeEnum; import com.engine.organization.enums.OperateTypeEnum;
import com.engine.organization.mapper.comp.CompMapper; import com.engine.organization.mapper.comp.CompMapper;
import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.mapper.extend.ExtMapper; import com.engine.organization.mapper.extend.ExtMapper;
import com.engine.organization.mapper.hrmresource.SystemDataMapper; import com.engine.organization.mapper.hrmresource.SystemDataMapper;
import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.db.MapperProxyFactory;
@ -31,6 +33,12 @@ public class OrganizationRunable implements Runnable {
private Map<String, Object> params; private Map<String, Object> params;
private User user; private User user;
private static final String HRM_COMPANY = "hrmsubcompany";
private static final String HRM_DEPARTMENT = "hrmdepartment";
private static final String JCL_COMPANY = "jcl_org_comp";
private static final String JCL_DEPARTMENT = "jcl_org_dept";
private SystemDataMapper getSystemDataMapper() { private SystemDataMapper getSystemDataMapper() {
return MapperProxyFactory.getProxy(SystemDataMapper.class); return MapperProxyFactory.getProxy(SystemDataMapper.class);
} }
@ -43,6 +51,10 @@ public class OrganizationRunable implements Runnable {
return MapperProxyFactory.getProxy(CompMapper.class); return MapperProxyFactory.getProxy(CompMapper.class);
} }
private DepartmentMapper getDepartmentMapper() {
return MapperProxyFactory.getProxy(DepartmentMapper.class);
}
public OrganizationRunable(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map<String, Object> params) { public OrganizationRunable(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map<String, Object> params) {
this.moduleName = moduleName; this.moduleName = moduleName;
@ -87,13 +99,19 @@ public class OrganizationRunable implements Runnable {
} }
} }
/**
* HrmDepartment
*/
private void refreshDepartment() { private void refreshDepartment() {
switch (operateType) { switch (operateType) {
case ADD: case ADD:
addDepartment();
break; break;
case UPDATE: case UPDATE:
updateDepartment();
break; break;
case DELETE: case CANCELED:
cancelDepartment();
break; break;
default: default:
break; break;
@ -113,12 +131,92 @@ public class OrganizationRunable implements Runnable {
} }
} }
/**
*
*/
private void addDepartment() {
Map<String, Object> map = new HashMap<>();
map.put("departmentmark", Util.null2String(params.get("dept_name_short")));
map.put("departmentname", Util.null2String(params.get("dept_name")));
// 上级分部通过UUID联查ec表ID
String parentCompany = Util.null2String(params.get("parent_comp"));
if (StringUtils.isNotBlank(parentCompany)) {
map.put("subcompanyid1", getEcCompanyId(parentCompany));
}
// 上级部门通过UUID联查ec表ID
String parentDepartment = Util.null2String(params.get("parent_dept"));
if (StringUtils.isNotBlank(parentDepartment)) {
map.put("supdepid", getEcDepartmentId(parentDepartment));
}
map.put("showorder", Util.null2String(params.get("show_order")));
map.put("departmentcode", Util.null2String(params.get("dept_no")));
map.put("coadjutant", Util.null2String(params.get("dept_principal")));
Map<String, Object> returnMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).addDepartment(map, user);
// 更新jcl_org_dept表 uuid字段
if ("1".equals(Util.null2String(returnMap.get("status"))) && null != returnMap.get("id")) {
updateJclUUID(Util.null2String(returnMap.get("id")), HRM_DEPARTMENT, JCL_DEPARTMENT);
}
}
/**
*
*/
private void cancelDepartment() {
String departmentIds = Util.null2String(params.get("id"));
String forbiddenTag = Util.null2String(params.get("forbiddenTag"));
List<String> idList = new ArrayList<>();
String[] split = departmentIds.split(",");
for (String s : split) {
idList.add(getEcDepartmentId(s));
}
Map<String, Object> map = new HashMap<>();
map.put("id", StringUtils.join(idList, ","));
if (StringUtils.isBlank(forbiddenTag) || "1".equals(forbiddenTag)) {
// 封存
ServiceUtil.getService(OrganizationServiceImpl.class, user).doDepartmentCancel(map, user);
} else {
// 解封
ServiceUtil.getService(OrganizationServiceImpl.class, user).doDepartmentISCanceled(map, user);
}
}
/**
*
*/
private void updateDepartment() {
Map<String, Object> map = new HashMap<>();
// 获取ec表ID
map.put("id", getEcDepartmentId(Util.null2String(params.get("id"))));
map.put("departmentmark", Util.null2String(params.get("dept_name_short")));
map.put("departmentname", Util.null2String(params.get("dept_name")));
// 上级分部通过UUID联查ec表ID
String parentCompany = Util.null2String(params.get("parent_comp"));
if (StringUtils.isNotBlank(parentCompany)) {
map.put("subcompanyid1", getEcCompanyId(parentCompany));
}
// 上级部门通过UUID联查ec表ID
String parentDepartment = Util.null2String(params.get("parent_dept"));
if (StringUtils.isNotBlank(parentDepartment)) {
map.put("supdepid", getEcDepartmentId(parentDepartment));
}
map.put("showorder", Util.null2String(params.get("show_order")));
map.put("departmentcode", Util.null2String(params.get("dept_no")));
map.put("coadjutant", Util.null2String(params.get("dept_principal")));
ServiceUtil.getService(OrganizationServiceImpl.class, user).editDepartment(map, user);
}
/** /**
* *
*/ */
private void addCompany() { private void addCompany() {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("subcompanyname", params.get("comp_name_short").toString()); map.put("subcompanyname", Util.null2String(params.get("comp_name_short")));
// 上级分部通过UUID联查ec表ID // 上级分部通过UUID联查ec表ID
String parentCompany = Util.null2String(params.get("parent_company")); String parentCompany = Util.null2String(params.get("parent_company"));
@ -129,18 +227,11 @@ public class OrganizationRunable implements Runnable {
map.put("subcompanycode", params.get("comp_no").toString()); map.put("subcompanycode", params.get("comp_no").toString());
map.put("subcompanydesc", params.get("comp_name").toString()); map.put("subcompanydesc", params.get("comp_name").toString());
map.put("showorder", Util.null2String(params.get("show_order"))); map.put("showorder", Util.null2String(params.get("show_order")));
Map<String, Object> stringObjectMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).addSubCompany(map, user); Map<String, Object> returnMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).addSubCompany(map, user);
// 更新jcl_org_comp表 uuid字段 // 更新jcl_org_comp表 uuid字段
if ("1".equals(Util.null2String(stringObjectMap.get("status"))) && null != stringObjectMap.get("id")) { if ("1".equals(Util.null2String(returnMap.get("status"))) && null != returnMap.get("id")) {
String id = Util.null2String(stringObjectMap.get("id")); updateJclUUID(Util.null2String(returnMap.get("id")), HRM_COMPANY, JCL_COMPANY);
JSONObject hrmSubCompanyByID = getSystemDataMapper().getHrmSubCompanyByID(id);
String uuid = hrmSubCompanyByID.getString("uuid");
Map<String, Object> companyMap = new HashMap<>();
companyMap.put("uuid", uuid);
long companyId = Long.parseLong(Util.null2String(params.get("companyId")));
ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName("JCL_ORG_COMP").params(companyMap).id(companyId).build();
getExtMapper().updateExt(infoParams);
} }
} }
@ -187,6 +278,23 @@ public class OrganizationRunable implements Runnable {
} }
/**
* UUID
*
* @param id
* @param ecTableName
* @param jclTableName
*/
private void updateJclUUID(String id, String ecTableName, String jclTableName) {
JSONObject hrmDepartment = getSystemDataMapper().getHrmObjectByID(ecTableName, id);
String uuid = hrmDepartment.getString("uuid");
Map<String, Object> departmentMap = new HashMap<>();
departmentMap.put("uuid", uuid);
long departmentId = Long.parseLong(Util.null2String(params.get("id")));
ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName(jclTableName).params(departmentMap).id(departmentId).build();
getExtMapper().updateExt(infoParams);
}
/** /**
* jcl_org_comp.idHrmSubCompany.id * jcl_org_comp.idHrmSubCompany.id
* *
@ -194,8 +302,20 @@ public class OrganizationRunable implements Runnable {
* @return * @return
*/ */
private String getEcCompanyId(String companyId) { private String getEcCompanyId(String companyId) {
CompPO compPO = MapperProxyFactory.getProxy(CompMapper.class).listById(Long.parseLong(companyId)); CompPO compPO = getCompMapper().listById(Long.parseLong(companyId));
JSONObject supSubCompany = MapperProxyFactory.getProxy(SystemDataMapper.class).getHrmSubCompanyByUUID(compPO.getUuid()); JSONObject supSubCompany = getSystemDataMapper().getHrmObjectByUUID(HRM_COMPANY, compPO.getUuid());
return supSubCompany.getString("id"); return supSubCompany.getString("id");
} }
/**
* jcl_org_dept.idHrmDepartment.id
*
* @param departmentId
* @return
*/
private String getEcDepartmentId(String departmentId) {
DepartmentPO departmentPO = getDepartmentMapper().getDeptById(Long.parseLong(departmentId));
JSONObject supDepartment = getSystemDataMapper().getHrmObjectByUUID(HRM_DEPARTMENT, departmentPO.getUuid());
return supDepartment.getString("id");
}
} }

Loading…
Cancel
Save