考勤-考勤相关流程,归档节点触发出勤结果数据状态变更功能

zm_dev
sy 10 months ago
parent 86f1dbeea1
commit f8b8842c73

@ -1,5 +1,6 @@
package com.engine.jucailinkq.attendance.workflow.action;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DbTools;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -13,6 +14,7 @@ import weaver.soa.workflow.request.Row;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author: sy
@ -28,14 +30,10 @@ public class AllowanceConfirmAction implements Action {
String requestid = requestInfo.getRequestid();
try {
// Property[] property = requestInfo.getMainTableInfo().getProperty();
// User user = requestInfo.getRequestManager().getUser();
// for (Property pro : property) {
// String name = Util.null2String(pro.getName());
// if(name.equals("cxsm")){
//
// }
// }
// 流程表单主表数据
HashMap<String, String> mainTableData = CommonUtil.getMainTableInfo(requestInfo);
String qrr = mainTableData.get("xjr");
List<String> jtIdList = new ArrayList<>();
DetailTable[] detailTable = requestInfo.getDetailTableInfo().getDetailTable();
log.debug("AllowanceConfirmAction detailTable : [{}], length : {}", Arrays.toString(detailTable), detailTable.length);
@ -57,10 +55,14 @@ public class AllowanceConfirmAction implements Action {
}
if ("jtid".equals(name)) {
itemMap.put("jtid", Util.null2String(c.getValue()));
jtIdList.add(Util.null2String(c.getValue()));
}
if ("sm".equals(name)) {
itemMap.put("sm", Util.null2String(c.getValue()));
}
if ("rq".equals(name)) {
itemMap.put("rq", Util.null2String(c.getValue()));
}
}
log.debug("AllowanceConfirmAction itemMap : [{}]",itemMap);
updateList.add(itemMap);
@ -68,6 +70,13 @@ public class AllowanceConfirmAction implements Action {
}
}
log.debug("AllowanceConfirmAction updateList : [{}]",updateList);
//遍历比较哪些津贴数据的状态改变了,并将状态发生改变的津贴数据认定为要更新出勤结果数据状态的津贴数据
String jtSql = "select id, zt from uf_jcl_kq_cqjt where id in (" + String.join(",", jtIdList) + ")";
List<Map<String, Object>> jtDataList = DbTools.getSqlToList(jtSql);
Map<String, String> jtStatusMap = jtDataList.stream().collect(Collectors.toMap(e->Util.null2String(e.get("id")), e->Util.null2String(e.get("zt"))));
List<Map<String, String>> empDateList = new ArrayList<>();
if (updateList.size() > 0) {
updateList.forEach(f -> {
if (StringUtils.isNotBlank(f.get("jtid"))) {
@ -75,8 +84,24 @@ public class AllowanceConfirmAction implements Action {
log.debug("AllowanceConfirmAction sql : [{}]",sql);
DbTools.update(sql, Util.null2String(f.get("zt")), Util.null2String(f.get("sm")), f.get("jtid"));
log.debug("AllowanceConfirmAction zt : {}, bz : {}, jtid : {}",Util.null2String(f.get("zt")), Util.null2String(f.get("sm")), f.get("jtid"));
//收集需要更改出勤结果数据状态的人员、日期信息
if (!jtStatusMap.getOrDefault(f.get("jtid"), "").equals(Util.null2String(f.get("zt")))) {
Map<String, String> empDateItem = new HashMap<>();
empDateItem.put("empId", qrr);
empDateItem.put("cqDate", Util.null2String(f.get("rq")));
empDateList.add(empDateItem);
}
}
});
//更新出勤结果中的数据状态
String sjztUpdateResult = CommonUtil.updateAttendanceResultInfoStatus(empDateList, "0");
if (!"".equals(sjztUpdateResult)) {
log.error("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222");
requestInfo.getRequestManager().setMessagecontent("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
return Action.FAILURE_AND_CONTINUE;
}
}
} catch (Exception e) {

@ -0,0 +1,67 @@
package com.engine.jucailinkq.attendance.workflow.action;
import com.engine.common.util.ServiceUtil;
import com.engine.jucailinkq.attendance.workflow.service.MakeUpClockInService;
import com.engine.jucailinkq.attendance.workflow.service.impl.MakeUpClockInServiceImpl;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* action
*/
@Slf4j
public class EvectionArchivingAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
String requestid = requestInfo.getRequestid();
// 流程表单主表数据
HashMap<String,String> mainTableData = CommonUtil.getMainTableInfo(requestInfo);
// 流程表单明细表数据
List<Map<String, String>> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0);
//出差人员
String ccr = mainTableData.get("ccr");
try {
//记录需要更改出勤结果数据状态的人员、日期信息
List<Map<String, String>> empDateList = new ArrayList<>();
Map<String, String> empDateItem;
List<String> dateList = new ArrayList<>();
//遍历明细表1
for (Map<String, String> data : detailTableData) {
dateList = DateUtil.getDatesBetween(data.get("ksrq"), "".equals(Util.null2String(data.get("jsrq"))) ? data.get("ksrq") : data.get("jsrq"));
for (String date : dateList) {
//收集需要更改出勤结果数据状态的人员、日期信息
empDateItem = new HashMap<>();
empDateItem.put("empId", data.getOrDefault("ccr", ccr));
empDateItem.put("cqDate", date);
empDateList.add(empDateItem);
}
}
//更新出勤结果中的数据状态
String sjztUpdateResult = CommonUtil.updateAttendanceResultInfoStatus(empDateList, "0");
if (!"".equals(sjztUpdateResult)) {
log.error("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222");
requestInfo.getRequestManager().setMessagecontent("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
return Action.FAILURE_AND_CONTINUE;
}
}catch (Exception e){
log.error("EvectionArchivingAction error : [{}]",e);
return Action.FAILURE_AND_CONTINUE;
}
return Action.SUCCESS;
}
}

@ -0,0 +1,55 @@
package com.engine.jucailinkq.attendance.workflow.action;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.Utils;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import weaver.conn.RecordSet;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.*;
/**
* action
*/
@Slf4j
public class MakeUpClockArchivingAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
log.debug("**********MakeUpClockArchivingAction import data start**********");
// 流程表单主表数据
HashMap<String,String> mainTableData = CommonUtil.getMainTableInfo(requestInfo);
// 流程表单明细表数据
List<Map<String, String>> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0);
log.info("detailTableData : [{}]", detailTableData);
//补打卡人员
String userId = mainTableData.get("bdkry");
List<List> lists = Lists.newArrayList();
//记录需要更改出勤结果数据状态的人员、日期信息
List<Map<String, String>> empDateList = new ArrayList<>();
Map<String, String> empDateItem;
for (Map<String, String> detailTable:detailTableData){
//收集需要更改出勤结果数据状态的人员、日期信息
empDateItem = new HashMap<>();
empDateItem.put("empId", detailTable.get("bdkr"));
empDateItem.put("cqDate", detailTable.get("bdkrq"));
empDateList.add(empDateItem);
}
//更新出勤结果中的数据状态
String sjztUpdateResult = CommonUtil.updateAttendanceResultInfoStatus(empDateList, "0");
if (!"".equals(sjztUpdateResult)) {
log.error("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222");
requestInfo.getRequestManager().setMessagecontent("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
return Action.FAILURE_AND_CONTINUE;
}
log.debug("**********MakeUpClockArchivingAction import data end**********");
return Action.SUCCESS;
}
}

@ -0,0 +1,65 @@
package com.engine.jucailinkq.attendance.workflow.action;
import com.engine.common.util.ServiceUtil;
import com.engine.jucailinkq.attendance.workflow.service.MakeUpClockInService;
import com.engine.jucailinkq.attendance.workflow.service.impl.MakeUpClockInServiceImpl;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* action
* @author sy
*/
@Slf4j
public class OvertimePlanArchivingAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
String requestid = requestInfo.getRequestid();
// 流程表单主表数据
HashMap<String,String> mainTableData = CommonUtil.getMainTableInfo(requestInfo);
// 流程表单明细表数据
List<Map<String, String>> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0);
//加班人员
String jbry = mainTableData.get("jbry");
try {
//记录需要更改出勤结果数据状态的人员、日期信息
List<Map<String, String>> empDateList = new ArrayList<>();
Map<String, String> empDateItem;
List<String> dateList = new ArrayList<>();
//遍历明细表1
for (Map<String, String> data : detailTableData) {
//收集需要更改出勤结果数据状态的人员、日期信息
empDateItem = new HashMap<>();
empDateItem.put("empId", data.getOrDefault("jbry", jbry));
empDateItem.put("cqDate", data.get("gsrq"));
empDateList.add(empDateItem);
}
//更新出勤结果中的数据状态
String sjztUpdateResult = CommonUtil.updateAttendanceResultInfoStatus(empDateList, "0");
if (!"".equals(sjztUpdateResult)) {
log.error("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222");
requestInfo.getRequestManager().setMessagecontent("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
return Action.FAILURE_AND_CONTINUE;
}
}catch (Exception e){
log.error("OvertimePlanArchivingAction error : [{}]",e);
return Action.FAILURE_AND_CONTINUE;
}
return Action.SUCCESS;
}
}

@ -34,7 +34,7 @@ public class OvertimePlanCheckAction implements Action {
//加班人员
String jbry = mainTableData.get("jbry");
try {
Map<String,List<Map<String, String>>> detailGroupMap = detailTableData.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("bdkr"))));
Map<String,List<Map<String, String>>> detailGroupMap = detailTableData.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("jbry"))));
for (Map.Entry<String,List<Map<String, String>>> tableEntry :detailGroupMap.entrySet()){
List<Map<String, String>> detailGroupByUserList = tableEntry.getValue();

@ -4,6 +4,7 @@ import com.engine.jucailinkq.attendance.enums.AccountingUnitEnum;
import com.engine.jucailinkq.attendance.workflow.service.MakeUpClockInService;
import com.engine.jucailinkq.attendance.workflow.service.impl.MakeUpClockInServiceImpl;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.common.util.ServiceUtil;
import lombok.extern.slf4j.Slf4j;
@ -37,6 +38,7 @@ public class RevokeEliminationsAskForLeaveAction implements Action {
// 流程表单主表数据
HashMap<String, String> mainTableData = CommonUtil.getMainTableInfo(requestInfo);
String qjlx = mainTableData.get("qjlx");
String xjr = mainTableData.get("xjr");
String queryItemsql = "select hsdw,hsl from uf_jcl_kq_kqxm where id=?";
Map<String, Object> holidayItem = DbTools.getSqlToMap(queryItemsql, qjlx);
@ -44,6 +46,10 @@ public class RevokeEliminationsAskForLeaveAction implements Action {
DetailTable[] detailTable = requestInfo.getDetailTableInfo().getDetailTable();
log.debug("RevokeLeaveAction detailTable : [{}], length : {}", Arrays.toString(detailTable), detailTable.length);
List<Map<String, String>> updateList = new ArrayList<>();
//记录需要更改出勤结果数据状态的人员、日期信息
List<Map<String, String>> empDateList = new ArrayList<>();
Map<String, String> empDateItem;
List<String> dateList = new ArrayList<>();
if (detailTable.length > 0) {
for (DetailTable dt : detailTable) {
//明细表
@ -65,10 +71,25 @@ public class RevokeEliminationsAskForLeaveAction implements Action {
if ("cx".equals(name)) {
itemMap.put("cx", Util.null2String(c.getValue()));
}
if ("ksrq".equals(name)) {
itemMap.put("ksrq", Util.null2String(c.getValue()));
}
if ("jsrq".equals(name)) {
itemMap.put("jsrq", Util.null2String(c.getValue()));
}
}
log.debug("RevokeEliminationsAskForLeaveAction itemMap : [{}]",itemMap);
if (Util.null2String(itemMap.get("cx")).equals("1")) {
updateList.add(itemMap);
dateList = DateUtil.getDatesBetween(itemMap.get("ksrq"), "".equals(Util.null2String(itemMap.get("jsrq"))) ? itemMap.get("ksrq") : itemMap.get("jsrq"));
for (String date : dateList) {
//收集需要更改出勤结果数据状态的人员、日期信息
empDateItem = new HashMap<>();
empDateItem.put("empId", xjr);
empDateItem.put("cqDate", date);
empDateList.add(empDateItem);
}
}
}
}
@ -84,6 +105,15 @@ public class RevokeEliminationsAskForLeaveAction implements Action {
updateHoliday(f.get("cxlyid"),holidayItem.get("hsdw").toString());
}
});
//更新出勤结果中的数据状态
String sjztUpdateResult = CommonUtil.updateAttendanceResultInfoStatus(empDateList, "0");
if (!"".equals(sjztUpdateResult)) {
log.error("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222");
requestInfo.getRequestManager().setMessagecontent("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
return Action.FAILURE_AND_CONTINUE;
}
}
} catch (Exception e) {

@ -1,5 +1,7 @@
package com.engine.jucailinkq.attendance.workflow.action;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -25,18 +27,17 @@ public class RevokeLeaveAction implements Action {
String requestid = requestInfo.getRequestid();
try {
// Property[] property = requestInfo.getMainTableInfo().getProperty();
// User user = requestInfo.getRequestManager().getUser();
// for (Property pro : property) {
// String name = Util.null2String(pro.getName());
// if(name.equals("cxsm")){
//
// }
// }
// 流程表单主表数据
HashMap<String, String> mainTableData = CommonUtil.getMainTableInfo(requestInfo);
String xcr = mainTableData.get("xjr");
DetailTable[] detailTable = requestInfo.getDetailTableInfo().getDetailTable();
log.debug("RevokeLeaveAction detailTable : [{}], length : {}", Arrays.toString(detailTable), detailTable.length);
List<Map<String, String>> updateList = new ArrayList<>();
//记录需要更改出勤结果数据状态的人员、日期信息
List<Map<String, String>> empDateList = new ArrayList<>();
Map<String, String> empDateItem;
List<String> dateList = new ArrayList<>();
if (detailTable.length > 0) {
for (DetailTable dt : detailTable) {
//明细表
@ -58,10 +59,25 @@ public class RevokeLeaveAction implements Action {
if ("cx".equals(name)) {
itemMap.put("cx", Util.null2String(c.getValue()));
}
if ("ksrq".equals(name)) {
itemMap.put("ksrq", Util.null2String(c.getValue()));
}
if ("jsrq".equals(name)) {
itemMap.put("jsrq", Util.null2String(c.getValue()));
}
}
log.debug("RevokeLeaveAction itemMap : [{}]",itemMap);
if (Util.null2String(itemMap.get("cx")).equals("1")) {
updateList.add(itemMap);
dateList = DateUtil.getDatesBetween(itemMap.get("ksrq"), "".equals(Util.null2String(itemMap.get("jsrq"))) ? itemMap.get("ksrq") : itemMap.get("jsrq"));
for (String date : dateList) {
//收集需要更改出勤结果数据状态的人员、日期信息
empDateItem = new HashMap<>();
empDateItem.put("empId", xcr);
empDateItem.put("cqDate", date);
empDateList.add(empDateItem);
}
}
}
}
@ -76,6 +92,15 @@ public class RevokeLeaveAction implements Action {
log.debug("RevokeLeaveAction cxsm : {}, requestid : {}, cxlyid : {}",Util.null2String(f.get("cxsm")), requestid, f.get("cxlyid"));
}
});
//更新出勤结果中的数据状态
String sjztUpdateResult = CommonUtil.updateAttendanceResultInfoStatus(empDateList, "0");
if (!"".equals(sjztUpdateResult)) {
log.error("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222");
requestInfo.getRequestManager().setMessagecontent("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
return Action.FAILURE_AND_CONTINUE;
}
}
} catch (Exception e) {

@ -1,6 +1,7 @@
package com.engine.jucailinkq.attendance.workflow.action.askforleave;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.Utils;
import com.google.common.collect.Maps;
@ -9,6 +10,7 @@ import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -78,6 +80,30 @@ public class BatchAskForLeaveWorkFlowArchivingAction implements Action {
}
}
//记录需要更改出勤结果数据状态的人员、日期信息
List<Map<String, String>> empDateList = new ArrayList<>();
Map<String, String> empDateItem;
List<String> dateList = new ArrayList<>();
//遍历明细表1
for (Map<String, String> data : detailTableData) {
dateList = DateUtil.getDatesBetween(data.get("ksrq"), data.get("jsrq"));
for (String date : dateList) {
//收集需要更改出勤结果数据状态的人员、日期信息
empDateItem = new HashMap<>();
empDateItem.put("empId", data.get("qjr"));
empDateItem.put("cqDate", date);
empDateList.add(empDateItem);
}
}
//更新出勤结果中的数据状态
String sjztUpdateResult = CommonUtil.updateAttendanceResultInfoStatus(empDateList, "0");
if (!"".equals(sjztUpdateResult)) {
log.error("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222");
requestInfo.getRequestManager().setMessagecontent("更新出勤结果中的数据状态失败:" + sjztUpdateResult);
return Action.FAILURE_AND_CONTINUE;
}
}catch (Exception e){
log.error("BatchAskForLeaveWorkFlowArchivingAction error : [{}]",e);
return Action.FAILURE_AND_CONTINUE;

@ -926,4 +926,29 @@ public class CommonUtil {
return attendanceItems;
}
/**
*
* @param empDateList id
* @param status
* @return
*/
public static String updateAttendanceResultInfoStatus(List<Map<String, String>> empDateList, String status) {
String errorMessage = "";
List<String> empIdList = empDateList.stream().filter(f-> !"".equals(Util.null2String(f.get("empId")))).map(f->f.get("empId")).collect(Collectors.toList());
Map<String, String> empNameInfo = empIdToNameInfo(empIdList);
String empId = "";
String cqDate = "";
String sql = "update uf_jcl_kq_cqjg set sjzt = ? where ygid = ? and rq = ?";
for (Map<String, String> empDateInfo : empDateList) {
empId = Util.null2String(empDateInfo.get("empId"));
cqDate = Util.null2String(empDateInfo.get("cqDate"));
if (!"".equals(empId) && !"".equals(cqDate)) {
if (!DbTools.update(sql, status, empId, cqDate)) {
errorMessage = errorMessage + empNameInfo.getOrDefault(empId, empId) + "," + cqDate + "出勤结果数据状态更新失败;";
}
}
}
return errorMessage;
}
}

Loading…
Cancel
Save