package com.engine.organization.service.impl; import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; import com.api.browser.bean.SearchConditionOption; import com.api.browser.util.ConditionType; import com.api.hrm.bean.HrmFieldBean; import com.api.hrm.util.HrmFieldSearchConditionComInfo; import com.cloudstore.eccom.constant.WeaBoolAttr; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.cloudstore.eccom.result.WeaResultMsg; 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; import com.engine.organization.entity.company.po.CompPO; import com.engine.organization.entity.department.bo.DepartmentBO; import com.engine.organization.entity.department.po.DepartmentPO; import com.engine.organization.entity.extend.bo.ExtendInfoBO; import com.engine.organization.entity.extend.po.ExtendInfoPO; import com.engine.organization.entity.hrmresource.bo.HrmRelationBO; import com.engine.organization.entity.hrmresource.param.HrmRelationSaveParam; import com.engine.organization.entity.hrmresource.param.SearchTemplateParam; import com.engine.organization.entity.hrmresource.po.HrmRelationPO; import com.engine.organization.entity.hrmresource.po.JclOrgCustomTemplatePO; import com.engine.organization.entity.hrmresource.po.SearchTemplatePO; import com.engine.organization.entity.hrmresource.po.TransferDataPO; import com.engine.organization.entity.hrmresource.vo.HrmResourceVO; import com.engine.organization.entity.jclimport.po.CusFormFieldPO; 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.enums.HrmGroupEnum; import com.engine.organization.mapper.comp.CompMapper; import com.engine.organization.mapper.department.DepartmentMapper; 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.resource.HrmResourceMapper; import com.engine.organization.mapper.resource.JclOrgCustomTemplateMapper; 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.OrganizationDateUtil; import com.engine.organization.util.db.DBType; import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.detach.DetachUtil; import com.engine.organization.util.page.PageUtil; 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.common.DateUtil; import weaver.conn.RecordSet; import weaver.general.StringUtil; import weaver.general.Util; import weaver.hrm.definedfield.HrmFieldManager; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** * @author:dxfeng * @createTime: 2022/06/20 * @version: 1.0 */ public class HrmResourceServiceImpl extends Service implements HrmResourceService { /** * 左侧树 类型表示 *

* 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 static final String level = getFieldName("职等"); private static final String grade = getFieldName("职级"); private HrmRelationMapper getHrmRelationMapper() { return MapperProxyFactory.getProxy(HrmRelationMapper.class); } private DepartmentMapper getDepartmentMapper() { return MapperProxyFactory.getProxy(DepartmentMapper.class); } private CompMapper getCompMapper() { return MapperProxyFactory.getProxy(CompMapper.class); } private JobMapper getJobMapper() { return MapperProxyFactory.getProxy(JobMapper.class); } private HrmResourceMapper getHrmResourceMapper() { return MapperProxyFactory.getProxy(HrmResourceMapper.class); } private SystemDataMapper getSystemDataMapper() { return MapperProxyFactory.getProxy(SystemDataMapper.class); } private JclOrgCustomTemplateMapper getJclOrgCustomTemplateMapper() { return MapperProxyFactory.getProxy(JclOrgCustomTemplateMapper.class); } // 所有满足条件的岗位ID private List jobTitleList = null; // 是否 boolean searchJobTitle = false; @Override public Map getSearchTree(SearchTreeParams params) { String keyword = params.getKeyword(); String id = params.getId(); String type = Util.null2String(params.getType()); List treeList = getFilterCompany(id, type, keyword); return SearchTreeUtil.getSearchTree(type, treeList); } @Override public Map listPage(Map params) { OrganizationWeaTable table = new OrganizationWeaTable<>(user, HrmResourceVO.class); String sqlWhere = buildSqlWhere(params); table.setSqlwhere(sqlWhere); List weaTableColumnList = new ArrayList<>(); JclOrgCustomTemplatePO jclOrgCustomTemplatePO = MapperProxyFactory.getProxy(JclOrgCustomTemplateMapper.class).queryIsusedTemp("1", String.valueOf(user.getUID())); String columns = null; List fields = new ArrayList<>(); List allConditions = getAllConditions(); if (jclOrgCustomTemplatePO != null) { if (StringUtils.isNotBlank(jclOrgCustomTemplatePO.getBasicFields())) { columns = jclOrgCustomTemplatePO.getBasicFields(); } if (StringUtils.isNotBlank(jclOrgCustomTemplatePO.getPersonalFields())) { columns = columns + "," + jclOrgCustomTemplatePO.getPersonalFields(); } if (StringUtils.isNotBlank(jclOrgCustomTemplatePO.getWorkFields())) { columns = columns + "," + jclOrgCustomTemplatePO.getWorkFields(); } } else { //初次使用,无模板初始值 columns = "-1_hrm_lastname,-1_hrm_departmentid,-1_hrm_subcompanyid1,-1_hrm_jobtitle,-1_hrm_mobile,-1_hrm_telephone,-1_hrm_managerid,-1_hrm_sporder"; } List columnList = Arrays.asList(columns.split(",")); BigDecimal decimal = new BigDecimal(100 / columnList.size()); for (SearchConditionGroup allCondition : allConditions) { List items = allCondition.getItems(); for (SearchConditionItem item : items) { String columnName = item.getDomkey()[0]; fields.add(buildTableSql(columnName) + " as " + buildTableSql(columnName).replace(".", "_")); String scopeId = columnName.split("_")[0]; String fieldName = columnName.substring(columnName.lastIndexOf("_") + 1); WeaTableColumn weaTableColumn = new WeaTableColumn(); weaTableColumn.setText(getHrmResourceMapper().queryLabelName(fieldName, scopeId)); weaTableColumn.setColumn(buildTableSql(columnName).replace(".", "_")); weaTableColumn.setDisplay(columnList.contains(columnName) ? WeaBoolAttr.TRUE : WeaBoolAttr.FALSE); weaTableColumn.setTransmethod("com.engine.organization.transmethod.HrmResourceTransMethod.getFieldTrueValue"); weaTableColumn.setOtherpara(columnName); weaTableColumn.setWidth(decimal.setScale(2, RoundingMode.HALF_UP).doubleValue() + "%"); weaTableColumnList.add(weaTableColumn); } } // if (StringUtils.isNotBlank(columns)) { // String[] tmp = columns.split(","); // for (int i = 0; i < tmp.length; i++) { // String scopeId = tmp[i].split("_")[0]; // String fieldName = tmp[i].substring(tmp[i].lastIndexOf("_") + 1); // WeaTableColumn weaTableColumn = new WeaTableColumn(); // weaTableColumn.setText(getHrmResourceMapper().queryLabelName(fieldName, scopeId)); // weaTableColumn.setColumn(buildTableSql(tmp[i]).replace(".", "_")); // weaTableColumn.setDisplay(WeaBoolAttr.TRUE); // weaTableColumn.setTransmethod("com.engine.organization.transmethod.HrmResourceTransMethod.getFieldTrueValue"); // String param = tmp[i]; // weaTableColumn.setOtherpara(param); // weaTableColumnList.add(weaTableColumn); // } // } // 增加id字段,跳转人员卡片 WeaTableColumn weaTableColumn = new WeaTableColumn(); // weaTableColumn.setText("id"); weaTableColumn.setColumn("id"); weaTableColumn.setDisplay(WeaBoolAttr.FALSE); weaTableColumnList.add(weaTableColumn); fields.add("t.id"); table.setBackfields(StringUtils.join(fields, ",")); table.setColumns(weaTableColumnList); WeaResultMsg result = new WeaResultMsg(false); result.putAll(table.makeDataResult()); result.success(); return new HashMap<>(result.getResultMap()); } @Override public Map getSaveForm() { Map apiDatas = new HashMap<>(); List addGroups = new ArrayList<>(); apiDatas.put("condition", addGroups); return apiDatas; } @Override public Long saveBaseForm(Map params) { return 0L; } @Override public Map getBaseForm(Map params) { return new HashMap<>(); } @Override public int updateForm(Map params) { return 0; } @Override public Integer saveSearchTemplate(SearchTemplateParam params) { // 重复名称校验 SearchTemplatePO searchTemplateByName = getHrmResourceMapper().getSearchTemplateByName(user.getUID(), params.getShowname()); OrganizationAssert.isFalse("默认模板".equals(params.getShowname()) || null != searchTemplateByName, "该模板名称已存在"); SearchTemplatePO templatePO = buildSearchTemplateByFields(params.getFields()); if (null == templatePO) { return -1; } templatePO.setName(params.getShowname()); templatePO.setCreator(user.getUID()); templatePO.setCreateTime(new Date()); templatePO.setUpdateTime(new Date()); getHrmResourceMapper().insertSearchTemplate(templatePO); return templatePO.getId(); } @Override public void deleteSearchTemplate(Integer id) { getHrmResourceMapper().deleteSearchTemplate(id, user.getUID()); } @Override public String getTemplateSelectKeys(Map params) { String templateId = Util.null2String(params.get("templateId")); templateId = StringUtils.isBlank(templateId) ? "-1" : templateId; String type = Util.null2String(params.get("type")); OrganizationAssert.isTrue(StringUtils.isNotBlank(templateId), "数据有误,未找到对应数据"); // 判断是否为搜索模板 SearchTemplatePO searchTemplateById; List selectKeys; if ("custom".equals(type)) { if ("-1".equals(templateId)) { selectKeys = Arrays.asList("-1_hrm_lastname,-1_hrm_departmentid,-1_hrm_jobtitle,-1_hrm_mobile,-1_hrm_telephone,-1_hrm_managerid".split(",")); } else { searchTemplateById = getHrmResourceMapper().getCustomTemplateById(templateId); selectKeys = getSelectKeys(searchTemplateById); } } else { if ("-1".equals(templateId)) { selectKeys = getAllConditions().get(0).getItems().stream().map(item -> item.getDomkey()[0]).collect(Collectors.toList()); } else { searchTemplateById = getHrmResourceMapper().getSearchTemplateById(templateId); selectKeys = getSelectKeys(searchTemplateById); } } return StringUtils.join(selectKeys, ","); } @Override public Map getSearchTemplate(Map params) { Map returnMap = new HashMap<>(); String type = Util.null2String(params.get("type")); int userUID = user.getUID(); // 根据ID查询所存储的模板 List templates; if ("custom".equals(type)) { templates = getHrmResourceMapper().getCustomTemplatesByUser(userUID); SearchTemplatePO usedCustomTemplate = getHrmResourceMapper().getUsedCustomTemplateByUser(user.getUID()); if (null != usedCustomTemplate) { returnMap.put("templateId", usedCustomTemplate.getId()); } else { returnMap.put("templateId", "-1"); } } else { templates = getHrmResourceMapper().getSearchTemplatesByUser(userUID); } templates.add(0, SearchTemplateParam.builder().key("-1").showname("默认模板").build()); returnMap.put("templates", templates); return returnMap; } @Override public Integer saveCustomTemplate(SearchTemplateParam params) { // 重复名称校验 SearchTemplatePO searchTemplateByName = getHrmResourceMapper().getCustomTemplateByName(user.getUID(), params.getShowname()); OrganizationAssert.isFalse("默认模板".equals(params.getShowname()) || null != searchTemplateByName, "该模板名称已存在"); SearchTemplatePO templatePO = buildSearchTemplateByFields(params.getFields()); if (null == templatePO) { return -1; } templatePO.setName(params.getShowname()); templatePO.setCreator(user.getUID()); templatePO.setIsused("0"); templatePO.setCreateTime(new Date()); templatePO.setUpdateTime(new Date()); getHrmResourceMapper().insertCustomTemplate(templatePO); return templatePO.getId(); } @Override public Integer updateCustomTemplate(Map params) { int rowNum = Util.getIntValue((String) params.get("rownum")); int count = 0; List allIds = getJclOrgCustomTemplateMapper().listAllId(); String currentDate = OrganizationDateUtil.getFormatLocalDate(new java.util.Date()); List nameList = new ArrayList<>(); for (int i = 0; i < rowNum; i++) { String recordIndex = "_" + i; String name = Util.null2String(params.get("name" + recordIndex)); if (StringUtils.isNotBlank(name)) { nameList.add(name); } } OrganizationAssert.isFalse(new HashSet<>(nameList).size() < nameList.size(), "模板名称不能重复"); for (int i = 0; i < rowNum; i++) { String recordIndex = "_" + i; String id = Util.null2String(params.get("id" + recordIndex)); String name = Util.null2String(params.get("name" + recordIndex)); JclOrgCustomTemplatePO jclOrgCustomTemplatePO = new JclOrgCustomTemplatePO(); if (StringUtils.isNotBlank(id)) { // 更新 long jclId = Long.parseLong(id); jclOrgCustomTemplatePO = MapperProxyFactory.getProxy(JclOrgCustomTemplateMapper.class).selectByPrimaryKey(jclId); jclOrgCustomTemplatePO.setName(name); jclOrgCustomTemplatePO.setUpdateTime(new java.sql.Date(OrganizationDateUtil.stringToDate(currentDate).getTime())); count += MapperProxyFactory.getProxy(JclOrgCustomTemplateMapper.class).updateByPrimaryKey(jclOrgCustomTemplatePO); allIds.remove(jclId); } else { //插入 OrganizationAssert.isFalse("".equals(name), "模板名称不能为空"); jclOrgCustomTemplatePO.setName(name); jclOrgCustomTemplatePO.setCreator(user.getUID()); jclOrgCustomTemplatePO.setCreateTime(new java.sql.Date(OrganizationDateUtil.stringToDate(currentDate).getTime())); jclOrgCustomTemplatePO.setUpdateTime(new java.sql.Date(OrganizationDateUtil.stringToDate(currentDate).getTime())); count += MapperProxyFactory.getProxy(JclOrgCustomTemplateMapper.class).insert(jclOrgCustomTemplatePO); } } if (CollectionUtils.isNotEmpty(allIds)) { count += MapperProxyFactory.getProxy(JclOrgCustomTemplateMapper.class).deleteByIds(allIds); } return count; } @Override public void deleteCustomTemplate(Integer id) { getHrmResourceMapper().deleteCustomTemplate(id, user.getUID()); } @Override public Map getCustomTransferData(Map params) { Map resultMap = new HashMap<>(); String templateId = StringUtils.isNotBlank(Util.null2String(params.get("templateId"))) ? Util.null2String(params.get("templateId")) : "-1"; List transferDatas = new ArrayList<>(); List transferKeys; List transferOptions = new ArrayList<>(); List allConditions = getAllConditions(); AtomicInteger idx = new AtomicInteger(0); for (SearchConditionGroup allCondition : allConditions) { List items = allCondition.getItems(); List collect = items.stream().map(item -> TransferDataPO.builder().id(item.getDomkey()[0]).label(item.getLabel()).title(allCondition.getTitle()).idx(Integer.toString(idx.get())).build()).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(collect)) { transferDatas.addAll(collect); } transferOptions.add(SearchTemplateParam.builder().key(Integer.toString(idx.getAndIncrement())).showname(allCondition.getTitle()).build()); } if ("-1".equals(templateId)) { // 查询当前使用的模板,没有使用的,则展示默认模板 SearchTemplatePO usedCustomTemplate = getHrmResourceMapper().getUsedCustomTemplateByUser(user.getUID()); if (null == usedCustomTemplate) { String selectKeys = "-1_hrm_lastname,-1_hrm_departmentid,-1_hrm_jobtitle,-1_hrm_mobile,-1_hrm_telephone,-1_hrm_managerid"; transferKeys = Arrays.asList(selectKeys.split(",")); } else { transferKeys = getSelectKeys(usedCustomTemplate); templateId = usedCustomTemplate.getId().toString(); } } else { SearchTemplatePO searchTemplateById = getHrmResourceMapper().getCustomTemplateById(templateId); transferKeys = getSelectKeys(searchTemplateById); } transferOptions.add(0, SearchTemplateParam.builder().key("").showname("").build()); resultMap.put("transferDatas", transferDatas); resultMap.put("transferKeys", transferKeys); resultMap.put("transferOptions", transferOptions); resultMap.put("templateId", templateId); return resultMap; } @Override public Integer saveColumnsCustomTemplate(Map params) { String columns = Util.null2String(params.get("columns")); String templateId = Util.null2String(params.get("templateId")); SearchTemplatePO templatePO = buildSearchTemplateByFields(columns); JclOrgCustomTemplatePO jclOrgCustomTemplatePO = new JclOrgCustomTemplatePO(); if (StringUtils.isNotBlank(templateId)) { if (templateId.equals("-1")) { getJclOrgCustomTemplateMapper().updateUsed("0", null, String.valueOf(user.getUID())); } else { jclOrgCustomTemplatePO = getJclOrgCustomTemplateMapper().selectByPrimaryKey(Long.parseLong(templateId)); if (jclOrgCustomTemplatePO != null) { jclOrgCustomTemplatePO.setId(Integer.valueOf(templateId)); jclOrgCustomTemplatePO.setBasicFields(templatePO.getBasicFields()); jclOrgCustomTemplatePO.setPersonalFields(templatePO.getPersonalFields()); jclOrgCustomTemplatePO.setWorkFields(templatePO.getWorkFields()); jclOrgCustomTemplatePO.setIsused(1); //取消已启用模板 getJclOrgCustomTemplateMapper().updateUsed("0", null, String.valueOf(user.getUID())); //启用当前模板 getJclOrgCustomTemplateMapper().updateByPrimaryKeySelective(jclOrgCustomTemplatePO); } } } return jclOrgCustomTemplatePO.getId(); } @Override public Map getSearchCondition(Map params) { String templateId = Util.null2String(params.get("templateId")); String selectKeys = Util.null2String(params.get("selectKeys")); if (StringUtils.isBlank(templateId)) { templateId = "-1"; } Map apiDatas = new HashMap<>(); List addGroups = new ArrayList<>(); List allConditions = getAllConditions(); // 穿梭框ID,展示所选字段信息 HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo(); if ("-1".equals(templateId)) { if (StringUtils.isNotBlank(selectKeys)) { SearchTemplatePO templatePO = buildSearchTemplateByFields(selectKeys); if (null != templatePO) { buildSearchConditionGroup(templatePO, hrmFieldSearchConditionComInfo, addGroups); } } else { // 未选择模板展示默认模板搜索条件 if (CollectionUtils.isNotEmpty(allConditions)) { addGroups.add(allConditions.get(0)); } } } else { // 选择模板则遍历所选模板所选字段 SearchTemplatePO searchTemplateById = getHrmResourceMapper().getSearchTemplateById(templateId); buildSearchConditionGroup(searchTemplateById, hrmFieldSearchConditionComInfo, addGroups); } apiDatas.put("defaultcondition", addGroups); apiDatas.put("conditions", allConditions); return apiDatas; } @Override public Map getHasRight() { Map btnDatas = new HashMap<>(); if (HasRightUtil.hasRight(user, RIGHT_NAME, true)) { ArrayList topMenuList = new ArrayList<>(); ArrayList rightMenuList = new ArrayList<>(); topMenuList.add(MenuBtn.builder().isBatch("1").isTop("1").menuFun("new").menuIcon("icon-coms-New-Flow").menuName("新建人员").type("BTN_Addnew").build()); topMenuList.add(MenuBtn.builder().isBatch("1").isTop("1").menuFun("customization").menuIcon("icon-coms-task-list").menuName("列定制").type("BTN_COLUMN").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 getTabForm(Map 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 apiDatas = new HashMap<>(); //List 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> companyMaps = new ArrayList<>(); // String scCompanyNameById = MapperProxyFactory.getProxy(SystemDataMapper.class).getScCompanyNameById(relationPO.getCompanyId().toString()); // Map companyMap = new HashMap<>(); // companyMap.put(relationPO.getCompanyId().toString(), scCompanyNameById); // companyMaps.add(companyMap); // setBrowserValue(companyId, relationPO.getCompanyId(), companyMaps, null, null); // // List> departmentMaps = new ArrayList<>(); // String departmentNameById = MapperProxyFactory.getProxy(SystemDataMapper.class).getScDepartmentNameById(relationPO.getDepartmentId().toString()); // Map 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 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(); } @Override public Map getCustomTemplate(Map params) { List infoPOList = new ArrayList<>(); infoPOList.add(ExtendInfoPO.builder().viewAttr(2).id(null).fieldName("name").fieldNameDesc("模板名称").fieldType("varchar(255)").controlType(1).browserType("1").customValue("[\"input\",\"text\",\"50\"]").showOrder(1).isrequired(0).isSystemDefault(0).build()); infoPOList.add(ExtendInfoPO.builder().viewAttr(1).id(null).fieldName("createTime").fieldNameDesc("创建时间").fieldType("date").controlType(1).browserType("1").customValue("[\"input\",\"text\",\"50\"]").showOrder(2).isrequired(0).isSystemDefault(0).build()); Map tabInfoMap = new HashMap<>(); tabInfoMap.put("columns", ExtendInfoBO.convertInfoListToTable(user, infoPOList, false, true)); List jclOrgCustomTemplatePOS = MapperProxyFactory.getProxy(JclOrgCustomTemplateMapper.class).listAll(); List isUsed = new ArrayList<>(); AtomicInteger index = new AtomicInteger(0); List> collect = jclOrgCustomTemplatePOS.stream().map(item -> { Map resultMap = new HashMap<>(); resultMap.put("id", item.getId()); resultMap.put("name", item.getName()); resultMap.put("createTime", DateUtil.getDate(item.getCreateTime(), "yyyy-MM-dd")); if (item.getIsused() != null) { if (1 == item.getIsused()) { isUsed.add(index.get()); } index.getAndIncrement(); } return resultMap; }).collect(Collectors.toList()); tabInfoMap.put("datas", collect); tabInfoMap.put("api_status", true); Map> isUsedMap = new HashMap<>(); isUsedMap.put("status", isUsed); tabInfoMap.put("selectedData", isUsedMap); tabInfoMap.put("isModalEdit", false); return tabInfoMap; // OrganizationWeaTable table = new OrganizationWeaTable<>(user, JclOrgCustomTemplateVO.class); // String sqlWhere = buildSqlWhere(params); // table.setSqlwhere(sqlWhere); // WeaResultMsg result = new WeaResultMsg(false); // result.putAll(table.makeDataResult()); // result.success(); // return new HashMap<>(result.getResultMap()); } /** * 查询条件 * * @param params * @return */ private String buildSqlWhere(Map params) { HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo(); List conditionItems = new ArrayList<>(); List hrmFieldsByScopeId = getSystemDataMapper().getHrmFieldsByScopeId(HrmGroupEnum.HRM_BASIC.getGroupType().toString()); createConditionItems(hrmFieldSearchConditionComInfo, hrmFieldsByScopeId, conditionItems); hrmFieldsByScopeId = getSystemDataMapper().getHrmFieldsByScopeId(HrmGroupEnum.HRM_PERSONAL.getGroupType().toString()); createConditionItems(hrmFieldSearchConditionComInfo, hrmFieldsByScopeId, conditionItems); hrmFieldsByScopeId = getSystemDataMapper().getHrmFieldsByScopeId(HrmGroupEnum.HRM_WORK.getGroupType().toString()); createConditionItems(hrmFieldSearchConditionComInfo, hrmFieldsByScopeId, conditionItems); Map allFieldsMap = conditionItems.stream().collect(Collectors.toMap(item -> item.getDomkey()[0], item -> item, (k1, k2) -> k1)); DBType dbType = DBType.get(new RecordSet().getDBType()); StringBuilder sb = new StringBuilder(" where 1=1 and t.status <4 "); for (Map.Entry entry : params.entrySet()) { String value = Util.null2String(entry.getValue()); if (StringUtils.isBlank(value)) { continue; } String key = entry.getKey(); if ("lastName".equals(key)) { sb.append(" and t.lastname ").append(dbType.like(value)); } SearchConditionItem searchConditionItem = allFieldsMap.get(key); // 根据不同的类型,不同的查询方式 buildDynamicSql(searchConditionItem, key, value, sb, dbType); } if (searchJobTitle) { String jobTitleIds = StringUtils.join(jobTitleList, ","); sb.append(" and t.jobtitle in (").append(StringUtils.isNotBlank(jobTitleIds) ? jobTitleIds : "''").append(") "); } // 分权查询 DetachUtil detachUtil = new DetachUtil(user); String parentCompanyIds = detachUtil.getJclRoleLevels(); if (detachUtil.isDETACH()) { sb.append(" and t.subcompanyid1 in(").append(parentCompanyIds).append(")"); } return sb.toString(); } public List getFilterCompany(String id, String type, String keyword) { List 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(); // 所属分部下的岗位 JobPO jobBuild = JobPO.builder().jobTitleName(keyword).ecCompany(parentCompId).forbiddenTag(0).build(); 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(); // 所属分部下的岗位 JobPO jobBuild = JobPO.builder().jobTitleName(keyword).ecDepartment(parentDeptId).forbiddenTag(0).build(); searchTree = buildTreeByDeptAndJob(departmentBuild, jobBuild); } else if (TYPE_JOB.equals(type)) { // 查询部门信息 List filterDeparts = getJobMapper().listPOsByFilter(JobPO.builder().jobTitleName(keyword).parentJob(Long.parseLong(id)).forbiddenTag(0).build()); Set 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 buildTreeByCompAndDept(DepartmentPO departmentBuild, CompPO compBuild, JobPO jobBuild) { List jobPOS = getJobMapper().listPOsByFilter(jobBuild); new DetachUtil(user).filterJobList(jobPOS); List filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder"); new DetachUtil(user).filterDepartmentList(filterDeparts); // 添加父级岗位 Set builderJobs = new HashSet<>(); for (JobPO jobPO : jobPOS) { buildParentJobs(jobPO, builderJobs); } // 添加岗位的上级部门或分部 List jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs)); String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(",")); if (!StringUtil.isEmpty(parentDeptS)) { // 兼容SQLServer每次最多in,2100条数据 List ids = DeleteParam.builder().ids(parentDeptS).build().getIds(); int ceilCount = (int) Math.ceil((double) ids.size() / 1000); List departmentsByIds = new ArrayList<>(); for (int i = 1; i < ceilCount + 1; i++) { List longs = PageUtil.subList(i, 1000, ids); List departmentsById = getDepartmentMapper().getDeptsByIds(longs); if (CollectionUtils.isNotEmpty(departmentsById)) { departmentsByIds.addAll(departmentsById); } } if (CollectionUtils.isNotEmpty(departmentsByIds)) { filterDeparts.addAll(departmentsByIds); } } // 查询分部信息 List filterComps = getCompMapper().listByFilter(compBuild, "showorder"); new DetachUtil(user).filterCompanyList(filterComps); Set builderDeparts = new HashSet<>(); for (DepartmentPO departmentPO : filterDeparts) { buildParentDepts(departmentPO, builderDeparts); } List departmentList = DepartmentBO.buildSetToSearchTree(builderDeparts); List deptTrees = SearchTreeUtil.builderTreeMode(departmentList); List searchTrees = SearchTreeUtil.builderTreeMode(departmentList, jobTrees); // 添加部门的上级分部 String parentCompS = deptTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(",")); if (!StringUtil.isEmpty(parentCompS)) { List compsByIds = getCompMapper().getCompsByIds(DeleteParam.builder().ids(parentCompS).build().getIds()); if (CollectionUtils.isNotEmpty(compsByIds)) { filterComps.addAll(compsByIds); } } List allCompanys = getCompMapper().listAll("showorder"); new DetachUtil(user).filterCompanyList(allCompanys); Map allMaps = allCompanys.stream().collect(Collectors.toMap(CompPO::getId, item -> item, (k1, k2) -> k1)); Set builderComps = new HashSet<>(); for (CompPO compPO : filterComps) { buildParentComps(compPO, builderComps, allMaps); } return SearchTreeUtil.builderTreeMode(CompBO.buildSetToSearchTree(builderComps), searchTrees); } private List buildTreeByDeptAndJob(DepartmentPO departmentBuild, JobPO jobBuild) { List jobPOS = getJobMapper().listPOsByFilter(jobBuild); List filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder"); // 添加父级岗位 Set builderJobs = new HashSet<>(); for (JobPO jobPO : jobPOS) { buildParentJobs(jobPO, builderJobs); } // 添加岗位的上级部门或分部 List jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs)); String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(",")); if (!StringUtil.isEmpty(parentDeptS)) { // 兼容SQLServer每次最多in,2100条数据 List ids = DeleteParam.builder().ids(parentDeptS).build().getIds(); int ceilCount = (int) Math.ceil((double) ids.size() / 1000); List departmentsByIds = new ArrayList<>(); for (int i = 0; i < ceilCount - 1; i++) { List departmentsById = getDepartmentMapper().getDeptsByIds(PageUtil.subList(i, 1000, ids)); if (CollectionUtils.isNotEmpty(departmentsById)) { departmentsByIds.addAll(departmentsById); } } if (CollectionUtils.isNotEmpty(departmentsByIds)) { filterDeparts.addAll(departmentsByIds); } } // 查询分部信息 Set builderDeparts = new HashSet<>(); for (DepartmentPO departmentPO : filterDeparts) { buildParentDepts(departmentPO, builderDeparts); } return SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts), jobTrees); } private void buildParentJobs(JobPO jobPO, Set 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 builderDeparts) { builderDeparts.add(departmentPO); if (SearchTreeUtil.isTop(departmentPO.getSupDepId())) { return; } DepartmentPO parentDept = getDepartmentMapper().getDeptById(departmentPO.getSupDepId()); if (null != parentDept) { buildParentDepts(parentDept, builderDeparts); } } /** * 添加查询元素的父级元素 * * @param compPO * @param builderComps */ private void buildParentComps(CompPO compPO, Set builderComps, Map allMaps) { builderComps.add(compPO); CompPO parentComp = allMaps.get(compPO.getSupSubComId()); if (null != parentComp) { buildParentComps(parentComp, builderComps, allMaps); } } /** * 获取所有搜索字段信息构建的高级搜索表单 * * @return */ public List getAllConditions() { HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo(); List addGroups = new ArrayList<>(); List basicConditionItems = new ArrayList<>(); List personalConditionItems = new ArrayList<>(); List workConditionItems = new ArrayList<>(); // 基本信息:-1 List hrmFieldsByScopeId = getSystemDataMapper().getHrmFieldsByScopeId(HrmGroupEnum.HRM_BASIC.getGroupType().toString()); createConditionItems(hrmFieldSearchConditionComInfo, hrmFieldsByScopeId, basicConditionItems); if (CollectionUtils.isNotEmpty(basicConditionItems)) { addGroups.add(new SearchConditionGroup("基本信息", true, basicConditionItems)); } // 个人信息:1 hrmFieldsByScopeId = getSystemDataMapper().getHrmFieldsByScopeId(HrmGroupEnum.HRM_PERSONAL.getGroupType().toString()); createConditionItems(hrmFieldSearchConditionComInfo, hrmFieldsByScopeId, personalConditionItems); if (CollectionUtils.isNotEmpty(personalConditionItems)) { addGroups.add(new SearchConditionGroup("个人信息", true, personalConditionItems)); } // 工作信息:3 hrmFieldsByScopeId = getSystemDataMapper().getHrmFieldsByScopeId(HrmGroupEnum.HRM_WORK.getGroupType().toString()); createConditionItems(hrmFieldSearchConditionComInfo, hrmFieldsByScopeId, workConditionItems); if (CollectionUtils.isNotEmpty(workConditionItems)) { addGroups.add(new SearchConditionGroup("工作信息", true, workConditionItems)); } return addGroups; } /** * 构建查询条件Item * * @param hrmFieldSearchConditionComInfo * @param formFields * @param conditionItems */ private void createConditionItems(HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo, List formFields, List conditionItems) { for (CusFormFieldPO cusFormFieldPO : formFields) { if ("jobactivity".equals(cusFormFieldPO.getFieldName())) { // 职务:282 cusFormFieldPO.setType("282"); } 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()); hrmFieldBean.setIssystem("hrm".equals(cusFormFieldPO.getTableName()) ? "1" : "0"); hrmFieldBean.setIsFormField(true); SearchConditionItem searchConditionItem = hrmFieldSearchConditionComInfo.getSearchConditionItem(hrmFieldBean, user); conditionItems.add(searchConditionItem); // 如果为下拉框,添加一条空选项 if (searchConditionItem.getConditionType().equals(ConditionType.SELECT)) { addEmptyForSelect(searchConditionItem); } } } /** * 获取模板中的字段,构建搜索条件 * * @param hrmFieldSearchConditionComInfo * @param addGroups * @param title * @param scopeid * @param fieldNames */ private void getTemplateItems(HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo, List addGroups, String title, Integer scopeid, String[] fieldNames) { try { HrmFieldManager hfm = new HrmFieldManager("HrmCustomFieldByInfoType", scopeid); List conditionItems = new ArrayList<>(); for (String field : fieldNames) { String fieldName = field.substring(field.lastIndexOf("_") + 1); 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.setIssystem(baseField ? "1" : "0"); hrmFieldBean.setIsFormField(true); hrmFieldBean.setIsQuickSearch(false); hrmFieldBean.setIsScope(false); if ("jobactivity".equals(fieldName)) { // 职务:282 hrmFieldBean.setType("282"); } SearchConditionItem searchConditionItem = hrmFieldSearchConditionComInfo.getSearchConditionItem(hrmFieldBean, user); conditionItems.add(searchConditionItem); // 如果为下拉框,添加一条空选项 if (searchConditionItem.getConditionType().equals(ConditionType.SELECT)) { addEmptyForSelect(searchConditionItem); } } if (CollectionUtils.isNotEmpty(conditionItems)) { addGroups.add(new SearchConditionGroup(title, true, conditionItems)); } } catch (JSONException e) { throw new RuntimeException(e); } } /** * 根据所选字段信息,构建搜素模板对象 * * @param fields * @return */ private SearchTemplatePO buildSearchTemplateByFields(String fields) { String[] split = fields.split(","); if (split.length > 0) { List basicFields = new ArrayList<>(); List personalFields = new ArrayList<>(); List workFields = new ArrayList<>(); for (String fieldName : split) { if (fieldName.startsWith(HrmGroupEnum.HRM_BASIC.getGroupType().toString())) { basicFields.add(fieldName); } else if (fieldName.startsWith(HrmGroupEnum.HRM_PERSONAL.getGroupType().toString())) { personalFields.add(fieldName); } else if (fieldName.startsWith(HrmGroupEnum.HRM_WORK.getGroupType().toString())) { workFields.add(fieldName); } } return SearchTemplatePO.builder().basicFields(StringUtils.join(basicFields, ",")).personalFields(StringUtils.join(personalFields, ",")).workFields(StringUtils.join(workFields, ",")).build(); } return null; } /** * 根据搜索模板对象,构建搜索条件表单 * * @param templatePO * @param hrmFieldSearchConditionComInfo * @param addGroups */ private void buildSearchConditionGroup(SearchTemplatePO templatePO, HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo, List addGroups) { String[] basicFields = Util.null2String(templatePO.getBasicFields()).split(","); if (basicFields.length > 0) { getTemplateItems(hrmFieldSearchConditionComInfo, addGroups, "基本信息", HrmGroupEnum.HRM_BASIC.getGroupType(), basicFields); } String[] personalFields = Util.null2String(templatePO.getPersonalFields()).split(","); if (personalFields.length > 0) { getTemplateItems(hrmFieldSearchConditionComInfo, addGroups, "个人信息", HrmGroupEnum.HRM_PERSONAL.getGroupType(), personalFields); } String[] workFields = Util.null2String(templatePO.getWorkFields()).split(","); if (workFields.length > 0) { getTemplateItems(hrmFieldSearchConditionComInfo, addGroups, "工作信息", HrmGroupEnum.HRM_WORK.getGroupType(), workFields); } } /** * 根据字段信息,动态拼接where条件SQL * * @param conditionItem * @param key * @param value * @param sb * @param dbType */ private void buildDynamicSql(SearchConditionItem conditionItem, String key, String value, StringBuilder sb, DBType dbType) { if (null == conditionItem) { return; } if (key.endsWith("workyear") || key.endsWith("companyworkyear")) { conditionItem.setConditionType(ConditionType.INPUTNUMBER); } // 职务 if (key.endsWith("jobactivity")) { searchJobTitle = true; List jobTitleIds = getSystemDataMapper().getJobTitleIds(value, null); if (null == jobTitleList) { jobTitleList = jobTitleIds; } else { jobTitleList.retainAll(jobTitleIds); } return; } // 职务类别 if (key.endsWith("jobGroupId")) { searchJobTitle = true; List jobTitleIds = getSystemDataMapper().getJobTitleIds(null, value); if (null == jobTitleList) { jobTitleList = jobTitleIds; } else { jobTitleList.retainAll(jobTitleIds); } return; } // 岗位 if (key.endsWith("jobtitle")) { searchJobTitle = true; jobTitleList = new ArrayList<>(); jobTitleList.add(Integer.parseInt(value)); return; } String tableSql = buildTableSql(key); if (StringUtils.isBlank(tableSql)) { return; } switch (conditionItem.getConditionType()) { case INPUT:// 单行文本框 case TEXTAREA:// 多行文本框 sb.append(" and ").append(tableSql).append(dbType.like(value)); // 模糊搜索 break; case BROWSER://浏览按钮 // 兼容多选浏览按钮 sb.append(" and ").append(dbType.concat(tableSql)).append(dbType.like(value)); break; case INPUTNUMBER:// 数字 case CHECKBOX: case SWITCH: sb.append(" and ").append(dbType.ifNull(tableSql, "0")).append(" = '").append(value).append("' "); break; case SELECT://选择框 case DATE: case DATEPICKER: case TIMEPICKER: case RANGEPICKER: // 精准搜索 sb.append(" and ").append(tableSql).append(" = '").append(value).append("' "); break; default: break; } } /** * 处理当前字段所在表关系 * * @param key * @return */ private String buildTableSql(String key) { StringBuilder sb = new StringBuilder(); String[] s = key.split("_"); if (s.length < 3) { return ""; } String scopeId = s[0]; String tableName = s[1]; String fieldName = s[2]; if ("jobactivity".equalsIgnoreCase(fieldName)) { return "t4.id"; } if ("jobGroupId".equalsIgnoreCase(fieldName)) { return "t5.id"; } // 姓名点击事件 if ("lastname".equalsIgnoreCase(fieldName)) { return "lastname"; } if ("hrm".equals(tableName)) { return sb.append("t.").append(fieldName).toString(); } switch (scopeId) { case "-1": sb.append("t0.").append(fieldName); break; case "1": sb.append("t1.").append(fieldName); break; case "3": sb.append("t2.").append(fieldName); break; default: return ""; } return sb.toString(); } /** * 为下拉框搜索条件、添加空选项 * * @param searchConditionItem */ private void addEmptyForSelect(SearchConditionItem searchConditionItem) { searchConditionItem.setValue(""); List options = searchConditionItem.getOptions(); SearchConditionOption searchConditionOption = new SearchConditionOption(); searchConditionOption.setKey(""); options.add(0, searchConditionOption); options.forEach(item -> { item.setSelected(false); }); } /** * 根据模板示例,组装所有selectKeys * * @param searchTemplatePO * @return */ private List getSelectKeys(SearchTemplatePO searchTemplatePO) { List selectKeys = new ArrayList<>(); String basicFields = searchTemplatePO.getBasicFields(); String personalFields = searchTemplatePO.getPersonalFields(); String workflowFields = searchTemplatePO.getWorkFields(); if (StringUtils.isNotBlank(basicFields)) { selectKeys.addAll(Arrays.asList(basicFields.split(","))); } if (StringUtils.isNotBlank(personalFields)) { selectKeys.addAll(Arrays.asList(personalFields.split(","))); } if (StringUtils.isNotBlank(workflowFields)) { selectKeys.addAll(Arrays.asList(workflowFields.split(","))); } return selectKeys; } private static String getFieldName(String fieldabel) { RecordSet recordSet = new RecordSet(); String fieldname = null; recordSet.executeQuery("select fieldname from jcl_org_field where fieldlabel='" + fieldabel + "'"); if (recordSet.next()) { fieldname = recordSet.getString("fieldname"); } return fieldname; } }