!153 人员拓展卡片、分部更新EC

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

@ -74,6 +74,8 @@ public class CompPO {
*/
private Integer showOrder;
private String uuid;
private Long creator;
private int deleteType;
private Date createTime;

@ -13,7 +13,8 @@ public enum OperateTypeEnum {
DELETE("4", "删除"),
MOVE("5", "转移"),
MERGE("6", "合并"),
COPY("7", "复制");
COPY("7", "复制"),
CANCELED("8", "封存");
private String value;

@ -17,6 +17,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>
<!-- 表字段 -->
@ -38,6 +40,7 @@
, t.delete_type
, t.create_time
, t.update_time
, t.uuid
</sql>
<sql id="nullSql">

@ -30,4 +30,9 @@ public interface SystemDataMapper {
String getScDepartmentNameById(@Param("departmentId") String departmentId);
String getScHrmResourceNameById(@Param("managerId") String managerId);
JSONObject getHrmSubCompanyByID(@Param("id") String id);
JSONObject getHrmSubCompanyByUUID(@Param("uuid") String uuid);
}

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

@ -19,11 +19,14 @@ import com.engine.organization.entity.company.param.CompSearchParam;
import com.engine.organization.entity.company.po.CompPO;
import com.engine.organization.entity.department.param.DepartmentMoveParam;
import com.engine.organization.entity.extend.po.ExtendTitlePO;
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.extend.ExtendTitleMapper;
import com.engine.organization.service.CompService;
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;
@ -98,19 +101,19 @@ public class CompServiceImpl extends Service implements CompService {
boolean filter = isFilter(compPO);
PageInfo<CompListDTO> pageInfos;
String orderSql = PageInfoSortUtil.getSortSql(params.getSortParams());
List<CompPO> alltList = getCompMapper().list(orderSql);
List<CompPO> allList = getCompMapper().list(orderSql);
// 通过子级遍历父级元素
if (filter) {
// 根据条件获取元素
List<CompPO> filterCompPOs = getCompMapper().listByFilter(compPO, orderSql);
// 添加父级元素
List<CompListDTO> compListDTOS = CompBO.buildCompDTOList(alltList, filterCompPOs);
List<CompListDTO> compListDTOS = CompBO.buildCompDTOList(allList, filterCompPOs);
List<CompListDTO> subList = PageUtil.subList(params.getCurrent(), params.getPageSize(), compListDTOS);
pageInfos = new PageInfo<>(subList, CompListDTO.class);
pageInfos.setTotal(compListDTOS.size());
} else {
// 组合list
List<CompListDTO> compListDTOS = CompBO.buildCompDTOList(alltList);
List<CompListDTO> compListDTOS = CompBO.buildCompDTOList(allList);
List<CompListDTO> subList = PageUtil.subList(params.getCurrent(), params.getPageSize(), compListDTOS);
pageInfos = new PageInfo<>(subList, CompListDTO.class);
pageInfos.setTotal(compListDTOS.size());
@ -145,13 +148,20 @@ public class CompServiceImpl extends Service implements CompService {
int maxShowOrder = getCompMapper().getMaxShowOrder();
params.put("show_order", maxShowOrder + 1);
}
return 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);
new Thread(new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.ADD, params)).start();
return id;
}
@Override
public int updateForbiddenTagById(CompSearchParam params) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
CompPO compPO = CompPO.builder().id(params.getId()).forbiddenTag(params.getForbiddenTag() ? 0 : 1).build();
Map<String, Object> map = new HashMap<>();
map.put("id", compPO.getId());
map.put("forbiddenTag", compPO.getForbiddenTag());
new Thread(new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.CANCELED, map)).start();
return getCompMapper().updateForbiddenTagById(compPO);
}
@ -169,6 +179,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();
// 更新主表数据
getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_COMP, params, "", searchParam.getId());
// 更新主表拓展表
@ -183,6 +194,9 @@ public class CompServiceImpl extends Service implements CompService {
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.COMPANY, OperateTypeEnum.CANCELED, map)).start();
return getCompMapper().deleteByIds(ids);
}
@ -320,6 +334,14 @@ public class CompServiceImpl extends Service implements CompService {
OrganizationAssert.isFalse(disableIds.contains(targetCompanyId), "请勿选择当前分部本身及其子分部");
CompPO compPO = getCompMapper().listById(companyId);
compPO.setParentCompany(targetCompanyId);
Map<String, Object> map = new HashMap<>();
map.put("id", compPO.getId());
map.put("parent_company", compPO.getParentCompany());
map.put("comp_no", compPO.getCompNo());
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();
return getCompMapper().updateBaseComp(compPO);
}

@ -6,6 +6,7 @@ import com.api.browser.bean.SearchConditionItem;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.hrm.util.face.HrmFaceCheckManager;
import com.engine.organization.component.OrganizationWeaTable;
import com.engine.organization.entity.DeleteParam;
import com.engine.organization.entity.company.bo.CompBO;
@ -26,6 +27,7 @@ import com.engine.organization.mapper.comp.CompMapper;
import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.mapper.extend.ExtendTitleMapper;
import com.engine.organization.mapper.hrmresource.HrmRelationMapper;
import com.engine.organization.mapper.hrmresource.SystemDataMapper;
import com.engine.organization.mapper.job.JobMapper;
import com.engine.organization.mapper.post.PostInfoMapper;
import com.engine.organization.mapper.post.PostMapper;
@ -292,7 +294,7 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
OrganizationAssert.notBlank(id, "数据有误,请确认");
int viewAttr = Integer.parseInt(viewAttrStr);
Map<String, Object> apiDatas = new HashMap<>();
List<SearchConditionItem> selectItems = new ArrayList<>();
List<SearchConditionGroup> addGroups = new ArrayList<>();
SearchConditionItem schemeId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "等级方案", "161", "schemeId", "schemeBrowser");
schemeId.setRules("required");
@ -306,9 +308,9 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
postId.setRules("required");
SearchConditionItem postInfoId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "职务信息", "161", "postInfoId", "postInfoBrowser");
postInfoId.setRules("required");
SearchConditionItem companyId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "分部", "161", "companyId", "compBrowser");
SearchConditionItem companyId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "分部", "164", "companyId", "");
companyId.setRules("required");
SearchConditionItem departmentId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "部门", "161", "departmentId", "deptBrowser");
SearchConditionItem departmentId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "部门", "4", "departmentId", "");
departmentId.setRules("required");
SearchConditionItem jobId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "岗位", "161", "jobId", "jobBrowser");
jobId.setRules("required");
@ -323,21 +325,26 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
setBrowserValue(sequenceId, relationPO.getSequenceId(), getSequenceMapper().listSequencesByIds(Stream.of(relationPO.getSequenceId()).collect(Collectors.toList())), "scheme_id", relationPO.getSchemeId());
setBrowserValue(postId, relationPO.getPostId(), getPostMapper().listPostsByIds(Stream.of(relationPO.getPostId()).collect(Collectors.toList())), null, null);
setBrowserValue(postInfoId, relationPO.getPostInfoId(), getPostInfoMapper().listPostInfosByIds(Stream.of(relationPO.getPostInfoId()).collect(Collectors.toList())), "post_id", relationPO.getPostId());
setBrowserValue(companyId, relationPO.getCompanyId(), getCompMapper().listCompsByIds(Stream.of(relationPO.getCompanyId()).collect(Collectors.toList())), null, null);
setBrowserValue(departmentId, relationPO.getDepartmentId(), getDepartmentMapper().listDeptsByIds(Stream.of(relationPO.getDepartmentId()).collect(Collectors.toList())), "comp_id", relationPO.getCompanyId());
setBrowserValue(jobId, relationPO.getJobId(), getJobMapper().listJobsByIds(Stream.of(relationPO.getJobId()).collect(Collectors.toList())), "dept_id", relationPO.getDepartmentId());
}
selectItems.add(schemeId);
selectItems.add(gradeId);
selectItems.add(levelId);
selectItems.add(sequenceId);
selectItems.add(postId);
selectItems.add(postInfoId);
selectItems.add(companyId);
selectItems.add(departmentId);
selectItems.add(jobId);
addGroups.add(new SearchConditionGroup("基本信息", true, selectItems));
List<Map<String, Object>> companyMaps = new ArrayList<>();
String scCompanyNameById = MapperProxyFactory.getProxy(SystemDataMapper.class).getScCompanyNameById(relationPO.getCompanyId().toString());
Map<String, Object> companyMap = new HashMap<>();
companyMap.put(relationPO.getCompanyId().toString(), scCompanyNameById);
companyMaps.add(companyMap);
setBrowserValue(companyId, relationPO.getCompanyId(), companyMaps, null, null);
List<Map<String, Object>> departmentMaps = new ArrayList<>();
String departmentNameById = MapperProxyFactory.getProxy(SystemDataMapper.class).getScDepartmentNameById(relationPO.getDepartmentId().toString());
Map<String, Object> departmentMap = new HashMap<>();
departmentMap.put(relationPO.getDepartmentId().toString(), departmentNameById);
departmentMaps.add(departmentMap);
setBrowserValue(departmentId, relationPO.getDepartmentId(), departmentMaps, "subcompany1", relationPO.getCompanyId());
setBrowserValue(jobId, relationPO.getJobId(), getJobMapper().listJobsByIds(Stream.of(relationPO.getJobId()).collect(Collectors.toList())), "departmentid", relationPO.getDepartmentId());
}
addGroups.add(new SearchConditionGroup("岗职位体系", true, Stream.of(schemeId, gradeId, levelId, sequenceId, postId, postInfoId).collect(Collectors.toList())));
addGroups.add(new SearchConditionGroup("组织机构", true, Stream.of(companyId, departmentId, jobId).collect(Collectors.toList())));
HashMap<String, Object> buttonsMap = new HashMap<>();
buttonsMap.put("hasEdit", true);
buttonsMap.put("hasSave", true);
@ -359,8 +366,20 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
@Override
public long updateTabForm(HrmRelationSaveParam params) {
HrmRelationPO hrmRelationPO = HrmRelationBO.convertSaveParamToPO(params);
// 判断新增OR更新
HrmRelationPO relationPO = getHrmRelationMapper().getRelationById(params.getId());
if (null == relationPO) {
hrmRelationPO.setCreator((long) user.getUID());
hrmRelationPO.setCreateTime(new Date());
hrmRelationPO.setDeleteType(0);
getHrmRelationMapper().insertIgnoreNull(hrmRelationPO);
} else {
hrmRelationPO.setUpdateTime(new Date());
getHrmRelationMapper().updateHrmRelation(hrmRelationPO);
}
RecordSet rs = new RecordSet();
rs.execute("update HrmResource set subcompanyid1 = " + params.getCompanyId() + " ,departmentid = " + params.getDepartmentId() + " ,jobtitle = " + params.getJobId() + " where id = " + params.getId());
HrmFaceCheckManager.sync(params.getId().toString(), HrmFaceCheckManager.getOptUpdate(), "hrm_e9_HrmResourceBaseService_editResourceBase", HrmFaceCheckManager.getOaResource());
return hrmRelationPO.getId();
}

@ -22,9 +22,7 @@ import com.engine.organization.entity.job.bo.JobBO;
import com.engine.organization.entity.job.dto.JobListDTO;
import com.engine.organization.entity.job.param.JobMergeParam;
import com.engine.organization.entity.job.param.JobSearchParam;
import com.engine.organization.entity.job.po.JobDTPO;
import com.engine.organization.entity.job.po.JobPO;
import com.engine.organization.entity.scheme.po.GradePO;
import com.engine.organization.entity.searchtree.SearchTree;
import com.engine.organization.entity.searchtree.SearchTreeParams;
import com.engine.organization.mapper.codesetting.CodeRuleMapper;
@ -33,8 +31,6 @@ import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.mapper.extend.ExtendTitleMapper;
import com.engine.organization.mapper.job.JobDTMapper;
import com.engine.organization.mapper.job.JobMapper;
import com.engine.organization.mapper.scheme.GradeMapper;
import com.engine.organization.mapper.scheme.LevelMapper;
import com.engine.organization.service.ExtService;
import com.engine.organization.service.JobService;
import com.engine.organization.util.*;
@ -316,19 +312,7 @@ public class JobServiceImpl extends Service implements JobService {
int maxShowOrder = getJobMapper().getMaxShowOrder();
params.put("show_order", maxShowOrder + 1);
}
Long jobId = getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_JOB, params, "", null);
if (null != searchParam.getSchemeId()) {
// 插入明细表信息
// 根据等级方案查询职等、职级
List<GradePO> gradePOS = MapperProxyFactory.getProxy(GradeMapper.class).listGradesBySchemeId(searchParam.getSchemeId());
for (GradePO gradePO : gradePOS) {
List<Map<String, Object>> maps = MapperProxyFactory.getProxy(LevelMapper.class).listLevelsByIds(DeleteParam.builder().ids(gradePO.getLevelId()).build().getIds());
String levelNames = maps.stream().map(item -> (String) item.get("name")).collect(Collectors.joining(","));
getJobDTMapper().insertIgnoreNull(JobDTPO.builder().levelId(gradePO.getLevelId()).gradeId(gradePO.getId() + "").levelIdspan(levelNames).gradeIdspan(gradePO.getGradeName()).mainId(jobId).creator((long) user.getUID()).deleteType(0).createTime(new Date()).updateTime(new Date()).build());
}
}
return jobId;
return getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_JOB, params, "", null);
}
@Override

@ -0,0 +1,201 @@
package com.engine.organization.thread;
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.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.extend.ExtMapper;
import com.engine.organization.mapper.hrmresource.SystemDataMapper;
import com.engine.organization.util.db.MapperProxyFactory;
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;
/**
* @author:dxfeng
* @createTime: 2022/07/12
* @version: 1.0
*/
public class OrganizationRunable implements Runnable {
private LogModuleNameEnum moduleName;
private OperateTypeEnum operateType;
private Map<String, Object> params;
private User user;
private SystemDataMapper getSystemDataMapper() {
return MapperProxyFactory.getProxy(SystemDataMapper.class);
}
private ExtMapper getExtMapper() {
return MapperProxyFactory.getProxy(ExtMapper.class);
}
private CompMapper getCompMapper() {
return MapperProxyFactory.getProxy(CompMapper.class);
}
public OrganizationRunable(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map<String, Object> params) {
this.moduleName = moduleName;
this.operateType = operateType;
this.params = params;
this.user = user;
}
@Override
public void run() {
switch (moduleName) {
case COMPANY:
refreshCompany();
break;
case DEPARTMENT:
refreshDepartment();
break;
case JOB:
refreshJob();
break;
default:
break;
}
}
/**
* HrmSubCompany
*/
private void refreshCompany() {
switch (operateType) {
case ADD:
addCompany();
break;
case UPDATE:
updateCompany();
break;
case CANCELED:
cancelCompany();
break;
default:
break;
}
}
private void refreshDepartment() {
switch (operateType) {
case ADD:
break;
case UPDATE:
break;
case DELETE:
break;
default:
break;
}
}
private void refreshJob() {
switch (operateType) {
case ADD:
break;
case UPDATE:
break;
case DELETE:
break;
default:
break;
}
}
/**
*
*/
private void addCompany() {
Map<String, Object> map = new HashMap<>();
map.put("subcompanyname", params.get("comp_name_short").toString());
// 上级分部通过UUID联查ec表ID
String parentCompany = Util.null2String(params.get("parent_company"));
if (StringUtils.isNotBlank(parentCompany)) {
map.put("supsubcomid", 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")));
Map<String, Object> stringObjectMap = 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);
}
}
/**
*
*/
private void updateCompany() {
Map<String, Object> map = new HashMap<>();
// 获取ec表ID
map.put("id", getEcCompanyId(Util.null2String(params.get("id"))));
// 上级分部通过UUID联查ec表ID
String parentCompany = Util.null2String(params.get("parent_company"));
if (StringUtils.isNotBlank(parentCompany)) {
map.put("supsubcomid", 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")));
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<String> idList = new ArrayList<>();
String[] split = companyIds.split(",");
for (String s : split) {
idList.add(getEcCompanyId(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).doSubCompanyCancel(map, user);
} else {
// 解封
ServiceUtil.getService(OrganizationServiceImpl.class, user).doSubCompanyISCanceled(map, user);
}
}
/**
* jcl_org_comp.idHrmSubCompany.id
*
* @param companyId
* @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());
return supSubCompany.getString("id");
}
}
Loading…
Cancel
Save