pull/284/head
dxfeng 6 months ago
commit 4fcbe238b4

@ -98,7 +98,7 @@
<select id="listDeptsByIds" resultType="java.util.Map"> <select id="listDeptsByIds" resultType="java.util.Map">
select select
id as "id", id as "id",
departmentName as "name" departmentMark as "name"
from hrmdepartment t from hrmdepartment t
WHERE id IN WHERE id IN
<foreach collection="ids" open="(" item="id" separator="," close=")"> <foreach collection="ids" open="(" item="id" separator="," close=")">

@ -81,7 +81,7 @@ public class FunctionOutStaffServiceImpl {
OrganizationAssert.isFalse(staffPO.getFreezeNum() == 0, SystemEnv.getHtmlLabelName(547949,user.getLanguage())); OrganizationAssert.isFalse(staffPO.getFreezeNum() == 0, SystemEnv.getHtmlLabelName(547949,user.getLanguage()));
} }
List<Integer> numberF = Arrays.asList(staffPO.getFreezeNum(),param.getNum(),staffPO.getPermanentNum()); List<Integer> numberF = Arrays.asList(staffPO.getFreezeNum(),param.getNum());
//1.增加冻结数 num为负数时为减少冻结数 //1.增加冻结数 num为负数时为减少冻结数
Integer sum = numberF.stream() Integer sum = numberF.stream()
.mapToInt(Integer::intValue) .mapToInt(Integer::intValue)
@ -233,7 +233,6 @@ public class FunctionOutStaffServiceImpl {
bb.writeLog("编制参数"+ JSON.toJSONString(param)); bb.writeLog("编制参数"+ JSON.toJSONString(param));
bb.writeLog("查询结果"+ JSON.toJSONString(staffPO)); bb.writeLog("查询结果"+ JSON.toJSONString(staffPO));
bb.writeLog("user对象"+JSON.toJSONString(user)); bb.writeLog("user对象"+JSON.toJSONString(user));
bb.writeLog("msg"+SystemEnv.getHtmlLabelName(547474,user.getLanguage()));
OrganizationAssert.notEmpty(staffPO,SystemEnv.getHtmlLabelName(547474,user.getLanguage())); OrganizationAssert.notEmpty(staffPO,SystemEnv.getHtmlLabelName(547474,user.getLanguage()));
return staffPO.get(0); return staffPO.get(0);
} }

@ -380,7 +380,7 @@ public class JobServiceImpl extends Service implements JobService {
String jobNo = (String) params.get("job_no"); String jobNo = (String) params.get("job_no");
// 判断是否开启自动编号 // 判断是否开启自动编号
jobNo = repeatDetermine(jobNo); jobNo = repeatDetermine(jobNo,searchParam.getEcJobTitle(),searchParam.getEcDepartment());
params.put("job_no", jobNo); params.put("job_no", jobNo);
return getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_JOB, params, "", null); 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 oldJobNo = oldJobPO.getJobNo();
String jobNo = searchParam.getJobNo(); String jobNo = searchParam.getJobNo();
if (!jobNo.equals(oldJobNo)) { if (!jobNo.equals(oldJobNo)) {
jobNo = repeatDetermine(jobNo); jobNo = repeatDetermine(jobNo,searchParam.getEcJobTitle(),searchParam.getEcDepartment());
params.put("job_no", jobNo); params.put("job_no", jobNo);
} }
@ -739,7 +739,8 @@ public class JobServiceImpl extends Service implements JobService {
* *
* @return * @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()); CodeRulePO codeRuleByType = MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleByType(RuleCodeType.JOBTITLES.getValue());
if (StringUtils.isNotBlank(jobNo)) { if (StringUtils.isNotBlank(jobNo)) {
jobNo = CodeRuleUtil.generateCode(RuleCodeType.JOBTITLES, 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())); OrganizationAssert.isEmpty(list, SystemEnv.getHtmlLabelName(547137, user.getLanguage()));
} else { } else {
//OrganizationAssert.isTrue(null != codeRuleByType && "1".equals(codeRuleByType.getSerialEnable()), SystemEnv.getHtmlLabelName(547430,user.getLanguage())); //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; return jobNo;
} }

@ -36,6 +36,11 @@ public class StaffOutController {
public ReturnResult changeStaff(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody StaffOutParam staffOutParam) { public ReturnResult changeStaff(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody StaffOutParam staffOutParam) {
try { try {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
//ESB接口user对象是null
if (user == null) {
user = new User();
user.setUid(1);
}
return ReturnResult.successed(user,staffOutService(user).changeStaff(staffOutParam)); return ReturnResult.successed(user,staffOutService(user).changeStaff(staffOutParam));
} catch (Exception e) { } catch (Exception e) {
return ReturnResult.exceptionHandle(e); return ReturnResult.exceptionHandle(e);
@ -48,6 +53,11 @@ public class StaffOutController {
public ReturnResult transactionOnJob(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody StaffOutParam staffOutParam) { public ReturnResult transactionOnJob(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody StaffOutParam staffOutParam) {
try { try {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
//ESB接口user对象是null
if (user == null) {
user = new User();
user.setUid(1);
}
return ReturnResult.successed(user,staffOutService(user).transactionOnJob(staffOutParam)); return ReturnResult.successed(user,staffOutService(user).transactionOnJob(staffOutParam));
} catch (Exception e) { } catch (Exception e) {
return ReturnResult.exceptionHandle(e); return ReturnResult.exceptionHandle(e);

@ -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));
}
}

@ -0,0 +1,65 @@
package weaver.interfaces.organization.cronjob;
import com.engine.organization.entity.job.po.JobPO;
import com.engine.organization.mapper.job.JobMapper;
import com.engine.organization.util.db.MapperProxyFactory;
import org.apache.commons.collections.CollectionUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.interfaces.schedule.BaseCronJob;
import java.util.ArrayList;
import java.util.List;
/**
* @Author liang.cheng
* @Date 2024/10/18 11:25 AM
* @Description:
* @Version 1.0
*/
public class DeleteIsCancelJobCrob extends BaseCronJob {
@Override
public void execute() {
RecordSet rs = new RecordSet();
List<JobPO> jobList = new ArrayList<>();
rs.executeQuery("select id,ec_jobtitle,ec_department from jcl_org_job where delete_type = 0");
while (rs.next()) {
jobList.add(JobPO.builder()
.id((long)Util.getIntValue(rs.getString("id")))
.ecJobTitle(Util.getIntValue(rs.getString("ec_jobtitle")))
.ecDepartment(Util.getIntValue(rs.getString("ec_department")))
.build());
}
List<Long> deleteIds = new ArrayList<>();
jobList.forEach(job -> {
//1.岗位是否封存或删除
rs.executeQuery("select id from hrmjobtitles where id = ? and (canceled is null or canceled != 1)",job.getEcJobTitle());
if (!rs.next()) {
deleteIds.add(job.getId());
return;
}
//2.部门是否封存或删除
rs.executeQuery("select id from hrmdepartment where id = ? and (canceled is null or canceled != 1)",job.getEcDepartment());
if (!rs.next()) {
deleteIds.add(job.getId());
}
});
if (CollectionUtils.isNotEmpty(deleteIds)) {
MapperProxyFactory.getProxy(JobMapper.class).deleteByIds(deleteIds);
}
}
}

@ -0,0 +1,34 @@
package weaver.interfaces.organization.cronjob;
import weaver.conn.RecordSet;
import weaver.interfaces.schedule.BaseCronJob;
/**
* @Author liang.cheng
* @Date 2024/10/10 1:56 PM
* @Description: Delete_type=1
* @Version 1.0
*/
public class TableDeleteDataCron extends BaseCronJob {
@Override
public void execute() {
RecordSet rs = new RecordSet();
rs.execute("delete from jcl_org_scheme where delete_type = 1");
rs.execute("delete from jcl_org_level where delete_type = 1");
rs.execute("delete from jcl_org_grade where delete_type = 1");
rs.execute("delete from jcl_org_sequence where delete_type = 1");
rs.execute("delete from jcl_org_staffplan where delete_type = 1");
rs.execute("delete from jcl_org_staff where delete_type = 1");
rs.execute("delete from jcl_org_job where delete_type = 1");
rs.execute("delete from jcl_org_jobext where delete_type = 1");
rs.execute("delete from jcl_org_jobext_dt1 where delete_type = 1");
rs.execute("delete from jcl_org_detach where delete_type = 1");
rs.execute("delete from jcl_org_cardaccess where delete_type = 1");
rs.execute("delete from jcl_org_cardbutton where delete_type = 1");
rs.execute("delete from jcl_field_extendgroup where delete_type = 1");
rs.execute("delete from jcl_field_extendtitle where delete_type = 1");
rs.execute("delete from jcl_field_extendinfo where delete_type = 1");
}
}
Loading…
Cancel
Save