You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
weaver-hrm-organization/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java

830 lines
42 KiB
Java

3 years ago
package com.engine.organization.service.impl;
import com.api.browser.bean.SearchConditionGroup;
import com.api.browser.bean.SearchConditionItem;
import com.api.hrm.bean.HrmFieldBean;
import com.api.hrm.util.HrmFieldSearchConditionComInfo;
import com.cloudstore.eccom.result.WeaResultMsg;
3 years ago
import com.engine.core.impl.Service;
import com.engine.hrm.util.face.HrmFaceCheckManager;
import com.engine.organization.component.OrganizationWeaTable;
3 years ago
import com.engine.organization.entity.DeleteParam;
import com.engine.organization.entity.company.bo.CompBO;
import com.engine.organization.entity.company.po.CompPO;
3 years ago
import com.engine.organization.entity.department.bo.DepartmentBO;
import com.engine.organization.entity.department.po.DepartmentPO;
import com.engine.organization.entity.fieldset.param.TransferDataParam;
import com.engine.organization.entity.hrmresource.bo.HrmRelationBO;
import com.engine.organization.entity.hrmresource.param.HrmRelationSaveParam;
import com.engine.organization.entity.hrmresource.param.HrmResourceSearchParam;
import com.engine.organization.entity.hrmresource.param.SearchTemplateParam;
import com.engine.organization.entity.hrmresource.po.HrmRelationPO;
import com.engine.organization.entity.hrmresource.po.SearchTemplatePO;
import com.engine.organization.entity.hrmresource.vo.HrmResourceVO;
import com.engine.organization.entity.jclimport.po.CusFormFieldPO;
3 years ago
import com.engine.organization.entity.job.bo.JobBO;
import com.engine.organization.entity.job.po.JobPO;
import com.engine.organization.entity.searchtree.SearchTree;
import com.engine.organization.entity.searchtree.SearchTreeParams;
import com.engine.organization.mapper.comp.CompMapper;
3 years ago
import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.mapper.hrmresource.HrmRelationMapper;
import com.engine.organization.mapper.hrmresource.SystemDataMapper;
3 years ago
import com.engine.organization.mapper.job.JobMapper;
import com.engine.organization.mapper.resource.HrmResourceMapper;
3 years ago
import com.engine.organization.service.HrmResourceService;
import com.engine.organization.util.HasRightUtil;
import com.engine.organization.util.MenuBtn;
import com.engine.organization.util.OrganizationAssert;
import com.engine.organization.util.db.DBType;
3 years ago
import com.engine.organization.util.db.MapperProxyFactory;
import com.engine.organization.util.detach.DetachUtil;
3 years ago
import com.engine.organization.util.page.PageUtil;
3 years ago
import com.engine.organization.util.tree.SearchTreeUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONException;
import org.json.JSONObject;
import weaver.conn.RecordSet;
3 years ago
import weaver.general.StringUtil;
import weaver.general.Util;
import weaver.hrm.definedfield.HrmFieldManager;
import weaver.systeminfo.SystemEnv;
3 years ago
import java.util.*;
import java.util.stream.Collectors;
/**
* @author:dxfeng
* @createTime: 2022/06/20
* @version: 1.0
*/
public class HrmResourceServiceImpl extends Service implements HrmResourceService {
/**
*
* <p>
* 0
* 1
* 2
* 3
*/
private static final String TYPE_COMP = "1";
private static final String TYPE_DEPT = "2";
private static final String TYPE_JOB = "3";
private static final String RIGHT_NAME = "Roster:All";
private HrmRelationMapper getHrmRelationMapper() {
return MapperProxyFactory.getProxy(HrmRelationMapper.class);
}
3 years ago
private DepartmentMapper getDepartmentMapper() {
return MapperProxyFactory.getProxy(DepartmentMapper.class);
}
private CompMapper getCompMapper() {
return MapperProxyFactory.getProxy(CompMapper.class);
3 years ago
}
private JobMapper getJobMapper() {
return MapperProxyFactory.getProxy(JobMapper.class);
}
private HrmResourceMapper getHrmResourceMapper() {
return MapperProxyFactory.getProxy(HrmResourceMapper.class);
}
private SystemDataMapper getSystemDataMapper() {
return MapperProxyFactory.getProxy(SystemDataMapper.class);
}
3 years ago
@Override
public Map<String, Object> getSearchTree(SearchTreeParams params) {
String keyword = params.getKeyword();
String id = params.getId();
String type = Util.null2String(params.getType());
List<SearchTree> treeList = getFilterCompany(id, type, keyword);
return SearchTreeUtil.getSearchTree(type, treeList);
}
@Override
public Map<String, Object> listPage(HrmResourceSearchParam params) {
OrganizationWeaTable<HrmResourceVO> table = new OrganizationWeaTable<>(user, HrmResourceVO.class);
String sqlWhere = buildSqlWhere(params);
table.setSqlwhere(sqlWhere);
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult());
result.success();
return new HashMap<>(result.getResultMap());
}
@Override
public Map<String, Object> getSaveForm() {
Map<String, Object> apiDatas = new HashMap<>();
List<SearchConditionGroup> addGroups = new ArrayList<>();
//List<ExtendTitlePO> extendTitles = getExtendTitleMapper().getTitlesByGroupID(GROUP_ID, "1");
//if (CollectionUtils.isNotEmpty(extendTitles)) {
// for (ExtendTitlePO extendTitle : extendTitles) {
// List<SearchConditionItem> items = getExtService(user).getExtSaveForm(user, EXTEND_TYPE + "", JCL_ORG_HRM, 2, extendTitle.getId().toString(), null, null, null);
// if (CollectionUtils.isNotEmpty(items)) {
// addGroups.add(new SearchConditionGroup(extendTitle.getTitle(), true, items));
// }
// }
//}
apiDatas.put("condition", addGroups);
return apiDatas;
}
@Override
public Long saveBaseForm(Map<String, Object> params) {
//HasRightUtil.hasRight(user, RIGHT_NAME, false);
//String workCode = (String) params.get("work_code");
//// 判断是否开启自动编号
//workCode = repeatDetermine(workCode);
//params.put("work_code", workCode);
//// 完善新增参数
//completeParams(params);
//
//// 新增EC人员,新增成功后,新增到聚才林人员表
//Map<String, Object> syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.RESOURCE, OperateTypeEnum.ADD, params).sync();
//String ecResourceId = Util.null2String(syncMap.get("id"));
//OrganizationAssert.isTrue(StringUtils.isNotBlank(ecResourceId), Util.null2String(syncMap.get("message")));
//// 获取人员UUID
//RecordInfo recordInfo = getSystemDataMapper().getHrmObjectByID(HRM_RESOURCE, ecResourceId);
//params.put("uuid", recordInfo.getUuid());
//Long resourceId = getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_HRM, params, "", null);
// TODO new HrmResourceTriggerRunnable(resourceId).run();
//return resourceId;
return 0L;
}
@Override
public Map<String, Object> getBaseForm(Map<String, Object> params) {
//OrganizationAssert.notNull(params.get("viewAttr"), "请标识操作类型");
//// 2编辑 1查看
//int viewAttr = Integer.parseInt((String) params.get("viewAttr"));
//long id = Long.parseLong((String) params.get("id"));
//String groupId = (String) params.get("viewCondition");
//
//HashMap<String, Object> buttonsMap = new HashMap<>();
//buttonsMap.put("hasEdit", true);
//buttonsMap.put("hasSave", true);
//
//List<SearchConditionGroup> addGroups = new ArrayList<>();
//if ("0".equals(groupId)) {
// groupId = GROUP_ID.toString();
//}
//List<ExtendTitlePO> extendTitles = getExtendTitleMapper().getTitlesByGroupID(Long.parseLong(groupId), "1");
//
//if (CollectionUtils.isNotEmpty(extendTitles)) {
// for (ExtendTitlePO extendTitle : extendTitles) {
// List<SearchConditionItem> items = getExtService(user).getExtForm(user, EXTEND_TYPE + "", GROUP_ID.equals(Long.parseLong(groupId)) ? JCL_ORG_HRM : JCL_ORG_HRMEXT, viewAttr, id, extendTitle.getId() + "", "");
// if (CollectionUtils.isNotEmpty(items)) {
// addGroups.add(new SearchConditionGroup(extendTitle.getTitle(), true, items));
// }
// }
//}
//
//HashMap<String, Object> resultMap = new HashMap<>();
//resultMap.put("buttons", buttonsMap);
//resultMap.put("conditions", addGroups);
//resultMap.put("id", id);
//// 拓展页面分组
//resultMap.put("tabInfo", getExtService(user).getTabInfo(EXTEND_TYPE, JCL_ORG_HRMEXT));
//// 处理明细表
//resultMap.put("tables", getExtService(user).getExtendTables(user, EXTEND_TYPE, Long.parseLong(groupId), JCL_ORG_HRMEXT_DT1, id, viewAttr, false));
//Map<String, Object> apiDatas = new HashMap<>();
//
//apiDatas.put("result", resultMap);
//
//return apiDatas;
return new HashMap<>();
}
@Override
public int updateForm(Map<String, Object> params) {
//Long id = Long.parseLong((String) params.get("id"));
//String groupId = (String) params.get("viewCondition");
//int updateCount = 0;
//if ("0".equals(groupId) || GROUP_ID.toString().equals(groupId)) {
// // 判断编号是否重复
// String workCode = Util.null2String(params.get("work_code"));
// HrmResourcePO resourceById = getResourceMapper().getResourceById(id.toString());
// if (!workCode.equals(resourceById.getWorkCode())) {
// workCode = repeatDetermine(workCode);
// params.put("work_code", workCode);
// }
//
// // 完善更新参数
// completeParams(params);
//
// // 更新EC人员,更新成功后,更新聚才林人员表
// Map<String, Object> syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.RESOURCE, OperateTypeEnum.UPDATE, params).sync();
// String ecResourceId = Util.null2String(syncMap.get("id"));
// OrganizationAssert.isTrue(StringUtils.isNotBlank(ecResourceId), Util.null2String(syncMap.get("message")));
//
// // 更新主表数据
// updateCount += getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_HRM, params, "", id);
//
// // TODO new HrmResourceTriggerRunnable(id).run();
//} else {
// // 更新主表拓展表
// getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_HRMEXT, params, "", id);
//}
////更新明细表
//getExtService(user).updateExtDT(user, EXTEND_TYPE, JCL_ORG_HRMEXT_DT1, params, id);
//
//return updateCount;
return 0;
}
@Override
public List<SearchTemplateParam> getSearchTemplate() {
int userUID = user.getUID();
// 根据ID查询所存储的模板
List<SearchTemplateParam> templates = getHrmResourceMapper().getSearchTemplatesByUser(userUID);
templates.add(0, SearchTemplateParam.builder().key("-1").selected(false).showName("默认模板").build());
return templates;
}
@Override
public List<SearchConditionGroup> getAllConditions() {
HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo();
List<SearchConditionGroup> addGroups = new ArrayList<>();
List<SearchConditionItem> basicConditionItems = new ArrayList<>();
List<SearchConditionItem> personalConditionItems = new ArrayList<>();
List<SearchConditionItem> workConditionItems = new ArrayList<>();
// 基本信息:-1
List<CusFormFieldPO> hrmFieldsByScopeId = getSystemDataMapper().getHrmFieldsByScopeId("-1");
createConditionItems(hrmFieldSearchConditionComInfo, hrmFieldsByScopeId, basicConditionItems);
if (CollectionUtils.isNotEmpty(basicConditionItems)) {
addGroups.add(new SearchConditionGroup("基本信息", true, basicConditionItems));
}
// 个人信息1
hrmFieldsByScopeId = getSystemDataMapper().getHrmFieldsByScopeId("1");
createConditionItems(hrmFieldSearchConditionComInfo, hrmFieldsByScopeId, personalConditionItems);
if (CollectionUtils.isNotEmpty(personalConditionItems)) {
addGroups.add(new SearchConditionGroup("个人信息", true, personalConditionItems));
}
// 工作信息3
hrmFieldsByScopeId = getSystemDataMapper().getHrmFieldsByScopeId("3");
createConditionItems(hrmFieldSearchConditionComInfo, hrmFieldsByScopeId, workConditionItems);
if (CollectionUtils.isNotEmpty(workConditionItems)) {
addGroups.add(new SearchConditionGroup("工作信息", true, workConditionItems));
}
return addGroups;
}
@Override
public void saveSearchTemplate(SearchTemplateParam params) {
String[] split = params.getFields().split(",");
if (split.length > 0) {
List<String> basicFieldsBuilder = new ArrayList<>();
List<String> personalFieldsBuilder = new ArrayList<>();
List<String> workFieldsBuilder = new ArrayList<>();
for (String fieldName : split) {
if (fieldName.startsWith("-1")) {
basicFieldsBuilder.add(fieldName.substring(fieldName.lastIndexOf("_") + 1));
} else if (fieldName.startsWith("1")) {
personalFieldsBuilder.add(fieldName.substring(fieldName.lastIndexOf("_") + 1));
} else if (fieldName.startsWith("3")) {
workFieldsBuilder.add(fieldName.substring(fieldName.lastIndexOf("_") + 1));
}
2 years ago
}
SearchTemplatePO searchTemplatePO = SearchTemplatePO.builder().name(params.getShowName()).basicFields(StringUtils.join(basicFieldsBuilder, ",")).personalFields(StringUtils.join(personalFieldsBuilder, ",")).workFields(StringUtils.join(workFieldsBuilder, ",")).creator(user.getUID()).createTime(new Date()).updateTime(new Date()).build();
getHrmResourceMapper().insertSearchTemplate(searchTemplatePO);
// 保存模板
2 years ago
}
}
@Override
public Map<String, Object> getSearchCondition(Map<String, Object> params) {
String templateId = Util.null2String(params.get("templateId"));
if (StringUtils.isBlank(templateId)) {
templateId = "-1";
}
Map<String, Object> apiDatas = new HashMap<>();
List<SearchConditionGroup> addGroups = new ArrayList<>();
List<SearchConditionGroup> allConditions = getAllConditions();
// 穿梭框ID展示所选字段信息
HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo();
if ("-1".equals(templateId)) {
// 未选择模板展示默认模板搜索条件
List<SearchConditionItem> searchConditionItems = new ArrayList<>();
List<CusFormFieldPO> hrmFieldsByScopeId = getSystemDataMapper().getHrmFieldsByScopeId("-1");
createConditionItems(hrmFieldSearchConditionComInfo, hrmFieldsByScopeId, searchConditionItems);
if (CollectionUtils.isNotEmpty(searchConditionItems)) {
addGroups.add(new SearchConditionGroup("基本信息", true, searchConditionItems));
}
} else {
// 选择模板则遍历所选模板所选字段
SearchTemplatePO searchTemplateById = getHrmResourceMapper().getSearchTemplateById(templateId);
String[] basicFields = Util.null2String(searchTemplateById.getBasicFields()).split(",");
if (basicFields.length > 0) {
getTemplateItems(hrmFieldSearchConditionComInfo, addGroups, "基本信息", -1, basicFields);
}
String[] personalFields = Util.null2String(searchTemplateById.getPersonalFields()).split(",");
if (personalFields.length > 0) {
getTemplateItems(hrmFieldSearchConditionComInfo, addGroups, "个人信息", 1, personalFields);
}
String[] workFields = Util.null2String(searchTemplateById.getWorkFields()).split(",");
if (workFields.length > 0) {
getTemplateItems(hrmFieldSearchConditionComInfo, addGroups, "工作信息", 3, workFields);
}
}
apiDatas.put("defaultcondition", addGroups);
apiDatas.put("conditions", allConditions);
List<SearchTemplateParam> searchTemplate = getSearchTemplate();
String finalTemplateId = templateId;
searchTemplate.forEach(item -> {
if (finalTemplateId.equals(item.getKey())) {
item.setSelected(true);
}
});
apiDatas.put("templates", searchTemplate);
return apiDatas;
}
@Override
public Map<String, Object> getHasRight() {
Map<String, Object> btnDatas = new HashMap<>();
if (HasRightUtil.hasRight(user, RIGHT_NAME, true)) {
ArrayList<MenuBtn> topMenuList = new ArrayList<>();
ArrayList<MenuBtn> rightMenuList = new ArrayList<>();
topMenuList.add(MenuBtn.builder().isBatch("1").isTop("1").menuFun("new").menuIcon("icon-coms-New-Flow").menuName("新建人员").type("BTN_Addnew").build());
btnDatas.put("topMenu", topMenuList);
rightMenuList.add(MenuBtn.builder().isBatch("1").isTop("1").menuFun("new").menuIcon("icon-coms-New-Flow").menuName("新建人员").type("BTN_Addnew").build());
rightMenuList.add(MenuBtn.builder().isBatch("0").isTop("0").menuFun("custom").menuIcon("icon-coms-task-list").menuName("显示列定制").type("BTN_COLUMN").build());
rightMenuList.add(MenuBtn.rightMenu_btnLog());
btnDatas.put("rightMenu", rightMenuList);
}
btnDatas.put("hasRight", true);
return btnDatas;
}
@Override
public Map<String, Object> getTabForm(Map<String, Object> params) {
String viewAttrStr = (String) params.get("viewAttr");
OrganizationAssert.notBlank(viewAttrStr, "未指定操作类型,请确认");
String id = Util.null2String(params.get("id"));
OrganizationAssert.notBlank(id, "数据有误,请确认");
int viewAttr = Integer.parseInt(viewAttrStr);
Map<String, Object> apiDatas = new HashMap<>();
//List<SearchConditionGroup> addGroups = new ArrayList<>();
//SearchConditionItem schemeId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "等级方案", "161", "schemeId", "schemeBrowser");
//schemeId.setRules("required");
//SearchConditionItem gradeId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "职级", "161", "gradeId", "gradeBrowser");
//gradeId.setRules("required");
//SearchConditionItem levelId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "职等", "162", "levelId", "levelBrowser");
//levelId.setRules("required");
//SearchConditionItem sequenceId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "岗位序列", "161", "sequenceId", "sequenceBrowser");
//sequenceId.setRules("required");
//SearchConditionItem postId = OrganizationFormItemUtil.browserItem(user, 2, 17, viewAttr, false, "职务分类", "161", "postId", "postBrowser");
//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, "分部", "164", "companyId", "");
//companyId.setRules("required");
//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");
//
//
//// 编辑状态下赋值操作
//HrmRelationPO relationPO = getHrmRelationMapper().getRelationById(Long.parseLong(id));
//if (null != relationPO) {
// setBrowserValue(schemeId, relationPO.getSchemeId(), getSchemeMapper().listSchemesByIds(Stream.of(relationPO.getSchemeId()).collect(Collectors.toList())), null, null);
// setBrowserValue(gradeId, relationPO.getGradeId(), getGradeMapper().listGradessByIds(Stream.of(relationPO.getGradeId()).collect(Collectors.toList())), "scheme_id", relationPO.getSchemeId());
// setBrowserValue(levelId, relationPO.getLevelId(), getLevelMapper().listLevelsByIds(DeleteParam.builder().ids(relationPO.getLevelId()).build().getIds()), "grade_id", relationPO.getGradeId());
// 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());
//
// 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);
//apiDatas.put("buttons", buttonsMap);
//apiDatas.put("conditions", addGroups);
return apiDatas;
}
@Override
public long saveTabForm(HrmRelationSaveParam params) {
HrmRelationPO hrmRelationPO = HrmRelationBO.convertSaveParamToPO(params);
hrmRelationPO.setCreator((long) user.getUID());
hrmRelationPO.setCreateTime(new Date());
hrmRelationPO.setDeleteType(0);
getHrmRelationMapper().insertIgnoreNull(hrmRelationPO);
return hrmRelationPO.getId();
}
@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();
}
/**
*
*
* @param params
* @return
*/
private String buildSqlWhere(HrmResourceSearchParam params) {
DBType dbType = DBType.get(new RecordSet().getDBType());
String sqlWhere = " where 1=1 ";
String lastName = params.getLastName();
if (StringUtils.isNotBlank(lastName)) {
sqlWhere += " AND t.lastname " + dbType.like(lastName);
}
Long companyId = params.getCompanyId();
if (null != companyId) {
sqlWhere += " AND t.subcompanyid1 = '" + companyId + "'";
}
Long departmentId = params.getDepartmentId();
if (null != departmentId) {
sqlWhere += " AND t.departmentid = '" + departmentId + "'";
}
Long ecCompany = params.getEcCompany();
if (null != ecCompany) {
sqlWhere += " AND t.subcompanyid1 = '" + ecCompany + "'";
}
Long ecDepartment = params.getEcDepartment();
if (null != ecDepartment) {
sqlWhere += " AND t.departmentid = '" + ecDepartment + "'";
}
String telephone = params.getTelephone();
if (StringUtils.isNotBlank(telephone)) {
sqlWhere += " AND t.telephone " + dbType.like(telephone);
}
String mobile = params.getMobile();
if (StringUtils.isNotBlank(mobile)) {
sqlWhere += " AND t.mobile " + dbType.like(mobile);
}
Long jobTitle = params.getJobTitle();
if (null != jobTitle) {
JobPO ecJobTitleByJobId = JobBO.getEcJobTitleByJobId(jobTitle);
if (null != ecJobTitleByJobId) {
sqlWhere += " AND t.subcompanyid1 = '" + ecJobTitleByJobId.getEcCompany() + "'";
sqlWhere += " AND t.departmentid = '" + ecJobTitleByJobId.getEcDepartment() + "'";
sqlWhere += " AND t.jobtitle = '" + ecJobTitleByJobId.getEcJobTitle() + "'";
} else {
sqlWhere = " where 1 = 2 ";
}
}
// 分权查询
DetachUtil detachUtil = new DetachUtil(user);
String parentCompanyIds = detachUtil.getJclRoleLevels();
if (detachUtil.isDETACH()) {
sqlWhere += " And t.subcompanyid1 in(" + parentCompanyIds + ")";
}
return sqlWhere;
}
3 years ago
public List<SearchTree> getFilterCompany(String id, String type, String keyword) {
List<SearchTree> searchTree = new ArrayList<>();
// 通过分部、公司 组装数据
if (StringUtil.isEmpty(id) || TYPE_COMP.equals(type)) {
Integer parentCompId = StringUtil.isEmpty(id) ? null : Integer.parseInt(id);
DepartmentPO departmentBuild = DepartmentPO.builder().departmentName(keyword).subCompanyId1(parentCompId).canceled(0).build();
CompPO compBuild = CompPO.builder().subCompanyName(keyword).supSubComId(parentCompId).canceled(0).build();
3 years ago
// 所属分部下的岗位
JobPO jobBuild = JobPO.builder().jobTitleName(keyword).ecCompany(parentCompId).forbiddenTag(0).build();
3 years ago
searchTree = buildTreeByCompAndDept(departmentBuild, compBuild, jobBuild);
} else if (TYPE_DEPT.equals(type)) {
Integer parentDeptId = Integer.parseInt(id);
DepartmentPO departmentBuild = DepartmentPO.builder().departmentName(keyword).supDepId(parentDeptId).canceled(0).build();
3 years ago
// 所属分部下的岗位
JobPO jobBuild = JobPO.builder().jobTitleName(keyword).ecDepartment(parentDeptId).forbiddenTag(0).build();
3 years ago
searchTree = buildTreeByDeptAndJob(departmentBuild, jobBuild);
} else if (TYPE_JOB.equals(type)) {
// 查询部门信息
List<JobPO> filterDeparts = getJobMapper().listPOsByFilter(JobPO.builder().jobTitleName(keyword).parentJob(Long.parseLong(id)).forbiddenTag(0).build());
3 years ago
Set<JobPO> builderJobs = new HashSet<>();
for (JobPO departmentPO : filterDeparts) {
buildParentJobs(departmentPO, builderJobs);
}
searchTree = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs));
}
return searchTree;
}
/**
*
*
* @param departmentBuild
* @param compBuild
* @param jobBuild
* @return
*/
private List<SearchTree> buildTreeByCompAndDept(DepartmentPO departmentBuild, CompPO compBuild, JobPO jobBuild) {
3 years ago
List<JobPO> jobPOS = getJobMapper().listPOsByFilter(jobBuild);
new DetachUtil(user).filterJobList(jobPOS);
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder");
new DetachUtil(user).filterDepartmentList(filterDeparts);
3 years ago
// 添加父级岗位
Set<JobPO> builderJobs = new HashSet<>();
for (JobPO jobPO : jobPOS) {
buildParentJobs(jobPO, builderJobs);
}
// 添加岗位的上级部门或分部
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs));
String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
if (!StringUtil.isEmpty(parentDeptS)) {
3 years ago
// 兼容SQLServer每次最多in,2100条数据
List<Long> ids = DeleteParam.builder().ids(parentDeptS).build().getIds();
3 years ago
int ceilCount = (int) Math.ceil((double) ids.size() / 1000);
List<DepartmentPO> departmentsByIds = new ArrayList<>();
for (int i = 1; i < ceilCount + 1; i++) {
3 years ago
List<Long> longs = PageUtil.subList(i, 1000, ids);
List<DepartmentPO> departmentsById = getDepartmentMapper().getDeptsByIds(longs);
if (CollectionUtils.isNotEmpty(departmentsById)) {
departmentsByIds.addAll(departmentsById);
}
}
if (CollectionUtils.isNotEmpty(departmentsByIds)) {
filterDeparts.addAll(departmentsByIds);
3 years ago
}
}
// 查询分部信息
List<CompPO> filterComps = getCompMapper().listByFilter(compBuild, "showorder");
new DetachUtil(user).filterCompanyList(filterComps);
3 years ago
Set<DepartmentPO> builderDeparts = new HashSet<>();
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
}
List<SearchTree> departmentList = DepartmentBO.buildSetToSearchTree(builderDeparts);
List<SearchTree> deptTrees = SearchTreeUtil.builderTreeMode(departmentList);
List<SearchTree> searchTrees = SearchTreeUtil.builderTreeMode(departmentList, jobTrees);
3 years ago
// 添加部门的上级分部
String parentCompS = deptTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
if (!StringUtil.isEmpty(parentCompS)) {
List<CompPO> compsByIds = getCompMapper().getCompsByIds(DeleteParam.builder().ids(parentCompS).build().getIds());
3 years ago
if (CollectionUtils.isNotEmpty(compsByIds)) {
filterComps.addAll(compsByIds);
}
}
List<CompPO> allCompanys = getCompMapper().listAll("showorder");
new DetachUtil(user).filterCompanyList(allCompanys);
Map<Integer, CompPO> allMaps = allCompanys.stream().collect(Collectors.toMap(CompPO::getId, item -> item, (k1, k2) -> k1));
Set<CompPO> builderComps = new HashSet<>();
for (CompPO compPO : filterComps) {
buildParentComps(compPO, builderComps, allMaps);
3 years ago
}
return SearchTreeUtil.builderTreeMode(CompBO.buildSetToSearchTree(builderComps), searchTrees);
3 years ago
}
private List<SearchTree> buildTreeByDeptAndJob(DepartmentPO departmentBuild, JobPO jobBuild) {
List<JobPO> jobPOS = getJobMapper().listPOsByFilter(jobBuild);
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder");
3 years ago
// 添加父级岗位
Set<JobPO> builderJobs = new HashSet<>();
for (JobPO jobPO : jobPOS) {
buildParentJobs(jobPO, builderJobs);
}
// 添加岗位的上级部门或分部
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs));
String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
if (!StringUtil.isEmpty(parentDeptS)) {
3 years ago
// 兼容SQLServer每次最多in,2100条数据
List<Long> ids = (List<Long>) DeleteParam.builder().ids(parentDeptS).build().getIds();
int ceilCount = (int) Math.ceil((double) ids.size() / 1000);
List<DepartmentPO> departmentsByIds = new ArrayList<>();
for (int i = 0; i < ceilCount - 1; i++) {
List<DepartmentPO> departmentsById = getDepartmentMapper().getDeptsByIds(PageUtil.subList(i, 1000, ids));
if (CollectionUtils.isNotEmpty(departmentsById)) {
departmentsByIds.addAll(departmentsById);
}
}
if (CollectionUtils.isNotEmpty(departmentsByIds)) {
filterDeparts.addAll(departmentsByIds);
3 years ago
}
}
// 查询分部信息
Set<DepartmentPO> builderDeparts = new HashSet<>();
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
}
return SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts), jobTrees);
3 years ago
}
private void buildParentJobs(JobPO jobPO, Set<JobPO> builderJobs) {
builderJobs.add(jobPO);
if (SearchTreeUtil.isTop(jobPO.getParentJob())) {
return;
}
JobPO parentJob = getJobMapper().getJobById(jobPO.getParentJob());
if (null != parentJob) {
buildParentJobs(parentJob, builderJobs);
}
}
/**
*
*
* @param departmentPO
* @param builderDeparts
*/
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts) {
builderDeparts.add(departmentPO);
if (SearchTreeUtil.isTop(departmentPO.getSupDepId())) {
3 years ago
return;
}
DepartmentPO parentDept = getDepartmentMapper().getDeptById(departmentPO.getSupDepId());
3 years ago
if (null != parentDept) {
buildParentDepts(parentDept, builderDeparts);
}
}
/**
*
*
* @param compPO
* @param builderComps
*/
private void buildParentComps(CompPO compPO, Set<CompPO> builderComps, Map<Integer, CompPO> allMaps) {
3 years ago
builderComps.add(compPO);
CompPO parentComp = allMaps.get(compPO.getSupSubComId());
3 years ago
if (null != parentComp) {
buildParentComps(parentComp, builderComps, allMaps);
3 years ago
}
}
//private void completeParams(Map<String, Object> params) {
// String jobId = Util.null2String(params.get("job_title"));
// if (StringUtils.isNotBlank(jobId)) {
// JobPO jobById = getJobMapper().getJobById(Long.parseLong(jobId));
// params.put("department_id", jobById.getEcDepartment());
// params.put("company_id", jobById.getEcCompany());
// params.put("ec_department", jobById.getEcDepartment());
// params.put("ec_company", jobById.getEcCompany());
// // 等级方案、岗位序列、职等、职级
// params.put("scheme_id", jobById.getSchemeId());
// params.put("sequence_id", jobById.getSequenceId());
// params.put("job_level", jobById.getLevelId());
// params.put("job_grade", jobById.getGradeId());
// String showOrder = Util.null2String(params.get("show_order"));
// // 初始化排序字段
// if (StringUtils.isBlank(showOrder)) {
// Long orderNum = getResourceMapper().getMaxShowOrder();
// params.put("show_order", null == orderNum ? 1 : orderNum + 1);
// }
//
// // 人员状态
// String status = Util.null2String(params.get("status"));
// if (StringUtils.isBlank(status)) {
// params.put("status", "0");
// }
// }
//}
/**
*
*
* @return
*/
//public static String repeatDetermine(String workCode) {
// CodeRulePO codeRuleByType = MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleByType(RuleCodeType.USER.getValue());
// if (StringUtils.isNotBlank(workCode)) {
// workCode = CodeRuleUtil.generateCode(RuleCodeType.USER, workCode);
// List<HrmResourcePO> list = getResourceMapper().listByNo(Util.null2String(workCode));
// OrganizationAssert.isEmpty(list, "编号不允许重复");
// } else {
// OrganizationAssert.isTrue(null != codeRuleByType && "1".equals(codeRuleByType.getSerialEnable()), "编号不允许为空");
// workCode = autoCreateWorkCode();
// }
// return workCode;
//}
/**
*
*
* @return
*/
//private static String autoCreateWorkCode() {
// String generateCode = CodeRuleUtil.generateCode(RuleCodeType.USER, "");
// List<HrmResourcePO> list = getResourceMapper().listByNo(Util.null2String(generateCode));
// if (CollectionUtils.isNotEmpty(list)) {
// generateCode = autoCreateWorkCode();
// }
// return generateCode;
//}
/**
* Item
*
* @param hrmFieldSearchConditionComInfo
* @param formFields
* @param conditionItems
*/
private void createConditionItems(HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo, List<CusFormFieldPO> formFields, List<SearchConditionItem> conditionItems) {
for (CusFormFieldPO cusFormFieldPO : formFields) {
HrmFieldBean hrmFieldBean = new HrmFieldBean();
hrmFieldBean.setFieldid(Util.null2String(cusFormFieldPO.getFieldId()));
hrmFieldBean.setFieldname(cusFormFieldPO.getScopeId() + "_" + cusFormFieldPO.getTableName() + "_" + cusFormFieldPO.getFieldName());
hrmFieldBean.setFieldlabel(cusFormFieldPO.getFieldLabel());
hrmFieldBean.setFieldhtmltype(Util.null2String(cusFormFieldPO.getFieldHtmlType()));
hrmFieldBean.setType(cusFormFieldPO.getType());
hrmFieldBean.setIsQuickSearch(false);
hrmFieldBean.setIsScope(false);
hrmFieldBean.setDmlurl(cusFormFieldPO.getDmlUrl());
conditionItems.add(hrmFieldSearchConditionComInfo.getSearchConditionItem(hrmFieldBean, user));
}
}
/**
* 穿
*
* @param formFields
* @param dataParamList
* @param title
*/
private void createTransferData(List<CusFormFieldPO> formFields, List<TransferDataParam> dataParamList, String title) {
for (CusFormFieldPO cusFormFieldPO : formFields) {
String id = cusFormFieldPO.getTableName() + "_" + cusFormFieldPO.getScopeId() + "_" + cusFormFieldPO.getFieldId();
String label = Util.toScreen(SystemEnv.getHtmlLabelName(Integer.parseInt(cusFormFieldPO.getFieldLabel()), user.getLanguage()), user.getLanguage());
dataParamList.add(TransferDataParam.builder().id(id).label(label).title(title).build());
}
}
private void getTemplateItems(HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo, List<SearchConditionGroup> addGroups, String title, Integer scopeid, String[] fieldNames) {
try {
HrmFieldManager hfm = new HrmFieldManager("HrmCustomFieldByInfoType", scopeid);
List<SearchConditionItem> conditionItems = new ArrayList<>();
for (String fieldName : fieldNames) {
JSONObject hrmFieldConf = hfm.getHrmFieldConf(fieldName);
if (null == hrmFieldConf) {
continue;
}
boolean baseField = hfm.isBaseField(fieldName);
HrmFieldBean hrmFieldBean = new HrmFieldBean();
hrmFieldBean.setFieldid(Util.null2String(hrmFieldConf.getString("id")));
hrmFieldBean.setFieldname(scopeid + "_" + (baseField ? "hrm" : "cus") + "_" + fieldName);
hrmFieldBean.setFieldlabel(hrmFieldConf.getString("fieldlabel"));
hrmFieldBean.setFieldhtmltype(hrmFieldConf.getString("fieldhtmltype"));
hrmFieldBean.setType(hrmFieldConf.getString("type"));
hrmFieldBean.setDmlurl(hrmFieldConf.getString("dmlurl"));
hrmFieldBean.setIsQuickSearch(false);
hrmFieldBean.setIsScope(false);
conditionItems.add(hrmFieldSearchConditionComInfo.getSearchConditionItem(hrmFieldBean, user));
}
if (CollectionUtils.isNotEmpty(conditionItems)) {
addGroups.add(new SearchConditionGroup(title, true, conditionItems));
}
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
3 years ago
}