路维光编制需求
This commit is contained in:
parent
b3156eaa28
commit
f13dfcb3bb
|
|
@ -35,4 +35,7 @@ public class JobRecord {
|
|||
private Integer requestId;
|
||||
|
||||
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
|
||||
public class StaffPlan {
|
||||
|
||||
private Integer id;
|
||||
|
||||
private Integer jobId;
|
||||
|
||||
private Integer staffBelong;
|
||||
|
||||
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;
|
||||
|
||||
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
|
||||
* @Date 2025/4/21 15:30
|
||||
|
|
@ -7,4 +13,35 @@ package com.engine.newwaymask.service;
|
|||
* @Version 1.0
|
||||
*/
|
||||
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;
|
||||
|
||||
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.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
|
||||
|
|
@ -12,5 +22,117 @@ import com.engine.newwaymask.service.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…
Reference in New Issue