Merge pull request '编制信息更新 流程明细处理 新增' (#281) from feature/cl into develop
Reviewed-on: http://221.226.25.34:3000/liang.cheng/weaver-hrm-organization/pulls/281
This commit is contained in:
commit
e5f46a8083
|
|
@ -96,7 +96,7 @@
|
|||
<select id="listDeptsByIds" resultType="java.util.Map">
|
||||
select
|
||||
id as "id",
|
||||
departmentName as "name"
|
||||
departmentMark as "name"
|
||||
from hrmdepartment t
|
||||
WHERE id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
|
|
|
|||
|
|
@ -380,7 +380,7 @@ public class JobServiceImpl extends Service implements JobService {
|
|||
|
||||
String jobNo = (String) params.get("job_no");
|
||||
// 判断是否开启自动编号
|
||||
jobNo = repeatDetermine(jobNo);
|
||||
jobNo = repeatDetermine(jobNo,searchParam.getEcJobTitle(),searchParam.getEcDepartment());
|
||||
params.put("job_no", jobNo);
|
||||
return getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_JOB, params, "", null);
|
||||
}
|
||||
|
|
@ -401,7 +401,7 @@ public class JobServiceImpl extends Service implements JobService {
|
|||
String oldJobNo = oldJobPO.getJobNo();
|
||||
String jobNo = searchParam.getJobNo();
|
||||
if (!jobNo.equals(oldJobNo)) {
|
||||
jobNo = repeatDetermine(jobNo);
|
||||
jobNo = repeatDetermine(jobNo,searchParam.getEcJobTitle(),searchParam.getEcDepartment());
|
||||
params.put("job_no", jobNo);
|
||||
}
|
||||
|
||||
|
|
@ -739,7 +739,8 @@ public class JobServiceImpl extends Service implements JobService {
|
|||
*
|
||||
* @return
|
||||
*/
|
||||
public String repeatDetermine(String jobNo) {
|
||||
public String repeatDetermine(String jobNo,Integer jobTitle,Integer departmentId) {
|
||||
JobTitlesComInfo jb = new JobTitlesComInfo();
|
||||
CodeRulePO codeRuleByType = MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleByType(RuleCodeType.JOBTITLES.getValue());
|
||||
if (StringUtils.isNotBlank(jobNo)) {
|
||||
jobNo = CodeRuleUtil.generateCode(RuleCodeType.JOBTITLES, jobNo);
|
||||
|
|
@ -748,7 +749,11 @@ public class JobServiceImpl extends Service implements JobService {
|
|||
OrganizationAssert.isEmpty(list, SystemEnv.getHtmlLabelName(547137, user.getLanguage()));
|
||||
} else {
|
||||
//OrganizationAssert.isTrue(null != codeRuleByType && "1".equals(codeRuleByType.getSerialEnable()), SystemEnv.getHtmlLabelName(547430,user.getLanguage()));
|
||||
jobNo = autoCreateCompanyNo();
|
||||
//jobNo = autoCreateCompanyNo();
|
||||
String jobTitlescode = jb.getJobTitlescode(String.valueOf(jobTitle));
|
||||
if (!"".equals(jobTitlescode)) {
|
||||
jobNo = jobTitlescode+"-"+departmentId;
|
||||
}
|
||||
}
|
||||
return jobNo;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,169 @@
|
|||
package weaver.interfaces.organization.action;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.engine.organization.entity.hrmresource.po.ResourcePO;
|
||||
import com.engine.organization.entity.job.po.JobPO;
|
||||
import com.engine.organization.entity.staff.po.StaffPO;
|
||||
import com.engine.organization.enums.DeleteTypeEnum;
|
||||
import com.engine.organization.mapper.job.JobMapper;
|
||||
import com.engine.organization.mapper.staff.StaffMapper;
|
||||
import com.engine.organization.util.db.MapperProxyFactory;
|
||||
import weaver.conn.RecordSet;
|
||||
import weaver.general.Util;
|
||||
import weaver.hrm.job.JobTitlesComInfo;
|
||||
import weaver.interfaces.workflow.action.Action;
|
||||
import weaver.soa.workflow.request.RequestInfo;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Author liang.cheng
|
||||
* @Date 2024/9/25 2:03 PM
|
||||
* @Description: 流程明细编制信息操作初始化
|
||||
* @Version 1.0
|
||||
*/
|
||||
public class WorkflowStaffOperateAction implements Action {
|
||||
|
||||
@Override
|
||||
public String execute(RequestInfo requestInfo) {
|
||||
|
||||
String requestid = requestInfo.getRequestid();
|
||||
int formid = Math.abs(requestInfo.getRequestManager().getFormid());
|
||||
|
||||
RecordSet rs = new RecordSet();
|
||||
|
||||
String mainTable = String.format("%s%s", "formtable_main_", formid);
|
||||
|
||||
String detaiTable = String.format("%s%s",mainTable,"_dt1");
|
||||
|
||||
//1.获取表单数据
|
||||
rs.executeQuery("select a.bzfa,b.fb,b.bm,b.gw,b.bzs,b.zzs from "+mainTable+" as a \n" +
|
||||
"right join "+detaiTable+" as b on a.id = b.mainid where a.requestid = ?",requestid);
|
||||
|
||||
List<StaffPO> staffList = new ArrayList<>();
|
||||
|
||||
while (rs.next()) {
|
||||
StaffPO build = StaffPO.builder()
|
||||
.planId(Util.getIntValue(rs.getString("bzfa")))
|
||||
.compId(Util.getIntValue(rs.getString("fb")))
|
||||
.deptId(Util.getIntValue(rs.getString("bm")))
|
||||
.jobId(Util.getIntValue(rs.getString("gw")))
|
||||
.staffNum(Util.getIntValue(rs.getString("bzs")))
|
||||
.permanentNum(Util.getIntValue(rs.getString("zzs")))
|
||||
.build();
|
||||
staffList.add(build);
|
||||
}
|
||||
|
||||
if (CollectionUtil.isEmpty(staffList)) {
|
||||
requestInfo.getRequestManager().setMessagecontent("未找到明细数据");
|
||||
return Action.FAILURE_AND_CONTINUE;
|
||||
}
|
||||
|
||||
Integer planId = staffList.get(0).getPlanId();
|
||||
|
||||
//2.数据处理,Ec岗位id替换为聚才林岗位id 不存在情况下新增岗位数据
|
||||
buildJobTitle(staffList);
|
||||
|
||||
//3.根据方案id获取当前已有编制信息与流程明细比较;已存在的更新,未存在的新增
|
||||
List<StaffPO> hStaffList = new ArrayList<>();
|
||||
rs.executeQuery("select id,comp_id,dept_id,job_id,freeze_num from jcl_org_staff where plan_id = ? and delete_type = 0",planId);
|
||||
while (rs.next()) {
|
||||
StaffPO build = StaffPO.builder()
|
||||
.id((long) Util.getIntValue(rs.getString("id")))
|
||||
.compId(Util.getIntValue(rs.getString("comp_id")))
|
||||
.deptId(Util.getIntValue(rs.getString("dept_id")))
|
||||
.jobId(Util.getIntValue(rs.getString("job_id")))
|
||||
.freezeNum(Util.getIntValue(rs.getString("freeze_num")))
|
||||
.build();
|
||||
hStaffList.add(build);
|
||||
}
|
||||
|
||||
//新增的编制信息数据List
|
||||
List<StaffPO> iStaffList = new ArrayList<>();
|
||||
|
||||
Map<String, StaffPO> hStaffMap = new HashMap<>();
|
||||
|
||||
for (StaffPO staff : hStaffList) {
|
||||
String key = staff.getCompId() + "_" + staff.getDeptId() + "_" + staff.getJobId();
|
||||
hStaffMap.put(key, staff);
|
||||
}
|
||||
|
||||
for (StaffPO staff : staffList) {
|
||||
String key = staff.getCompId() + "_" + staff.getDeptId() + "_" + staff.getJobId();
|
||||
if (hStaffMap.containsKey(key)) {
|
||||
StaffPO matchedStaff = hStaffMap.get(key);
|
||||
matchedStaff.setPermanentNum(staff.getPermanentNum());
|
||||
matchedStaff.setStaffNum(staff.getStaffNum());
|
||||
}else {
|
||||
iStaffList.add(staff);
|
||||
}
|
||||
}
|
||||
|
||||
//更新
|
||||
hStaffList.forEach(item -> {
|
||||
//todo 冻结数还原为0根据需求而定
|
||||
buildStaffPO(item);
|
||||
rs.executeUpdate("update jcl_org_staff set staff_num = ?,permanent_num = ?,lack_status = ? where id = ?",
|
||||
item.getStaffNum(),item.getPermanentNum(),item.getLackStatus(),item.getId());
|
||||
});
|
||||
|
||||
//插入
|
||||
iStaffList.forEach(staffPO -> {
|
||||
staffPO.setFreezeNum(0);
|
||||
staffPO.setControlPolicy(1);
|
||||
staffPO.setDeleteType(0);
|
||||
staffPO.setCreateTime(new Date());
|
||||
staffPO.setUpdateTime(new Date());
|
||||
staffPO.setCreator(1L);
|
||||
buildStaffPO(staffPO);
|
||||
MapperProxyFactory.getProxy(StaffMapper.class).insertIgnoreNull(staffPO);
|
||||
});
|
||||
|
||||
return Action.FAILURE_AND_CONTINUE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ec岗位转换聚才林岗位
|
||||
* @param staffList
|
||||
*/
|
||||
private void buildJobTitle(List<StaffPO> staffList) {
|
||||
JobTitlesComInfo jb = new JobTitlesComInfo();
|
||||
staffList.forEach(item -> {
|
||||
ResourcePO resourcePo = ResourcePO.builder().subcompanyid1(item.getCompId()).departmentid(item.getDeptId()).jobtitle(item.getJobId()).build();
|
||||
JobPO jobByResource = MapperProxyFactory.getProxy(JobMapper.class).getJobByResource(resourcePo);
|
||||
if (jobByResource == null) {
|
||||
//岗位不存在新增
|
||||
JobPO jobPO = JobPO.builder()
|
||||
.ecCompany(resourcePo.getSubcompanyid1())
|
||||
.ecDepartment(resourcePo.getDepartmentid())
|
||||
.ecJobTitle(resourcePo.getJobtitle())
|
||||
.isKey(0)
|
||||
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
|
||||
.createTime(new Date())
|
||||
.updateTime(new Date())
|
||||
.build();
|
||||
String jobTitlescode = jb.getJobTitlescode(String.valueOf(resourcePo.getJobtitle()));
|
||||
if (!"".equals(jobTitlescode)) {
|
||||
jobPO.setJobNo(jobTitlescode+"-"+resourcePo.getDepartmentid());
|
||||
}
|
||||
MapperProxyFactory.getProxy(JobMapper.class).insertIgnoreNull(jobPO);
|
||||
item.setJobId(Math.toIntExact(jobPO.getId()));
|
||||
}else {
|
||||
item.setJobId(Math.toIntExact(jobByResource.getId()));
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue