出差餐补增加规则、外勤转考勤增加前一小时限定

dev-zm
zhangming 1 year ago
parent 2fc70db7c1
commit a0ec75702f

@ -26,6 +26,7 @@ import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols; import java.text.DecimalFormatSymbols;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -1150,6 +1151,12 @@ public class HandleCBDataThread extends BaseBean implements Runnable{
HostarUtil hostarUtil = new HostarUtil(); HostarUtil hostarUtil = new HostarUtil();
String MealAlloTableName = Util.null2String(bb.getPropValue("project_hostar", "MealAllowanceTableName")); String MealAlloTableName = Util.null2String(bb.getPropValue("project_hostar", "MealAllowanceTableName"));
// 定义日期格式
DateTimeFormatter formatterRq = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 定义时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
if (StringUtils.isNotBlank(MealAlloTableName)) { if (StringUtils.isNotBlank(MealAlloTableName)) {
//获取餐补判断时间 //获取餐补判断时间
List<Map<String, String>> MealMap = new ArrayList<>(); List<Map<String, String>> MealMap = new ArrayList<>();
@ -1190,8 +1197,19 @@ public class HandleCBDataThread extends BaseBean implements Runnable{
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
startTime = startTime + ":00"; startTime = startTime + ":00";
endTime = endTime + ":00"; endTime = endTime + ":00";
String signDateNew = signDate;
// 判断时间
LocalTime t1 = LocalTime.parse(startTime, formatter);
LocalTime t2 = LocalTime.parse(endTime, formatter);
if (t2.isBefore(t1)) {
LocalDate dateToday = LocalDate.parse(signDateNew, formatterRq);
// 加一天
LocalDate nextDayNew = dateToday.plusDays(1);
signDateNew = nextDayNew.format(formatterRq);
}
startDateTime = signDate + " " + startTime; startDateTime = signDate + " " + startTime;
endDateTime = signDate + " " + endTime; endDateTime = signDateNew + " " + endTime;
} }
if ( (signInDateTime.compareTo(startDateTime) <= 0) && (signOutDateTime.compareTo(endDateTime) >= 0) ) { if ( (signInDateTime.compareTo(startDateTime) <= 0) && (signOutDateTime.compareTo(endDateTime) >= 0) ) {

@ -23,6 +23,7 @@ import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols; import java.text.DecimalFormatSymbols;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -2365,6 +2366,12 @@ public class KQFormatData extends BaseBean {
HostarUtil hostarUtil = new HostarUtil(); HostarUtil hostarUtil = new HostarUtil();
String MealAlloTableName = Util.null2String(bb.getPropValue("project_hostar", "MealAllowanceTableName")); String MealAlloTableName = Util.null2String(bb.getPropValue("project_hostar", "MealAllowanceTableName"));
// 定义日期格式
DateTimeFormatter formatterRq = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 定义时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
if (StringUtils.isNotBlank(MealAlloTableName)) { if (StringUtils.isNotBlank(MealAlloTableName)) {
//获取餐补判断时间 //获取餐补判断时间
List<Map<String, String>> MealMap = new ArrayList<>(); List<Map<String, String>> MealMap = new ArrayList<>();
@ -2405,8 +2412,19 @@ public class KQFormatData extends BaseBean {
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
startTime = startTime + ":00"; startTime = startTime + ":00";
endTime = endTime + ":00"; endTime = endTime + ":00";
String signDateNew = signDate;
// 判断时间
LocalTime t1 = LocalTime.parse(startTime, formatter);
LocalTime t2 = LocalTime.parse(endTime, formatter);
if (t2.isBefore(t1)) {
LocalDate dateToday = LocalDate.parse(signDateNew, formatterRq);
// 加一天
LocalDate nextDayNew = dateToday.plusDays(1);
signDateNew = nextDayNew.format(formatterRq);
}
startDateTime = signDate + " " + startTime; startDateTime = signDate + " " + startTime;
endDateTime = signDate + " " + endTime; endDateTime = signDateNew + " " + endTime;
} }
if ( (signInDateTime.compareTo(startDateTime) <= 0) && (signOutDateTime.compareTo(endDateTime) >= 0) ) { if ( (signInDateTime.compareTo(startDateTime) <= 0) && (signOutDateTime.compareTo(endDateTime) >= 0) ) {

@ -26,6 +26,7 @@ import weaver.systeminfo.SystemEnv;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.Map.Entry; import java.util.Map.Entry;
@ -293,17 +294,20 @@ public class PunchOutButtonCmd extends AbstractCommonCommand<Map<String, Object>
String outTableName = Util.null2String(bb.getPropValue("project_hostar","outTableName")); String outTableName = Util.null2String(bb.getPropValue("project_hostar","outTableName"));
if ( StringUtils.isNotBlank(evectionTableName) && StringUtils.isNotBlank(outTableName) ) { if ( StringUtils.isNotBlank(evectionTableName) && StringUtils.isNotBlank(outTableName) ) {
Integer number = -1; Integer number = 0;
String sqlDate = ""; String sqlDate = "";
if (StringUtils.isNotBlank(belongdate)) { if (StringUtils.isNotBlank(belongdate)) {
sqlDate = belongdate; sqlDate = belongdate;
} else { } else {
sqlDate = signDate; sqlDate = signDate;
} }
String acqEvecAndOutSql = " SELECT count(*) as number FROM workflow_requestbase WHERE requestid IN " + // String acqEvecAndOutSql = " SELECT count(*) as number FROM workflow_requestbase WHERE requestid IN " +
"( SELECT requestid FROM " + evectionTableName + " WHERE (sjccr = '" + userId + "' or ','+CAST(nbtxr AS varchar(max))+',' like '%,'+CAST(" // "( SELECT requestid FROM " + evectionTableName + " WHERE (sjccr = '" + userId + "' or ','+CAST(nbtxr AS varchar(max))+',' like '%,'+CAST("
// +userId+" AS varchar(10))+',%') and ksrq <='" + sqlDate + "' and (((sjjsrq is null or sjjsrq = '') and yjjsrq >= '"
// + sqlDate + "') or (sjjsrq is not null and sjjsrq != '' and sjjsrq >= '" + sqlDate + "'))) ";
String acqEvecAndOutSql = " SELECT requestid,kssj FROM " + evectionTableName + " WHERE (sjccr = '" + userId + "' or ','+CAST(nbtxr AS varchar(max))+',' like '%,'+CAST("
+userId+" AS varchar(10))+',%') and ksrq <='" + sqlDate + "' and (((sjjsrq is null or sjjsrq = '') and yjjsrq >= '" +userId+" AS varchar(10))+',%') and ksrq <='" + sqlDate + "' and (((sjjsrq is null or sjjsrq = '') and yjjsrq >= '"
+ sqlDate + "') or (sjjsrq is not null and sjjsrq != '' and sjjsrq >= '" + sqlDate + "'))) "; + sqlDate + "') or (sjjsrq is not null and sjjsrq != '' and sjjsrq >= '" + sqlDate + "')) ";
// " AND currentnodetype = 3 " + // " AND currentnodetype = 3 " +
// " UNION all " + // " UNION all " +
// " SELECT " + // " SELECT " +
@ -317,8 +321,31 @@ public class PunchOutButtonCmd extends AbstractCommonCommand<Map<String, Object>
bb.writeLog("acqEvecAndOutSql: " + acqEvecAndOutSql); bb.writeLog("acqEvecAndOutSql: " + acqEvecAndOutSql);
rs.executeQuery(acqEvecAndOutSql); rs.executeQuery(acqEvecAndOutSql);
// 定义时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
while (rs.next()) { while (rs.next()) {
number = Util.getIntValue(Util.null2String(rs.getString("number"))); String requestid = rs.getString("requestid");
String kssj = rs.getString("kssj");
if (StringUtils.isEmpty(requestid) || StringUtils.isEmpty(kssj)) {
continue;
}
if (kssj.length() < 8) {
kssj = kssj + ":00";
}
// 解析时间字符串为 LocalTime 对象
LocalTime oldkssj = LocalTime.parse(kssj, formatter);
LocalTime minKssj = LocalTime.parse("01:00:00", formatter);
if (oldkssj.isBefore(minKssj)) {
number = number + 1;
continue;
}
// 减去一小时
LocalTime previousHour = oldkssj.minusHours(1);
LocalTime signTimeLt = LocalTime.parse(signTime, formatter);
if (!signTimeLt.isBefore(previousHour)) {
number = number + 1;
}
} }
bb.writeLog("number: " + number); bb.writeLog("number: " + number);

@ -11,6 +11,8 @@ import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.Property; import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo; import weaver.soa.workflow.request.RequestInfo;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -28,6 +30,7 @@ public class OutSignSyncAction implements Action {
String resourceid = ""; String resourceid = "";
String nbtxr = ""; String nbtxr = "";
String sjjsrq = ""; String sjjsrq = "";
String kssj = "";
try { try {
@ -36,6 +39,9 @@ public class OutSignSyncAction implements Action {
if ("ksrq".equals(property.getName())) { if ("ksrq".equals(property.getName())) {
startDate = Util.null2String(property.getValue()); startDate = Util.null2String(property.getValue());
} }
if ("kssj".equals(property.getName())) {
kssj = Util.null2String(property.getValue());
}
if ("yjjsrq".equals(property.getName())) { if ("yjjsrq".equals(property.getName())) {
endDate = Util.null2String(property.getValue()); endDate = Util.null2String(property.getValue());
} }
@ -49,6 +55,14 @@ public class OutSignSyncAction implements Action {
sjjsrq = Util.null2String(property.getValue()); sjjsrq = Util.null2String(property.getValue());
} }
} }
if (StringUtils.isEmpty(kssj)) {
return Action.SUCCESS;
}
if (kssj.length() < 8) {
kssj = kssj + ":00";
}
// 如果实际结束日期不为空,则用实际结束日期 // 如果实际结束日期不为空,则用实际结束日期
if (StringUtils.isNotBlank(sjjsrq)) { if (StringUtils.isNotBlank(sjjsrq)) {
endDate = sjjsrq; endDate = sjjsrq;
@ -74,6 +88,13 @@ public class OutSignSyncAction implements Action {
infos.add(signinfo); infos.add(signinfo);
} }
bb.writeLog("infos is:" + infos); bb.writeLog("infos is:" + infos);
// 定义时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
// 解析时间字符串为 LocalTime 对象
LocalTime oldkssj = LocalTime.parse(kssj, formatter);
LocalTime minKssj = LocalTime.parse("01:00:00", formatter);
for (String inf : infos) { for (String inf : infos) {
if (StringUtils.isNotEmpty(inf)) { if (StringUtils.isNotEmpty(inf)) {
Map<String, Object> in = mapStringToMap(inf); Map<String, Object> in = mapStringToMap(inf);
@ -93,6 +114,15 @@ public class OutSignSyncAction implements Action {
String deviceInfo = Util.null2String(in.get("deviceInfo")); String deviceInfo = Util.null2String(in.get("deviceInfo"));
String belongdateIsNull = Util.null2String(in.get("belongdateIsNull")); String belongdateIsNull = Util.null2String(in.get("belongdateIsNull"));
if (!oldkssj.isBefore(minKssj)) {
// 减去一小时
LocalTime previousHour = oldkssj.minusHours(1);
LocalTime signTimeLt = LocalTime.parse(signTime, formatter);
if (signTimeLt.isBefore(previousHour)) {
continue;
}
}
String punchSql = "insert into HrmScheduleSign(userId,userType,signType,signDate,signTime,clientAddress,isInCom,timeZone,belongdate,signfrom,longitude,latitude,addr,deviceInfo,isdev) " + String punchSql = "insert into HrmScheduleSign(userId,userType,signType,signDate,signTime,clientAddress,isInCom,timeZone,belongdate,signfrom,longitude,latitude,addr,deviceInfo,isdev) " +
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
boolean isok = rs.executeUpdate(punchSql, userId, userType, signType, signDate, signTime, clientAddress, isInCom, boolean isok = rs.executeUpdate(punchSql, userId, userType, signType, signDate, signTime, clientAddress, isInCom,

Loading…
Cancel
Save