路维光编制需求

路维光电人力资源项目
Chengliang 2 months ago
parent b3156eaa28
commit f13dfcb3bb

@ -35,4 +35,7 @@ public class JobRecord {
private Integer requestId; private Integer requestId;
private Integer lastId; private Integer lastId;
//岗位所属编制
private Integer staffBelong;
} }

@ -0,0 +1,29 @@
package com.engine.newwaymask.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2025/4/21 16:48
* @Description:
* @Version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StaffDutyResult {
private boolean status;
private String message;
private Integer frozenNums;
private Integer onJobNums;
private Integer restNums;
}

@ -17,10 +17,20 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
public class StaffPlan { public class StaffPlan {
private Integer id;
private Integer jobId; private Integer jobId;
private Integer staffBelong; private Integer staffBelong;
private Integer jobType; private Integer jobType;
private Integer staffPlanNums;
private Integer frozenNums;
private Integer onJobNums;
private Integer restNums;
} }

@ -0,0 +1,32 @@
package com.engine.newwaymask.enums;
/**
* @Author liang.cheng
* @Date 2025/4/21 16:57
* @Description:
* @Version 1.0
*/
public enum StaffOptTypeEnum {
ENTRY(0, "入职类型"),
TRANSFER(2, "调动类型"),
DIMISSION(1, "离职类型");
private Integer value;
private String desc;
StaffOptTypeEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public Integer getValue() {
return value;
}
public String getDesc() {
return desc;
}
}

@ -1,5 +1,11 @@
package com.engine.newwaymask.service; package com.engine.newwaymask.service;
import com.engine.newwaymask.entity.JobRecord;
import com.engine.newwaymask.entity.StaffDutyResult;
import com.engine.newwaymask.entity.StaffPlan;
import java.util.List;
/** /**
* @Author liang.cheng * @Author liang.cheng
* @Date 2025/4/21 15:30 * @Date 2025/4/21 15:30
@ -7,4 +13,35 @@ package com.engine.newwaymask.service;
* @Version 1.0 * @Version 1.0
*/ */
public interface StaffDutyService { public interface StaffDutyService {
/**
* @Description:
* @Author: liang.cheng
* @Date: 2025/4/21 16:12
* @param: [reqyestId]
* @return: java.util.List<com.engine.newwaymask.entity.JobRecord>
*/
List<JobRecord> selectJobRecords(String requestId);
/**
* @Description:
* @Author: liang.cheng
* @Date: 2025/4/21 17:37
* @param: [workflowRequestParam]
* @return: java.util.List<com.engine.newwaymask.entity.StaffPlan>
*/
List<StaffPlan> selectStaffPlans(JobRecord jobRecord,boolean isAll);
/**
* @Description:
* @Author: liang.cheng
* @Date: 2025/4/21 17:04
* @param: []
* @return: com.engine.newwaymask.entity.StaffDutyResult
*/
StaffDutyResult entryWorkflow(String requestId);
} }

@ -1,7 +1,17 @@
package com.engine.newwaymask.service.impl; package com.engine.newwaymask.service.impl;
import com.engine.core.impl.Service; import com.engine.core.impl.Service;
import com.engine.newwaymask.entity.JobRecord;
import com.engine.newwaymask.entity.StaffDutyResult;
import com.engine.newwaymask.entity.StaffPlan;
import com.engine.newwaymask.service.StaffDutyService; import com.engine.newwaymask.service.StaffDutyService;
import com.weaver.general.Util;
import weaver.conn.RecordSet;
import weaver.general.StringUtil;
import weaver.general.TimeUtil;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* @Author liang.cheng * @Author liang.cheng
@ -12,5 +22,117 @@ import com.engine.newwaymask.service.StaffDutyService;
public class StaffDutyServiceImpl extends Service implements StaffDutyService { public class StaffDutyServiceImpl extends Service implements StaffDutyService {
@Override
public List<JobRecord> selectJobRecords(String requestId) {
List<JobRecord> jobRecords = new ArrayList<>();
RecordSet rs = new RecordSet();
String sql = "select a.id,a.rzry,a.rzlx,a.gwzt,a.sydrzid,a.gw,a.ksrq,a.jsrq,b.gwszbz from uf_rzxxb a\n" +
"left join uf_gwgl b on a.gw = b.id \n" +
"left join uf_zt c on a.gwzt = c.id \n" +
"where c.on_job = 0 and a.ksrq <= ? and a.jsrq >= ?";
if (!StringUtil.isEmpty(requestId)) {
sql += " and a.requestid = "+requestId;
}
String currentDate = TimeUtil.getCurrentDateString();
rs.executeQuery(sql,currentDate,currentDate);
while (rs.next()) {
jobRecords.add(JobRecord.builder()
.id(Util.getIntValue(rs.getString("id")))
.resourceId(Util.getIntValue(rs.getString("rzry")))
.lastId(Util.getIntValue(rs.getString("sydrzid")))
.jobId(Util.getIntValue(rs.getString("gw")))
.staffBelong(Util.getIntValue(rs.getString("gwszbz")))
.build());
}
//同一人员如果出现多条生效数据 根据建模id取最大那条
return jobRecords.stream()
// 过滤无效数据resourceId和id均非空
.filter(record -> record.getResourceId() != null && record.getId() != null)
// 分组并取每组id最大的记录
.collect(Collectors.groupingBy(
JobRecord::getResourceId,
LinkedHashMap::new,
Collectors.collectingAndThen(
Collectors.maxBy(Comparator.comparing(
JobRecord::getId,
Comparator.nullsLast(Integer::compare)
)),
Optional::get
)
))
.values()
.stream()
.collect(Collectors.toList());
}
@Override
public List<StaffPlan> selectStaffPlans(JobRecord jobRecord,boolean isAll) {
List<StaffPlan> staffPlans = new ArrayList<>();
RecordSet rs = new RecordSet();
String sql = "select id,gw,bzgz,rzlx,zbzjhs,djbzs,zbrs,syrs from uf_bzjh where sfzxbb = 0";
//全部计算功能
if (isAll) {
rs.executeQuery(sql);
while (rs.next()) {
staffPlans.add(StaffPlan.builder()
.id(Util.getIntValue(rs.getString("id")))
.jobId(Util.getIntValue(rs.getString("gw")))
.staffPlanNums(Util.getIntValue(rs.getString("zbzjhs"),0))
.frozenNums(Util.getIntValue(rs.getString("djbzs"),0))
.onJobNums(Util.getIntValue(rs.getString("zbrs"),0))
.restNums(Util.getIntValue(rs.getString("syrs"),0))
.build());
}
}else {
sql += " and gw = ? and bzgz = ? and rzlx = ?";
rs.executeQuery(sql,jobRecord.getJobId(),jobRecord.getStaffBelong(),jobRecord.getJobType());
while (rs.next()) {
staffPlans.add(StaffPlan.builder()
.id(Util.getIntValue(rs.getString("id")))
.jobId(Util.getIntValue(rs.getString("gw")))
.staffPlanNums(Util.getIntValue(rs.getString("zbzjhs"),0))
.frozenNums(Util.getIntValue(rs.getString("djbzs"),0))
.onJobNums(Util.getIntValue(rs.getString("zbrs"),0))
.restNums(Util.getIntValue(rs.getString("syrs"),0))
.build());
}
}
return staffPlans;
}
@Override
public StaffDutyResult entryWorkflow(String requestId) {
StaffDutyResult result = new StaffDutyResult();
//1.获取任职数据信息
List<JobRecord> jobRecords = selectJobRecords(requestId);
if (jobRecords.size() == 0) {
result.setMessage(String.format("未查询到requestId:%s所对应的任职记录数据,请检查流程转建模配置",requestId));
result.setStatus(false);
}
//2.获取需要更新的编制执行情况数据
List<StaffPlan> staffPlans = selectStaffPlans(jobRecords.get(0), false);
if (staffPlans.size() == 0) {
result.setMessage(String.format("requestId:%s所对应的任职记录数据在当前编制计划中未匹配,请检查参数",requestId));
result.setStatus(false);
}
//3.若匹配多条数据 获取id 较大的那条数据作为最新数据
return result;
}
} }

Loading…
Cancel
Save