餐补优化

dev-zm
zhangming 7 months ago
parent 5dbe3ebe2d
commit 99e8691098

@ -292,7 +292,7 @@ public class KqDevServiceImpl extends Service implements KqDevService {
List<String> userIds = new ArrayList<>(); List<String> userIds = new ArrayList<>();
if (org.apache.commons.lang3.StringUtils.isEmpty(ryParam)) { if (org.apache.commons.lang3.StringUtils.isEmpty(ryParam)) {
bb.writeLog("1111."); bb.writeLog("1111.");
rs.executeQuery("select id from hrmresource where status in(0,1,2,3)"); rs.executeQuery("select id from hrmresource where status in(0,1,2,3,5)");
while (rs.next()) { while (rs.next()) {
userIds.add(rs.getString("id")); userIds.add(rs.getString("id"));
} }
@ -308,6 +308,19 @@ public class KqDevServiceImpl extends Service implements KqDevService {
return result; return result;
} }
// 获取离职人员以及日期
String queryDepartEmployeeSql = "select resourceid ,changedate from HRMSTATUSHISTORY where type_n = 5 and changedate is not null";
rs.execute(queryDepartEmployeeSql);
Map<String, String> departMap = new HashMap<>();
while (rs.next()) {
String ryIdT = rs.getString("resourceid");
String changedate = rs.getString("changedate");
if (org.apache.commons.lang3.StringUtils.isEmpty(ryIdT) || org.apache.commons.lang3.StringUtils.isEmpty(changedate)) {
continue;
}
departMap.put(ryIdT, changedate);
}
// 获取责任制、排班次班次 // 获取责任制、排班次班次
Set<String> zrzbcSet = new HashSet<>(); Set<String> zrzbcSet = new HashSet<>();
Set<String> pbzbcSet = new HashSet<>(); Set<String> pbzbcSet = new HashSet<>();
@ -356,10 +369,16 @@ public class KqDevServiceImpl extends Service implements KqDevService {
nightShiftList.add(shift); nightShiftList.add(shift);
} }
} }
ExecutorService executorService = ThreadPoolUtil.getThreadPool("HandleCBDataThreadA", "20"); ExecutorService executorService = ThreadPoolUtil.getThreadPool("HandleCBDataThreadA", "20");
for (String userId : userIds) { for (String userId : userIds) {
for (String kqDate : allDates) { for (String kqDate : allDates) {
if (departMap.containsKey(userId)) {
String changeDate = departMap.get(userId);
if (LocalDate.parse(changeDate).isBefore(LocalDate.parse(kqDate))) {
continue;
}
}
executorService.execute(new HandleCBDataThread(userId, kqDate, zrzbcSet, pbzbcSet, removeRes, nightShiftList, noRes)); executorService.execute(new HandleCBDataThread(userId, kqDate, zrzbcSet, pbzbcSet, removeRes, nightShiftList, noRes));
} }
} }

@ -1,5 +1,6 @@
package com.engine.hostar.thread; package com.engine.hostar.thread;
import com.alibaba.fastjson.JSONObject;
import com.engine.hostar.util.HostarUtil; import com.engine.hostar.util.HostarUtil;
import com.engine.kq.biz.KQFormatSignData; import com.engine.kq.biz.KQFormatSignData;
import com.engine.kq.biz.KQGroupMemberComInfo; import com.engine.kq.biz.KQGroupMemberComInfo;
@ -102,6 +103,7 @@ public class HandleCBDataThread extends BaseBean implements Runnable{
//获取加班时长 //获取加班时长
Map<String,Object> dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); Map<String,Object> dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate);
baseBean.writeLog("HandleCBDataThread dailyFlowOverTimeData:" + JSONObject.toJSONString(dailyFlowOverTimeData));
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo(); KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo();
//先获取到实际打卡时长 //先获取到实际打卡时长
@ -308,6 +310,7 @@ public class HandleCBDataThread extends BaseBean implements Runnable{
Map<String, Object> serialInfo = kqWorkTime.getSerialInfo(userId, kqDate, false); Map<String, Object> serialInfo = kqWorkTime.getSerialInfo(userId, kqDate, false);
if (serialInfo != null && serialInfo.size() > 0) { if (serialInfo != null && serialInfo.size() > 0) {
int serialid = Util.getIntValue(Util.null2String(serialInfo.get(kqDate)), 0); int serialid = Util.getIntValue(Util.null2String(serialInfo.get(kqDate)), 0);
bb.writeLog("getNightShiftSubsidy serialid:" + serialid);
if (serialid > 0) { if (serialid > 0) {
if ( !nightShiftList.contains(String.valueOf(serialid))) { if ( !nightShiftList.contains(String.valueOf(serialid))) {
return "0"; return "0";
@ -317,6 +320,8 @@ public class HandleCBDataThread extends BaseBean implements Runnable{
} }
} }
bb.writeLog("getNightShiftSubsidy groupId:" + groupId);
if ((!CollectionUtils.isEmpty(pbzbcSet)) && pbzbcSet.contains(groupId)) { if ((!CollectionUtils.isEmpty(pbzbcSet)) && pbzbcSet.contains(groupId)) {
double workingDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(userId + "|" + kqDate + "|workingDayOvertime_4leave"))); double workingDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(userId + "|" + kqDate + "|workingDayOvertime_4leave")));
workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave; workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave;

@ -25,6 +25,7 @@ import weaver.hrm.User;
import weaver.systeminfo.SystemEnv; import weaver.systeminfo.SystemEnv;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -438,6 +439,13 @@ public class PunchOutButtonCmd extends AbstractCommonCommand<Map<String, Object>
//外勤签到转的考勤 处理加班规则 //外勤签到转的考勤 处理加班规则
SplitActionUtil.pushOverTimeTasksAll(belongdate,belongdate,""+userId); SplitActionUtil.pushOverTimeTasksAll(belongdate,belongdate,""+userId);
SplitActionUtil.pushOverTimeTasksAll(signDate,signDate,""+userId); SplitActionUtil.pushOverTimeTasksAll(signDate,signDate,""+userId);
LocalDate specifiedDate = LocalDate.parse(signDate, dateFormatter);
SplitActionUtil.pushOverTimeTasksAll(specifiedDate.minusDays(1).toString(),specifiedDate.minusDays(1).toString(),""+userId);
if (StringUtils.isNotEmpty(belongdate) && !StringUtils.equals(belongdate, signData)) {
LocalDate specifiedDateA = LocalDate.parse(belongdate, dateFormatter);
SplitActionUtil.pushOverTimeTasksAll(specifiedDateA.minusDays(1).toString(),specifiedDateA.minusDays(1).toString(),""+userId);
}
} else { } else {
String acqSql = "select id from mobile_sign where operater = ? and operate_date = ? and operate_time = ? "; String acqSql = "select id from mobile_sign where operater = ? and operate_date = ? and operate_time = ? ";
rs.executeQuery(acqSql, userId, signDate, signTime); rs.executeQuery(acqSql, userId, signDate, signTime);

@ -5,6 +5,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import com.engine.kq.biz.KQFormatBiz; import com.engine.kq.biz.KQFormatBiz;
import com.engine.kq.timer.KQQueue; import com.engine.kq.timer.KQQueue;
import com.engine.kq.timer.KQTaskBean; import com.engine.kq.timer.KQTaskBean;
@ -12,6 +13,7 @@ import com.engine.kq.wfset.util.SplitActionUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import weaver.conn.RecordSet; import weaver.conn.RecordSet;
import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew;
import weaver.general.BaseBean; import weaver.general.BaseBean;
@ -30,7 +32,7 @@ public class AddScheduleSign extends AbstractModeExpandJavaCodeNew {
* param() * param()
* user * user
* importtype () 1 2,3(int)param.get("importtype") * importtype () 1 2,3(int)param.get("importtype")
* ()a=1param.get("a") * ()a=1param.get("a")
* b=2,param.get("b") * b=2,param.get("b")
* @return * @return
*/ */
@ -178,17 +180,21 @@ public class AddScheduleSign extends AbstractModeExpandJavaCodeNew {
bb.writeLog("开始处理加班生成"); bb.writeLog("开始处理加班生成");
//处理加班生成 //处理加班生成
List<KQTaskBean> tasks = new ArrayList<>(); // List<KQTaskBean> tasks = new ArrayList<>();
if (!CollectionUtils.isEmpty(overtimeMap)) {
bb.writeLog("AddScheduleSign overtimeMap:" + JSONObject.toJSONString(overtimeMap));
}
for(Map.Entry<String, List<String>> mme: overtimeMap.entrySet()){ for(Map.Entry<String, List<String>> mme: overtimeMap.entrySet()){
String resid = mme.getKey(); String resid = mme.getKey();
List<String> overList = mme.getValue(); List<String> overList = mme.getValue();
for(String date : overList){ for(String date : overList){
SplitActionUtil.pushOverTimeTasks(date,date,resid,tasks); SplitActionUtil.pushOverTimeTasksAll(date,date,""+resid);
// SplitActionUtil.pushOverTimeTasks(date,date,resid,tasks);
} }
} }
if(!tasks.isEmpty()){ // if(!tasks.isEmpty()){
KQQueue.writeTasks(tasks); // KQQueue.writeTasks(tasks);
} // }
} }
} }

@ -0,0 +1,143 @@
package weaver.interfaces.hostar.action;
import com.engine.hostar.thread.HandleCBDataThread;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.ThreadPoolUtil;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ExecutorService;
/**
* @version 1.0
* @Title ecology-9
* @Company
* @CreateDate 2024/8/30
* @Description action
* @Author AdminZm
*/
public class HandleCBCommonAction implements Action {
BaseBean baseBean = new BaseBean();
private String ryField;
private String ksrqField;
private String jsrqField;
@Override
public String execute(RequestInfo requestInfo) {
baseBean.writeLog("HandleCBCommonAction start:" + ryField + "、" + ksrqField + "、" + jsrqField);
try {
if (StringUtils.isEmpty(ryField) || StringUtils.isEmpty(ksrqField) || StringUtils.isEmpty(jsrqField)) {
return Action.SUCCESS;
}
int billid = requestInfo.getRequestManager().getBillid();
String requestid = requestInfo.getRequestid();
String billTableName = requestInfo.getRequestManager().getBillTableName();
baseBean.writeLog("table info:" + billid + "、" + billTableName + "、" + requestid);
RecordSet rs = new RecordSet();
rs.execute("SELECT * FROM " + billTableName + " WHERE id = " + billid);
if (rs.next()) {
String ry = rs.getString(ryField);
String ksrq = rs.getString(ksrqField);
String jsrq = rs.getString(jsrqField);
if (StringUtils.isEmpty(ry) || StringUtils.isEmpty(ksrq) || StringUtils.isEmpty(jsrq)) {
return Action.SUCCESS;
}
List<String> ryList = Arrays.asList(ry.split(","));
List<String> allDates = getAllDates(ksrq, jsrq);
if (CollectionUtils.isEmpty(ryList) || CollectionUtils.isEmpty(allDates)) {
baseBean.writeLog("no user or date.");
return Action.SUCCESS;
}
// 获取责任制、排班次班次
Set<String> zrzbcSet = new HashSet<>();
Set<String> pbzbcSet = new HashSet<>();
String acqSql = "select kqgroup, grouptype from uf_ZeroPointSubSft";
rs.executeQuery(acqSql);
while (rs.next()) {
String kqgroup = Util.null2String(rs.getString("kqgroup"));
String grouptype = Util.null2String(rs.getString("grouptype"));
if (org.apache.commons.lang3.StringUtils.isNotBlank(kqgroup) && org.apache.commons.lang3.StringUtils.equals(grouptype, "0")) {
zrzbcSet.addAll(Arrays.asList(kqgroup.split(",")));
}
if (org.apache.commons.lang3.StringUtils.isNotBlank(kqgroup) && org.apache.commons.lang3.StringUtils.equals(grouptype, "1")) {
pbzbcSet.addAll(Arrays.asList(kqgroup.split(",")));
}
}
// 鸿仁驻点餐补指定人员不享受
List<String> removeRes = new ArrayList<>();
String acqNoOtherStatAllResSql = "select resourceid from uf_NoOtherStatAllRe where isdelete is null or isdelete = 0 ";
rs.executeQuery(acqNoOtherStatAllResSql);
while (rs.next()){
String resourceid = Util.null2String(rs.getString("resourceid"));
if (org.apache.commons.lang3.StringUtils.isNotBlank(resourceid) ) {
removeRes.add(resourceid);
}
}
// 驻点餐补指定人员不享受
List<String> noRes = new ArrayList<>();
String acqNoResSql = "select resourceid from uf_NoStatAllRes where isdelete = 0 or isdelete is null";
rs.executeQuery(acqNoResSql);
while (rs.next()) {
String resourceid = Util.null2String(rs.getString("resourceid"));
if (org.apache.commons.lang3.StringUtils.isNotBlank(resourceid)) {
noRes.add(resourceid);
}
}
//获取夜班班次
List<String> nightShiftList = new ArrayList<>();
String acqNightShiftSql = "select shift from uf_nightshiftmanage where isdelete is null or isdelete = 0";
rs.executeQuery(acqNightShiftSql);
while (rs.next()) {
String shift = Util.null2String(rs.getString("shift"));
if (org.apache.commons.lang3.StringUtils.isNotBlank(shift)) {
nightShiftList.add(shift);
}
}
ExecutorService executorService = ThreadPoolUtil.getThreadPool("HandleCBDataThreadAction", "20");
for (String userId : ryList) {
for (String kqDate : allDates) {
executorService.execute(new HandleCBDataThread(userId, kqDate, zrzbcSet, pbzbcSet, removeRes, nightShiftList, noRes));
}
}
}
baseBean.writeLog("HandleCBCommonAction end.");
} catch (Exception e) {
baseBean.writeLog("HandleCBCommonAction error:" + e.getMessage());
}
return Action.SUCCESS;
}
public List<String> getAllDates(String startDate, String endDate) {
List<String> result = new ArrayList<>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate start = LocalDate.parse(startDate, formatter);
LocalDate end = LocalDate.parse(endDate, formatter);
while (!start.isAfter(end)) {
result.add(start.format(formatter));
start = start.plusDays(1);
}
return result;
}
}

@ -155,9 +155,19 @@ public class OutSignSyncAction implements Action {
new KQFormatBiz().formatDate(userId, previousDayString); new KQFormatBiz().formatDate(userId, previousDayString);
//外勤签到转的考勤 处理加班规则 //外勤签到转的考勤 处理加班规则
SplitActionUtil.pushOverTimeTasksAll(signDate, signDate, userId); SplitActionUtil.pushOverTimeTasksAll(signDate, signDate, userId);
if (belongdate.length() != 0) { SplitActionUtil.pushOverTimeTasksAll(previousDayString, previousDayString, userId);
if (belongdate.length() != 0 && !StringUtils.equals(belongdate, signDate)) {
new KQFormatBiz().formatDate(userId, belongdate); new KQFormatBiz().formatDate(userId, belongdate);
SplitActionUtil.pushOverTimeTasksAll(belongdate, belongdate, userId); SplitActionUtil.pushOverTimeTasksAll(belongdate, belongdate, userId);
Date dateA = dateFormat.parse(belongdate);
Calendar calendarA = Calendar.getInstance();
calendarA.setTime(dateA);
calendarA.add(Calendar.DATE, -1); // 减去一天
Date previousDayA = calendar.getTime();
String previousDayAString = dateFormat.format(previousDayA);
new KQFormatBiz().formatDate(userId, previousDayAString);
SplitActionUtil.pushOverTimeTasksAll(previousDayAString, previousDayAString, userId);
} }
} }

@ -85,8 +85,33 @@ public class UpdateCbxxjlDataJob extends BaseCronJob {
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
List<String> userIds = new ArrayList<>(); List<String> userIds = new ArrayList<>();
baseBean.writeLog("1111."); baseBean.writeLog("1111.");
rs.executeQuery("select id from hrmresource where status in(0,1,2,3)");
LocalDate date2LD = LocalDate.parse(date2);
// 获取离职人员以及日期
String queryDepartEmployeeSql = "select resourceid ,changedate from HRMSTATUSHISTORY where type_n = 5 and changedate is not null";
rs.execute(queryDepartEmployeeSql);
Map<String, String> departMap = new HashMap<>();
while (rs.next()) {
String ryIdT = rs.getString("resourceid");
String changedate = rs.getString("changedate");
if (StringUtils.isEmpty(ryIdT) || StringUtils.isEmpty(changedate)) {
continue;
}
departMap.put(ryIdT, changedate);
}
rs.executeQuery("select id from hrmresource where status in(0,1,2,3,5)");
while (rs.next()) { while (rs.next()) {
String ryId = rs.getString("id");
if (StringUtils.isEmpty(ryId)) {
continue;
}
if (departMap.containsKey(ryId)) {
String changeDate = departMap.get(ryId);
if (LocalDate.parse(changeDate).isBefore(date2LD)) {
continue;
}
}
userIds.add(rs.getString("id")); userIds.add(rs.getString("id"));
} }

Loading…
Cancel
Save