From 8968e44e09e27a2d799c45620f2b4ec4e01acc0c Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 26 Aug 2022 15:36:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=83=A8=E3=80=81=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E3=80=81=E5=B2=97=E4=BD=8D=E5=90=8C=E6=AD=A5EC=E9=87=8D?= =?UTF-8?q?=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/脚本/Mysql/浏览按钮mysql.sql | 2 +- docs/脚本/SqlServer/浏览按钮sqlserver.sql | 2 +- .../mapper/department/DepartmentMapper.xml | 17 +- .../service/impl/CompServiceImpl.java | 36 +- .../service/impl/DepartmentServiceImpl.java | 66 ++- .../service/impl/ExtServiceImpl.java | 1 + .../service/impl/ImportCommonServiceImpl.java | 96 +++- .../service/impl/JobServiceImpl.java | 32 +- .../thread/OrganizationSyncEc.java | 468 ++++++++++++++++++ 9 files changed, 643 insertions(+), 77 deletions(-) create mode 100644 src/com/engine/organization/thread/OrganizationSyncEc.java diff --git a/docs/脚本/Mysql/浏览按钮mysql.sql b/docs/脚本/Mysql/浏览按钮mysql.sql index 55e6f365..9b7e65cc 100644 --- a/docs/脚本/Mysql/浏览按钮mysql.sql +++ b/docs/脚本/Mysql/浏览按钮mysql.sql @@ -40,7 +40,7 @@ select @datashowset_id:= max(id) from datashowset; INSERT INTO datashowcacheset(showname, subcompanyid, isopencache, Createdate, createtime, Updatedate, Updatetime) VALUES ('PostInfoBrowser', '0', 0, @current_date, @current_time, NULL, NULL); INSERT INTO datashowparam (MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width) VALUES(@datashowset_id, '编号', 'post_info_no', '', 1, 1, uuid(), NULL); INSERT INTO datashowparam (MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width) VALUES(@datashowset_id, '名称', 'post_info_name', '', 0, 2, uuid(), NULL); -INSERT INTO datashowparam (MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width) VALUES(@datashowset_id, '职务分类', 'post_id', '', 0, 3, uuid(), NULL); +INSERT INTO datashowparam (MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width) VALUES(@datashowset_id, '职务分类', 'post_id', 'select post_name from jcl_org_post where id = {?currentvalue}', 0, 3, uuid(), NULL); INSERT INTO datasearchparam (MAINID, FIELDNAME, SEARCHNAME, FIELDTYPE, WOKFLOWFIELDNAME, dsporder, uuid, isshowfield) VALUES(@datashowset_id, '编号', 'post_info_no', '2', '', 1, uuid(), ''); INSERT INTO datasearchparam (MAINID, FIELDNAME, SEARCHNAME, FIELDTYPE, WOKFLOWFIELDNAME, dsporder, uuid, isshowfield) VALUES(@datashowset_id, '名称', 'post_info_name', '2', '', 2, uuid(), ''); diff --git a/docs/脚本/SqlServer/浏览按钮sqlserver.sql b/docs/脚本/SqlServer/浏览按钮sqlserver.sql index 7ccf88ad..dfdda47c 100644 --- a/docs/脚本/SqlServer/浏览按钮sqlserver.sql +++ b/docs/脚本/SqlServer/浏览按钮sqlserver.sql @@ -60,7 +60,7 @@ set @datashowset_id = (select max(id) from datashowset) INSERT INTO datashowcacheset(showname, subcompanyid, isopencache, Createdate, createtime, Updatedate, Updatetime) VALUES ('PostInfoBrowser', '0', 0, @current_date, @current_time, NULL, NULL) INSERT INTO datashowparam (MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width) VALUES(@datashowset_id, '编号', 'post_info_no', '', 1, 1, newid(), NULL) INSERT INTO datashowparam (MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width) VALUES(@datashowset_id, '名称', 'post_info_name', '', 0, 2, newid(), NULL) -INSERT INTO datashowparam (MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width) VALUES(@datashowset_id, '职务分类', 'post_id', '', 0, 3, newid(), NULL) +INSERT INTO datashowparam (MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width) VALUES(@datashowset_id, '职务分类', 'post_id', 'select post_name from jcl_org_post where id = {?currentvalue}', 0, 3, newid(), NULL) INSERT INTO datasearchparam (MAINID, FIELDNAME, SEARCHNAME, FIELDTYPE, WOKFLOWFIELDNAME, dsporder, uuid, isshowfield) VALUES(@datashowset_id, '编号', 'post_info_no', '2', '', 1, newid(), '') INSERT INTO datasearchparam (MAINID, FIELDNAME, SEARCHNAME, FIELDTYPE, WOKFLOWFIELDNAME, dsporder, uuid, isshowfield) VALUES(@datashowset_id, '名称', 'post_info_name', '2', '', 2, newid(), '') GO diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.xml b/src/com/engine/organization/mapper/department/DepartmentMapper.xml index b4da89d8..4221b0fe 100644 --- a/src/com/engine/organization/mapper/department/DepartmentMapper.xml +++ b/src/com/engine/organization/mapper/department/DepartmentMapper.xml @@ -223,6 +223,9 @@ description, + + uuid, + forbidden_tag, @@ -262,11 +265,15 @@ #{description}, + + #{uuid}, + 0, - - + + select JCL_ORG_DEPT_ID.currval from dual INSERT INTO jcl_org_dept @@ -308,6 +315,9 @@ description, + + uuid, + forbidden_tag, @@ -347,6 +357,9 @@ #{description}, + + #{uuid}, + 0, diff --git a/src/com/engine/organization/service/impl/CompServiceImpl.java b/src/com/engine/organization/service/impl/CompServiceImpl.java index 19b5f31e..1143da41 100644 --- a/src/com/engine/organization/service/impl/CompServiceImpl.java +++ b/src/com/engine/organization/service/impl/CompServiceImpl.java @@ -13,6 +13,7 @@ import com.engine.hrm.entity.RuleCodeType; import com.engine.organization.component.OrganizationWeaTable; import com.engine.organization.entity.DeleteParam; import com.engine.organization.entity.codesetting.po.CodeRulePO; +import com.engine.organization.entity.commom.RecordInfo; import com.engine.organization.entity.company.bo.CompBO; import com.engine.organization.entity.company.dto.CompListDTO; import com.engine.organization.entity.company.param.CompSearchParam; @@ -26,9 +27,10 @@ import com.engine.organization.mapper.comp.CompMapper; import com.engine.organization.mapper.extend.ExtDTMapper; import com.engine.organization.mapper.extend.ExtMapper; import com.engine.organization.mapper.extend.ExtendTitleMapper; +import com.engine.organization.mapper.hrmresource.SystemDataMapper; import com.engine.organization.service.CompService; import com.engine.organization.service.ExtService; -import com.engine.organization.thread.OrganizationRunable; +import com.engine.organization.thread.OrganizationSyncEc; import com.engine.organization.util.*; import com.engine.organization.util.coderule.CodeRuleUtil; import com.engine.organization.util.db.MapperProxyFactory; @@ -73,6 +75,8 @@ public class CompServiceImpl extends Service implements CompService { private static final String RIGHT_NAME = "Company:All"; + private static final String HRM_COMPANY = "hrmsubcompany"; + /** * 公司/分部主表title指定ID */ @@ -86,6 +90,10 @@ public class CompServiceImpl extends Service implements CompService { return MapperProxyFactory.getProxy(ExtendTitleMapper.class); } + private SystemDataMapper getSystemDataMapper() { + return MapperProxyFactory.getProxy(SystemDataMapper.class); + } + private ExtService getExtService(User user) { return ServiceUtil.getService(ExtServiceImpl.class, user); } @@ -153,10 +161,14 @@ 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("id", id); - new Thread(new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.ADD, params)).start(); - return id; + Map syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.ADD, params).sync(); + String ecCompanyID = Util.null2String(syncMap.get("id")); + OrganizationAssert.isTrue(StringUtils.isNotBlank(ecCompanyID), syncMap.get("message").toString()); + // 查询UUID + RecordInfo recordInfo = getSystemDataMapper().getHrmObjectByID(HRM_COMPANY, ecCompanyID); + params.put("uuid", recordInfo.getUuid()); + return getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_COMP, params, "", null); + } @Override @@ -166,7 +178,7 @@ public class CompServiceImpl extends Service implements CompService { Map map = new HashMap<>(); map.put("id", compPO.getId()); map.put("forbiddenTag", compPO.getForbiddenTag()); - new Thread(new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.CANCELED, map)).start(); + new OrganizationSyncEc(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.CANCELED, map).sync(); return getCompMapper().updateForbiddenTagById(compPO); } @@ -184,7 +196,7 @@ public class CompServiceImpl extends Service implements CompService { compNo = repeatDetermine(compNo); params.put("comp_no", compNo); } - new Thread(new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.UPDATE, params)).start(); + new OrganizationSyncEc(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.UPDATE, params).sync(); // 更新主表数据 getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_COMP, params, "", searchParam.getId()); // 更新主表拓展表 @@ -200,13 +212,13 @@ public class CompServiceImpl extends Service implements CompService { HasRightUtil.hasRight(user, RIGHT_NAME, false); OrganizationAssert.notEmpty(ids, "请选择要删除的数据"); Map map = new HashMap<>(); - map.put("id", StringUtils.join(ids, ",")); for (Long id : ids) { + map.put("id", id); + new OrganizationSyncEc(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.CANCELED, map).sync(); // 删除拓展表、明细表 MapperProxyFactory.getProxy(ExtMapper.class).deleteByID("jcl_org_compext", id); MapperProxyFactory.getProxy(ExtDTMapper.class).deleteByMainID("jcl_org_compext_dt1", id); } - new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.CANCELED, map).run(); return getCompMapper().deleteByIds(ids); } @@ -273,7 +285,7 @@ public class CompServiceImpl extends Service implements CompService { if ("0".equals(groupId)) { groupId = GROUP_ID.toString(); } - List extendTitles = getExtendTitleMapper().getTitlesByGroupID(Long.parseLong(groupId),"1"); + List extendTitles = getExtendTitleMapper().getTitlesByGroupID(Long.parseLong(groupId), "1"); if (CollectionUtils.isNotEmpty(extendTitles)) { for (ExtendTitlePO extendTitle : extendTitles) { @@ -305,7 +317,7 @@ public class CompServiceImpl extends Service implements CompService { HasRightUtil.hasRight(user, RIGHT_NAME, false); Map apiDatas = new HashMap<>(); List addGroups = new ArrayList<>(); - List extendTitles = getExtendTitleMapper().getTitlesByGroupID(GROUP_ID,"1"); + List extendTitles = getExtendTitleMapper().getTitlesByGroupID(GROUP_ID, "1"); if (CollectionUtils.isNotEmpty(extendTitles)) { for (ExtendTitlePO extendTitle : extendTitles) { List items = getExtService(user).getExtSaveForm(user, EXTEND_TYPE + "", JCL_ORG_COMP, 2, extendTitle.getId() + "", "comp_no", RuleCodeType.SUBCOMPANY.getValue()); @@ -351,7 +363,7 @@ public class CompServiceImpl extends Service implements CompService { map.put("comp_name_short", compPO.getCompNameShort()); map.put("comp_name", compPO.getCompName()); map.put("show_order", compPO.getShowOrder()); - new Thread(new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.UPDATE, map)).start(); + new OrganizationSyncEc(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.UPDATE, map).sync(); return getCompMapper().updateBaseComp(compPO); } diff --git a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java index 0e006e6d..914f2634 100644 --- a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java +++ b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java @@ -11,6 +11,7 @@ import com.engine.core.impl.Service; import com.engine.hrm.entity.RuleCodeType; import com.engine.organization.component.OrganizationWeaTable; import com.engine.organization.entity.codesetting.po.CodeRulePO; +import com.engine.organization.entity.commom.RecordInfo; import com.engine.organization.entity.company.bo.CompBO; import com.engine.organization.entity.company.po.CompPO; import com.engine.organization.entity.department.bo.DepartmentBO; @@ -32,10 +33,11 @@ import com.engine.organization.mapper.department.DepartmentMapper; import com.engine.organization.mapper.extend.ExtDTMapper; import com.engine.organization.mapper.extend.ExtMapper; import com.engine.organization.mapper.extend.ExtendTitleMapper; +import com.engine.organization.mapper.hrmresource.SystemDataMapper; 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.thread.OrganizationSyncEc; import com.engine.organization.util.*; import com.engine.organization.util.coderule.CodeRuleUtil; import com.engine.organization.util.db.MapperProxyFactory; @@ -87,6 +89,8 @@ public class DepartmentServiceImpl extends Service implements DepartmentService */ private static final Long GROUP_ID = 2L; + private static final String HRM_DEPARTMENT = "hrmdepartment"; + private static DepartmentMapper getDepartmentMapper() { return MapperProxyFactory.getProxy(DepartmentMapper.class); @@ -100,6 +104,10 @@ public class DepartmentServiceImpl extends Service implements DepartmentService return MapperProxyFactory.getProxy(ExtendTitleMapper.class); } + private SystemDataMapper getSystemDataMapper() { + return MapperProxyFactory.getProxy(SystemDataMapper.class); + } + private ExtService getExtService(User user) { return ServiceUtil.getService(ExtServiceImpl.class, user); } @@ -204,10 +212,13 @@ public class DepartmentServiceImpl extends Service implements DepartmentService } params.put("show_order", maxShowOrder + 1); } - 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; + Map syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.ADD, params).sync(); + String ecCompanyID = Util.null2String(syncMap.get("id")); + OrganizationAssert.isTrue(StringUtils.isNotBlank(ecCompanyID), syncMap.get("message").toString()); + // 查询UUID + RecordInfo recordInfo = getSystemDataMapper().getHrmObjectByID(HRM_DEPARTMENT, ecCompanyID); + params.put("uuid", recordInfo.getUuid()); + return getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPT, params, "", null); } @Override @@ -217,7 +228,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService Map map = new HashMap<>(); map.put("id", departmentPO.getId()); map.put("forbiddenTag", departmentPO.getForbiddenTag()); - new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map)).start(); + new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map).sync(); return getDepartmentMapper().updateForbiddenTagById(departmentPO); } @@ -236,9 +247,9 @@ public class DepartmentServiceImpl extends Service implements DepartmentService deptNo = repeatDetermine(deptNo); params.put("dept_no", deptNo); } + new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.UPDATE, params).sync(); // 更新主表数据 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()); //更新明细表 @@ -252,13 +263,15 @@ public class DepartmentServiceImpl extends Service implements DepartmentService HasRightUtil.hasRight(user, RIGHT_NAME, false); OrganizationAssert.notEmpty(ids, "请选择要删除的数据"); Map map = new HashMap<>(); - map.put("id", StringUtils.join(ids, ",")); + for (Long id : ids) { + map.put("id", id); + new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map).sync(); // 删除拓展表、明细表 MapperProxyFactory.getProxy(ExtMapper.class).deleteByID("jcl_org_deptext", id); MapperProxyFactory.getProxy(ExtDTMapper.class).deleteByMainID("jcl_org_deptext_dt1", id); } - new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map).run(); + return getDepartmentMapper().deleteByIds(ids); } @@ -326,7 +339,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService if ("0".equals(groupId)) { groupId = GROUP_ID.toString(); } - List extendTitles = getExtendTitleMapper().getTitlesByGroupID(Long.parseLong(groupId),"1"); + List extendTitles = getExtendTitleMapper().getTitlesByGroupID(Long.parseLong(groupId), "1"); if (CollectionUtils.isNotEmpty(extendTitles)) { for (ExtendTitlePO extendTitle : extendTitles) { List items = getExtService(user).getExtForm(user, EXTEND_TYPE + "", GROUP_ID.equals(Long.parseLong(groupId)) ? JCL_ORG_DEPT : JCL_ORG_DEPTEXT, viewAttr, id, extendTitle.getId().toString(), ""); @@ -357,7 +370,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService HasRightUtil.hasRight(user, RIGHT_NAME, false); Map apiDatas = new HashMap<>(); List addGroups = new ArrayList<>(); - List extendTitles = getExtendTitleMapper().getTitlesByGroupID(GROUP_ID,"1"); + List extendTitles = getExtendTitleMapper().getTitlesByGroupID(GROUP_ID, "1"); if (CollectionUtils.isNotEmpty(extendTitles)) { for (ExtendTitlePO extendTitle : extendTitles) { @@ -416,9 +429,16 @@ public class DepartmentServiceImpl extends Service implements DepartmentService deptById.setParentDept(null); // 显示顺序字段 deptById.setShowOrder(maxShowOrder + i + 1); - insertCount += getDepartmentMapper().insertIgnoreNull(deptById); + deptById.setCreateTime(new Date()); // 新增EC表部门 - addEcDepartment(deptById); + Map syncMap = addEcDepartment(deptById); + String ecDepartmentID = Util.null2String(syncMap.get("id")); + OrganizationAssert.isTrue(StringUtils.isNotBlank(ecDepartmentID), syncMap.get("message").toString()); + // 查询UUID + RecordInfo recordInfo = getSystemDataMapper().getHrmObjectByID(HRM_DEPARTMENT, ecDepartmentID); + deptById.setUuid(recordInfo.getUuid()); + insertCount += getDepartmentMapper().insertIgnoreNull(deptById); + // 新增岗位信息 if ("1".equals(copyParam.getCopyJob())) { List jobPOS = MapperProxyFactory.getProxy(JobMapper.class).listJobsByDepartmentId(idList.get(i)); @@ -476,11 +496,12 @@ public class DepartmentServiceImpl extends Service implements DepartmentService mergeDepartment.setParentComp(parentComp); // 禁用 mergeDepartment.setForbiddenTag(1); - updateCount += getDepartmentMapper().updateBaseDept(mergeDepartment); // 更新EC表部门 updateEcDepartment(mergeDepartment); // 封存EC表部门 cancelEcDepartment(mergeDepartment.getId()); + + updateCount = getDepartmentMapper().updateBaseDept(mergeDepartment); // 合并后部门及子部门禁用 List deptList = getDepartmentMapper().getDeptListByPId(mergeParam.getId()); forbiddenChildTag(parentComp, deptList); @@ -536,10 +557,10 @@ public class DepartmentServiceImpl extends Service implements DepartmentService DepartmentPO parentDepartment = getDepartmentMapper().getDeptById(department); deptById.setParentComp(parentDepartment.getParentComp()); } - int updateBaseDept = getDepartmentMapper().updateBaseDept(deptById); // 更新EC部门 updateEcDepartment(deptById); - return updateBaseDept; + + return getDepartmentMapper().updateBaseDept(deptById); } /** @@ -553,11 +574,12 @@ public class DepartmentServiceImpl extends Service implements DepartmentService for (DepartmentPO departmentPO : deptList) { departmentPO.setParentComp(parentComp); departmentPO.setForbiddenTag(1); - getDepartmentMapper().updateBaseDept(departmentPO); // 更新EC表部门 updateEcDepartment(departmentPO); // 封存EC表部门 cancelEcDepartment(departmentPO.getId()); + + getDepartmentMapper().updateBaseDept(departmentPO); List childList = getDepartmentMapper().getDeptListByPId(departmentPO.getId()); forbiddenChildTag(parentComp, childList); } @@ -689,15 +711,16 @@ public class DepartmentServiceImpl extends Service implements DepartmentService 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(); + new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.UPDATE, map).sync(); } /** * 新增EC表部门 * * @param departmentPO + * @return */ - private void addEcDepartment(DepartmentPO departmentPO) { + private Map addEcDepartment(DepartmentPO departmentPO) { Map map = new HashMap<>(); map.put("dept_name_short", departmentPO.getDeptNameShort()); map.put("dept_name", departmentPO.getDeptName()); @@ -707,7 +730,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService 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.ADD, map)).start(); + return new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.ADD, map).sync(); } /** @@ -718,7 +741,8 @@ public class DepartmentServiceImpl extends Service implements DepartmentService private void cancelEcDepartment(Long id) { Map map = new HashMap<>(); map.put("id", id); - new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map)).start(); + map.put("forbiddenTag", 1); + new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map).sync(); } private void addDisableIds(Set disableIds, List deptListByPId) { diff --git a/src/com/engine/organization/service/impl/ExtServiceImpl.java b/src/com/engine/organization/service/impl/ExtServiceImpl.java index e625ca20..ab1f7ff1 100644 --- a/src/com/engine/organization/service/impl/ExtServiceImpl.java +++ b/src/com/engine/organization/service/impl/ExtServiceImpl.java @@ -207,6 +207,7 @@ public class ExtServiceImpl extends Service implements ExtService { Map map = new HashMap<>(); // 遍历Map Map collect = extInfoPOList.stream().collect(Collectors.toMap(ExtendInfoPO::getFieldName, item -> item)); + collect.put("uuid", new ExtendInfoPO()); for (Map.Entry entry : params.entrySet()) { String key = entry.getKey(); if (collect.containsKey(key)) { diff --git a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java index 463905b3..0496ae13 100644 --- a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java +++ b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java @@ -11,6 +11,7 @@ import com.engine.core.impl.Service; import com.engine.hrm.entity.FieldSelectOptionBean; import com.engine.organization.component.OrganizationWeaTable; import com.engine.organization.entity.SelectOptionParam; +import com.engine.organization.entity.commom.RecordInfo; import com.engine.organization.entity.extend.param.ExtendInfoParams; import com.engine.organization.entity.extend.po.ExtendInfoPO; import com.engine.organization.entity.fieldset.param.FieldTypeTreeParam; @@ -29,7 +30,7 @@ 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.service.ImportCommonService; -import com.engine.organization.thread.OrganizationRunable; +import com.engine.organization.thread.OrganizationSyncEc; import com.engine.organization.util.HasRightUtil; import com.engine.organization.util.OrganizationAssert; import com.engine.organization.util.db.MapperProxyFactory; @@ -75,6 +76,8 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ private static final Long JOB_TYPE = 3L; private static final String RIGHT_NAME = "DataImport:All"; + private static final String HRM_COMPANY = "hrmsubcompany"; + private static final String HRM_DEPARTMENT = "hrmdepartment"; private ExtendInfoMapper getExtendInfoMapper() { @@ -651,12 +654,21 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ if (StringUtils.isBlank(Util.null2String(map.get("forbidden_tag")))) { map.put("forbidden_tag", 0); } - ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName("JCL_ORG_COMP").params(map).build(); - MapperProxyFactory.getProxy(ExtMapper.class).insertTable(infoParams); - map.put("id", infoParams.getId()); - new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.ADD, map).run(); - historyDetailPO.setOperateDetail("添加成功"); - historyDetailPO.setStatus("1"); + + Map syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.ADD, map, false).sync(); + if (isThrowError(syncMap)) { + // 查询UUID + String ecCompanyID = Util.null2String(syncMap.get("id")); + RecordInfo recordInfo = getSystemDataMapper().getHrmObjectByID(HRM_COMPANY, ecCompanyID); + map.put("uuid", recordInfo.getUuid()); + ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName("JCL_ORG_COMP").params(map).build(); + MapperProxyFactory.getProxy(ExtMapper.class).insertTable(infoParams); + historyDetailPO.setOperateDetail("添加成功"); + historyDetailPO.setStatus("1"); + } else { + historyDetailPO.setOperateDetail(Util.null2String(syncMap.get("message"))); + historyDetailPO.setStatus("0"); + } saveImportDetailLog(historyDetailPO); } else if ("update".equals(operateType)) { // 查询对应ID @@ -670,9 +682,14 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ map.put("update_time", new Date()); MapperProxyFactory.getProxy(ExtMapper.class).updateTable(ExtendInfoParams.builder().id(companyId).tableName("JCL_ORG_COMP").params(map).build()); map.put("id", companyId); - new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.UPDATE, map).run(); - historyDetailPO.setOperateDetail("更新成功"); - historyDetailPO.setStatus("1"); + Map syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.UPDATE, map, false).sync(); + if (isThrowError(syncMap)) { + historyDetailPO.setOperateDetail("更新成功"); + historyDetailPO.setStatus("1"); + } else { + historyDetailPO.setOperateDetail(Util.null2String(syncMap.get("message"))); + historyDetailPO.setStatus("0"); + } saveImportDetailLog(historyDetailPO); } else { historyDetailPO.setOperateDetail(compNo + "编号已存在"); @@ -836,12 +853,22 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ if (StringUtils.isBlank(Util.null2String(map.get("forbidden_tag")))) { map.put("forbidden_tag", 0); } - ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName("JCL_ORG_DEPT").params(map).build(); - MapperProxyFactory.getProxy(ExtMapper.class).insertTable(infoParams); - map.put("id", infoParams.getId()); - new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.ADD, map).run(); - historyDetailPO.setOperateDetail("添加成功"); - historyDetailPO.setStatus("1"); + + Map syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.ADD, map, false).sync(); + if (isThrowError(syncMap)) { + // 查询UUID + String ecDepartmentID = Util.null2String(syncMap.get("id")); + RecordInfo recordInfo = getSystemDataMapper().getHrmObjectByID(HRM_DEPARTMENT, ecDepartmentID); + map.put("uuid", recordInfo.getUuid()); + ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName("JCL_ORG_DEPT").params(map).build(); + MapperProxyFactory.getProxy(ExtMapper.class).insertTable(infoParams); + map.put("id", infoParams.getId()); + historyDetailPO.setOperateDetail("添加成功"); + historyDetailPO.setStatus("1"); + } else { + historyDetailPO.setOperateDetail(Util.null2String(syncMap.get("message"))); + historyDetailPO.setStatus("0"); + } saveImportDetailLog(historyDetailPO); } else if ("update".equals(operateType)) { // 查询对应ID @@ -855,9 +882,14 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ map.put("update_time", new Date()); MapperProxyFactory.getProxy(ExtMapper.class).updateTable(ExtendInfoParams.builder().id(departmentId).tableName("JCL_ORG_DEPT").params(map).build()); map.put("id", departmentId); - new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.UPDATE, map).run(); - historyDetailPO.setOperateDetail("更新成功"); - historyDetailPO.setStatus("1"); + Map syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.UPDATE, map, false).sync(); + if (isThrowError(syncMap)) { + historyDetailPO.setOperateDetail("更新成功"); + historyDetailPO.setStatus("1"); + } else { + historyDetailPO.setOperateDetail(Util.null2String(syncMap.get("message"))); + historyDetailPO.setStatus("0"); + } saveImportDetailLog(historyDetailPO); } else { historyDetailPO.setOperateDetail(deptNo + "编号已存在"); @@ -1052,9 +1084,14 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ MapperProxyFactory.getProxy(ExtMapper.class).insertTable(infoParams); map.put("jobactivityid", JobServiceImpl.JOB_ACTIVITY_ID); map.put("id", infoParams.getId()); - new OrganizationRunable(user, LogModuleNameEnum.JOB, OperateTypeEnum.ADD, map).run(); - historyDetailPO.setOperateDetail("添加成功"); - historyDetailPO.setStatus("1"); + Map syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.ADD, map, false).sync(); + if (isThrowError(syncMap)) { + historyDetailPO.setOperateDetail("添加成功"); + historyDetailPO.setStatus("1"); + } else { + historyDetailPO.setOperateDetail(Util.null2String(syncMap.get("message"))); + historyDetailPO.setStatus("0"); + } saveImportDetailLog(historyDetailPO); } else if ("update".equals(operateType)) { // 查询对应ID @@ -1069,9 +1106,14 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ MapperProxyFactory.getProxy(ExtMapper.class).updateTable(ExtendInfoParams.builder().id(jobId).tableName("JCL_ORG_JOB").params(map).build()); map.put("jobactivityid", JobServiceImpl.JOB_ACTIVITY_ID); map.put("id", jobId); - new OrganizationRunable(user, LogModuleNameEnum.JOB, OperateTypeEnum.UPDATE, map).run(); - historyDetailPO.setOperateDetail("更新成功"); - historyDetailPO.setStatus("1"); + Map syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.UPDATE, map, false).sync(); + if (isThrowError(syncMap)) { + historyDetailPO.setOperateDetail("更新成功"); + historyDetailPO.setStatus("1"); + } else { + historyDetailPO.setOperateDetail(Util.null2String(syncMap.get("message"))); + historyDetailPO.setStatus("0"); + } saveImportDetailLog(historyDetailPO); } else { historyDetailPO.setOperateDetail(jobNo + "编号已存在"); @@ -1275,4 +1317,8 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ return excelPath; } + private boolean isThrowError(Map resultMap) { + return "1".equals(Util.null2String(resultMap.get("status"))) || "1".equals(Util.null2String(resultMap.get("sign"))); + } + } diff --git a/src/com/engine/organization/service/impl/JobServiceImpl.java b/src/com/engine/organization/service/impl/JobServiceImpl.java index 0ece142b..76b736ad 100644 --- a/src/com/engine/organization/service/impl/JobServiceImpl.java +++ b/src/com/engine/organization/service/impl/JobServiceImpl.java @@ -40,7 +40,7 @@ import com.engine.organization.mapper.job.JobMapper; import com.engine.organization.mapper.scheme.GradeMapper; import com.engine.organization.service.ExtService; import com.engine.organization.service.JobService; -import com.engine.organization.thread.OrganizationRunable; +import com.engine.organization.thread.OrganizationSyncEc; import com.engine.organization.util.*; import com.engine.organization.util.coderule.CodeRuleUtil; import com.engine.organization.util.db.MapperProxyFactory; @@ -340,11 +340,9 @@ public class JobServiceImpl extends Service implements JobService { } params.put("show_order", maxShowOrder + 1); } - Long jobId = getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_JOB, params, "", null); params.put("jobactivityid", JOB_ACTIVITY_ID); - params.put("id", jobId); - new Thread(new OrganizationRunable(user, LogModuleNameEnum.JOB, OperateTypeEnum.ADD, params)).start(); - return jobId; + new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.ADD, params).sync(); + return getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_JOB, params, "", null); } @Override @@ -374,7 +372,7 @@ public class JobServiceImpl extends Service implements JobService { params.put("ec_company", EcHrmRelationUtil.getEcCompanyId(jclDepartment.getParentComp() + "")); } params.put("jobactivityid", JOB_ACTIVITY_ID); - new Thread(new OrganizationRunable(user, LogModuleNameEnum.JOB, OperateTypeEnum.UPDATE, params, oldJobPO)).start(); + new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.UPDATE, params, oldJobPO).sync(); getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_JOB, params, "", searchParam.getId()); // 更新主表拓展表 getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_JOBEXT, params, groupId, searchParam.getId()); @@ -407,7 +405,7 @@ public class JobServiceImpl extends Service implements JobService { public int updateForbiddenTagById(JobSearchParam params) { HasRightUtil.hasRight(user, RIGHT_NAME, false); JobPO jobPO = JobPO.builder().id(params.getId()).forbiddenTag(params.getForbiddenTag() ? 0 : 1).jobName(getJobMapper().getJobById(params.getId()).getJobName()).build(); - new Thread(new OrganizationRunable(user, LogModuleNameEnum.JOB, OperateTypeEnum.CANCELED, null, jobPO)).start(); + new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.CANCELED, null, jobPO).sync(); return getJobMapper().updateForbiddenTagById(jobPO.getId(), jobPO.getForbiddenTag()); } @@ -416,14 +414,14 @@ public class JobServiceImpl extends Service implements JobService { HasRightUtil.hasRight(user, RIGHT_NAME, false); OrganizationAssert.notEmpty(ids, "请选择要删除的数据"); List jobsByIds = getJobMapper().getJobsByIds(ids); - int delete = getJobMapper().deleteByIds(ids); for (JobPO jobsById : jobsByIds) { + jobsById.setForbiddenTag(1); + new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.CANCELED, null, jobsById).sync(); // 删除拓展表、明细表 MapperProxyFactory.getProxy(ExtMapper.class).deleteByID("jcl_org_jobext", jobsById.getId()); MapperProxyFactory.getProxy(ExtDTMapper.class).deleteByMainID("jcl_org_jobext_dt1", jobsById.getId()); - new Thread(new OrganizationRunable(user, LogModuleNameEnum.JOB, OperateTypeEnum.CANCELED, null, jobsById)).start(); } - return delete; + return getJobMapper().deleteByIds(ids); } @Override @@ -439,7 +437,7 @@ public class JobServiceImpl extends Service implements JobService { public List getMergeForm() { List addGroups = new ArrayList<>(); List condition = new ArrayList<>(); - SearchConditionItem deptBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 3, false, "合并到岗位", "161", "targetJob", "jobBrowser"); + SearchConditionItem deptBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 3, false, "合并到岗位", "666", "targetJob", ""); deptBrowserItem.setRules("required"); condition.add(deptBrowserItem); addGroups.add(new SearchConditionGroup("", true, condition)); @@ -449,7 +447,7 @@ public class JobServiceImpl extends Service implements JobService { @Override public int mergeJob(JobMergeParam mergeParam) { HasRightUtil.hasRight(user, RIGHT_NAME, false); - int updateCount = 0; + int updateCount; OrganizationAssert.notNull(mergeParam.getTargetJob(), "请选择需要合并的部门"); Set disableIds = new HashSet<>(); disableIds.add(mergeParam.getId()); @@ -467,8 +465,12 @@ public class JobServiceImpl extends Service implements JobService { // 原岗位禁用 JobPO mergeJob = getJobMapper().getJobById(mergeParam.getId()); mergeJob.setForbiddenTag(1); - updateCount += getJobMapper().updateBaseJob(mergeJob); - new Thread(new OrganizationRunable(user, LogModuleNameEnum.JOB, OperateTypeEnum.CANCELED, null, mergeJob)).start(); + mergeJob.setParentComp(targetJob.getParentComp()); + mergeJob.setParentDept(targetJob.getParentDept()); + mergeJob.setParentJob(targetJob.getId()); + new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.CANCELED, null, mergeJob).sync(); + + updateCount = getJobMapper().updateBaseJob(mergeJob); //TODO 合并该刚岗位下的人员 // 合并后岗位及子岗位禁用 @@ -644,8 +646,8 @@ public class JobServiceImpl extends Service implements JobService { job.setParentDept(parentDept); job.setParentJob(parentJob); job.setForbiddenTag(1); + new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.CANCELED, null, job).sync(); getJobMapper().updateBaseJob(job); - new Thread(new OrganizationRunable(user, LogModuleNameEnum.JOB, OperateTypeEnum.CANCELED, null, job)).start(); List childJobs = getJobMapper().getJobsByPid(job.getId()); forbiddenChildTag(parentComp, parentDept, job.getId(), childJobs); } diff --git a/src/com/engine/organization/thread/OrganizationSyncEc.java b/src/com/engine/organization/thread/OrganizationSyncEc.java new file mode 100644 index 00000000..3d99738e --- /dev/null +++ b/src/com/engine/organization/thread/OrganizationSyncEc.java @@ -0,0 +1,468 @@ +package com.engine.organization.thread; + +import com.engine.common.util.ServiceUtil; +import com.engine.hrm.service.impl.HrmJobServiceImpl; +import com.engine.hrm.service.impl.OrganizationServiceImpl; +import com.engine.organization.entity.commom.RecordInfo; +import com.engine.organization.entity.company.po.CompPO; +import com.engine.organization.entity.department.po.DepartmentPO; +import com.engine.organization.entity.job.po.JobPO; +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.mapper.job.JobMapper; +import com.engine.organization.util.OrganizationAssert; +import com.engine.organization.util.db.MapperProxyFactory; +import com.engine.organization.util.relation.EcHrmRelationUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import weaver.general.Util; +import weaver.hrm.User; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author:dxfeng + * @createTime: 2022/08/26 + * @version: 1.0 + */ +public class OrganizationSyncEc { + private LogModuleNameEnum moduleName; + private OperateTypeEnum operateType; + private Map params; + private User user; + private JobPO oldJobPO; + Map resultMap; + private boolean throwException = true; + + 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); + } + + private ExtMapper getExtMapper() { + return MapperProxyFactory.getProxy(ExtMapper.class); + } + + public OrganizationSyncEc(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map params) { + this.moduleName = moduleName; + this.operateType = operateType; + this.params = params; + this.user = user; + } + + public OrganizationSyncEc(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map params, boolean throwException) { + this.moduleName = moduleName; + this.operateType = operateType; + this.params = params; + this.user = user; + this.throwException = throwException; + } + + public OrganizationSyncEc(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map params, JobPO oldJobPO) { + this.moduleName = moduleName; + this.operateType = operateType; + this.params = params; + this.user = user; + this.oldJobPO = oldJobPO; + } + + public Map sync() { + switch (moduleName) { + case COMPANY: + refreshCompany(); + break; + case DEPARTMENT: + refreshDepartment(); + break; + case JOB: + refreshJob(); + break; + default: + break; + } + OrganizationAssert.isTrue(throwException && ("1".equals(Util.null2String(resultMap.get("status"))) || "1".equals(Util.null2String(resultMap.get("sign")))), Util.null2String(resultMap.get("message"))); + return resultMap; + } + + + /** + * 刷新HrmSubCompany表数据 + */ + private void refreshCompany() { + switch (operateType) { + case ADD: + addCompany(); + break; + case UPDATE: + updateCompany(); + break; + case CANCELED: + cancelCompany(); + break; + default: + break; + } + } + + /** + * 刷新HrmDepartment表数据 + */ + private void refreshDepartment() { + switch (operateType) { + case ADD: + addDepartment(); + break; + case UPDATE: + updateDepartment(); + break; + case CANCELED: + cancelDepartment(); + break; + default: + break; + } + } + + private void refreshJob() { + switch (operateType) { + case ADD: + addJob(); + break; + case UPDATE: + updateJob(); + break; + case CANCELED: + cancelJob(); + break; + default: + break; + } + } + + /** + * 新增岗位 + * + *

+ * 1、EC表HrmJobTitles + *

+ * 2、系统中新建“聚才林”、“默认职务”(sql写入) + *

+ * 3、检索岗位名称jobtitlename,如果已存在,判断是否封存,对已封存数据解封操作 + *

+ * 4、如果不存在,在“聚才林--默认职务”下新建岗位 + */ + private void addJob() { + // 判断是否存在同名岗位、存在不做处理,不存在,在“默认职务分类--默认职务”下新建岗位 + String jobName = Util.null2String(params.get("job_name")); + RecordInfo hrmJobActivity = getSystemDataMapper().getHrmJobTitleByName(jobName); + Map map = new HashMap<>(); + //存在且已封存,对岗位解封 + if (null != hrmJobActivity) { + map.put("ids", hrmJobActivity.getId()); + map.put("canceled", "docanceled"); + this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).doCanceled(map, user); + } else { + // 不存在则新建职务 + map.put("operateIp", Util.null2String(user.getLoginip())); + map.put("jobtitlemark", jobName); + map.put("jobtitlename", jobName); + map.put("jobactivityid", Util.null2String(params.get("jobactivityid"))); + map.put("jobresponsibility", Util.null2String(params.get("work_duty"))); + map.put("jobcompetency", Util.null2String(params.get("work_authority"))); + map.put("jobtitleremark", Util.null2String(params.get("description"))); + map.put("jobtitlecode", Util.null2String(params.get("job_no"))); + + this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).addJobTitle(map, user); + } + } + + /** + * 更新岗位 + */ + private void updateJob() { + Long jclJobId = oldJobPO.getId(); + String oldName = oldJobPO.getJobName(); + + String newName = Util.null2String(params.get("job_name")); + RecordInfo oldHrmJobTitle = getSystemDataMapper().getHrmJobTitleByName(oldName); + + Map map = new HashMap<>(); + // 修改前不存在共用 + if (EcHrmRelationUtil.isNotExistJob(oldName, jclJobId)) { + // 修改后不存在共用、直接修改EC岗位表数据 + if (EcHrmRelationUtil.isNotExistJob(newName, jclJobId)) { + // 查询ec表ID + RecordInfo hrmJobTitle = getSystemDataMapper().getHrmJobTitleByName(oldName); + map.put("id", Util.null2String(hrmJobTitle.getId())); + map.put("operateIp", Util.null2String(user.getLoginip())); + map.put("jobtitlemark", newName); + map.put("jobtitlename", newName); + map.put("jobactivityid", Util.null2String(params.get("jobactivityid"))); + map.put("jobresponsibility", Util.null2String(params.get("work_duty"))); + map.put("jobcompetency", Util.null2String(params.get("work_authority"))); + map.put("jobtitleremark", Util.null2String(params.get("description"))); + map.put("jobtitlecode", Util.null2String(params.get("job_no"))); + // 修改岗位表数据 + this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).editJobTitle(map, user); + } else { + // 修改后存在共用、不修改岗位表数据,更新对应人员的岗位信息为当前岗位的ID + RecordInfo hrmJobTitle = getSystemDataMapper().getHrmJobTitleByName(newName); + // 查询原分部、原岗位下的人员,并更新岗位ID + List hrmResourceIds = getSystemDataMapper().getHrmResourceIds(oldJobPO.getParentDept(), oldHrmJobTitle.getId()); + getSystemDataMapper().updateResourceJobTitleByIds(Util.null2String(hrmJobTitle.getId()), hrmResourceIds); + // 封存原名称岗位 + map.clear(); + map.put("ids", oldHrmJobTitle.getId()); + map.put("canceled", "canceled"); + this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).doCanceled(map, user); + } + } else { + // 修改前存在共用,不对原有数据进行操作。 + + // 修改后不存在共用、新建岗位,更新原有岗位下人员的岗位ID + if (EcHrmRelationUtil.isNotExistJob(newName, jclJobId)) { + // 不存在则新建职务 + map.put("operateIp", Util.null2String(user.getLoginip())); + map.put("jobtitlemark", newName); + map.put("jobtitlename", newName); + map.put("jobactivityid", Util.null2String(params.get("jobactivityid"))); + map.put("jobresponsibility", Util.null2String(params.get("work_duty"))); + map.put("jobcompetency", Util.null2String(params.get("work_authority"))); + map.put("jobtitleremark", Util.null2String(params.get("description"))); + map.put("jobtitlecode", Util.null2String(params.get("job_no"))); + this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).addJobTitle(map, user); + } else { + this.resultMap = new HashMap<>(); + this.resultMap.put("sign", "1"); + } + // 查询原分部、原岗位下的人员,并更新岗位ID + RecordInfo hrmJobTitle = getSystemDataMapper().getHrmJobTitleByName(newName); + List hrmResourceIds = getSystemDataMapper().getHrmResourceIds(oldJobPO.getParentDept(), oldHrmJobTitle.getId()); + if (CollectionUtils.isNotEmpty(hrmResourceIds)) { + getSystemDataMapper().updateResourceJobTitleByIds(Util.null2String(hrmJobTitle.getId()), hrmResourceIds); + } + } + } + + /** + * 封存、解封岗位 + */ + private void cancelJob() { + Map map = new HashMap<>(); + RecordInfo hrmJobTitleByName = getSystemDataMapper().getHrmJobTitleByName(oldJobPO.getJobName()); + if (0 == oldJobPO.getForbiddenTag()) { + // 启用 + map.put("ids", hrmJobTitleByName.getId()); + map.put("canceled", "docanceled"); + this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).doCanceled(map, user); + } else { + // 禁用 + List jobPOS = MapperProxyFactory.getProxy(JobMapper.class).listByNameExceptId(oldJobPO.getJobName(), oldJobPO.getId()); + // 不存在共用 + if (CollectionUtils.isEmpty(jobPOS)) { + map.put("ids", hrmJobTitleByName.getId()); + map.put("canceled", "canceled"); + this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).doCanceled(map, user); + } else { + List collect = jobPOS.stream().filter(item -> 0 == item.getForbiddenTag()).collect(Collectors.toList()); + // 不存在非禁用 + if (CollectionUtils.isEmpty(collect)) { + map.put("ids", hrmJobTitleByName.getId()); + map.put("canceled", "canceled"); + this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).doCanceled(map, user); + } + } + } + } + + /** + * 新增部门 + */ + private void addDepartment() { + Map 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", EcHrmRelationUtil.getEcCompanyId(parentCompany)); + } + + // 上级部门通过UUID联查ec表ID + String parentDepartment = Util.null2String(params.get("parent_dept")); + if (StringUtils.isNotBlank(parentDepartment)) { + map.put("supdepid", EcHrmRelationUtil.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"))); + this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).addDepartment(map, user); + // 更新jcl_org_dept表 uuid字段 + //if ("1".equals(Util.null2String(resultMap.get("status"))) && null != resultMap.get("id")) { + // updateJclUUID(Util.null2String(resultMap.get("id")), HRM_DEPARTMENT, JCL_DEPARTMENT); + //} + } + + /** + * 封存、解封部门 + */ + private void cancelDepartment() { + String departmentIds = Util.null2String(params.get("id")); + String forbiddenTag = Util.null2String(params.get("forbiddenTag")); + List idList = new ArrayList<>(); + String[] split = departmentIds.split(","); + if (StringUtils.isBlank(forbiddenTag)) { + long currentTimeMillis = System.currentTimeMillis(); + for (String s : split) { + DepartmentPO departmentPO = MapperProxyFactory.getProxy(DepartmentMapper.class).getDeptById(Long.parseLong(s)); + params.put("dept_name_short", departmentPO.getDeptNameShort() + currentTimeMillis); + params.put("dept_name", departmentPO.getDeptName() + currentTimeMillis); + params.put("parent_comp", departmentPO.getParentComp()); + params.put("parent_dept", departmentPO.getParentDept()); + params.put("show_order", departmentPO.getShowOrder()); + params.put("dept_no", departmentPO.getDeptNo()); + params.put("dept_principal", departmentPO.getDeptPrincipal()); + updateDepartment(); + idList.add(EcHrmRelationUtil.getEcDepartmentId(s)); + } + } else { + for (String s : split) { + idList.add(EcHrmRelationUtil.getEcDepartmentId(s)); + } + } + Map map = new HashMap<>(); + map.put("id", StringUtils.join(idList, ",")); + if ("0".equals(forbiddenTag)) { + // 解封 + this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).doDepartmentISCanceled(map, user); + } else { + // 封存 + this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).doDepartmentCancel(map, user); + } + } + + /** + * 更新部门 + */ + private void updateDepartment() { + Map map = new HashMap<>(); + // 获取ec表ID + map.put("id", EcHrmRelationUtil.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", EcHrmRelationUtil.getEcCompanyId(parentCompany)); + } + + // 上级部门通过UUID联查ec表ID + String parentDepartment = Util.null2String(params.get("parent_dept")); + if (StringUtils.isNotBlank(parentDepartment)) { + map.put("supdepid", EcHrmRelationUtil.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"))); + this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).editDepartment(map, user); + } + + /** + * 新增分部 + */ + private void addCompany() { + Map map = new HashMap<>(); + map.put("subcompanyname", Util.null2String(params.get("comp_name_short"))); + + // 上级分部通过UUID联查ec表ID + String parentCompany = Util.null2String(params.get("parent_company")); + if (StringUtils.isNotBlank(parentCompany)) { + map.put("supsubcomid", EcHrmRelationUtil.getEcCompanyId(parentCompany)); + } + + 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"))); + this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).addSubCompany(map, user); + // + //// 更新jcl_org_comp表 uuid字段 + //if ("1".equals(Util.null2String(resultMap.get("status"))) && null != resultMap.get("id")) { + // updateJclUUID(Util.null2String(resultMap.get("id")), HRM_COMPANY, JCL_COMPANY); + //} + } + + /** + * 更新分部 + */ + private void updateCompany() { + Map map = new HashMap<>(); + // 获取ec表ID + map.put("id", EcHrmRelationUtil.getEcCompanyId(Util.null2String(params.get("id")))); + + // 上级分部通过UUID联查ec表ID + String parentCompany = Util.null2String(params.get("parent_company")); + if (StringUtils.isNotBlank(parentCompany)) { + map.put("supsubcomid", EcHrmRelationUtil.getEcCompanyId(parentCompany)); + } + map.put("subcompanycode", Util.null2String(params.get("comp_no"))); + map.put("subcompanyname", Util.null2String(params.get("comp_name_short"))); + map.put("subcompanydesc", Util.null2String(params.get("comp_name"))); + map.put("showorder", Util.null2String(params.get("show_order"))); + this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).editSubCompany(map, user); + } + + /** + * 封存、解封分部 + */ + private void cancelCompany() { + String companyIds = Util.null2String(params.get("id")); + String forbiddenTag = Util.null2String(params.get("forbiddenTag")); + List idList = new ArrayList<>(); + String[] split = companyIds.split(","); + if (StringUtils.isBlank(forbiddenTag)) { + long currentTimeMillis = System.currentTimeMillis(); + for (String s : split) { + // 更新名称为:名称+时间戳 + CompPO comp = MapperProxyFactory.getProxy(CompMapper.class).listById(Long.parseLong(s)); + params.put("parent_company", comp.getParentCompany()); + params.put("comp_no", comp.getCompNo()); + params.put("comp_name", comp.getCompName() + currentTimeMillis); + params.put("comp_name_short", comp.getCompNameShort() + currentTimeMillis); + params.put("show_order", comp.getShowOrder()); + updateCompany(); + idList.add(EcHrmRelationUtil.getEcCompanyId(s)); + } + } else { + for (String s : split) { + idList.add(EcHrmRelationUtil.getEcCompanyId(s)); + } + } + Map map = new HashMap<>(); + map.put("id", StringUtils.join(idList, ",")); + + if ("0".equals(forbiddenTag)) { + // 解封 + this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).doSubCompanyISCanceled(map, user); + } else { + // 删除封存、禁用封存 + this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).doSubCompanyCancel(map, user); + } + } +}