diff --git a/src/com/engine/hostar/thread/HandleCBDataThread.java b/src/com/engine/hostar/thread/HandleCBDataThread.java index c870ea8..e0338af 100644 --- a/src/com/engine/hostar/thread/HandleCBDataThread.java +++ b/src/com/engine/hostar/thread/HandleCBDataThread.java @@ -15,6 +15,7 @@ import com.engine.kq.util.KQDurationCalculatorUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; import weaver.conn.RecordSet; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; @@ -92,11 +93,8 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ mealAllowance = "0"; } // 考勤二开--零点补助 - String zeropoint = "0"; - rs.executeQuery("select zeropoint from kq_format_total where resourceid = ? and kqdate = ?", userId, kqDate); - if (rs.next()) { - zeropoint = rs.getString("zeropoint"); - } + String zeropoint = getZeroBt(userId, kqDate); + baseBean.writeLog("zeropoint:" + zeropoint); if (StringUtils.isEmpty(zeropoint)) { zeropoint = "0"; } @@ -144,6 +142,42 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ } } + public String getZeroBt(String userId, String kqDate) { + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + String value = "0"; + try { + //获取夜班班次 + List 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 (StringUtils.isNotBlank(shift)) { + nightShiftList.add(shift); + } + } + rs.executeQuery("select zeropoint from kq_format_total where resourceid = ? and kqdate = ?", userId, kqDate); + if (rs.next()) { + value = rs.getString("zeropoint"); + } + //获取当天班次 + KQWorkTime kqWorkTime = new KQWorkTime(); + Map serialInfo = kqWorkTime.getSerialInfo(userId, kqDate, false); + if (serialInfo != null && serialInfo.size() > 0) { + int serialid = Util.getIntValue(Util.null2String(serialInfo.get(kqDate)), 0); + if (serialid > 0) { + if ((!CollectionUtils.isEmpty(nightShiftList)) && nightShiftList.contains(String.valueOf(serialid))) { + value = "0"; + } + } + } + } catch (Exception e) { + bb.writeLog("get ZeroBt error:" + e.getMessage()); + } + return value; + } + public String getNightShiftSubsidy(String userId, String kqDate) { BaseBean bb = new BaseBean(); RecordSet rs = new RecordSet(); diff --git a/src/com/engine/kq/biz/KQFormatData.java b/src/com/engine/kq/biz/KQFormatData.java index 84e18c3..7eeeb7b 100644 --- a/src/com/engine/kq/biz/KQFormatData.java +++ b/src/com/engine/kq/biz/KQFormatData.java @@ -26,6 +26,7 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; import weaver.common.DateUtil; import weaver.conn.BatchRecordSet; import weaver.conn.RecordSet; @@ -225,11 +226,8 @@ public class KQFormatData extends BaseBean { mealAllowance = "0"; } // 考勤二开--零点补助 - String zeropoint = "0"; - rs.executeQuery("select zeropoint from kq_format_total where resourceid = ? and kqdate = ?", userId, kqDate); - if (rs.next()) { - zeropoint = rs.getString("zeropoint"); - } + String zeropoint = getZeroBt(userId, kqDate); + bb.writeLog("zeropoint:" + zeropoint); if (StringUtils.isEmpty(zeropoint)) { zeropoint = "0"; } @@ -2197,4 +2195,40 @@ public class KQFormatData extends BaseBean { } return value; } + + public String getZeroBt(String userId, String kqDate) { + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + String value = "0"; + try { + //获取夜班班次 + List 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 (StringUtils.isNotBlank(shift)) { + nightShiftList.add(shift); + } + } + rs.executeQuery("select zeropoint from kq_format_total where resourceid = ? and kqdate = ?", userId, kqDate); + if (rs.next()) { + value = rs.getString("zeropoint"); + } + //获取当天班次 + KQWorkTime kqWorkTime = new KQWorkTime(); + Map serialInfo = kqWorkTime.getSerialInfo(userId, kqDate, false); + if (serialInfo != null && serialInfo.size() > 0) { + int serialid = Util.getIntValue(Util.null2String(serialInfo.get(kqDate)), 0); + if (serialid > 0) { + if ((!CollectionUtils.isEmpty(nightShiftList)) && nightShiftList.contains(String.valueOf(serialid))) { + value = "0"; + } + } + } + } catch (Exception e) { + bb.writeLog("get ZeroBt error:" + e.getMessage()); + } + return value; + } } diff --git a/src/weaver/interfaces/hostar/action/OutSignSyncAction.java b/src/weaver/interfaces/hostar/action/OutSignSyncAction.java index 5f04dca..c095c9e 100644 --- a/src/weaver/interfaces/hostar/action/OutSignSyncAction.java +++ b/src/weaver/interfaces/hostar/action/OutSignSyncAction.java @@ -65,7 +65,7 @@ public class OutSignSyncAction implements Action { "from mobile_sign a " + "left join uf_outsigntype c " + "on c.outsignid = a.id " + - "where operate_date > '" + startDate + "' and operate_date < '" + endDate + "' and operater in (?) "; + "where operate_date >= '" + startDate + "' and operate_date <= '" + endDate + "' and operater in (?) "; rs.executeQuery(acqOutSignSql, resourceid); while (rs.next()) { String signinfo = Util.null2String(rs.getString("signinfo")); @@ -124,11 +124,15 @@ public class OutSignSyncAction implements Action { public static Map mapStringToMap(String str) { str = str.substring(1, str.length() - 1); - String[] strs = str.split(","); + List strs = splitString(str); Map map = new HashMap<>(); for (String string : strs) { - String key = string.split("=")[0]; - String value = string.split("=")[1]; + String[] splits = string.split("="); + String key = splits[0]; + String value = ""; + if (splits.length > 1) { + value = splits[1]; + } // 去掉头部空格 String key1 = key.trim(); String value1 = value.trim(); @@ -136,4 +140,28 @@ public class OutSignSyncAction implements Action { } return map; } + + public static List splitString(String input) { + List result = new ArrayList<>(); + int braceLevel = 0; + int startIndex = 0; + + for (int i = 0; i < input.length(); i++) { + char ch = input.charAt(i); + if (ch == '{') { + braceLevel++; + } else if (ch == '}') { + braceLevel--; + } else if (ch == ',' && braceLevel == 0) { + result.add(input.substring(startIndex, i)); + startIndex = i + 1; + } + } + + if (startIndex < input.length()) { + result.add(input.substring(startIndex)); + } + + return result; + } }