加班规则模式5

bug修复
AISIN
Chengliang 8 months ago
parent 56a602cbf8
commit bc69c9e7e9

@ -97,23 +97,52 @@ public class KQOverTimeRuleCalBiz {
//获取加班打卡数据
getOverTimeCardDataMap(resourceid, splitDate, splitDate, dateFormatter,kqTimesArrayComInfo,overRulesDetailMap,changeTypeMap,lsCheckInfoMaps,eventMap);
//0.无加班打卡数据时候,只有加班流程数据直接走新方法 todo
if (lsCheckInfoMaps.isEmpty()) {
Map<String,List<SplitBean>> splitBeanMaps = Maps.newHashMap();
String change_key = fromDate+"_"+resourceid;
int changeType = Util.getIntValue(""+changeTypeMap.get(change_key),-1);
String changeType_key = fromDate+"_"+changeType;
int computingMode = Util.getIntValue(""+computingModeMap.get(changeType_key),-1);
kqLog.info("AISIN: " + changeType_key+"--"+computingMode);
//获取加班流程数据
getOverTimeFlowData(resourceid,fromDate,toDate,splitBeanMaps,dateFormatter);
for (Map.Entry<String, List<SplitBean>> entry : splitBeanMaps.entrySet()) {
String mapKey = entry.getKey();
kqLog.info("加班流程是否存在 =>"+entry.getKey()+"=>"+splitBeanMaps.containsKey(mapKey));
if(splitBeanMaps.containsKey(mapKey)) {
List<SplitBean> splitBeans = splitBeanMaps.get(mapKey);
if (splitBeans == null || splitBeans.isEmpty()) {
continue;
}
for (int j = 0; j < splitBeans.size(); j++) {
SplitBean splitBean = splitBeans.get(j);
kqLog.info("直接通过加班流程生成加班数据:" + splitBean.getRequestId());
SplitActionUtil.doComputingMode1_splitBean(computingMode,splitBean);
}
}
}
}
Iterator<Entry<String, KQOvertimeCardBean>> iterator = lsCheckInfoMaps.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, KQOvertimeCardBean> next = iterator.next();
kqLog.info("lsCheckInfoMaps next==>"+next.toString());
String mapKey = next.getKey();
kqLog.info("lsCheckInfoMaps mapKey==>"+mapKey);
KQOvertimeCardBean kqOvertimeCardBean = next.getValue();
String[] mapKeys = mapKey.split("_");
if (mapKeys.length != 2) {
continue;
}
String realSplitDate = mapKeys[1];
kqLog.info("realSplitDate ==>"+realSplitDate);
String change_key = realSplitDate+"_"+resourceid;
int changeType = Util.getIntValue(""+changeTypeMap.get(change_key),-1);
String changeType_key = realSplitDate+"_"+changeType;
int computingMode = Util.getIntValue(""+computingModeMap.get(changeType_key),-1);
boolean isOk = true;
new BaseBean().writeLog("新加班规则5 ==>"+computingMode);
//把原来下面一个方法里的内容要抽出来是因为存在如下的问题如果我是跨天打卡次日3点加班归属点设置的是次日2点2-3这部分的是属于第二天的需要判断下第二天的加班方式是不是doComputingMode2如果不是就需要去走对应的doComputingMode方法
if(2 == computingMode){
isOk = doComputingMode2WithCard(kqOvertimeCardBean,mapKey,resourceid,changeTypeMap,
@ -128,6 +157,7 @@ public class KQOverTimeRuleCalBiz {
dateFormatter,overtimeLogMap,splitDate,overRulesDetailMap,eventMap,kqTimesArrayComInfo,
restTimeMap,kqEventLogBiz,uuid,realSplitDate);
}else if(5 == computingMode){
//进入该方法时有两种情况1.只有打卡数据没有加班流程2.既有加班流程又有打卡数据
isOk = doComputingMode5WithCard(computingMode,kqOvertimeCardBean,mapKey,resourceid,changeTypeMap,
dateFormatter,overtimeLogMap,splitDate,overRulesDetailMap,eventMap,kqTimesArrayComInfo,
restTimeMap,kqEventLogBiz,uuid,realSplitDate);
@ -136,6 +166,8 @@ public class KQOverTimeRuleCalBiz {
continue;
}
}
}catch (Exception e){
kqLog.info("加班生成数据报错:KQOverTimeRuleCalBiz:");
StringWriter errorsWriter = new StringWriter();
@ -339,26 +371,24 @@ public class KQOverTimeRuleCalBiz {
private boolean doComputingMode5WithCard(int computingMode,KQOvertimeCardBean kqOvertimeCardBean, String mapKey, String resourceid, Map<String, Integer> changeTypeMap, DateTimeFormatter dateFormatter, Map<String, Object> overtimeLogMap,
String splitDate, Map<String, KQOvertimeRulesDetailEntity> overRulesDetailMap, Map<String, Object> eventMap, KQTimesArrayComInfo kqTimesArrayComInfo, Map<String, List<String[]>> restTimeMap, KQOvertimeLogBiz kqEventLogBiz, String uuid,
String realSplitDate) throws Exception{
BaseBean bb = new BaseBean();
Map<String,List<SplitBean>> splitBeanMaps = Maps.newHashMap();
//获取加班流程数据
getOverTimeFlowData(resourceid,realSplitDate,realSplitDate,splitBeanMaps,dateFormatter);
//有加班流程 以加班流程数据为准
bb.writeLog("加班流程是否存在 =>"+splitBeanMaps.containsKey(mapKey));
//1.有加班流程 以加班流程数据为准
kqLog.info("加班流程是否存在 =>"+splitBeanMaps.containsKey(mapKey));
if(splitBeanMaps.containsKey(mapKey)) {
List<SplitBean> splitBeans = splitBeanMaps.get(mapKey);
bb.writeLog("splitBeans是否为空 =>"+splitBeans.toString());
kqLog.info("splitBeans是否为空 =>"+splitBeans.toString());
if(splitBeans == null || splitBeans.isEmpty()){
return false;
}
for (int i = 0; i < splitBeans.size(); i++) {
SplitBean splitBean = splitBeans.get(i);
bb.writeLog("生成加班数据 =>"+computingMode);
SplitActionUtil.doComputingMode1_splitBean(computingMode,splitBean);
}
}else {
//没有加班流程 以打卡数据为准 直接走3
//2.没有加班流程 以打卡数据为准 直接走3
doComputingMode3WithCard(computingMode,kqOvertimeCardBean,mapKey,resourceid,changeTypeMap,
dateFormatter,overtimeLogMap,splitDate,overRulesDetailMap,eventMap,kqTimesArrayComInfo,
restTimeMap,kqEventLogBiz,uuid,realSplitDate);

@ -405,6 +405,7 @@ public class KQFlowUtil {
}else{
if(flowTypeEnum == KqSplitFlowTypeEnum.OVERTIME){
//正常归档的时候 单独针对加班规则的第一 第二种模式 生成加班数据
kqLog.info("正常归档:"+requestId);
SplitActionUtil.handleOverTimeActionMode2(splitBeans, ""+requestId);
}
}
@ -416,6 +417,7 @@ public class KQFlowUtil {
rs.executeUpdate(sql, splitBean.getRequestId());
}
}
kqLog.info("升级方向:"+requestId);
SplitActionUtil.handleOverTimeActionMode2(splitBeans, ""+requestId);
}
}

@ -70,15 +70,20 @@ public class SplitActionUtil extends BaseBean {
public static void handleOverTimeActionMode2(List<SplitBean> splitBeans, String requestid) {
clearSameRequestTX(requestid);
KQTimesArrayComInfo kqTimesArrayComInfo = new KQTimesArrayComInfo();
KQOverTimeRuleCalBiz kqOvertimeCalBiz = new KQOverTimeRuleCalBiz();
List<String> overKeys = new ArrayList<>();
kqLog.info("加班流程个数:"+requestid +"=>"+ splitBeans.size());
for (int i = 0; i < splitBeans.size(); i++) {
SplitBean splitBean = splitBeans.get(i);
int computingMode = Util.getIntValue(splitBean.getComputingMode());
kqLog.info("加班规则模式computingMode:" + computingMode);
//判断流程对应的日期下有没有打卡数据,如果有的话,需要生成相应的调休数据
String belongDate = splitBean.getBelongDate();
String resourceId = splitBean.getResourceId();
String fromtime = splitBean.getFromTime();
String belongToDate = DateUtil.addDate(belongDate, 1);
kqLog.info("AISIN参数:" + resourceId + "_" + belongDate + "_" + DateUtil.addDate(belongDate, 1));
if (computingMode == 2 || computingMode == 4) {
//判断流程对应的日期下有没有打卡数据,如果有的话,需要生成相应的调休数据
String belongDate = splitBean.getBelongDate();
String resourceId = splitBean.getResourceId();
String fromtime = splitBean.getFromTime();
int fromtimeIndex = kqTimesArrayComInfo.getArrayindexByTimes(fromtime);
String key = resourceId + "_" + belongDate + "_" + belongDate;
if (fromtimeIndex > 1439) {
@ -92,9 +97,14 @@ public class SplitActionUtil extends BaseBean {
if (computingMode == 1) {
doComputingMode1_splitBean(computingMode,splitBean);
}
if (computingMode == 5) {
kqLog.info("加班规则5直接进入计算并返回");
kqOvertimeCalBiz.buildOvertime(resourceId, belongDate, belongToDate, "加班流程生成加班#flow,requestId:" + requestid);
return;
}
}
KQOverTimeRuleCalBiz kqOvertimeCalBiz = new KQOverTimeRuleCalBiz();
kqLog.info("加班生成调休:handleOverTimeActionMode2 overKeys:" + JSON.toJSONString(overKeys));
kqLog.info("加班生成调休:handleOverTimeActionMode2 overKeys:"+requestid+"=>"+ JSON.toJSONString(overKeys));
if (overKeys != null && !overKeys.isEmpty()) {
for (String key : overKeys) {
String[] keys = key.split("_", -1);
@ -243,6 +253,7 @@ public class SplitActionUtil extends BaseBean {
clearSameRequestTX(requestid);
}
KQTimesArrayComInfo kqTimesArrayComInfo = new KQTimesArrayComInfo();
KQOverTimeRuleCalBiz kqOvertimeCalBiz = new KQOverTimeRuleCalBiz();
RecordSet rs = new RecordSet();
List<String> overKeys = new ArrayList<>();
for (int i = 0; i < splitBeans.size(); i++) {
@ -283,9 +294,13 @@ public class SplitActionUtil extends BaseBean {
overKeys.add(key);
}
}
if (computingMode == 5) {
kqLog.info("加班规则5直接进入计算并返回");
kqOvertimeCalBiz.buildOvertime(resourceId, belongDate, toDate, "加班流程生成加班#flow,requestId:" + requestid);
return;
}
}
}
KQOverTimeRuleCalBiz kqOvertimeCalBiz = new KQOverTimeRuleCalBiz();
kqLog.info("加班生成调休:handleOverTimeAction overKeys:" + JSON.toJSONString(overKeys));
if (overKeys != null && !overKeys.isEmpty()) {
for (String key : overKeys) {

@ -179,12 +179,19 @@ public class KqConfirmWfCrob extends BaseCronJob {
leaveBackMins = leaveBack(leavebackrequestid, e.getResourceId(), belongDate);
}
String reduce = getReduce(d_mins, leaveBackMins);
leaveDetails.add(LeaveDetailTableInfo.builder()
.date(belongDate)
.serialId(serialId)
.leaveType(leaveType)
.hours(minutesToHours(reduce))
.build());
//test
if ("8595".equals(e.getResourceId())) {
bb.writeLog("测试请假仙女14 =>" +d_mins+","+leaveBackMins);
}
if (!d_mins.equals(leaveBackMins)) {
leaveDetails.add(LeaveDetailTableInfo.builder()
.date(belongDate)
.serialId(serialId)
.leaveType(leaveType)
.hours(minutesToHours(reduce))
.build());
}
}
leaveDetails.forEach(leave -> rs.executeUpdate("insert into "+tableName+"_dt3 (mainid,qjrq,qjbc,qjlx,qjxs) values(?,?,?,?,?)",mainId,

Loading…
Cancel
Save