From b18133f7908b1588d2e606d8b6be67e6268371fb Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 26 May 2022 10:11:02 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E5=88=B6=E8=A1=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20=E8=A1=A8=E7=BB=93=E6=9E=84=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/表结构SQL/MySQL.sql | 6 +- docs/表结构SQL/Oracle.sql | 6 +- docs/表结构SQL/SqlServer.sql | 6 +- .../api/organization/web/StaffController.java | 13 + .../organization/entity/staff/bo/StaffBO.java | 38 +++ .../entity/staff/param/StaffSearchParam.java | 68 +++++ .../organization/entity/staff/po/StaffPO.java | 75 ++++++ .../entity/staff/vo/StaffPlanTableVO.java | 12 +- .../entity/staff/vo/StaffTableVO.java | 83 ++++++ .../mapper/department/DepartmentMapper.java | 3 + .../mapper/department/DepartmentMapper.xml | 11 + .../mapper/staff/StaffMapper.java | 47 ++++ .../organization/mapper/staff/StaffMapper.xml | 177 +++++++++++++ .../mapper/staff/StaffPlanMapper.java | 4 + .../mapper/staff/StaffPlanMapper.xml | 11 + .../organization/service/StaffService.java | 67 +++++ .../service/impl/StaffPlanServiceImpl.java | 2 +- .../service/impl/StaffServiceImpl.java | 249 ++++++++++++++++++ .../transmethod/CompTransMethod.java | 25 ++ .../transmethod/DepartmentTransMethod.java | 25 ++ .../transmethod/JobTransMethod.java | 18 ++ .../transmethod/StaffPlanTransMethod.java | 25 ++ .../organization/web/StaffController.java | 176 +++++++++++++ .../organization/web/StaffPlanController.java | 4 +- .../organization/wrapper/StaffWrapper.java | 93 +++++++ 25 files changed, 1226 insertions(+), 18 deletions(-) create mode 100644 src/com/api/organization/web/StaffController.java create mode 100644 src/com/engine/organization/entity/staff/bo/StaffBO.java create mode 100644 src/com/engine/organization/entity/staff/param/StaffSearchParam.java create mode 100644 src/com/engine/organization/entity/staff/po/StaffPO.java create mode 100644 src/com/engine/organization/entity/staff/vo/StaffTableVO.java create mode 100644 src/com/engine/organization/mapper/staff/StaffMapper.java create mode 100644 src/com/engine/organization/mapper/staff/StaffMapper.xml create mode 100644 src/com/engine/organization/service/StaffService.java create mode 100644 src/com/engine/organization/service/impl/StaffServiceImpl.java create mode 100644 src/com/engine/organization/transmethod/CompTransMethod.java create mode 100644 src/com/engine/organization/transmethod/DepartmentTransMethod.java create mode 100644 src/com/engine/organization/transmethod/JobTransMethod.java create mode 100644 src/com/engine/organization/transmethod/StaffPlanTransMethod.java create mode 100644 src/com/engine/organization/web/StaffController.java create mode 100644 src/com/engine/organization/wrapper/StaffWrapper.java diff --git a/docs/表结构SQL/MySQL.sql b/docs/表结构SQL/MySQL.sql index f9c04cb3..a54c30ec 100644 --- a/docs/表结构SQL/MySQL.sql +++ b/docs/表结构SQL/MySQL.sql @@ -363,10 +363,10 @@ CREATE TABLE JCL_ORG_STAFF ( job_id int null, staff_num int null, control_policy int null, - staff_permanent_num int null, + permanent_num int null, freeze_num int null, lack_status int null, - staff_description varchar(100) NULL, + staff_desc varchar(100) NULL, description text null, creator int null, delete_type int null, @@ -380,7 +380,7 @@ CREATE TABLE JCL_ORG_STAFFS ( id int auto_increment NOT NULL, staff_id int null, business_type int null, - business_change_num int null, + change_num int null, business_source int null, requestid int null, creator int null, diff --git a/docs/表结构SQL/Oracle.sql b/docs/表结构SQL/Oracle.sql index 54ada457..9814fbba 100644 --- a/docs/表结构SQL/Oracle.sql +++ b/docs/表结构SQL/Oracle.sql @@ -364,10 +364,10 @@ CREATE TABLE JCL_ORG_STAFF ( JOB_ID NUMBER NULL, STAFF_NUM NUMBER NULL, CONTROL_POLICY NUMBER NULL, - STAFF_PERMANENT_NUM NUMBER NULL, + PERMANENT_NUM NUMBER NULL, FREEZE_NUM NUMBER NULL, LACK_STATUS NUMBER NULL, - STAFF_DESCRIPTION NVARCHAR2(100) NULL, + STAFF_DESC NVARCHAR2(100) NULL, DESCRIPTION NVARCHAR2(1000) NULL, CREATOR NUMBER NULL, DELETE_TYPE NUMBER NULL, @@ -381,7 +381,7 @@ CREATE TABLE JCL_ORG_STAFFS ( ID NUMBER NOT NULL, STAFF_ID NUMBER NULL, BUSINESS_TYPE NUMBER NULL, - BUSINESS_CHANGE_NUM NUMBER NULL, + CHANGE_NUM NUMBER NULL, BUSINESS_SOURCE NUMBER NULL, REQUESTID NUMBER NULL, CREATOR NUMBER NULL, diff --git a/docs/表结构SQL/SqlServer.sql b/docs/表结构SQL/SqlServer.sql index 58113d9e..643e1dec 100644 --- a/docs/表结构SQL/SqlServer.sql +++ b/docs/表结构SQL/SqlServer.sql @@ -363,10 +363,10 @@ CREATE TABLE JCL_ORG_STAFF ( job_id int null, staff_num int null, control_policy int null, - staff_permanent_num int null, + permanent_num int null, freeze_num int null, lack_status int null, - staff_description varchar(100) COLLATE Chinese_PRC_CI_AS NULL, + staff_desc varchar(100) COLLATE Chinese_PRC_CI_AS NULL, description text null, creator int null, delete_type int null, @@ -380,7 +380,7 @@ CREATE TABLE JCL_ORG_STAFFS ( id int IDENTITY(1,1) NOT NULL, staff_id int null, business_type int null, - business_change_num int null, + change_num int null, business_source int null, requestid int null, creator int null, diff --git a/src/com/api/organization/web/StaffController.java b/src/com/api/organization/web/StaffController.java new file mode 100644 index 00000000..1377ab14 --- /dev/null +++ b/src/com/api/organization/web/StaffController.java @@ -0,0 +1,13 @@ +package com.api.organization.web; + +import javax.ws.rs.Path; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +@Path("/bs/hrmorganization/staff") +public class StaffController extends com.engine.organization.web.StaffController { +} diff --git a/src/com/engine/organization/entity/staff/bo/StaffBO.java b/src/com/engine/organization/entity/staff/bo/StaffBO.java new file mode 100644 index 00000000..aa8a3b56 --- /dev/null +++ b/src/com/engine/organization/entity/staff/bo/StaffBO.java @@ -0,0 +1,38 @@ +package com.engine.organization.entity.staff.bo; + +import com.engine.organization.entity.staff.param.StaffSearchParam; +import com.engine.organization.entity.staff.po.StaffPO; + +import java.util.Date; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +public class StaffBO { + public static StaffPO convertParamToPO(StaffSearchParam param, Long employeeId) { + if (param == null) { + return null; + } + return StaffPO.builder() + .id(param.getId()) + .planId(param.getPlanId()) + .compId(param.getCompId()) + .deptId(param.getDeptId()) + .jobId(param.getJobId()) + .staffNum(param.getStaffNum()) + .controlPolicy(param.getControlPolicy()) + .permanentNum(param.getPermanentNum()) + .freezeNum(param.getFreezeNum()) + .lackStatus(param.getLackStatus()) + .staffDesc(param.getStaffDesc()) + .description(param.getDescription()) + .deleteType(0) + .createTime(new Date()) + .updateTime(new Date()) + .creator(employeeId) + .build(); + } +} diff --git a/src/com/engine/organization/entity/staff/param/StaffSearchParam.java b/src/com/engine/organization/entity/staff/param/StaffSearchParam.java new file mode 100644 index 00000000..711ea22e --- /dev/null +++ b/src/com/engine/organization/entity/staff/param/StaffSearchParam.java @@ -0,0 +1,68 @@ +package com.engine.organization.entity.staff.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class StaffSearchParam { + /** + * 主键 + */ + private Long id; + /** + * 方案id + */ + private Long planId; + /** + * 分部 + */ + private Long compId; + /** + * 部门 + */ + private Long deptId; + /** + * 岗位 + */ + private Long jobId; + /** + * 编制数 + */ + private Integer staffNum; + /** + * 控制策略 + */ + private Integer controlPolicy; + /** + * 在编 + */ + private Integer permanentNum; + /** + * 冻结数 + */ + private Integer freezeNum; + /** + * 缺编状态 + */ + private Integer lackStatus; + /** + * 编制描述 + */ + private String staffDesc; + + /** + * 说明 + */ + private String description; +} diff --git a/src/com/engine/organization/entity/staff/po/StaffPO.java b/src/com/engine/organization/entity/staff/po/StaffPO.java new file mode 100644 index 00000000..3a813954 --- /dev/null +++ b/src/com/engine/organization/entity/staff/po/StaffPO.java @@ -0,0 +1,75 @@ +package com.engine.organization.entity.staff.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class StaffPO { + /** + * 主键 + */ + private Long id; + /** + * 方案id + */ + private Long planId; + /** + * 分部 + */ + private Long compId; + /** + * 部门 + */ + private Long deptId; + /** + * 岗位 + */ + private Long jobId; + /** + * 编制数 + */ + private Integer staffNum; + /** + * 控制策略 + */ + private Integer controlPolicy; + /** + * 在编 + */ + private Integer permanentNum; + /** + * 冻结数 + */ + private Integer freezeNum; + /** + * 缺编状态 + */ + private Integer lackStatus; + /** + * 编制描述 + */ + private String staffDesc; + /** + * 说明 + */ + private String description; + + private Long creator; + private int deleteType; + private Date createTime; + private Date updateTime; + +} diff --git a/src/com/engine/organization/entity/staff/vo/StaffPlanTableVO.java b/src/com/engine/organization/entity/staff/vo/StaffPlanTableVO.java index f4456353..a826cfb3 100644 --- a/src/com/engine/organization/entity/staff/vo/StaffPlanTableVO.java +++ b/src/com/engine/organization/entity/staff/vo/StaffPlanTableVO.java @@ -39,32 +39,32 @@ public class StaffPlanTableVO { /** * 编号 */ - @OrganizationTableColumn(text = "编号", width = "16%", column = "planNo") + @OrganizationTableColumn(text = "编号", width = "16%", column = "plan_no") private String planNo; /** * 名称 */ - @OrganizationTableColumn(text = "名称", width = "16%", column = "planName") + @OrganizationTableColumn(text = "名称", width = "16%", column = "plan_name") private String planName; /** * 年度 */ - @OrganizationTableColumn(text = "年度", width = "16%", column = "planYear") + @OrganizationTableColumn(text = "年度", width = "16%", column = "plan_year") private Integer planYear; /** * 时间开始 */ - @OrganizationTableColumn(text = "时间开始", width = "16%", column = "timeStart") + @OrganizationTableColumn(text = "时间开始", width = "16%", column = "time_start") private Date timeStart; /** * 时间结束 */ - @OrganizationTableColumn(text = "时间结束", width = "16%", column = "timeEnd") + @OrganizationTableColumn(text = "时间结束", width = "16%", column = "time_end") private Date timeEnd; /** * 状态 */ - @OrganizationTableColumn(text = "状态", width = "16%", column = "forbiddenTag") + @OrganizationTableColumn(text = "状态", width = "16%", column = "forbidden_tag") private Integer forbiddenTag; } diff --git a/src/com/engine/organization/entity/staff/vo/StaffTableVO.java b/src/com/engine/organization/entity/staff/vo/StaffTableVO.java new file mode 100644 index 00000000..731c5df7 --- /dev/null +++ b/src/com/engine/organization/entity/staff/vo/StaffTableVO.java @@ -0,0 +1,83 @@ +package com.engine.organization.entity.staff.vo; + +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; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@OrganizationTable(pageId = "0cdfd5bb-dc09-11ec-b69e-00ffcbed7508", + fields = "id,plan_id,comp_id,dept_id,job_id,staff_num,permanent_num,freeze_num,lack_status,staff_desc", + fromSql = "FROM jcl_org_staff t ", + orderby = "id desc", + primarykey = "id", + operates = { + @OrganizationTableOperate(index = "0", text = "编辑"), + @OrganizationTableOperate(index = "1", text = "删除"), + @OrganizationTableOperate(index = "2", text = "变更") + } +) +public class StaffTableVO { + /** + * 主键 + */ + private Long id; + /** + * 方案id + */ + @OrganizationTableColumn(text = "方案", width = "10%", column = "plan_id", transmethod = "com.engine.organization.transmethod.StaffPlanTransMethod.getSpanById") + private String planId; + /** + * 分部 + */ + @OrganizationTableColumn(text = "分部", width = "10%", column = "comp_id", transmethod = "com.engine.organization.transmethod.CompTransMethod.getSpanById") + private String compId; + /** + * 部门 + */ + @OrganizationTableColumn(text = "部门", width = "10%", column = "dept_id", transmethod = "com.engine.organization.transmethod.DepartmentTransMethod.getSpanById") + private String deptId; + /** + * 岗位 + */ + @OrganizationTableColumn(text = "岗位", width = "10%", column = "job_id", transmethod = "com.engine.organization.transmethod.JobTransMethod.getSpanById") + private String jobId; + /** + * 编制数 + */ + @OrganizationTableColumn(text = "编制数", width = "10%", column = "staff_num") + private Integer staffNum; + /** + * 在编 + */ + @OrganizationTableColumn(text = "在编", width = "10%", column = "permanent_num") + private Integer permanentNum; + /** + * 冻结数 + */ + @OrganizationTableColumn(text = "冻结数", width = "10%", column = "freeze_num") + private Integer freezeNum; + /** + * 缺编状态 + */ + @OrganizationTableColumn(text = "缺编状态", width = "10%", column = "lack_status") + private Integer lackStatus; + /** + * 编制描述 + */ + @OrganizationTableColumn(text = "编制描述", width = "10%", column = "staff_desc") + private String staffDesc; + +} diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.java b/src/com/engine/organization/mapper/department/DepartmentMapper.java index f11d7f57..0a29efa8 100644 --- a/src/com/engine/organization/mapper/department/DepartmentMapper.java +++ b/src/com/engine/organization/mapper/department/DepartmentMapper.java @@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param; import java.util.Collection; import java.util.List; +import java.util.Map; /** * @Author weaver_cl @@ -27,6 +28,8 @@ public interface DepartmentMapper { */ List listParent(); + List> listDeptsByIds(@Param("ids") Collection ids); + /** * 获取子层级数据 * diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.xml b/src/com/engine/organization/mapper/department/DepartmentMapper.xml index d8804f61..c77f78ed 100644 --- a/src/com/engine/organization/mapper/department/DepartmentMapper.xml +++ b/src/com/engine/organization/mapper/department/DepartmentMapper.xml @@ -119,6 +119,17 @@ #{id} + diff --git a/src/com/engine/organization/mapper/staff/StaffMapper.java b/src/com/engine/organization/mapper/staff/StaffMapper.java new file mode 100644 index 00000000..0eaf7f07 --- /dev/null +++ b/src/com/engine/organization/mapper/staff/StaffMapper.java @@ -0,0 +1,47 @@ +package com.engine.organization.mapper.staff; + + +import com.engine.organization.entity.staff.po.StaffPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; + +/** + * @Author dxfeng + * @Description: TODO + * @Date 2022/5/25 + * @Version V1.0 + **/ +public interface StaffMapper { + + /** + * 根据ID查询编制方案 + * @param id + * @return + */ + StaffPO getStaffByID(@Param("id") long id); + + /** + * 插入编制方案 + * @param staffPO + * @return + */ + int insertIgnoreNull(StaffPO staffPO); + + /** + * 修改,修改所有字段 + * + * @param staffPO + * @return + */ + int updateStaff(StaffPO staffPO); + + + /** + * 批量删除 + * + * @param ids + */ + int deleteByIds(@Param("ids") Collection ids); + +} diff --git a/src/com/engine/organization/mapper/staff/StaffMapper.xml b/src/com/engine/organization/mapper/staff/StaffMapper.xml new file mode 100644 index 00000000..a069bcd7 --- /dev/null +++ b/src/com/engine/organization/mapper/staff/StaffMapper.xml @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + t + . + id + , t.plan_id + , t.comp_id + , t.dept_id + , t.job_id + , t.staff_num + , t.control_policy + , t.permanent_num + , t.freeze_num + , t.lack_status + , t.staff_desc + , t.description + + + + + update jcl_org_staff + + creator=#{creator}, + update_time=#{updateTime}, + plan_id=#{planId}, + comp_id=#{compId}, + dept_id=#{deptId}, + job_id=#{jobId}, + staff_num=#{staffNum}, + control_policy=#{controlPolicy}, + permanent_num=#{permanentNum}, + freeze_num=#{freezeNum}, + lack_status=#{lackStatus}, + staff_desc=#{staffDesc}, + description=#{description}, + + WHERE id = #{id} AND delete_type = 0 + + + + INSERT INTO jcl_org_staff + + + creator, + + + delete_type, + + + create_time, + + + update_time, + + + plan_id, + + + comp_id, + + + dept_id, + + + job_id, + + + staff_num, + + + control_policy, + + + permanent_num, + + + freeze_num, + + + lack_status, + + + staff_desc, + + + description, + + + + + #{creator}, + + + #{deleteType}, + + + #{createTime}, + + + #{updateTime}, + + + + #{planId}, + + + #{compId}, + + + #{deptId}, + + + #{jobId}, + + + #{staffNum}, + + + #{controlPolicy}, + + + #{permanentNum}, + + + #{freezeNum}, + + + #{lackStatus}, + + + #{staffDesc}, + + + #{description}, + + + + + + UPDATE jcl_org_staff + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + \ No newline at end of file diff --git a/src/com/engine/organization/mapper/staff/StaffPlanMapper.java b/src/com/engine/organization/mapper/staff/StaffPlanMapper.java index ed4b0bac..cb754135 100644 --- a/src/com/engine/organization/mapper/staff/StaffPlanMapper.java +++ b/src/com/engine/organization/mapper/staff/StaffPlanMapper.java @@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Param; import java.util.Collection; import java.util.List; +import java.util.Map; /** * @Author dxfeng @@ -23,6 +24,9 @@ public interface StaffPlanMapper { */ List listByNo(@Param("planNo") String planNo); + + List> listPlansByIds(@Param("ids") Collection ids); + /** * 根据ID查询编制方案 * @param id diff --git a/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml b/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml index bf90602d..c99f3685 100644 --- a/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml +++ b/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml @@ -48,6 +48,17 @@ from jcl_org_staffplan t where plan_no = #{planNo} AND delete_type = 0 + update jcl_org_staffplan diff --git a/src/com/engine/organization/service/StaffService.java b/src/com/engine/organization/service/StaffService.java new file mode 100644 index 00000000..f38a16f6 --- /dev/null +++ b/src/com/engine/organization/service/StaffService.java @@ -0,0 +1,67 @@ +package com.engine.organization.service; + +import com.engine.organization.entity.staff.param.StaffSearchParam; + +import java.util.Collection; +import java.util.Map; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +public interface StaffService { + /** + * 编制列表 + * + * @param params + * @return + */ + Map listPage(StaffSearchParam params); + + /** + * 新增编制 + * @param param + * @return + */ + int saveStaff(StaffSearchParam param); + + /** + * 更新编制信息 + * + * @param param + * @return + */ + int updateStaff(StaffSearchParam param); + + /** + * 根据ID批量删除编制 + * + * @param ids + */ + int deleteByIds(Collection ids); + + /** + * 获取搜索条件 + * + * @param params + * @return + */ + Map getSearchCondition(Map params); + + + /** + * 获取新增、编辑表单 + * + * @param params + * @return + */ + Map getForm(Map params); + + /** + * 获取列表页面按钮信息 + * @return + */ + Map getHasRight(); +} diff --git a/src/com/engine/organization/service/impl/StaffPlanServiceImpl.java b/src/com/engine/organization/service/impl/StaffPlanServiceImpl.java index fa7f278b..05048ac3 100644 --- a/src/com/engine/organization/service/impl/StaffPlanServiceImpl.java +++ b/src/com/engine/organization/service/impl/StaffPlanServiceImpl.java @@ -97,7 +97,7 @@ public class StaffPlanServiceImpl extends Service implements StaffPlanService { // 时间结束 SearchConditionItem timeEndItem = OrganizationFormItemUtil.datePickerItem(user, 2, 16, false, 2, "时间结束", "timeEnd"); // 适用公司 - SearchConditionItem companyIdtItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "companyId", "162", "planYear", "compBrowser"); + SearchConditionItem companyIdtItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "适用公司", "162", "companyId", "compBrowser"); // 说明 SearchConditionItem descriptionItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "说明", "description"); // 状态 diff --git a/src/com/engine/organization/service/impl/StaffServiceImpl.java b/src/com/engine/organization/service/impl/StaffServiceImpl.java new file mode 100644 index 00000000..26e35693 --- /dev/null +++ b/src/com/engine/organization/service/impl/StaffServiceImpl.java @@ -0,0 +1,249 @@ +package com.engine.organization.service.impl; + +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.cloudstore.eccom.result.WeaResultMsg; +import com.engine.core.impl.Service; +import com.engine.organization.component.OrganizationWeaTable; +import com.engine.organization.entity.QueryParam; +import com.engine.organization.entity.staff.bo.StaffBO; +import com.engine.organization.entity.staff.param.StaffSearchParam; +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.staff.StaffMapper; +import com.engine.organization.mapper.staff.StaffPlanMapper; +import com.engine.organization.service.StaffService; +import com.engine.organization.util.MenuBtn; +import com.engine.organization.util.OrganizationAssert; +import com.engine.organization.util.OrganizationFormItemUtil; +import com.engine.organization.util.db.DBType; +import com.engine.organization.util.db.MapperProxyFactory; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.StringUtil; +import weaver.general.Util; + +import java.util.*; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +public class StaffServiceImpl extends Service implements StaffService { + private StaffMapper getStaffMapper() { + return MapperProxyFactory.getProxy(StaffMapper.class); + } + + private StaffPlanMapper getStaffPlanMapper() { + return MapperProxyFactory.getProxy(StaffPlanMapper.class); + } + + private CompMapper getCompMapper() { + return MapperProxyFactory.getProxy(CompMapper.class); + } + + private DepartmentMapper getDepartmentMapper() { + return MapperProxyFactory.getProxy(DepartmentMapper.class); + } + + + @Override + public Map listPage(StaffSearchParam params) { + OrganizationWeaTable table = new OrganizationWeaTable<>(user, StaffTableVO.class); + StaffPO staffPO = StaffBO.convertParamToPO(params, (long) user.getUID()); + String sqlWhere = buildSqlWhere(staffPO); + table.setSqlwhere(sqlWhere); + WeaResultMsg result = new WeaResultMsg(false); + result.putAll(table.makeDataResult()); + result.success(); + return result.getResultMap(); + } + + @Override + public int saveStaff(StaffSearchParam param) { + StaffPO staffPO = StaffBO.convertParamToPO(param, (long) user.getUID()); + return getStaffMapper().insertIgnoreNull(staffPO); + } + + @Override + public int updateStaff(StaffSearchParam param) { + StaffPO staffPlanPO = StaffBO.convertParamToPO(param, (long) user.getUID()); + return getStaffMapper().updateStaff(staffPlanPO); + } + + + @Override + public int deleteByIds(Collection ids) { + OrganizationAssert.notEmpty(ids, "请选择要删除的数据"); + return getStaffMapper().deleteByIds(ids); + } + + @Override + public Map getSearchCondition(Map params) { + Map apiDatas = new HashMap<>(); + List addGroups = new ArrayList<>(); + List conditionItems = new ArrayList<>(); + + // 方案 + SearchConditionItem planIdtItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "方案", "161", "planId", "staffPlanBrowser"); + // 分部 + SearchConditionItem compIdtItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "分部", "161", "compId", "compBrowser"); + // 部门 + SearchConditionItem deptIdtItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "部门", "161", "deptId", "deptBrowser"); + // 岗位 + SearchConditionItem jobIdtItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "岗位", "161", "jobId", "jobBrowser"); + // 编制数 + SearchConditionItem staffNumItem = OrganizationFormItemUtil.inputNumberItem(user, 2, 16, 2, "编制数", "staffNum"); + // 在编 + SearchConditionItem permanentNumItem = OrganizationFormItemUtil.inputNumberItem(user, 2, 16, 2, "在编", "permanentNum"); + // 冻结数 + SearchConditionItem freezeNumItem = OrganizationFormItemUtil.inputNumberItem(user, 2, 16, 2, "冻结数", "freezeNum"); + // 缺编状态 + List selectOptions = new ArrayList<>(); + SearchConditionOption lackOption = new SearchConditionOption("1", "缺编"); + SearchConditionOption fullOption = new SearchConditionOption("2", "满员"); + SearchConditionOption overOption = new SearchConditionOption("3", "超编"); + selectOptions.add(lackOption); + selectOptions.add(fullOption); + selectOptions.add(overOption); + SearchConditionItem lackStatusItem = OrganizationFormItemUtil.selectItem(user, selectOptions, 2, 16, 6, false, "缺编状态", "lackStatus"); + // 编制描述 + SearchConditionItem staffDescItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "编制描述", "staffDesc"); + // 说明 + SearchConditionItem descriptionItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "说明", "description"); + conditionItems.add(planIdtItem); + conditionItems.add(compIdtItem); + conditionItems.add(deptIdtItem); + conditionItems.add(jobIdtItem); + conditionItems.add(staffNumItem); + conditionItems.add(permanentNumItem); + conditionItems.add(freezeNumItem); + conditionItems.add(lackStatusItem); + conditionItems.add(staffDescItem); + conditionItems.add(descriptionItem); + + addGroups.add(new SearchConditionGroup("高级搜索条件", true, conditionItems)); + apiDatas.put("conditions", addGroups); + return apiDatas; + } + + @Override + public Map getForm(Map params) { + Map apiDatas = new HashMap<>(); + List selectItems = new ArrayList<>(); + List addGroups = new ArrayList<>(); + // 方案 + SearchConditionItem planIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 3, false, "方案", "161", "planId", "staffPlanBrowser"); + planIdItem.setRules("required|string"); + // 分部 + SearchConditionItem compIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 3, false, "分部", "161", "compId", "compBrowser"); + compIdItem.setRules("required|string"); + // 部门 + SearchConditionItem deptIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 3, false, "部门", "161", "deptId", "deptBrowser"); + deptIdItem.setRules("required|string"); + // 岗位 + SearchConditionItem jobIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 3, false, "岗位", "161", "jobId", "jobBrowser"); + jobIdItem.setRules("required|string"); + // 编制数 + SearchConditionItem staffNumItem = OrganizationFormItemUtil.inputNumberItem(user, 2, 16, 3, "编制数", "staffNum"); + staffNumItem.setRules("required|string"); + // 控制策略 + List selectOptions = new ArrayList<>(); + SearchConditionOption option1 = new SearchConditionOption("1", "弱控"); + SearchConditionOption option2 = new SearchConditionOption("2", "强控"); + SearchConditionOption option3 = new SearchConditionOption("3", "不控"); + selectOptions.add(option1); + selectOptions.add(option2); + selectOptions.add(option3); + SearchConditionItem controlPolicyItem = OrganizationFormItemUtil.selectItem(user, selectOptions, 2, 16, 6, false, "控制策略", "controlPolicy"); + controlPolicyItem.setViewAttr(3); + controlPolicyItem.setRules("required|string"); + + // 编辑状态下赋值操作 + String id = Util.null2String(params.get("id")); + if (!StringUtil.isEmpty(id)) { + StaffPO staffPO = getStaffMapper().getStaffByID(Integer.parseInt(id)); + OrganizationAssert.notNull(staffPO, "选择的数据不存在,或数据已删除"); + + BrowserBean planIdItemBean = planIdItem.getBrowserConditionParam(); + List> maps = getStaffPlanMapper().listPlansByIds(QueryParam.builder().ids(staffPO.getPlanId().toString()).build().getIds()); + planIdItemBean.setReplaceDatas(maps); + planIdItem.setBrowserConditionParam(planIdItemBean); + + + } + + addGroups.add(new SearchConditionGroup("基本信息", true, selectItems)); + apiDatas.put("condition", addGroups); + return apiDatas; + } + + @Override + public Map getHasRight() { + return MenuBtn.getCommonBtnDatas(); + } + + /** + * 查询条件 + * + * @param staffPO + * @return + */ + private String buildSqlWhere(StaffPO staffPO) { + DBType dbType = DBType.get(new RecordSet().getDBType()); + String sqlWhere = " where t.delete_type ='0' "; + + Long planId = staffPO.getPlanId(); + if (null != planId) { + sqlWhere += " AND t.plan_id = '" + planId + "'"; + } + Long compId = staffPO.getCompId(); + if (null != compId) { + sqlWhere += " AND t.comp_id = '" + compId + "'"; + } + Long deptId = staffPO.getDeptId(); + if (null != deptId) { + sqlWhere += " AND t.dept_id = '" + deptId + "'"; + } + Long jobId = staffPO.getJobId(); + if (null != jobId) { + sqlWhere += " AND t.job_id = '" + jobId + "'"; + } + Integer staffNum = staffPO.getStaffNum(); + if (null != staffNum) { + sqlWhere += " AND t.staff_num = '" + staffNum + "'"; + } + Integer controlPolicy = staffPO.getControlPolicy(); + if (null != controlPolicy) { + sqlWhere += " AND t.control_policy = '" + controlPolicy + "'"; + } + Integer permanentNum = staffPO.getPermanentNum(); + if (null != permanentNum) { + sqlWhere += " AND t.permanent_num = '" + permanentNum + "'"; + } + Integer freezeNum = staffPO.getFreezeNum(); + if (null != freezeNum) { + sqlWhere += " AND t.freeze_num = '" + freezeNum + "'"; + } + Integer lackStatus = staffPO.getLackStatus(); + if (null != lackStatus) { + sqlWhere += " AND t.lack_status = '" + lackStatus + "'"; + } + String staffDesc = staffPO.getStaffDesc(); + if (StringUtils.isNotBlank(staffDesc)) { + sqlWhere += " AND t.staff_desc " + dbType.like(staffDesc); + } + String description = staffPO.getDescription(); + if (StringUtils.isNotBlank(description)) { + sqlWhere += " AND t.description " + dbType.like(description); + } + + return sqlWhere; + } +} diff --git a/src/com/engine/organization/transmethod/CompTransMethod.java b/src/com/engine/organization/transmethod/CompTransMethod.java new file mode 100644 index 00000000..63f637f2 --- /dev/null +++ b/src/com/engine/organization/transmethod/CompTransMethod.java @@ -0,0 +1,25 @@ +package com.engine.organization.transmethod; + +import com.engine.organization.entity.QueryParam; +import com.engine.organization.mapper.comp.CompMapper; +import com.engine.organization.util.db.MapperProxyFactory; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +public class CompTransMethod { + + public static String getSpanById(String planId) { + CompMapper compMapper = MapperProxyFactory.getProxy(CompMapper.class); + List> maps = compMapper.listCompsByIds(QueryParam.builder().ids(planId).build().getIds()); + String names = maps.stream().map(item -> (String) item.get("name")).collect(Collectors.joining(",")); + return names; + } +} diff --git a/src/com/engine/organization/transmethod/DepartmentTransMethod.java b/src/com/engine/organization/transmethod/DepartmentTransMethod.java new file mode 100644 index 00000000..72bc5867 --- /dev/null +++ b/src/com/engine/organization/transmethod/DepartmentTransMethod.java @@ -0,0 +1,25 @@ +package com.engine.organization.transmethod; + +import com.engine.organization.entity.QueryParam; +import com.engine.organization.mapper.department.DepartmentMapper; +import com.engine.organization.util.db.MapperProxyFactory; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +public class DepartmentTransMethod { + + public static String getSpanById(String planId) { + DepartmentMapper departmentMapper = MapperProxyFactory.getProxy(DepartmentMapper.class); + List> maps = departmentMapper.listDeptsByIds(QueryParam.builder().ids(planId).build().getIds()); + String names = maps.stream().map(item -> (String) item.get("name")).collect(Collectors.joining(",")); + return names; + } +} diff --git a/src/com/engine/organization/transmethod/JobTransMethod.java b/src/com/engine/organization/transmethod/JobTransMethod.java new file mode 100644 index 00000000..2af3cb41 --- /dev/null +++ b/src/com/engine/organization/transmethod/JobTransMethod.java @@ -0,0 +1,18 @@ +package com.engine.organization.transmethod; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +public class JobTransMethod { + + public static String getSpanById(String planId) { + //JobMapper compMapper = MapperProxyFactory.getProxy(CompMapper.class); + //List> maps = compMapper.listCompsByIds(QueryParam.builder().ids(planId).build().getIds()); + //String names = maps.stream().map(item -> (String) item.get("name")).collect(Collectors.joining(",")); + //return names; + return ""; + } +} diff --git a/src/com/engine/organization/transmethod/StaffPlanTransMethod.java b/src/com/engine/organization/transmethod/StaffPlanTransMethod.java new file mode 100644 index 00000000..8ea7dd78 --- /dev/null +++ b/src/com/engine/organization/transmethod/StaffPlanTransMethod.java @@ -0,0 +1,25 @@ +package com.engine.organization.transmethod; + +import com.engine.organization.entity.QueryParam; +import com.engine.organization.mapper.staff.StaffPlanMapper; +import com.engine.organization.util.db.MapperProxyFactory; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +public class StaffPlanTransMethod { + + public static String getSpanById(String planId) { + StaffPlanMapper planMapper = MapperProxyFactory.getProxy(StaffPlanMapper.class); + List> maps = planMapper.listPlansByIds(QueryParam.builder().ids(planId).build().getIds()); + String names = maps.stream().map(item -> (String) item.get("name")).collect(Collectors.joining(",")); + return names; + } +} diff --git a/src/com/engine/organization/web/StaffController.java b/src/com/engine/organization/web/StaffController.java new file mode 100644 index 00000000..821bc299 --- /dev/null +++ b/src/com/engine/organization/web/StaffController.java @@ -0,0 +1,176 @@ +package com.engine.organization.web; + +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.staff.param.StaffSearchParam; +import com.engine.organization.util.response.ReturnResult; +import com.engine.organization.wrapper.StaffWrapper; +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; +import javax.ws.rs.core.MediaType; +import java.util.Map; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +public class StaffController { + public StaffWrapper getStaffWrapper(User user) { + return ServiceUtil.getService(StaffWrapper.class, user); + } + + /** + * 获取list列表 + * + * @param request + * @param response + * @return + */ + @GET + @Path("/getTable") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult listStaff(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + Map map = ParamUtil.request2Map(request); + StaffSearchParam param = JSONObject.toJavaObject((JSON) JSON.toJSON(map), StaffSearchParam.class); + return ReturnResult.successed(getStaffWrapper(user).listPage(param)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + /** + * 添加编制 + * + * @param request + * @param response + * @return + */ + @POST + @Path("/saveStaff") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult saveStaff(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody StaffSearchParam param) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getStaffWrapper(user).saveStaff(param)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + /** + * 更新编制,修改所有字段 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/updateStaff") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult updateStaff(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody StaffSearchParam param) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getStaffWrapper(user).updateStaff(param)); + } 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(getStaffWrapper(user).deleteByIds(param.getIds())); + } 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); + Map map = ParamUtil.request2Map(request); + return ReturnResult.successed(getStaffWrapper(user).getSearchCondition(map)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } + + + /** + * 新增、编辑表单 + * + * @param request + * @param response + * @return + */ + @GET + @Path("/getForm") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult getForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + Map map = ParamUtil.request2Map(request); + return ReturnResult.successed(getStaffWrapper(user).getForm(map)); + } 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(getStaffWrapper(user).getHasRight()); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } +} diff --git a/src/com/engine/organization/web/StaffPlanController.java b/src/com/engine/organization/web/StaffPlanController.java index d857c804..7576b433 100644 --- a/src/com/engine/organization/web/StaffPlanController.java +++ b/src/com/engine/organization/web/StaffPlanController.java @@ -55,7 +55,7 @@ public class StaffPlanController { } /** - * 添加岗位 + * 添加编制方案 * * @param request * @param response @@ -74,7 +74,7 @@ public class StaffPlanController { } /** - * 更新岗位,修改所有字段 + * 更新编制方案,修改所有字段 * * @param request * @param response diff --git a/src/com/engine/organization/wrapper/StaffWrapper.java b/src/com/engine/organization/wrapper/StaffWrapper.java new file mode 100644 index 00000000..dec481eb --- /dev/null +++ b/src/com/engine/organization/wrapper/StaffWrapper.java @@ -0,0 +1,93 @@ +package com.engine.organization.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.organization.entity.staff.param.StaffSearchParam; +import com.engine.organization.service.StaffService; +import com.engine.organization.service.impl.StaffServiceImpl; +import weaver.hrm.User; + +import java.util.Collection; +import java.util.Map; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/05/25 + * @version: 1.0 + */ +public class StaffWrapper extends Service { + private StaffService getStaffService(User user) { + return ServiceUtil.getService(StaffServiceImpl.class, user); + } + + /** + * 编制列表 + * + * @param params + * @return + */ + public Map listPage(StaffSearchParam params) { + return getStaffService(user).listPage(params); + } + + /** + * 新增编制 + * + * @param param + * @return + */ + public int saveStaff(StaffSearchParam param) { + return getStaffService(user).saveStaff(param); + } + + /** + * 更新编制 + * + * @param param + * @return + */ + public int updateStaff(StaffSearchParam param) { + return getStaffService(user).updateStaff(param); + } + + + /** + * 根据ID批量删除 + * + * @param ids + */ + public int deleteByIds(Collection ids) { + return getStaffService(user).deleteByIds(ids); + } + + /** + * 获取搜索条件 + * + * @param params + * @return + */ + public Map getSearchCondition(Map params) { + return getStaffService(user).getSearchCondition(params); + } + + + /** + * 获取新增表单 + * + * @param params + * @return + */ + public Map getForm(Map params) { + return getStaffService(user).getForm(params); + } + + /** + * 获取列表页面按钮信息 + * + * @return + */ + public Map getHasRight() { + return getStaffService(user).getHasRight(); + } +}