From 3c742681265a7bcce5f1121f09cdf38086ef97d6 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 15 Jul 2022 14:42:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B2=97=E4=BD=8D=E6=B5=8F=E8=A7=88=E6=8C=89?= =?UTF-8?q?=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/JobBrowserService.java | 144 ++++++++++++++++++ .../entity/browser/bo/CusBowserTreeBO.java | 45 ++++++ .../browser/enums/TreeNodeTypeEnum.java | 36 +++++ .../entity/browser/po/CusBrowserTree.java | 32 ++++ .../entity/extend/bo/ExtendInfoBO.java | 18 ++- .../entity/job/vo/JobBrowserVO.java | 45 ++++++ .../service/CustomBrowserBean.java | 28 ++++ 7 files changed, 344 insertions(+), 4 deletions(-) create mode 100644 src/com/api/browser/service/impl/JobBrowserService.java create mode 100644 src/com/engine/organization/entity/browser/bo/CusBowserTreeBO.java create mode 100644 src/com/engine/organization/entity/browser/enums/TreeNodeTypeEnum.java create mode 100644 src/com/engine/organization/entity/browser/po/CusBrowserTree.java create mode 100644 src/com/engine/organization/entity/job/vo/JobBrowserVO.java create mode 100644 src/com/engine/organization/service/CustomBrowserBean.java diff --git a/src/com/api/browser/service/impl/JobBrowserService.java b/src/com/api/browser/service/impl/JobBrowserService.java new file mode 100644 index 00000000..713e54c2 --- /dev/null +++ b/src/com/api/browser/service/impl/JobBrowserService.java @@ -0,0 +1,144 @@ +package com.api.browser.service.impl; + +import com.alibaba.fastjson.JSON; +import com.api.browser.bean.SearchConditionItem; +import com.api.browser.service.BrowserService; +import com.api.browser.util.BrowserConstant; +import com.api.hrm.bean.TreeNode; +import com.cloudstore.eccom.result.WeaResultMsg; +import com.engine.organization.component.OrganizationWeaTable; +import com.engine.organization.entity.browser.bo.CusBowserTreeBO; +import com.engine.organization.entity.browser.enums.TreeNodeTypeEnum; +import com.engine.organization.entity.browser.po.CusBrowserTree; +import com.engine.organization.entity.job.vo.JobBrowserVO; +import com.engine.organization.entity.searchtree.SearchTree; +import com.engine.organization.entity.searchtree.SearchTreeParams; +import com.engine.organization.service.impl.JobServiceImpl; +import com.engine.organization.util.OrganizationFormItemUtil; +import com.engine.organization.util.db.DBType; +import org.apache.commons.lang.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2022/07/15 + * @version: 1.0 + */ +public class JobBrowserService extends BrowserService { + + + @Override + public Map getBrowserData(Map params) { + + Map resultMap = new HashMap<>(); + String datatype = Util.null2String(params.get("datatype")); + if ("tree".equals(datatype)) { + List nodeData = new ArrayList<>(); + String id = Util.null2String(params.get("id")); + SearchTreeParams searchTreeParams = new SearchTreeParams(); + if (StringUtils.isBlank(id)) { + Map searchTree = new JobServiceImpl().getSearchTree(searchTreeParams); + Map datas = (Map) searchTree.get("datas"); + // 集团 + SearchTree rootCompany = (SearchTree) datas.get("rootCompany"); + nodeData.add(rootCompany); + } else if ("0".equals(id)) { + Map searchTree = new JobServiceImpl().getSearchTree(searchTreeParams); + Map datas = (Map) searchTree.get("datas"); + SearchTree rootCompany = (SearchTree) datas.get("rootCompany"); + nodeData.addAll(rootCompany.getSubs()); + } else { + String[] idArray = id.split("_"); + if (idArray.length == 2) { + if (TreeNodeTypeEnum.TYPE_COMP.getName().equals(idArray[0])) { + searchTreeParams.setType(TreeNodeTypeEnum.TYPE_COMP.getValue()); + } else if (TreeNodeTypeEnum.TYPE_DEPT.getName().equals(idArray[0])) { + searchTreeParams.setType(TreeNodeTypeEnum.TYPE_DEPT.getValue()); + } + searchTreeParams.setId(idArray[1]); + Map searchTree = new JobServiceImpl().getSearchTree(searchTreeParams); + List datas = (List) searchTree.get("datas"); + nodeData.addAll(datas.get(0).getSubs()); + } + } + List cusBrowserTrees = CusBowserTreeBO.convertSearchTreeToBorwserTree(nodeData); + resultMap.put("datas", cusBrowserTrees); + System.err.println(JSON.toJSONString(cusBrowserTrees)); + } else { + OrganizationWeaTable table = new OrganizationWeaTable<>(user, JobBrowserVO.class); + String sqlWhere = buildSqlWhere(params); + table.setSqlwhere(sqlWhere); + WeaResultMsg result = new WeaResultMsg(false); + result.putAll(table.makeDataResult()); + result.success(); + resultMap.putAll(result.getResultMap()); + } + return resultMap; + } + + @Override + public Map getBrowserConditionInfo(Map map) { + Map> apiDatas = new HashMap<>(); + List conditions = new ArrayList<>(); + // 编号 + SearchConditionItem jobNoItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "编号", "jobNo"); + // 名称 + SearchConditionItem jobNameItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "名称", "jobName"); + // 所属分部 + SearchConditionItem parentCompBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "所属分部", "164", "ecCompany", ""); + // 所属部门 + SearchConditionItem parentDeptBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "所属部门", "4", "ecDepartment", ""); + + conditions.add(jobNoItem); + conditions.add(jobNameItem); + conditions.add(parentCompBrowserItem); + conditions.add(parentDeptBrowserItem); + apiDatas.put(BrowserConstant.BROWSER_RESULT_CONDITIONS, conditions); + return apiDatas; + } + + /** + * 查询条件 + * + * @param params + * @return + */ + private String buildSqlWhere(Map params) { + DBType dbType = DBType.get(new RecordSet().getDBType()); + String sqlWhere = " where t.delete_type ='0' "; + String jobNo = Util.null2String(params.get("jobNo")); + if (StringUtils.isNotBlank(jobNo)) { + sqlWhere += " AND t.job_no " + dbType.like(jobNo); + } + String jobName = Util.null2String(params.get("jobName")); + if (StringUtils.isNotBlank(jobName)) { + sqlWhere += " AND t.job_name " + dbType.like(jobName); + } + String ecCompany = Util.null2String(params.get("ecCompany")); + if (StringUtils.isNotBlank(jobName)) { + sqlWhere += " AND t.ec_company = '" + Long.parseLong(ecCompany) + "'"; + } + String ecDepartment = Util.null2String(params.get("ecDepartment")); + if (StringUtils.isNotBlank(jobName)) { + sqlWhere += " AND t.ec_department = '" + Long.parseLong(ecDepartment) + "'"; + } + String treeKey = Util.null2String(params.get("treeKey")); + if (StringUtils.isNotBlank(treeKey)) { + String[] keyArray = treeKey.split("_"); + if (keyArray.length == 2) { + if (TreeNodeTypeEnum.TYPE_COMP.getName().equals(keyArray[0])) { + sqlWhere += " AND t.parent_comp = '" + Long.parseLong(keyArray[1]) + "'"; + } else if (TreeNodeTypeEnum.TYPE_DEPT.getName().equals(keyArray[0])) { + sqlWhere += " AND t.parent_dept = '" + Long.parseLong(keyArray[1]) + "'"; + } + } + } + return sqlWhere; + } +} diff --git a/src/com/engine/organization/entity/browser/bo/CusBowserTreeBO.java b/src/com/engine/organization/entity/browser/bo/CusBowserTreeBO.java new file mode 100644 index 00000000..f641a4be --- /dev/null +++ b/src/com/engine/organization/entity/browser/bo/CusBowserTreeBO.java @@ -0,0 +1,45 @@ +package com.engine.organization.entity.browser.bo; + +import com.api.hrm.bean.TreeNode; +import com.engine.organization.entity.browser.enums.TreeNodeTypeEnum; +import com.engine.organization.entity.browser.po.CusBrowserTree; +import org.apache.commons.collections.CollectionUtils; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author:dxfeng + * @createTime: 2022/07/15 + * @version: 1.0 + */ +public class CusBowserTreeBO { + + /** + * 树转换 + * + * @param searchTree + * @return + */ + public static List convertSearchTreeToBorwserTree(List searchTree) { + List collect = searchTree.stream().map(item -> + CusBrowserTree.builder() + .domid("sel_" + item.getId()) + .hasChild(CollectionUtils.isNotEmpty(item.getSubs())) + .isLeaf(CollectionUtils.isEmpty(item.getSubs())) + .isopen(false) + .key(getKey(item)) + .name(item.getName()) + .build()).collect(Collectors.toList()); + return collect; + } + + private static String getKey(TreeNode treeNode) { + if (TreeNodeTypeEnum.TYPE_COMP.getValue().equals(treeNode.getType())) { + return TreeNodeTypeEnum.TYPE_COMP.getName() + "_" + treeNode.getId(); + } else if (TreeNodeTypeEnum.TYPE_DEPT.getValue().equals(treeNode.getType())) { + return TreeNodeTypeEnum.TYPE_DEPT.getName() + "_" + treeNode.getId(); + } + return treeNode.getId(); + } +} diff --git a/src/com/engine/organization/entity/browser/enums/TreeNodeTypeEnum.java b/src/com/engine/organization/entity/browser/enums/TreeNodeTypeEnum.java new file mode 100644 index 00000000..7e841c75 --- /dev/null +++ b/src/com/engine/organization/entity/browser/enums/TreeNodeTypeEnum.java @@ -0,0 +1,36 @@ +package com.engine.organization.entity.browser.enums; + +/** + * @author:dxfeng + * @createTime: 2022/07/15 + * @version: 1.0 + */ +public enum TreeNodeTypeEnum { + TYPE_COMP("company", "1"), + TYPE_DEPT("department", "2"); + + + private String name; + private String value; + + TreeNodeTypeEnum(String name, String value) { + this.name = name; + this.value = value; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/com/engine/organization/entity/browser/po/CusBrowserTree.java b/src/com/engine/organization/entity/browser/po/CusBrowserTree.java new file mode 100644 index 00000000..78c1e84b --- /dev/null +++ b/src/com/engine/organization/entity/browser/po/CusBrowserTree.java @@ -0,0 +1,32 @@ +package com.engine.organization.entity.browser.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author:dxfeng + * @createTime: 2022/07/15 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CusBrowserTree { + private String domid; + private boolean hasChild; + private boolean isLeaf; + private boolean isopen; + private String key; + private String name; + + public boolean getIsLeaf() { + return isLeaf; + } + + public void setIsLeaf(boolean leaf) { + isLeaf = leaf; + } +} diff --git a/src/com/engine/organization/entity/extend/bo/ExtendInfoBO.java b/src/com/engine/organization/entity/extend/bo/ExtendInfoBO.java index 6fb569c6..02e7f30e 100644 --- a/src/com/engine/organization/entity/extend/bo/ExtendInfoBO.java +++ b/src/com/engine/organization/entity/extend/bo/ExtendInfoBO.java @@ -19,6 +19,7 @@ import com.engine.organization.entity.extend.param.ExtendInfoFieldParam; import com.engine.organization.entity.extend.po.ExtendGroupPO; import com.engine.organization.entity.extend.po.ExtendInfoPO; import com.engine.organization.mapper.extend.ExtendInfoMapper; +import com.engine.organization.service.CustomBrowserBean; import com.engine.organization.util.OrganizationFormItemUtil; import com.engine.organization.util.db.MapperProxyFactory; import com.engine.sensitive.biz.SensitiveWordTypeComInfo; @@ -71,11 +72,11 @@ public class ExtendInfoBO { /** * 新增自定义字段时,对象转换 * - * @param user 当前用户 + * @param user 当前用户 * @param infoFieldParam 拓展字段 - * @param extendGroupPO 分组实体 - * @param extendGroupId 分组ID - * @param showOrder 展示顺序 + * @param extendGroupPO 分组实体 + * @param extendGroupId 分组ID + * @param showOrder 展示顺序 */ public static ExtendInfoPO convertFieldParam2ExtendInfo(User user, ExtendInfoFieldParam infoFieldParam, ExtendGroupPO extendGroupPO, Long extendGroupId, Integer showOrder) { if (null == infoFieldParam) { @@ -335,6 +336,15 @@ public class ExtendInfoBO { } else { searchConditionItem = conditionFactory.createCondition(ConditionType.BROWSER, fieldlabel, fieldname, detailtype); } + // 岗位浏览按钮 + if ("666".equals(detailtype)) { + BrowserBean browserBean = searchConditionItem.getBrowserConditionParam(); + String s = JSONObject.toJSONString(browserBean); + CustomBrowserBean customBrowserBean = JSONObject.parseObject(s, CustomBrowserBean.class); + customBrowserBean.setHasLeftTree(true); + customBrowserBean.setLeftToSearchKey("treeKey"); + searchConditionItem.setBrowserConditionParam(customBrowserBean); + } List> replaceDatas = new ArrayList<>(); String tmpFieldValue = Util.null2String(fieldvalue); switch (detailtype) { diff --git a/src/com/engine/organization/entity/job/vo/JobBrowserVO.java b/src/com/engine/organization/entity/job/vo/JobBrowserVO.java new file mode 100644 index 00000000..68db9c0b --- /dev/null +++ b/src/com/engine/organization/entity/job/vo/JobBrowserVO.java @@ -0,0 +1,45 @@ +package com.engine.organization.entity.job.vo; + +import com.cloudstore.eccom.pc.table.WeaTableType; +import com.engine.organization.annotation.OrganizationTable; +import com.engine.organization.annotation.OrganizationTableColumn; +import com.engine.organization.annotation.OrganizationTableOperate; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author:dxfeng + * @createTime: 2022/07/15 + * @version: 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@OrganizationTable(pageId = "98e9c62f-cd12-11ec-a15f-00ffcbed7123", + fields = "t.id," + + "t.job_no," + + "t.job_name as name ", + fromSql = "FROM jcl_org_job t ", + orderby = "job_no", + sortway = "asc", + primarykey = "id", + operates = { + @OrganizationTableOperate(index = "0", text = "编辑"), + @OrganizationTableOperate(index = "1", text = "删除") + }, + tableType = WeaTableType.CHECKBOX +) +public class JobBrowserVO { + + @OrganizationTableColumn(column = "id", display = false) + private Long id; + + @OrganizationTableColumn(text = "编号", width = "25%", column = "job_no") + private String jobNo; + + @OrganizationTableColumn(text = "方案名称", width = "25%", column = "name") + private String jobName; +} diff --git a/src/com/engine/organization/service/CustomBrowserBean.java b/src/com/engine/organization/service/CustomBrowserBean.java new file mode 100644 index 00000000..f286ca5b --- /dev/null +++ b/src/com/engine/organization/service/CustomBrowserBean.java @@ -0,0 +1,28 @@ +package com.engine.organization.service; + +import com.api.browser.bean.BrowserBean; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2022/07/14 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CustomBrowserBean extends BrowserBean { + + + private String leftToSearchKey; + private boolean hasLeftTree; + private Map leftTreeParams; + private String leftTreeUrl; + private boolean resize; +}