路维光编制需求
This commit is contained in:
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…
Reference in New Issue