分部更新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 String uuid;
private Long creator;
private int deleteType;

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

@ -31,8 +31,9 @@ public interface SystemDataMapper {
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
where id = #{managerId}
</select>
<select id="getHrmSubCompanyByID" resultType="com.alibaba.fastjson.JSONObject">
<select id="getHrmObjectByID" resultType="com.alibaba.fastjson.JSONObject">
select *
from hrmsubcompany
from ${tableName}
where id = #{id}
</select>
<select id="getHrmSubCompanyByUUID" resultType="com.alibaba.fastjson.JSONObject">
<select id="getHrmObjectByUUID" resultType="com.alibaba.fastjson.JSONObject">
select *
from hrmsubcompany
from ${tableName}
where uuid = #{uuid}
</select>
</mapper>

@ -149,7 +149,7 @@ public class CompServiceImpl extends Service implements CompService {
params.put("show_order", maxShowOrder + 1);
}
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();
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.searchtree.SearchTree;
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.comp.CompMapper;
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.service.DepartmentService;
import com.engine.organization.service.ExtService;
import com.engine.organization.thread.OrganizationRunable;
import com.engine.organization.util.*;
import com.engine.organization.util.coderule.CodeRuleUtil;
import com.engine.organization.util.db.MapperProxyFactory;
@ -192,18 +195,24 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
// 判断是否开启自动编号
deptNo = repeatDetermine(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();
params.put("show_order", maxShowOrder + 1);
}
return getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPT, params, "", null);
Long departmentId = 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
public int updateForbiddenTagById(DeptSearchParam params) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
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);
}
@ -224,6 +233,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
}
// 更新主表数据
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());
//更新明细表
@ -236,6 +246,9 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
public int deleteByIds(Collection<Long> ids) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
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);
}
@ -392,6 +405,9 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
// 显示顺序字段
deptById.setShowOrder(maxShowOrder + i + 1);
insertCount += getDepartmentMapper().insertIgnoreNull(deptById);
// 更新EC表部门
updateEcDepartment(deptById);
// TODO 新增岗位信息
if ("1".equals(copyParam.getCopyJob())) {
List<JobPO> jobPOS = MapperProxyFactory.getProxy(JobMapper.class).listJobsByDepartmentId(idList.get(i));
Integer maxJobOrder = MapperProxyFactory.getProxy(JobMapper.class).getMaxShowOrder();
@ -441,6 +457,10 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
// 禁用
mergeDepartment.setForbiddenTag(1);
updateCount += getDepartmentMapper().updateBaseDept(mergeDepartment);
// 更新EC表部门
updateEcDepartment(mergeDepartment);
// 封存EC表部门
cancelEcDepartment(mergeDepartment.getId());
// 合并后部门及子部门禁用
List<DepartmentPO> deptList = getDepartmentMapper().getDeptListByPId(mergeParam.getId());
forbiddenChildTag(parentComp, deptList);
@ -486,9 +506,13 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
Long department = moveParam.getDepartment();
OrganizationAssert.notNull(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.setForbiddenTag(1);
getDepartmentMapper().updateBaseDept(departmentPO);
// 更新EC表部门
updateEcDepartment(departmentPO);
// 封存EC表部门
cancelEcDepartment(departmentPO.getId());
List<DepartmentPO> childList = getDepartmentMapper().getDeptListByPId(departmentPO.getId());
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.hrm.service.impl.OrganizationServiceImpl;
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.enums.LogModuleNameEnum;
import com.engine.organization.enums.OperateTypeEnum;
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.hrmresource.SystemDataMapper;
import com.engine.organization.util.db.MapperProxyFactory;
@ -31,6 +33,12 @@ public class OrganizationRunable implements Runnable {
private Map<String, Object> params;
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() {
return MapperProxyFactory.getProxy(SystemDataMapper.class);
}
@ -43,6 +51,10 @@ public class OrganizationRunable implements Runnable {
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) {
this.moduleName = moduleName;
@ -87,13 +99,19 @@ public class OrganizationRunable implements Runnable {
}
}
/**
* HrmDepartment
*/
private void refreshDepartment() {
switch (operateType) {
case ADD:
addDepartment();
break;
case UPDATE:
updateDepartment();
break;
case DELETE:
case CANCELED:
cancelDepartment();
break;
default:
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() {
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
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("subcompanydesc", params.get("comp_name").toString());
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字段
if ("1".equals(Util.null2String(stringObjectMap.get("status"))) && null != stringObjectMap.get("id")) {
String id = Util.null2String(stringObjectMap.get("id"));
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);
if ("1".equals(Util.null2String(returnMap.get("status"))) && null != returnMap.get("id")) {
updateJclUUID(Util.null2String(returnMap.get("id")), HRM_COMPANY, JCL_COMPANY);
}
}
@ -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
*
@ -194,8 +302,20 @@ public class OrganizationRunable implements Runnable {
* @return
*/
private String getEcCompanyId(String companyId) {
CompPO compPO = MapperProxyFactory.getProxy(CompMapper.class).listById(Long.parseLong(companyId));
JSONObject supSubCompany = MapperProxyFactory.getProxy(SystemDataMapper.class).getHrmSubCompanyByUUID(compPO.getUuid());
CompPO compPO = getCompMapper().listById(Long.parseLong(companyId));
JSONObject supSubCompany = getSystemDataMapper().getHrmObjectByUUID(HRM_COMPANY, compPO.getUuid());
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