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);
+ }
+ }
+}