diff --git a/docs/表结构SQL/MySQL.sql b/docs/表结构SQL/MySQL.sql index a54c30ec..55bc09dc 100644 --- a/docs/表结构SQL/MySQL.sql +++ b/docs/表结构SQL/MySQL.sql @@ -248,12 +248,12 @@ CREATE TABLE JCL_ORG_JOB ( job_name varchar(100) NULL, parent_comp int null, parent_dept int null, - job_sequence int null, + sequence_id int null, scheme_id int null, parent_job int null, - is_key_job int null, + is_key int null, workplace varchar(100) NULL, - work_description text null, + description text null, work_duty text null, work_authority text null, forbidden_tag int NULL, @@ -268,8 +268,8 @@ CREATE TABLE JCL_ORG_JOB ( CREATE TABLE JCL_ORG_JOBDT ( id int auto_increment NOT NULL, mainid int NULL, - job_rank int null, - job_level int null, + level_id int null, + grade_id int null, creator int null, delete_type int null, create_time date null, diff --git a/docs/表结构SQL/Oracle.sql b/docs/表结构SQL/Oracle.sql index 9814fbba..f19323bc 100644 --- a/docs/表结构SQL/Oracle.sql +++ b/docs/表结构SQL/Oracle.sql @@ -250,12 +250,12 @@ CREATE TABLE JCL_ORG_JOB ( JOB_NAME NVARCHAR2(100) NULL, PARENT_COMP NUMBER NULL, PARENT_DEPT NUMBER NULL, - JOB_SEQUENCE NUMBER NULL, + SEQUENCE_ID NUMBER NULL, SCHEME_ID NUMBER NULL, PARENT_JOB NUMBER NULL, - IS_KEY_JOB NUMBER NULL, + IS_KEY NUMBER NULL, WORKPLACE NVARCHAR2(100) NULL, - WORK_DESCRIPTION NVARCHAR2(1000) NULL, + DESCRIPTION NVARCHAR2(1000) NULL, WORK_DUTY NVARCHAR2(1000) NULL, WORK_AUTHORITY NVARCHAR2(1000) NULL, FORBIDDEN_TAG NUMBER NULL, @@ -270,8 +270,8 @@ CREATE TABLE JCL_ORG_JOB ( CREATE TABLE JCL_ORG_JOBDT ( ID NUMBER NOT NULL, MAINID NUMBER NULL, - JOB_RANK NUMBER NULL, - JOB_LEVEL NUMBER NULL, + LEVEL_ID NUMBER NULL, + GRADE_ID NUMBER NULL, CREATOR NUMBER NULL, DELETE_TYPE NUMBER NULL, CREATE_TIME DATE NULL, diff --git a/docs/表结构SQL/SqlServer.sql b/docs/表结构SQL/SqlServer.sql index 643e1dec..8cea6e9b 100644 --- a/docs/表结构SQL/SqlServer.sql +++ b/docs/表结构SQL/SqlServer.sql @@ -248,12 +248,12 @@ CREATE TABLE JCL_ORG_JOB ( job_name varchar(100) COLLATE Chinese_PRC_CI_AS NULL, parent_comp int null, parent_dept int null, - job_sequence int null, + sequence_id int null, scheme_id int null, parent_job int null, - is_key_job int null, + is_key int null, workplace varchar(100) COLLATE Chinese_PRC_CI_AS NULL, - work_description text null, + description text null, work_duty text null, work_authority text null, forbidden_tag int NULL, @@ -268,8 +268,8 @@ CREATE TABLE JCL_ORG_JOB ( CREATE TABLE JCL_ORG_JOBDT ( id int IDENTITY(1,1) NOT NULL, mainid int NULL, - job_rank int null, - job_level int null, + level_id int null, + grade_id int null, creator int null, delete_type int null, create_time date null, diff --git a/src/com/engine/organization/entity/department/bo/DepartmentBO.java b/src/com/engine/organization/entity/department/bo/DepartmentBO.java index 4937f452..ff36bbfc 100644 --- a/src/com/engine/organization/entity/department/bo/DepartmentBO.java +++ b/src/com/engine/organization/entity/department/bo/DepartmentBO.java @@ -26,8 +26,20 @@ public class DepartmentBO { // 递归添加父级数据 Map poMaps = list.stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item)); - List dtoList = list.stream().map(e -> DepartmentListDTO.builder().id(e.getId()).deptNo(e.getDeptNo()).deptName(e.getDeptName()).deptNameShort(e.getDeptNameShort()).parentComp(e.getParentComp() + "")// 命名 - .parentDept(e.getParentDept()).parentDeptName(null == poMaps.get(e.getParentDept()) ? "" : poMaps.get(e.getParentDept()).getDeptName()).deptPrincipal(getEmployeeNameById(e.getDeptPrincipal())).showOrder(e.getShowOrder()).forbiddenTag(e.getForbiddenTag()).build()).collect(Collectors.toList()); + List dtoList = list.stream().map(e -> + DepartmentListDTO + .builder() + .id(e.getId()) + .deptNo(e.getDeptNo()) + .deptName(e.getDeptName()) + .deptNameShort(e.getDeptNameShort()) + .parentComp(e.getParentComp() + "")// 命名 + .parentDept(e.getParentDept()) + .parentDeptName(null == poMaps.get(e.getParentDept()) ? "" : poMaps.get(e.getParentDept()) + .getDeptName()).deptPrincipal(getEmployeeNameById(e.getDeptPrincipal())) + .showOrder(null == e.getShowOrder() ? 0 : e.getShowOrder()) + .forbiddenTag(e.getForbiddenTag()) + .build()).collect(Collectors.toList()); Map> collects = dtoList.stream().filter(item -> null != item.getParentDept() && 0 != item.getParentDept()).collect(Collectors.groupingBy(DepartmentListDTO::getParentDept)); return dtoList.stream().peek(e -> e.setChildren(collects.get(e.getId()))).filter(item -> null == item.getParentDept() || 0 == item.getParentDept()).collect(Collectors.toList()); } @@ -43,18 +55,29 @@ public class DepartmentBO { for (DepartmentPO po : filterList) { dealParentData(addedList, po, poMaps); } - - List dtoList = addedList.stream().map(e -> DepartmentListDTO.builder().id(e.getId()).deptNo(e.getDeptNo()).deptName(e.getDeptName()).deptNameShort(e.getDeptNameShort()).parentComp(e.getParentComp() + "")// 命名 - .parentDept(e.getParentDept()).parentDeptName(null == poMaps.get(e.getParentDept()) ? "" : poMaps.get(e.getParentDept()).getDeptName()).deptPrincipal(getEmployeeNameById(e.getDeptPrincipal())).showOrder(e.getShowOrder()).forbiddenTag(e.getForbiddenTag()).build()).collect(Collectors.toList()); - Map> collects = dtoList.stream().filter(item -> null != item.getParentDept() && 0 != item.getParentDept()).collect(Collectors.groupingBy(DepartmentListDTO::getParentDept)); - return dtoList.stream().peek(e -> e.setChildren(collects.get(e.getId()))).filter(item -> null == item.getParentDept() || 0 == item.getParentDept()).collect(Collectors.toList()); + return buildDeptDTOList(addedList); } - public static DepartmentPO convertParamsToPO(DeptSearchParam param, Long employeeId) { + public static DepartmentPO convertParamsToPO(DeptSearchParam param, long employeeId) { if (null == param) { return null; } - return DepartmentPO.builder().id(param.getId() == null ? 0 : param.getId()).deptNo(param.getDeptNo()).deptName(param.getDeptName()).deptNameShort(param.getDeptNameShort()).parentComp(param.getParentComp()).parentDept(param.getParentDept()).deptPrincipal(param.getDeptPrincipal()).showOrder(param.getShowOrder()).forbiddenTag(param.getForbiddenTag() == null ? null : param.getForbiddenTag() ? 0 : 1).description(param.getDescription()).deleteType(0).createTime(new Date()).updateTime(new Date()).creator(employeeId).build(); + return DepartmentPO + .builder() + .id(param.getId() == null ? 0 : param.getId()) + .deptNo(param.getDeptNo()) + .deptName(param.getDeptName()) + .deptNameShort(param.getDeptNameShort()) + .parentComp(param.getParentComp()) + .parentDept(param.getParentDept()) + .deptPrincipal(param.getDeptPrincipal()) + .showOrder(param.getShowOrder()) + .forbiddenTag(param.getForbiddenTag() == null ? null : param.getForbiddenTag() ? 0 : 1) + .description(param.getDescription()).deleteType(0) + .createTime(new Date()) + .updateTime(new Date()) + .creator(employeeId) + .build(); } public static List buildSingleDeptTreeVOS(List departmentPOs, Long parentComp) { diff --git a/src/com/engine/organization/entity/job/bo/JobBO.java b/src/com/engine/organization/entity/job/bo/JobBO.java new file mode 100644 index 00000000..e3aaadfd --- /dev/null +++ b/src/com/engine/organization/entity/job/bo/JobBO.java @@ -0,0 +1,104 @@ +package com.engine.organization.entity.job.bo; + +import com.engine.organization.entity.job.dto.JobListDTO; +import com.engine.organization.entity.job.param.JobSearchParam; +import com.engine.organization.entity.job.po.JobPO; +import com.engine.organization.transmethod.JobTransMethod; +import org.apache.commons.collections.CollectionUtils; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/30 + * @version: 1.0 + */ +public class JobBO { + + public static JobPO convertParamsToPO(JobSearchParam param, long employeeId) { + if (null == param) { + return null; + } + return JobPO + .builder() + .id(param.getId() == null ? 0 : param.getId()) + .jobNo(param.getJobNo()) + .jobName(param.getJobName()) + .parentComp(param.getParentComp()) + .parentDept(param.getParentDept()) + .sequenceId(param.getSequenceId()) + .schemeId(param.getSchemeId()) + .parentJob(param.getParentJob()) + .isKey(param.getIsKey()) + .workplace(param.getWorkplace()) + .description(param.getDescription()) + .workDuty(param.getWorkDuty()) + .workAuthority(param.getWorkAuthority()) + .forbiddenTag(param.getForbiddenTag() == null ? null : param.getForbiddenTag() ? 0 : 1) + .deleteType(0) + .createTime(new Date()) + .updateTime(new Date()) + .creator(employeeId) + .build(); + } + + + public static List buildDTOList(Collection list) { + // 递归添加父级数据 + Map poMaps = list.stream().collect(Collectors.toMap(JobListDTO::getId, item -> item)); + + List dtoList = list.stream().map(e -> + JobListDTO.builder() + .id(e.getId()) + .jobNo(e.getJobNo()) + .jobName(e.getJobName()) + .compName(e.getCompName()) + .deptName(e.getDeptName()) + .sequenceName(e.getSequenceName()) + .schemeName(e.getSchemeName()) + .parentJob(e.getParentJob()) + .parentJobName(null == poMaps.get(e.getParentJob()) ? "" : poMaps.get(e.getParentJob()).getJobName()) + .isKey(JobTransMethod.getIsKeySpan(e.getIsKey())) + .forbiddenTag(e.getForbiddenTag()) + .build()).collect(Collectors.toList()); + Map> collects = dtoList.stream().filter(item -> null != item.getParentJob() && 0 != item.getParentJob()).collect(Collectors.groupingBy(JobListDTO::getParentJob)); + return dtoList.stream().peek(e -> e.setChildren(collects.get(e.getId()))).filter(item -> null == item.getParentJob() || 0 == item.getParentJob()).collect(Collectors.toList()); + } + + + public static List buildJobDTOList(List allList, List filterJobPOs) { + // 搜索结果为空,直接返回空 + if (CollectionUtils.isEmpty(filterJobPOs)) { + return Collections.emptyList(); + } + // 递归添加父级数据 + Map poMaps = allList.stream().collect(Collectors.toMap(JobListDTO::getId, item -> item)); + List addedList = new ArrayList<>(); + for (JobListDTO dto : filterJobPOs) { + dealParentData(addedList, dto, poMaps); + } + // 递归添加父级数据 + return buildDTOList(addedList); + + } + + /** + * 递归获取查询后数据的父级数据 + * + * @param addedList + * @param po + * @param poMaps + */ + private static void dealParentData(List addedList, JobListDTO po, Map poMaps) { + if (!addedList.contains(po)) { + addedList.add(po); + } + JobListDTO parentDto = poMaps.get(po.getParentJob()); + if (null != parentDto) { + dealParentData(addedList, parentDto, poMaps); + } + } + +} diff --git a/src/com/engine/organization/entity/job/dto/JobListDTO.java b/src/com/engine/organization/entity/job/dto/JobListDTO.java new file mode 100644 index 00000000..91759418 --- /dev/null +++ b/src/com/engine/organization/entity/job/dto/JobListDTO.java @@ -0,0 +1,92 @@ +package com.engine.organization.entity.job.dto; + +import com.cloudstore.eccom.pc.table.WeaTableType; +import com.engine.organization.annotation.OrganizationTable; +import com.engine.organization.annotation.OrganizationTableOperate; +import com.engine.organization.annotation.TableTitle; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/30 + * @version: 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@OrganizationTable(pageId = "0efea835-dfc5-11ec-a09e-00e04c680716", + tableType = WeaTableType.NONE, + operates = { + @OrganizationTableOperate(index = "0", text = "编辑"), + @OrganizationTableOperate(index = "1", text = "删除"), + @OrganizationTableOperate(index = "2", text = "合并"), + @OrganizationTableOperate(index = "3", text = "转移"), + @OrganizationTableOperate(index = "4", text = "联查岗位"), + @OrganizationTableOperate(index = "4", text = "联查人员") + }) +public class JobListDTO { + /** + * 主键 + */ + private Long id; + + /** + * 编号 + */ + @TableTitle(title = "编号", dataIndex = "jobNo", key = "jobNo") + private String jobNo; + /** + * 名称 + */ + @TableTitle(title = "名称", dataIndex = "jobName", key = "jobName") + private String jobName; + /** + * 所属分部 + */ + @TableTitle(title = "所属分部", dataIndex = "parentComp", key = "parentComp") + private String compName; + /** + * 所属部门 + */ + @TableTitle(title = "所属部门", dataIndex = "parentDept", key = "parentDept") + private String deptName; + /** + * 岗位序列 + */ + @TableTitle(title = "岗位序列", dataIndex = "sequenceId", key = "sequenceId") + private String sequenceName; + /** + * 等级方案 + */ + @TableTitle(title = "等级方案", dataIndex = "schemeId", key = "schemeId") + private String schemeName; + /** + * 上级岗位 + */ + @TableTitle(title = "上级岗位", dataIndex = "parentJob", key = "parentJob") + private String parentJobName; + private Long parentJob; + /** + * 是否关键岗 + */ + @TableTitle(title = "是否关键岗", dataIndex = "isKey", key = "isKey") + private String isKey; + + /** + * 禁用标记 + */ + @TableTitle(title = "禁用标记", dataIndex = "forbiddenTag", key = "forbiddenTag") + private Integer forbiddenTag; + + /** + * 子节点 + */ + private List children; +} diff --git a/src/com/engine/organization/entity/job/param/JobSearchParam.java b/src/com/engine/organization/entity/job/param/JobSearchParam.java new file mode 100644 index 00000000..69088ae8 --- /dev/null +++ b/src/com/engine/organization/entity/job/param/JobSearchParam.java @@ -0,0 +1,76 @@ +package com.engine.organization.entity.job.param; + +import com.engine.organization.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/30 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class JobSearchParam extends BaseQueryParam { + /** + * 主键 + */ + private Long id; + /** + * 编号 + */ + private String jobNo; + /** + * 名称 + */ + private String jobName; + /** + * 所属分部 + */ + private Long parentComp; + /** + * 所属部门 + */ + private Long parentDept; + /** + * 岗位序列 + */ + private Long sequenceId; + /** + * 等级方案 + */ + private Long schemeId; + /** + * 上级岗位 + */ + private Long parentJob; + /** + * 是否关键岗 + */ + private Integer isKey; + /** + * 工作地点 + */ + private String workplace; + /** + * 工作概述 + */ + private String description; + /** + * 任职职责 + */ + private String workDuty; + /** + * 工作权限 + */ + private String workAuthority; + /** + * 禁用标记 + */ + private Boolean forbiddenTag; +} diff --git a/src/com/engine/organization/entity/job/po/JobPO.java b/src/com/engine/organization/entity/job/po/JobPO.java new file mode 100644 index 00000000..20d224bd --- /dev/null +++ b/src/com/engine/organization/entity/job/po/JobPO.java @@ -0,0 +1,85 @@ +package com.engine.organization.entity.job.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/30 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class JobPO { + /** + * 主键 + */ + private Long id; + /** + * 编号 + */ + private String jobNo; + /** + * 名称 + */ + private String jobName; + /** + * 所属分部 + */ + private Long parentComp; + /** + * 所属部门 + */ + private Long parentDept; + /** + * 岗位序列 + */ + private Long sequenceId; + /** + * 等级方案 + */ + private Long schemeId; + /** + * 上级岗位 + */ + private Long parentJob; + /** + * 是否关键岗 + */ + private Integer isKey; + /** + * 工作地点 + */ + private String workplace; + /** + * 工作概述 + */ + private String description; + /** + * 任职职责 + */ + private String workDuty; + /** + * 工作权限 + */ + private String workAuthority; + /** + * 禁用标记 + */ + private Integer forbiddenTag; + + + private Long creator; + private int deleteType; + private Date createTime; + private Date updateTime; + + +} diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.xml b/src/com/engine/organization/mapper/department/DepartmentMapper.xml index b1a22c78..c8c40bfd 100644 --- a/src/com/engine/organization/mapper/department/DepartmentMapper.xml +++ b/src/com/engine/organization/mapper/department/DepartmentMapper.xml @@ -246,9 +246,6 @@ and t.dept_name_short like CONCAT('%',#{deptNameShort},'%') - - and t.dept_name_short like CONCAT('%',#{deptNameShort},'%') - diff --git a/src/com/engine/organization/mapper/job/JobMapper.java b/src/com/engine/organization/mapper/job/JobMapper.java new file mode 100644 index 00000000..cb059891 --- /dev/null +++ b/src/com/engine/organization/mapper/job/JobMapper.java @@ -0,0 +1,98 @@ +package com.engine.organization.mapper.job; + +import com.engine.organization.entity.job.dto.JobListDTO; +import com.engine.organization.entity.job.po.JobPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +public interface JobMapper { + + /** + * 根据搜索条件查询数据 + * + * @return + */ + List listByFilter(JobPO jobPO); + + /** + * 展示所有列表数据 + * + * @return + */ + List listNoFilter(); + + /** + * 根据ID查询元素 + * + * @param id + * @return + */ + JobPO getJobById(@Param("id") Long id); + + /** + * 根据父ID查询元素 + * + * @param pid + * @return + */ + List getJobsByPid(@Param("pid") Long pid); + + /** + * 浏览按钮展示数据用 + * + * @param ids + * @return + */ + List> listJobsByIds(@Param("ids") Collection ids); + + /** + * 根据编号查询数据 + * + * @param jobNo + * @return + */ + List listByNo(@Param("jobNo") String jobNo); + + /** + * 添加数据 + * + * @param jobPO + * @return + */ + int insertIgnoreNull(JobPO jobPO); + + + /** + * 更新主表内容 + * + * @param jobPO + * @return + */ + int updateBaseJob(JobPO jobPO); + + /** + * 更新禁用标识 + * + * @param id + * @param forbiddenTag + * @return + */ + int updateForbiddenTagById(@Param("id") long id, @Param("forbiddenTag") int forbiddenTag); + + /** + * 批量删除 + * + * @param ids + */ + int deleteByIds(@Param("ids") Collection ids); + +} diff --git a/src/com/engine/organization/mapper/job/JobMapper.xml b/src/com/engine/organization/mapper/job/JobMapper.xml new file mode 100644 index 00000000..1c5de349 --- /dev/null +++ b/src/com/engine/organization/mapper/job/JobMapper.xml @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + t + . + id + , + t.job_no, + t.job_name, + t.parent_comp, + t.parent_dept, + t.sequence_id, + t.scheme_id, + t.parent_job, + t.is_key, + t.workplace, + t.description, + t.work_duty, + t.work_authority, + t.forbidden_tag + + + INSERT INTO jcl_org_job + + + creator, + + + delete_type, + + + create_time, + + + update_time, + + + + job_no, + + + job_name, + + + parent_comp, + + + parent_dept, + + + sequence_id, + + + scheme_id, + + + parent_job, + + + is_key, + + + workplace, + + + description, + + + work_duty, + + + work_authority, + + forbidden_tag, + + + + #{creator}, + + + #{deleteType}, + + + #{createTime}, + + + #{updateTime}, + + + #{jobNo}, + + + #{jobName}, + + + + #{parentComp}, + + + #{parentDept}, + + + #{sequenceId}, + + + #{schemeId}, + + + #{parentJob}, + + + #{isKey}, + + + #{workplace}, + + + #{description}, + + + #{workDuty}, + + + #{workAuthority}, + + 0, + + + + update jcl_org_job + + creator=#{creator}, + update_time=#{updateTime}, + jobName=#{jobName}, + parent_comp=#{parentComp}, + parent_dept=#{parentDept}, + sequence_id=#{sequenceId}, + scheme_id=#{schemeId}, + parent_job=#{parentJob}, + is_key=#{isKey}, + workplace=#{workplace}, + description=#{description}, + work_duty=#{workDuty}, + work_authority=#{workAuthority}, + + WHERE id = #{id} AND delete_type = 0 + + + update jcl_org_job + + forbidden_tag=#{forbiddenTag}, + + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE jcl_org_job + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + + + + + + + + + + + + and t.job_no like CONCAT('%',#{jobNo},'%') + + + and t.job_name like CONCAT('%',#{jobName},'%') + + + and t.workplace like CONCAT('%',#{workplace},'%') + + + and t.description like CONCAT('%',#{description},'%') + + + and t.work_duty like CONCAT('%',#{workDuty},'%') + + + and t.work_authority like CONCAT('%',#{workAuthority},'%') + + + + + + and t.job_no like '%'||#{jobNo}||'%' + + + and t.job_name like '%'||#{jobName}||'%' + + + and t.workplace like '%'||#{workplace}||'%' + + + and t.description like '%'||#{description}||'%' + + + and t.work_duty like '%'||#{workDuty}||'%' + + + and t.work_authority like '%'||#{workAuthority}||'%' + + + + + + and t.job_no like '%'+#{jobNo}+'%' + + + and t.job_name like '%'+#{jobName}+'%' + + + and t.workplace like '%'+#{workplace}+'%' + + + and t.description like '%'+#{description}+'%' + + + and t.work_duty like '%'+#{workDuty}+'%' + + + and t.work_authority like '%'+#{workAuthority}+'%' + + + \ No newline at end of file diff --git a/src/com/engine/organization/service/JobService.java b/src/com/engine/organization/service/JobService.java index 7fd0c6d8..3b516618 100644 --- a/src/com/engine/organization/service/JobService.java +++ b/src/com/engine/organization/service/JobService.java @@ -1,7 +1,9 @@ package com.engine.organization.service; +import com.engine.organization.entity.job.param.JobSearchParam; import com.engine.organization.entity.searchtree.SearchTreeParams; +import java.util.Collection; import java.util.Map; /** @@ -17,4 +19,73 @@ public interface JobService { * @return */ Map getSearchTree(SearchTreeParams params); + + /** + * 列表数据展示 + * + * @param param + * @return + */ + Map listPage(JobSearchParam param); + + /** + * 获取列表页面按钮信息 + * + * @return + */ + Map getHasRight(); + + /** + * 获取搜索条件 + * + * @return + */ + Map getSearchCondition(); + + /** + * 获取新增表单 + * + * @return + */ + Map getSaveForm(); + + /** + * 获取详细表单 + * + * @param params + * @return + */ + Map getJobBaseForm(Map params); + + /** + * 保存基础信息 + * + * @param params + * @return + */ + int saveBaseForm(JobSearchParam params); + + /** + * 更新主表、拓展表、明细表 + * + * @param params + * @return + */ + int updateForm(Map params); + + /** + * 更新禁用标记 + * + * @param params + * @return + */ + int updateForbiddenTagById(JobSearchParam params); + + /** + * 根据ID批量删除 + * + * @param ids + */ + int deleteByIds(Collection ids); + } diff --git a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java index eb71723b..1819cf7d 100644 --- a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java +++ b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java @@ -49,7 +49,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService * 2:部门 * 3:岗位 */ - private static final String EXTEND_TYPE = "w"; + private static final String EXTEND_TYPE = "2"; /** * 主表拓展表 */ @@ -152,7 +152,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService public int updateForm(Map params) { DeptSearchParam searchParam = JSONObject.parseObject(JSONObject.toJSONString(params), DeptSearchParam.class); String groupId = (String) params.get("viewCondition"); - DepartmentPO departmentPO = DepartmentBO.convertParamsToPO(searchParam, (long) user.getUID()); + DepartmentPO departmentPO = DepartmentBO.convertParamsToPO(searchParam,user.getUID()); int updateCount = 0; // 更新主表数据 updateCount += getDepartmentMapper().updateBaseDept(departmentPO); @@ -326,8 +326,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService private List getBaseForm(int viewAttr, long id) { List conditionItems = new ArrayList<>(); // 编号 - SearchConditionItem deptNoItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "编号", "deptNo"); - deptNoItem.setRules("required|string"); + SearchConditionItem deptNoItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 1, 50, "编号", "deptNo"); // 名称 SearchConditionItem deptNameItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "名称", "deptName"); deptNameItem.setRules("required|string"); diff --git a/src/com/engine/organization/service/impl/ExtServiceImpl.java b/src/com/engine/organization/service/impl/ExtServiceImpl.java index 27183143..9c84c69e 100644 --- a/src/com/engine/organization/service/impl/ExtServiceImpl.java +++ b/src/com/engine/organization/service/impl/ExtServiceImpl.java @@ -28,6 +28,13 @@ import java.util.stream.Collectors; public class ExtServiceImpl extends Service implements ExtService { private static final Integer BROWSER_TYPE = 3; + /** + * 分组类型 + * 1:分部 + * 2:部门 + * 3:岗位 + */ + private static final String TYPE_JOB = "3"; private ExtendInfoMapper getExtendInfoMapper() { return MapperProxyFactory.getProxy(ExtendInfoMapper.class); @@ -60,7 +67,7 @@ public class ExtServiceImpl extends Service implements ExtService { for (ExtendInfoPO extendInfoPO : infoPOList) { SearchConditionItem item = ExtendInfoBO.getSearchConditionItem(user, viewAttr, extendInfoPO, null == compExtMap ? null : compExtMap.get(extendInfoPO.getFieldName())); item.setFieldcol(16); - if ( 2 == viewAttr && 1 == extendInfoPO.getIsrequired()) { + if (2 == viewAttr && 1 == extendInfoPO.getIsrequired()) { item.setViewAttr(3); item.setRules("required|string"); } @@ -91,6 +98,9 @@ public class ExtServiceImpl extends Service implements ExtService { } return item.getFieldName(); }).collect(Collectors.joining(",")); + //if (TYPE_JOB.equals(extendType)) { + // fields += ""; + //} // 去除null 元素 List> maps = getExtDTMapper().listCompExtDT(tableName, id, fields); maps.removeIf(Objects::isNull); @@ -167,6 +177,13 @@ public class ExtServiceImpl extends Service implements ExtService { } map.put(extendInfoPO.getFieldName(), params.get(extendInfoPO.getFieldName() + "_" + i)); } + //// 岗位管理,添加特殊字段 + //if (TYPE_JOB.equals(extendType)) { + // map.put("level_id", params.get("level_id_" + i)); + // map.put("level_id_span", params.get("level_id_span_" + i)); + // map.put("grade_id", params.get("grade_id_" + i)); + // map.put("grade_id_span", params.get("grade_id_span_" + i)); + //} map.put("mainid", id); map.put("creator", user.getUID()); map.put("delete_type", 0); diff --git a/src/com/engine/organization/service/impl/JobServiceImpl.java b/src/com/engine/organization/service/impl/JobServiceImpl.java index 012f324e..6970730a 100644 --- a/src/com/engine/organization/service/impl/JobServiceImpl.java +++ b/src/com/engine/organization/service/impl/JobServiceImpl.java @@ -1,22 +1,48 @@ package com.engine.organization.service.impl; +import com.alibaba.fastjson.JSONObject; +import com.api.browser.bean.BrowserBean; +import com.api.browser.bean.SearchConditionGroup; +import com.api.browser.bean.SearchConditionItem; +import com.api.browser.bean.SearchConditionOption; import com.api.hrm.bean.TreeNode; +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.cloudstore.eccom.result.WeaResultMsg; +import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.organization.component.OrganizationWeaTable; import com.engine.organization.entity.QueryParam; import com.engine.organization.entity.comp.bo.CompBO; import com.engine.organization.entity.comp.po.CompPO; import com.engine.organization.entity.department.bo.DepartmentBO; +import com.engine.organization.entity.department.dto.DepartmentListDTO; import com.engine.organization.entity.department.po.DepartmentPO; +import com.engine.organization.entity.job.bo.JobBO; +import com.engine.organization.entity.job.dto.JobListDTO; +import com.engine.organization.entity.job.param.JobSearchParam; +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; import com.engine.organization.mapper.department.DepartmentMapper; +import com.engine.organization.mapper.extend.ExtendGroupMapper; +import com.engine.organization.mapper.job.JobMapper; +import com.engine.organization.mapper.scheme.SchemeMapper; +import com.engine.organization.mapper.sequence.SequenceMapper; +import com.engine.organization.service.ExtService; import com.engine.organization.service.JobService; +import com.engine.organization.util.MenuBtn; +import com.engine.organization.util.OrganizationAssert; +import com.engine.organization.util.OrganizationFormItemUtil; import com.engine.organization.util.db.MapperProxyFactory; +import com.engine.organization.util.page.Column; +import com.engine.organization.util.page.PageInfo; +import com.engine.organization.util.page.PageUtil; import org.apache.commons.collections4.CollectionUtils; import weaver.conn.RecordSet; import weaver.general.StringUtil; import weaver.general.Util; +import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; @@ -29,10 +55,37 @@ import java.util.stream.Collectors; */ public class JobServiceImpl extends Service implements JobService { + /** + * 左侧树 类型表示 + *

+ * 0:集团 + * 1:分部 + * 2:部门 + */ private static final String TYPE_GROUP = "0"; private static final String TYPE_COMP = "1"; private static final String TYPE_DEPT = "2"; + /** + * 分组类型 + * 1:分部 + * 2:部门 + * 3:岗位 + */ + private static final String EXTEND_TYPE = "3"; + /** + * 主表拓展表 + */ + private static final String JCL_ORG_JOBEXT = "JCL_ORG_JOBEXT"; + /** + * 明细表拓展表 + */ + private static final String JCL_ORG_JOBEXT_DT1 = "JCL_ORG_JOBEXT_DT1"; + + private JobMapper getJobMapper() { + return MapperProxyFactory.getProxy(JobMapper.class); + } + private CompMapper getCompMapper() { return MapperProxyFactory.getProxy(CompMapper.class); } @@ -41,6 +94,23 @@ public class JobServiceImpl extends Service implements JobService { return MapperProxyFactory.getProxy(DepartmentMapper.class); } + private SequenceMapper getSequenceMapper() { + return MapperProxyFactory.getProxy(SequenceMapper.class); + } + + private SchemeMapper getSchemeMapper() { + return MapperProxyFactory.getProxy(SchemeMapper.class); + } + + private ExtendGroupMapper getExtendGroupMapper() { + return MapperProxyFactory.getProxy(ExtendGroupMapper.class); + } + + private ExtService getExtService(User user) { + return ServiceUtil.getService(ExtServiceImpl.class, user); + } + + @Override public Map getSearchTree(SearchTreeParams params) { Map dataMap = new HashMap<>(); @@ -70,6 +140,249 @@ public class JobServiceImpl extends Service implements JobService { return dataMap; } + @Override + public Map listPage(JobSearchParam param) { + Map datas = new HashMap<>(); + JobPO jobPO = JobBO.convertParamsToPO(param, (long) user.getUID()); + boolean filter = isFilter(jobPO); + PageInfo pageInfos; + List allList = getJobMapper().listNoFilter(); + // 通过子级遍历父级元素 + if (filter) { + // 根据条件获取元素 + List filterJobPOs = getJobMapper().listByFilter(jobPO); + // 添加父级元素 + List compListDTOS = JobBO.buildJobDTOList(allList, filterJobPOs); + List subList = PageUtil.subList(param.getCurrent(), param.getPageSize(), compListDTOS); + pageInfos = new PageInfo<>(subList, JobListDTO.class); + pageInfos.setTotal(compListDTOS.size()); + } else { + // 组合list + List compListDTOS = JobBO.buildDTOList(allList); + List subList = PageUtil.subList(param.getCurrent(), param.getPageSize(), compListDTOS); + pageInfos = new PageInfo<>(subList, JobListDTO.class); + pageInfos.setTotal(compListDTOS.size()); + } + + pageInfos.setPageNum(param.getCurrent()); + pageInfos.setPageSize(param.getPageSize()); + + OrganizationWeaTable table = new OrganizationWeaTable<>(user, DepartmentListDTO.class); + List columns = pageInfos.getColumns(); + List weaTableColumn = columns.stream().map(v -> new WeaTableColumn("100", v.getTitle(), v.getKey())).collect(Collectors.toList()); + + table.setColumns(weaTableColumn); + + WeaResultMsg result = new WeaResultMsg(false); + result.putAll(table.makeDataResult()); + result.success(); + + datas.put("pageInfo", pageInfos); + datas.put("dataKey", result.getResultMap()); + return datas; + } + + @Override + public Map getHasRight() { + Map btnDatas = new HashMap<>(); + ArrayList topMenuList = new ArrayList<>(); + ArrayList rightMenuList = new ArrayList<>(); + // 新增 + topMenuList.add(MenuBtn.topMenu_addNew()); + // 批量删除 + topMenuList.add(MenuBtn.topMenu_batchDelete()); + // 复制 + topMenuList.add(MenuBtn.topMenu_copy()); + btnDatas.put("topMenu", topMenuList); + // 新增 + rightMenuList.add(MenuBtn.rightMenu_addNew()); + // 复制 + rightMenuList.add(MenuBtn.rightMenu_copy()); + // 日志 + rightMenuList.add(MenuBtn.rightMenu_btnLog()); + btnDatas.put("rightMenu", rightMenuList); + return btnDatas; + } + + @Override + public Map getSearchCondition() { + Map apiDatas = new HashMap<>(); + List addGroups = new ArrayList<>(); + List conditionItems = 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, "所属分部", "161", "parentComp", "compBrowser"); + // 所属部门 + SearchConditionItem parentDeptBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "所属部门", "161", "parentDept", "deptBrowser"); + // 岗位序列 + SearchConditionItem sequenceBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "岗位序列", "161", "sequenceId", "sequenceBrowser"); + // 等级方案 + SearchConditionItem schemeBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "岗位序列", "161", "schemeId", "schemeBrowser"); + // 上级岗位 + SearchConditionItem parentJobBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "上级岗位", "161", "parentJob", "jobBrowser"); + // 是否关键岗 + List isKeyOptions = new ArrayList<>(); + SearchConditionOption yesOption = new SearchConditionOption("0", "否"); + SearchConditionOption noOption = new SearchConditionOption("1", "是"); + isKeyOptions.add(yesOption); + isKeyOptions.add(noOption); + SearchConditionItem isKeyItem = OrganizationFormItemUtil.selectItem(user, isKeyOptions, 2, 16, 6, false, "禁用标记", "forbiddenTag"); + // 工作地点 + SearchConditionItem workplaceItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "工作地点", "workplace"); + // 工作概述 + SearchConditionItem descriptionItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "工作概述", "description"); + // 任职职责 + SearchConditionItem workDutyItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "任职职责", "workDuty"); + // 工作权限 + SearchConditionItem workAuthorityItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "工作权限", "workAuthority"); + // 禁用标记 + List selectOptions = new ArrayList<>(); + SearchConditionOption enableOption = new SearchConditionOption("true", "启用"); + SearchConditionOption disableOption = new SearchConditionOption("false", "禁用"); + selectOptions.add(enableOption); + selectOptions.add(disableOption); + SearchConditionItem forbiddenTagItem = OrganizationFormItemUtil.selectItem(user, selectOptions, 2, 16, 6, false, "禁用标记", "forbiddenTag"); + + conditionItems.add(jobNoItem); + conditionItems.add(jobNameItem); + conditionItems.add(parentCompBrowserItem); + conditionItems.add(parentDeptBrowserItem); + conditionItems.add(sequenceBrowserItem); + conditionItems.add(schemeBrowserItem); + conditionItems.add(parentJobBrowserItem); + conditionItems.add(isKeyItem); + conditionItems.add(workplaceItem); + conditionItems.add(descriptionItem); + conditionItems.add(workDutyItem); + conditionItems.add(workAuthorityItem); + conditionItems.add(forbiddenTagItem); + + addGroups.add(new SearchConditionGroup("高级搜索条件", true, conditionItems)); + apiDatas.put("conditions", addGroups); + return apiDatas; + } + + @Override + public Map getSaveForm() { + Map apiDatas = new HashMap<>(); + List addGroups = new ArrayList<>(); + List conditionItems = new ArrayList<>(); + // 编号 + SearchConditionItem jobNoItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "编号", "jobNo"); + jobNoItem.setRules("required|string"); + // 名称 + SearchConditionItem jobNameItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "名称", "jobName"); + jobNoItem.setRules("required|string"); + // 所属分部 + SearchConditionItem parentCompBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "所属分部", "161", "parentComp", "compBrowser"); + parentCompBrowserItem.setRules("required|string"); + // 所属部门 + SearchConditionItem parentDeptBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "所属部门", "161", "parentDept", "deptBrowser"); + parentDeptBrowserItem.setRules("required|string"); + // 岗位序列 + SearchConditionItem sequenceBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "岗位序列", "161", "sequenceId", "sequenceBrowser"); + // 等级方案 + SearchConditionItem schemeBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "岗位序列", "161", "schemeId", "schemeBrowser"); + // 上级岗位 + SearchConditionItem parentJobBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "上级岗位", "161", "parentJob", "jobBrowser"); + // 是否关键岗 + List isKeyOptions = new ArrayList<>(); + SearchConditionOption yesOption = new SearchConditionOption("0", "否"); + SearchConditionOption noOption = new SearchConditionOption("1", "是"); + isKeyOptions.add(yesOption); + isKeyOptions.add(noOption); + SearchConditionItem isKeyItem = OrganizationFormItemUtil.selectItem(user, isKeyOptions, 2, 16, 6, false, "禁用标记", "forbiddenTag"); + + conditionItems.add(jobNoItem); + conditionItems.add(jobNameItem); + conditionItems.add(parentCompBrowserItem); + conditionItems.add(parentDeptBrowserItem); + conditionItems.add(sequenceBrowserItem); + conditionItems.add(schemeBrowserItem); + conditionItems.add(parentJobBrowserItem); + conditionItems.add(isKeyItem); + + addGroups.add(new SearchConditionGroup("基本信息", true, conditionItems)); + apiDatas.put("condition", addGroups); + return apiDatas; + } + + @Override + public Map getJobBaseForm(Map 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 buttonsMap = new HashMap<>(); + buttonsMap.put("hasEdit", true); + buttonsMap.put("hasSave", true); + + List addGroups = new ArrayList<>(); + if (StringUtil.isEmpty(groupId) || "0".equals(groupId)) { + addGroups.add(new SearchConditionGroup("基本信息", true, getBaseForm(viewAttr, id))); + } else { + addGroups.add(new SearchConditionGroup(getExtendGroupMapper().getGroupNameById(groupId), true, getExtService(user).getExtForm(user, EXTEND_TYPE, JCL_ORG_JOBEXT, viewAttr, id, groupId))); + } + + HashMap 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_JOBEXT)); + // 处理明细表 + resultMap.put("tables", getExtService(user).getExtendTables(user, EXTEND_TYPE, JCL_ORG_JOBEXT_DT1, id, viewAttr, false)); + Map apiDatas = new HashMap<>(); + + apiDatas.put("result", resultMap); + + return apiDatas; + } + + @Override + public int saveBaseForm(JobSearchParam params) { + List list = getJobMapper().listByNo(Util.null2String(params.getJobNo())); + OrganizationAssert.isEmpty(list, "编号不允许重复"); + JobPO jobPO = JobBO.convertParamsToPO(params, (long) user.getUID()); + return getJobMapper().insertIgnoreNull(jobPO); + } + + @Override + public int updateForm(Map params) { + JobSearchParam searchParam = JSONObject.parseObject(JSONObject.toJSONString(params), JobSearchParam.class); + String groupId = (String) params.get("viewCondition"); + JobPO jobPO = JobBO.convertParamsToPO(searchParam, user.getUID()); + int updateCount = 0; + // 更新主表数据 + updateCount += getJobMapper().updateBaseJob(jobPO); + // 更新主表拓展表 + updateCount += getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_JOBEXT, params, groupId, jobPO.getId()); + //更新明细表 + getExtService(user).updateExtDT(user, EXTEND_TYPE, JCL_ORG_JOBEXT_DT1, params, jobPO.getId()); + return updateCount; + } + + @Override + public int updateForbiddenTagById(JobSearchParam params) { + JobPO jobPO = JobPO.builder().id(params.getId()).forbiddenTag(params.getForbiddenTag() ? 0 : 1).build(); + return getJobMapper().updateForbiddenTagById(jobPO.getId(), jobPO.getForbiddenTag()); + } + + @Override + public int deleteByIds(Collection ids) { + OrganizationAssert.notEmpty(ids, "请选择要删除的数据"); + Collection deleteIds = new ArrayList<>(); + // 递归删除子节点 + getChildIds(ids, deleteIds); + return getJobMapper().deleteByIds(deleteIds); + } + /** * 添加查询元素的父级元素 * @@ -263,4 +576,145 @@ public class JobServiceImpl extends Service implements JobService { }).filter(item -> isTop(item.getPid())).collect(Collectors.toList()); } + /** + * 是否有搜索查询 + * + * @param jobPO + * @return + */ + private boolean isFilter(JobPO jobPO) { + return !(StringUtil.isEmpty(jobPO.getJobNo()) + && StringUtil.isEmpty(jobPO.getJobName()) + && StringUtil.isEmpty(jobPO.getWorkplace()) + && StringUtil.isEmpty(jobPO.getDescription()) + && StringUtil.isEmpty(jobPO.getWorkDuty()) + && StringUtil.isEmpty(jobPO.getWorkAuthority()) + && null == jobPO.getParentComp() + && null == jobPO.getParentDept() + && null == jobPO.getSequenceId() + && null == jobPO.getSchemeId() + && null == jobPO.getIsKey()) + && null == jobPO.getForbiddenTag(); + } + + /** + * 基本信息基础表单 + * + * @param viewAttr + * @param id + * @return + */ + private List getBaseForm(int viewAttr, long id) { + List conditionItems = new ArrayList<>(); + // 编号 + SearchConditionItem jobNoItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 1, 50, "编号", "jobNo"); + // 名称 + SearchConditionItem jobNameItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "名称", "jobName"); + jobNoItem.setRules("required|string"); + // 所属分部 + SearchConditionItem parentCompBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "所属分部", "161", "parentComp", "compBrowser"); + parentCompBrowserItem.setRules("required|string"); + // 所属部门 + SearchConditionItem parentDeptBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "所属部门", "161", "parentDept", "deptBrowser"); + parentDeptBrowserItem.setRules("required|string"); + // 岗位序列 + SearchConditionItem sequenceBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "岗位序列", "161", "sequenceId", "sequenceBrowser"); + // 等级方案 + SearchConditionItem schemeBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "岗位序列", "161", "schemeId", "schemeBrowser"); + // 上级岗位 + SearchConditionItem parentJobBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "上级岗位", "161", "parentJob", "jobBrowser"); + // 是否关键岗 + List isKeyOptions = new ArrayList<>(); + SearchConditionOption yesOption = new SearchConditionOption("0", "否"); + SearchConditionOption noOption = new SearchConditionOption("1", "是"); + isKeyOptions.add(yesOption); + isKeyOptions.add(noOption); + SearchConditionItem isKeyItem = OrganizationFormItemUtil.selectItem(user, isKeyOptions, 2, 16, 6, false, "禁用标记", "forbiddenTag"); + // 工作地点 + SearchConditionItem workplaceItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "工作地点", "workplace"); + // 工作概述 + SearchConditionItem descriptionItem = OrganizationFormItemUtil.textareaItem(user, 2, 16, false, 2, 50, "工作概述", "description"); + // 任职职责 + SearchConditionItem workDutyItem = OrganizationFormItemUtil.textareaItem(user, 2, 16, false, 2, 50, "任职职责", "workDuty"); + // 工作权限 + SearchConditionItem workAuthorityItem = OrganizationFormItemUtil.textareaItem(user, 2, 16, false, 2, 50, "工作权限", "workAuthority"); + + conditionItems.add(jobNoItem); + conditionItems.add(jobNameItem); + conditionItems.add(parentCompBrowserItem); + conditionItems.add(parentDeptBrowserItem); + conditionItems.add(sequenceBrowserItem); + conditionItems.add(schemeBrowserItem); + conditionItems.add(parentJobBrowserItem); + conditionItems.add(isKeyItem); + conditionItems.add(workplaceItem); + conditionItems.add(descriptionItem); + conditionItems.add(workDutyItem); + conditionItems.add(workAuthorityItem); + + + // 编辑、查看状态赋值,设置只读状态 + JobPO jobPO = getJobMapper().getJobById(id); + OrganizationAssert.notNull(jobPO, "数据不存在或数据已删除"); + jobNoItem.setValue(jobPO.getJobNo()); + jobNameItem.setValue(jobPO.getJobName()); + isKeyItem.setValue(jobPO.getIsKey()); + workplaceItem.setValue(jobPO.getWorkplace()); + descriptionItem.setValue(jobPO.getDescription()); + workDutyItem.setValue(jobPO.getWorkDuty()); + workAuthorityItem.setValue(jobPO.getWorkAuthority()); + + if (null != jobPO.getParentComp()) { + BrowserBean browserBean = parentCompBrowserItem.getBrowserConditionParam(); + List> compMaps = getCompMapper().listCompsByIds(QueryParam.builder().ids(jobPO.getParentComp().toString()).build().getIds()); + browserBean.setReplaceDatas(compMaps); + parentCompBrowserItem.setBrowserConditionParam(browserBean); + } + if (null != jobPO.getParentDept()) { + BrowserBean browserBean = parentDeptBrowserItem.getBrowserConditionParam(); + List> deptMaps = getDepartmentMapper().listDeptsByIds(QueryParam.builder().ids(jobPO.getParentDept().toString()).build().getIds()); + browserBean.setReplaceDatas(deptMaps); + parentDeptBrowserItem.setBrowserConditionParam(browserBean); + } + if (null != jobPO.getSequenceId()) { + BrowserBean browserBean = sequenceBrowserItem.getBrowserConditionParam(); + List> deptMaps = getSequenceMapper().listSequencesByIds(QueryParam.builder().ids(jobPO.getSequenceId().toString()).build().getIds()); + browserBean.setReplaceDatas(deptMaps); + sequenceBrowserItem.setBrowserConditionParam(browserBean); + } + if (null != jobPO.getSchemeId()) { + BrowserBean browserBean = schemeBrowserItem.getBrowserConditionParam(); + List> deptMaps = getSchemeMapper().listSchemesByIds(QueryParam.builder().ids(jobPO.getSchemeId().toString()).build().getIds()); + browserBean.setReplaceDatas(deptMaps); + schemeBrowserItem.setBrowserConditionParam(browserBean); + } + if (null != jobPO.getParentJob()) { + BrowserBean browserBean = parentJobBrowserItem.getBrowserConditionParam(); + List> deptMaps = getJobMapper().listJobsByIds(QueryParam.builder().ids(jobPO.getParentJob().toString()).build().getIds()); + browserBean.setReplaceDatas(deptMaps); + schemeBrowserItem.setBrowserConditionParam(browserBean); + } + + // 查看,全部置为只读 + if (1 == viewAttr) { + for (SearchConditionItem item : conditionItems) { + item.setViewAttr(viewAttr); + } + } + return conditionItems; + } + + /** + * 获取待删除数据的子级元素 + * + * @param ids + * @param deleteIds + */ + private void getChildIds(Collection ids, Collection deleteIds) { + for (Long id : ids) { + deleteIds.add(id); + Collection childIds = getJobMapper().getJobsByPid(id).stream().map(JobPO::getId).collect(Collectors.toList()); + getChildIds(childIds, deleteIds); + } + } } diff --git a/src/com/engine/organization/service/impl/StaffServiceImpl.java b/src/com/engine/organization/service/impl/StaffServiceImpl.java index ef35a844..5c092374 100644 --- a/src/com/engine/organization/service/impl/StaffServiceImpl.java +++ b/src/com/engine/organization/service/impl/StaffServiceImpl.java @@ -14,6 +14,7 @@ import com.engine.organization.entity.staff.po.StaffPO; import com.engine.organization.entity.staff.vo.StaffTableVO; import com.engine.organization.mapper.comp.CompMapper; import com.engine.organization.mapper.department.DepartmentMapper; +import com.engine.organization.mapper.job.JobMapper; import com.engine.organization.mapper.staff.StaffMapper; import com.engine.organization.mapper.staff.StaffPlanMapper; import com.engine.organization.service.StaffService; @@ -51,9 +52,10 @@ public class StaffServiceImpl extends Service implements StaffService { private DepartmentMapper getDepartmentMapper() { return MapperProxyFactory.getProxy(DepartmentMapper.class); } - //private JobMapper getJobMapper() { - // return MapperProxyFactory.getProxy(JobMapper.class); - //} + + private JobMapper getJobMapper() { + return MapperProxyFactory.getProxy(JobMapper.class); + } @Override @@ -189,11 +191,11 @@ public class StaffServiceImpl extends Service implements StaffService { List> deptIdMaps = getDepartmentMapper().listDeptsByIds(QueryParam.builder().ids(staffPO.getPlanId().toString()).build().getIds()); deptIdItemBean.setReplaceDatas(deptIdMaps); deptIdItem.setBrowserConditionParam(deptIdItemBean); - // TODO - //BrowserBean jobIdItemBean = jobIdItem.getBrowserConditionParam(); - //List> jobIdMaps = getJobMapper().listJobsByIds(QueryParam.builder().ids(staffPO.getPlanId().toString()).build().getIds()); - //jobIdItemBean.setReplaceDatas(jobIdMaps); - //jobIdItem.setBrowserConditionParam(jobIdItemBean); + + BrowserBean jobIdItemBean = jobIdItem.getBrowserConditionParam(); + List> jobIdMaps = getJobMapper().listJobsByIds(QueryParam.builder().ids(staffPO.getPlanId().toString()).build().getIds()); + jobIdItemBean.setReplaceDatas(jobIdMaps); + jobIdItem.setBrowserConditionParam(jobIdItemBean); staffNumItem.setValue(staffPO.getStaffNum()); controlPolicyItem.setValue(staffPO.getControlPolicy()); diff --git a/src/com/engine/organization/transmethod/JobTransMethod.java b/src/com/engine/organization/transmethod/JobTransMethod.java index 2af3cb41..8242bfdd 100644 --- a/src/com/engine/organization/transmethod/JobTransMethod.java +++ b/src/com/engine/organization/transmethod/JobTransMethod.java @@ -15,4 +15,12 @@ public class JobTransMethod { //return names; return ""; } + + public static String getIsKeySpan(String isKey) { + if ("0".equals(isKey)) + return "是"; + else + return "否"; + } + } diff --git a/src/com/engine/organization/util/MenuBtn.java b/src/com/engine/organization/util/MenuBtn.java index b8870502..cad98205 100644 --- a/src/com/engine/organization/util/MenuBtn.java +++ b/src/com/engine/organization/util/MenuBtn.java @@ -45,6 +45,15 @@ public class MenuBtn { return MenuBtn.builder().isBatch("1").isTop("1").menuFun("batchDelete").menuIcon("icon-coms-Batch-delete").menuName("批量删除").type( "BTN_BatchDelete").build(); } + /** + * topMenu批量删除 + * + * @return + */ + public static MenuBtn topMenu_copy() { + return MenuBtn.builder().isBatch("1").isTop("1").menuFun("copy").menuIcon("icon-coms-form-copy").menuName("复制").type( "BTN_Copy").build(); + } + /** * rightMenu新增 * @@ -63,6 +72,15 @@ public class MenuBtn { return MenuBtn.builder().isBatch("0").isTop("0").menuFun("log").menuIcon("icon-coms-Print-log").menuName("日志").type("BTN_log").build(); } + /** + * topMenu批量删除 + * + * @return + */ + public static MenuBtn rightMenu_copy() { + return MenuBtn.builder().isBatch("0").isTop("0").menuFun("copy").menuIcon("icon-coms-form-copy").menuName("复制").type( "BTN_Copy").build(); + } + /** * rightMenu显示列定制 * diff --git a/src/com/engine/organization/web/JobController.java b/src/com/engine/organization/web/JobController.java index ef405ec4..089154dd 100644 --- a/src/com/engine/organization/web/JobController.java +++ b/src/com/engine/organization/web/JobController.java @@ -4,14 +4,19 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; +import com.engine.organization.entity.QueryParam; +import com.engine.organization.entity.job.param.JobSearchParam; import com.engine.organization.entity.searchtree.SearchTreeParams; +import com.engine.organization.util.response.ReturnResult; import com.engine.organization.wrapper.JobWrapper; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; @@ -29,6 +34,13 @@ public class JobController { return ServiceUtil.getService(JobWrapper.class, user); } + /** + * 左侧树接口 + * + * @param request + * @param response + * @return + */ @GET @Path("/getSearchTree") @Produces(MediaType.APPLICATION_JSON) @@ -39,4 +51,183 @@ public class JobController { return getJobWrapper(user).getSearchTree(params); } + + /** + * 获取list列表 + * + * @param request + * @param response + * @param params + * @return + */ + @POST + @Path("/listPage") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult listDept(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody JobSearchParam params) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getJobWrapper(user).listPage(params)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + /** + * 新增保存表单 + * + * @param request + * @param response + * @return + */ + @GET + @Path("/getSaveForm") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult getSaveForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getJobWrapper(user).getSaveForm()); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + /** + * 获取基础表单 + * + * @param request + * @param response + * @return + */ + @GET + @Path("/getJobBaseForm") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult getJobBaseForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + Map map = ParamUtil.request2Map(request); + return ReturnResult.successed(getJobWrapper(user).getJobBaseForm(map)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + /** + * 保存基础信息 + * + * @param request + * @param response + * @param params + * @return + */ + @POST + @Path("/saveBaseForm") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult saveBaseComp(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody JobSearchParam params) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getJobWrapper(user).saveBaseForm(params)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + /** + * 更新禁用标记 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/updateForbiddenTagById") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult updateForbiddenTagById(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody JobSearchParam param) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getJobWrapper(user).updateForbiddenTagById(param)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + /** + * 更新表单 + * + * @param request + * @param response + * @return + */ + @POST + @Path("/updateForm") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult updateForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + Map map = ParamUtil.request2Map(request); + return ReturnResult.successed(getJobWrapper(user).updateForm(map)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + /** + * 根据ID批量删除数据 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/deleteByIds") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult deleteByIds(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody QueryParam param) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getJobWrapper(user).deleteByIds(param.getIds())); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + /** + * 列表页顶部按钮 + * + * @param request + * @param response + * @return + */ + @GET + @Path("/getHasRight") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult getHasRight(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getJobWrapper(user).getHasRight()); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + /** + * 高级搜索条件 + * + * @param request + * @param response + * @return + */ + @GET + @Path("/getSearchCondition") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult getSearchCondition(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getJobWrapper(user).getSearchCondition()); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + } diff --git a/src/com/engine/organization/wrapper/JobWrapper.java b/src/com/engine/organization/wrapper/JobWrapper.java index a833d728..dcb673e6 100644 --- a/src/com/engine/organization/wrapper/JobWrapper.java +++ b/src/com/engine/organization/wrapper/JobWrapper.java @@ -2,11 +2,13 @@ package com.engine.organization.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.organization.entity.job.param.JobSearchParam; import com.engine.organization.entity.searchtree.SearchTreeParams; import com.engine.organization.service.JobService; import com.engine.organization.service.impl.JobServiceImpl; import weaver.hrm.User; +import java.util.Collection; import java.util.Map; /** @@ -20,8 +22,101 @@ public class JobWrapper extends Service { return ServiceUtil.getService(JobServiceImpl.class, user); } + /** + * 左侧树 + * + * @param params + * @return + */ public Map getSearchTree(SearchTreeParams params) { return getJobService(user).getSearchTree(params); } + /** + * 列表 + * + * @param param + * @return + */ + public Map listPage(JobSearchParam param) { + return getJobService(user).listPage(param); + } + + /** + * 顶部按钮 + * + * @return + */ + public Map getHasRight() { + return getJobService(user).getHasRight(); + } + + /** + * 搜索条件 + * + * @return + */ + public Map getSearchCondition() { + return getJobService(user).getSearchCondition(); + } + + /** + * 获取新增表单 + * + * @return + */ + public Map getSaveForm() { + return getJobService(user).getSaveForm(); + } + + /** + * 获取详细表单 + * + * @param params + * @return + */ + public Map getJobBaseForm(Map params) { + return getJobService(user).getJobBaseForm(params); + + } + + /** + * 保存基础信息 + * + * @param params + * @return + */ + public int saveBaseForm(JobSearchParam params) { + return getJobService(user).saveBaseForm(params); + } + + /** + * 更新主表、拓展表、明细表 + * + * @param params + * @return + */ + public int updateForm(Map params) { + return getJobService(user).updateForm(params); + } + + /** + * @param params + * @return + */ + public int updateForbiddenTagById(JobSearchParam params) { + return getJobService(user).updateForbiddenTagById(params); + } + + /** + * 根据ID批量删除 + * + * @param ids + * @return + */ + public int deleteByIds(Collection ids) { + return getJobService(user).deleteByIds(ids); + } + + }