编制模块

pull/210/head
Chengliang 2 years ago
parent d8d69381ea
commit eee636230d

@ -5,7 +5,9 @@ import com.engine.organization.entity.staff.po.StaffPO;
import com.engine.organization.transmethod.StaffTransMethod; import com.engine.organization.transmethod.StaffTransMethod;
import weaver.general.Util; import weaver.general.Util;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @author:dxfeng * @author:dxfeng
@ -42,12 +44,16 @@ public class StaffBO {
} }
public static void buildStaffDesc(StaffPO staffPO) { public static void buildStaffDesc(StaffPO staffPO) {
staffPO.setLackStatus(parseLackStatus(null == staffPO.getStaffNum() ? 0 : staffPO.getStaffNum(), null == staffPO.getPermanentNum() ? 0 : staffPO.getPermanentNum())); List<Integer> numberF = Arrays.asList(staffPO.getFreezeNum(),staffPO.getPermanentNum());
String sb = "编制数:" + parseNull(staffPO.getStaffNum()) + int sum = numberF.stream()
",在编数:" + parseNull(staffPO.getPermanentNum()) + .mapToInt(Integer::intValue)
",冻结数:" + parseNull(staffPO.getFreezeNum()) + .sum();
",缺编状态:" + StaffTransMethod.getLackSpan(Util.null2String(staffPO.getLackStatus())); staffPO.setLackStatus(parseLackStatus(null == staffPO.getStaffNum() ? 0 : staffPO.getStaffNum(),sum));
staffPO.setStaffDesc(sb); // String sb = "编制数:" + parseNull(staffPO.getStaffNum()) +
// ",在编数:" + parseNull(staffPO.getPermanentNum()) +
// ",冻结数:" + parseNull(staffPO.getFreezeNum()) +
// ",缺编状态:" + StaffTransMethod.getLackSpan(Util.null2String(staffPO.getLackStatus()));
// staffPO.setStaffDesc(sb);
} }
@ -67,15 +73,15 @@ public class StaffBO {
* *
* *
* @param staffNum * @param staffNum
* @param permanentNum * @param sums
* @return * @return
*/ */
private static int parseLackStatus(int staffNum, int permanentNum) { private static int parseLackStatus(int staffNum, int sums) {
if (staffNum == permanentNum) { if (staffNum == sums) {
// 满员 // 满员
return 2; return 2;
} }
if (staffNum > permanentNum) { if (staffNum > sums) {
// 缺编 // 缺编
return 1; return 1;
} }

@ -23,7 +23,7 @@ public class StaffSearchParam {
/** /**
* id * id
*/ */
private Long planId; private Integer planId;
/** /**
* *
*/ */
@ -37,7 +37,7 @@ public class StaffSearchParam {
/** /**
* *
*/ */
private Long jobId; private Integer jobId;
/** /**
* *
*/ */

@ -25,7 +25,7 @@ public class StaffPO {
/** /**
* id * id
*/ */
private Long planId; private Integer planId;
/** /**
* *
*/ */
@ -39,7 +39,7 @@ public class StaffPO {
/** /**
* *
*/ */
private Long jobId; private Integer jobId;
/** /**
* *
*/ */

@ -18,7 +18,7 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@OrganizationTable(pageId = "e04abd72-dbd6-11ec-b69e-00ffcbed7508", @OrganizationTable(pageId = "e04abd72-dbd6-11ec-b69e-00ffcbed7508",
fields = "t.id,t.is_used, t.plan_no, t.plan_name, t.plan_year, t.time_start, t.time_end, t.forbidden_tag", fields = "t.id,t.is_used, t.plan_no, t.plan_name,t.control_dimension, t.plan_year, t.time_start, t.time_end, t.forbidden_tag",
fromSql = "FROM jcl_org_staffplan t ", fromSql = "FROM jcl_org_staffplan t ",
orderby = "plan_no", orderby = "plan_no",
sortway = "asc", sortway = "asc",
@ -53,6 +53,11 @@ public class StaffPlanTableVO {
*/ */
@OrganizationTableColumn(text = "名称", width = "16%", column = "plan_name") @OrganizationTableColumn(text = "名称", width = "16%", column = "plan_name")
private String planName; private String planName;
/**
* w
*/
@OrganizationTableColumn(text = "维度", width = "16%", column = "control_dimension",transmethod = "com.engine.organization.transmethod.StaffPlanTransMethod.getControlDimension")
private String controlDimension;
/** /**
* *
*/ */

@ -18,8 +18,8 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@OrganizationTable(pageId = "0cdfd5bb-dc09-11ec-b69e-00ffcbed7508", @OrganizationTable(pageId = "0cdfd5bb-dc09-11ec-b69e-00ffcbed7508",
fields = "id,is_used,plan_id,comp_id,dept_id,job_id,staff_num,permanent_num,freeze_num,lack_status,staff_desc", fields = "t.id,t.is_used,s.control_dimension,t.plan_id,t.comp_id,t.dept_id,t.job_id,t.staff_num,t.permanent_num,t.freeze_num,t.lack_status,t.staff_desc",
fromSql = "FROM jcl_org_staff t ", fromSql = "FROM jcl_org_staff t inner join jcl_org_staffplan s on t.plan_id = s.id",
orderby = "id desc", orderby = "id desc",
primarykey = "id", primarykey = "id",
operates = { operates = {
@ -45,6 +45,11 @@ public class StaffTableVO {
*/ */
@OrganizationTableColumn(text = "方案", width = "10%", column = "plan_id", transmethod = "com.engine.organization.transmethod.StaffPlanTransMethod.getSpanById") @OrganizationTableColumn(text = "方案", width = "10%", column = "plan_id", transmethod = "com.engine.organization.transmethod.StaffPlanTransMethod.getSpanById")
private String planId; private String planId;
/**
*
*/
@OrganizationTableColumn(text = "维度", width = "10%", column = "control_dimension", transmethod = "com.engine.organization.transmethod.StaffPlanTransMethod.getControlDimension")
private String controlDimension;
/** /**
* *
*/ */

@ -35,7 +35,7 @@ public interface StaffMapper {
/** /**
* @Description: b * @Description:
* @Author: liang.cheng * @Author: liang.cheng
* @Date: 2023/9/4 11:26 AM * @Date: 2023/9/4 11:26 AM
* @param: [planId, companyId, departmentId, jobId] * @param: [planId, companyId, departmentId, jobId]

@ -74,4 +74,14 @@ public interface StaffPlanMapper {
List<String> listUsedId(); List<String> listUsedId();
List<StaffPlanPO> getStaffPlansByIds(@Param("ids") Collection<Long> ids); List<StaffPlanPO> getStaffPlansByIds(@Param("ids") Collection<Long> ids);
/**
* @Description:
* @Author: liang.cheng
* @Date: 2023/9/5 4:02 PM
* @param: [timeStart, timeEnd, ecCompany, controlDimension]
* @return: com.engine.organization.entity.staff.po.StaffPlanPO
*/
StaffPlanPO customSelect(@Param("timeStart") String timeStart,@Param("ecCompany") String ecCompany,@Param("controlDimension") String controlDimension);
} }

@ -296,4 +296,13 @@
</foreach> </foreach>
</update> </update>
<select id="customSelect" resultMap="BaseResultMap">
select
<include refid="baseColumns"/>
from jcl_org_staffplan t where time_start &lt;= #{timeStart,jdbcType=DATE} AND time_end > #{timeStart,jdbcType=DATE}
AND ec_company = #{ecCompany}
AND control_dimension = #{controlDimension}
AND delete_type = 0
</select>
</mapper> </mapper>

@ -46,6 +46,7 @@ public class FunctionOutStaffServiceImpl {
.mapToInt(Integer::intValue) .mapToInt(Integer::intValue)
.sum(); .sum();
staffPO.setStaffNum(sum); staffPO.setStaffNum(sum);
buildStaffPO(staffPO);
return staffMapper().updateStaff(staffPO); return staffMapper().updateStaff(staffPO);
} }
@ -60,6 +61,7 @@ public class FunctionOutStaffServiceImpl {
OrganizationAssert.isFalse(difference.compareTo(sums) < 0,"存在编制超编风险,请先修改控制策略"); OrganizationAssert.isFalse(difference.compareTo(sums) < 0,"存在编制超编风险,请先修改控制策略");
} }
staffPO.setStaffNum(difference); staffPO.setStaffNum(difference);
buildStaffPO(staffPO);
return staffMapper().updateStaff(staffPO); return staffMapper().updateStaff(staffPO);
} }
@ -74,6 +76,7 @@ public class FunctionOutStaffServiceImpl {
OrganizationAssert.isFalse(sum.compareTo(staffPO.getStaffNum()) > 0, "冻结数不能大于剩余编制数!"); OrganizationAssert.isFalse(sum.compareTo(staffPO.getStaffNum()) > 0, "冻结数不能大于剩余编制数!");
} }
staffPO.setFreezeNum(sum); staffPO.setFreezeNum(sum);
buildStaffPO(staffPO);
return staffMapper().updateStaff(staffPO); return staffMapper().updateStaff(staffPO);
} }
@ -100,6 +103,7 @@ public class FunctionOutStaffServiceImpl {
.orElse(0); .orElse(0);
staffPO.setFreezeNum(difference); staffPO.setFreezeNum(difference);
} }
buildStaffPO(staffPO);
return staffMapper().updateStaff(staffPO); return staffMapper().updateStaff(staffPO);
} }
@ -120,6 +124,7 @@ public class FunctionOutStaffServiceImpl {
.orElse(0); .orElse(0);
staffPO.setFreezeNum(differenceF); staffPO.setFreezeNum(differenceF);
} }
buildStaffPO(staffPO);
return staffMapper().updateStaff(staffPO); return staffMapper().updateStaff(staffPO);
} }
@ -134,6 +139,15 @@ public class FunctionOutStaffServiceImpl {
return staffPO; return staffPO;
} }
private static void buildStaffPO(StaffPO staffPO) {
List<Integer> number = Arrays.asList(staffPO.getPermanentNum(),staffPO.getFreezeNum());
Integer sums = number.stream()
.mapToInt(Integer::intValue)
.sum();
Integer a = staffPO.getStaffNum();
staffPO.setLackStatus((a.compareTo(sums) < 0) ? 3 : ((a.compareTo(sums) == 0) ? 2 : 1));
}
public Integer actuator(StaffChangeEnum functionEnum,StaffOutParam staffOutParam) { public Integer actuator(StaffChangeEnum functionEnum,StaffOutParam staffOutParam) {
Function<StaffOutParam, Integer> function = affairFunctionS.get(functionEnum); Function<StaffOutParam, Integer> function = affairFunctionS.get(functionEnum);

@ -73,6 +73,8 @@ public class StaffPlanServiceImpl extends Service implements StaffPlanService {
Date startDate = DateUtil.parseToDate(timeStart); Date startDate = DateUtil.parseToDate(timeStart);
Date endDate = DateUtil.parseToDate(timeEnd); Date endDate = DateUtil.parseToDate(timeEnd);
OrganizationAssert.isFalse(startDate.after(endDate), "开始时间不允许在结束时间之后"); OrganizationAssert.isFalse(startDate.after(endDate), "开始时间不允许在结束时间之后");
StaffPlanPO staffPlanPO1 = getStaffPlanMapper().customSelect(param.getTimeStart(), param.getEcCompany(), param.getControlDimension());
OrganizationAssert.isNull(staffPlanPO1,"同一维度下,相同适用公司编制方案的时间段不允许出现交叉");
return getStaffPlanMapper().insertIgnoreNull(staffPlanPO); return getStaffPlanMapper().insertIgnoreNull(staffPlanPO);
} }
@ -92,6 +94,8 @@ public class StaffPlanServiceImpl extends Service implements StaffPlanService {
Date startDate = DateUtil.parseToDate(timeStart); Date startDate = DateUtil.parseToDate(timeStart);
Date endDate = DateUtil.parseToDate(timeEnd); Date endDate = DateUtil.parseToDate(timeEnd);
OrganizationAssert.isFalse(startDate.after(endDate), "开始时间不允许在结束时间之后"); OrganizationAssert.isFalse(startDate.after(endDate), "开始时间不允许在结束时间之后");
StaffPlanPO staffPlanPO1 = getStaffPlanMapper().customSelect(param.getTimeStart(), param.getEcCompany(), param.getControlDimension());
OrganizationAssert.isNull(staffPlanPO1,"同一维度下,相同适用公司编制方案的时间段不允许出现交叉");
// 多选赋值 // 多选赋值
staffPlanPO.setCompanyId(staffPlanPO.getEcCompany()); staffPlanPO.setCompanyId(staffPlanPO.getEcCompany());
return getStaffPlanMapper().updateStaffPlan(staffPlanPO); return getStaffPlanMapper().updateStaffPlan(staffPlanPO);

@ -128,9 +128,9 @@ public class StaffServiceImpl extends Service implements StaffService {
HasRightUtil.hasRight(user, RIGHT_NAME, false); HasRightUtil.hasRight(user, RIGHT_NAME, false);
StaffPO staffPO = StaffBO.convertParamToPO(param, (long) user.getUID()); StaffPO staffPO = StaffBO.convertParamToPO(param, (long) user.getUID());
OrganizationAssert.isFalse(staffPO.getStaffNum() < 0, "编制数不可小于0请更正"); OrganizationAssert.isFalse(staffPO.getStaffNum() < 0, "编制数不可小于0请更正");
StaffPO verify = getStaffMapper().customSelect(param.getPlanId(), param.getEcCompany(), param.getEcDepartment(), param.getJobId());
OrganizationAssert.isNull(verify,"同一编制方案下,同一维度的编制信息不可重复创建!");
checkRequired(staffPO); checkRequired(staffPO);
int ignoreNull = getStaffMapper().insertIgnoreNull(staffPO); int ignoreNull = getStaffMapper().insertIgnoreNull(staffPO);
// 初始化编制在编数 // 初始化编制在编数
initStaffInfo(staffPO); initStaffInfo(staffPO);
@ -140,11 +140,12 @@ public class StaffServiceImpl extends Service implements StaffService {
@Override @Override
public int updateStaff(StaffSearchParam param) { public int updateStaff(StaffSearchParam param) {
HasRightUtil.hasRight(user, RIGHT_NAME, false); HasRightUtil.hasRight(user, RIGHT_NAME, false);
StaffPO verify = getStaffMapper().customSelect(param.getPlanId(), param.getEcCompany(), param.getEcDepartment(), param.getJobId());
OrganizationAssert.isNull(verify,"同一编制方案下,同一维度的编制信息不可重复创建!");
StaffPO staffByID = getStaffMapper().getStaffByID(param.getId()); StaffPO staffByID = getStaffMapper().getStaffByID(param.getId());
StaffPO staffPO = StaffBO.convertParamToPO(param, (long) user.getUID()); StaffPO staffPO = StaffBO.convertParamToPO(param, (long) user.getUID());
staffPO.setPermanentNum(staffByID.getPermanentNum()); staffPO.setPermanentNum(staffByID.getPermanentNum());
staffPO.setFreezeNum(staffByID.getFreezeNum()); staffPO.setFreezeNum(staffByID.getFreezeNum());
checkRequired(staffPO); checkRequired(staffPO);
Integer changeNum = param.getChangeNum(); Integer changeNum = param.getChangeNum();
@ -359,7 +360,7 @@ public class StaffServiceImpl extends Service implements StaffService {
DBType dbType = DBType.get(new RecordSet().getDBType()); DBType dbType = DBType.get(new RecordSet().getDBType());
String sqlWhere = " where t.delete_type ='0' "; String sqlWhere = " where t.delete_type ='0' ";
Long planId = param.getPlanId(); Integer planId = param.getPlanId();
if (null != planId) { if (null != planId) {
sqlWhere += " AND t.plan_id = '" + planId + "'"; sqlWhere += " AND t.plan_id = '" + planId + "'";
} else { } else {
@ -381,7 +382,7 @@ public class StaffServiceImpl extends Service implements StaffService {
if (null != ecDepartment) { if (null != ecDepartment) {
sqlWhere += " AND t.ec_department = '" + ecDepartment + "'"; sqlWhere += " AND t.ec_department = '" + ecDepartment + "'";
} }
Long jobId = param.getJobId(); Integer jobId = param.getJobId();
if (null != jobId) { if (null != jobId) {
sqlWhere += " AND t.job_id = '" + jobId + "'"; sqlWhere += " AND t.job_id = '" + jobId + "'";
} }
@ -445,7 +446,7 @@ public class StaffServiceImpl extends Service implements StaffService {
break; break;
case "3": // 岗位 case "3": // 岗位
OrganizationAssert.notNull(staffPO.getJobId(), "编制维度选择岗位时,岗位必填!"); OrganizationAssert.notNull(staffPO.getJobId(), "编制维度选择岗位时,岗位必填!");
JobPO jobById = getJobMapper().getJobById(staffPO.getJobId()); JobPO jobById = getJobMapper().getJobById(Long.valueOf(staffPO.getJobId()));
if (null != jobById) { if (null != jobById) {
staffPO.setDeptId(jobById.getEcDepartment()); staffPO.setDeptId(jobById.getEcDepartment());
staffPO.setEcDepartment(jobById.getEcDepartment()); staffPO.setEcDepartment(jobById.getEcDepartment());
@ -473,7 +474,7 @@ public class StaffServiceImpl extends Service implements StaffService {
sql += " and departmentid = " + staffPO.getEcDepartment(); sql += " and departmentid = " + staffPO.getEcDepartment();
} }
if (null != staffPO.getJobId() && 0 != staffPO.getJobId()) { if (null != staffPO.getJobId() && 0 != staffPO.getJobId()) {
JobPO jobById = MapperProxyFactory.getProxy(JobMapper.class).getJobById(staffPO.getJobId()); JobPO jobById = MapperProxyFactory.getProxy(JobMapper.class).getJobById(Long.valueOf(staffPO.getJobId()));
if (null == jobById) { if (null == jobById) {
return; return;
} }

@ -18,8 +18,11 @@ public class DepartmentTransMethod {
public static String getSpanById(String planId) { public static String getSpanById(String planId) {
DepartmentMapper departmentMapper = MapperProxyFactory.getProxy(DepartmentMapper.class); DepartmentMapper departmentMapper = MapperProxyFactory.getProxy(DepartmentMapper.class);
String names = "/";
if (!"".equals(planId)) {
List<Map<String, Object>> maps = departmentMapper.listDeptsByIds(DeleteParam.builder().ids(planId).build().getIds()); List<Map<String, Object>> maps = departmentMapper.listDeptsByIds(DeleteParam.builder().ids(planId).build().getIds());
String names = maps.stream().map(item -> (String) item.get("name")).collect(Collectors.joining(",")); names = maps.stream().map(item -> (String) item.get("name")).collect(Collectors.joining(","));
}
return names; return names;
} }
} }

@ -23,8 +23,12 @@ public class JobTransMethod {
public static String getSpanById(String jobId) { public static String getSpanById(String jobId) {
JobMapper jobMapper = MapperProxyFactory.getProxy(JobMapper.class); JobMapper jobMapper = MapperProxyFactory.getProxy(JobMapper.class);
String names = "/";
if (!"".equals(jobId)) {
List<JobPO> jobsByIds = jobMapper.getJobsByIds(DeleteParam.builder().ids(jobId).build().getIds()); List<JobPO> jobsByIds = jobMapper.getJobsByIds(DeleteParam.builder().ids(jobId).build().getIds());
return jobsByIds.stream().map(JobPO::getJobTitleName).collect(Collectors.joining(",")); names = jobsByIds.stream().map(JobPO::getJobTitleName).collect(Collectors.joining(","));
}
return names;
} }
public static String getLevelName(String levelId) { public static String getLevelName(String levelId) {

@ -1,6 +1,7 @@
package com.engine.organization.transmethod; package com.engine.organization.transmethod;
import com.engine.organization.entity.DeleteParam; import com.engine.organization.entity.DeleteParam;
import com.engine.organization.enums.ModuleTypeEnum;
import com.engine.organization.mapper.staff.StaffPlanMapper; import com.engine.organization.mapper.staff.StaffPlanMapper;
import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.db.MapperProxyFactory;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -30,4 +31,16 @@ public class StaffPlanTransMethod {
} }
return ""; return "";
} }
public static String getControlDimension(String controlDimension) {
if (!"".equals(controlDimension)) {
for (ModuleTypeEnum myEnum : ModuleTypeEnum.values()) {
if (myEnum.getValue() == Integer.parseInt(controlDimension)) {
return myEnum.getDefaultLabel();
}
}
}
return "/";
}
} }

@ -7,6 +7,7 @@ package com.engine.organization.transmethod;
* @version: 1.0 * @version: 1.0
*/ */
public class StaffTransMethod { public class StaffTransMethod {
public static String getLackSpan(String lackStatus) { public static String getLackSpan(String lackStatus) {
String lackSpan = ""; String lackSpan = "";
switch (lackStatus) { switch (lackStatus) {
@ -25,4 +26,5 @@ public class StaffTransMethod {
} }
return lackSpan; return lackSpan;
} }
} }

Loading…
Cancel
Save