|
|
|
@ -13,7 +13,9 @@ import weaver.general.BaseBean;
|
|
|
|
|
import weaver.general.Util;
|
|
|
|
|
|
|
|
|
|
import java.time.Duration;
|
|
|
|
|
import java.time.LocalTime;
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@ -29,6 +31,12 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
|
|
|
|
|
Map<String, Object> result = new HashMap<>();
|
|
|
|
|
try {
|
|
|
|
|
//获取指定生成的人员id列表,如果没有则生成所有人
|
|
|
|
|
String checkEmpIds = Util.null2String(params.get("empIds"));
|
|
|
|
|
List<String> checkEmpIdList = new ArrayList<>();
|
|
|
|
|
if (!checkEmpIds.equals("")) {
|
|
|
|
|
checkEmpIdList = Arrays.asList(checkEmpIds.split(","));
|
|
|
|
|
}
|
|
|
|
|
//获取modeId,考勤方案的modeId
|
|
|
|
|
Map<String,String> formmodeIdMap = Utils.getFormmodeIdMap();
|
|
|
|
|
String modeId = formmodeIdMap.get("uf_jcl_kq_kqfa");
|
|
|
|
@ -55,9 +63,6 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
String dataId = map.get("id").toString();
|
|
|
|
|
//获取方案适用的人员id列表
|
|
|
|
|
List<String> empIdList = CommonUtil.getEmpIds(dataId, modeId);
|
|
|
|
|
bs.writeLog("dataId : " + dataId);
|
|
|
|
|
bs.writeLog("modeId : " + modeId);
|
|
|
|
|
bs.writeLog("empIdList : " + empIdList);
|
|
|
|
|
//获取津贴类型的考勤项目
|
|
|
|
|
String dtSql = "select * from uf_jcl_kq_kqfa_dt1 a left join uf_jcl_kq_kqxm b on b.id = a.kqxm where a.mainid = " + dataId
|
|
|
|
|
+ " and b.xmlx = " + AttendanceItemTypeEnum.ALLOWANCE.getKey();
|
|
|
|
@ -113,15 +118,15 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bs.writeLog("targetEmpIdList : " + targetEmpIdList);
|
|
|
|
|
bs.writeLog("targetAllowanceIdList : " + targetAllowanceIdList);
|
|
|
|
|
bs.writeLog("targetBcIdList : " + targetBcIdList);
|
|
|
|
|
|
|
|
|
|
//获取出勤结果,遍历处理津贴信息
|
|
|
|
|
String startDate = Util.null2String(params.get("startDate"));
|
|
|
|
|
String endDate = Util.null2String(params.get("endDate"));
|
|
|
|
|
List<Map<String, Object>> cqData = new ArrayList<>();
|
|
|
|
|
//如果入参中选中了人员,则只处理选中的人
|
|
|
|
|
if (checkEmpIdList.size() > 0) {
|
|
|
|
|
List<String> finalCheckEmpIdList = checkEmpIdList;
|
|
|
|
|
targetEmpIdList = targetEmpIdList.stream().filter(f -> finalCheckEmpIdList.contains(f)).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
if (targetEmpIdList.size() > 0 && targetBcIdList.size() > 0) {
|
|
|
|
|
//去重
|
|
|
|
|
targetBcIdList = targetBcIdList.stream().distinct().collect(Collectors.toList());
|
|
|
|
@ -131,9 +136,6 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
cqData = DbTools.getSqlToList(cqSql);
|
|
|
|
|
}
|
|
|
|
|
bs.writeLog("cqData_size : " + cqData.size());
|
|
|
|
|
bs.writeLog("empIdWithAllowanceInfo : " + empIdWithAllowanceInfo);
|
|
|
|
|
bs.writeLog("bcWithAllowanceInfo : " + bcWithAllowanceInfo);
|
|
|
|
|
bs.writeLog("allowanceIdWithKqxmInfo : " + allowanceIdWithKqxmInfo);
|
|
|
|
|
//获取待新增的津贴数据
|
|
|
|
|
List<Map<String, String>> allowanceInfoList = createAllowanceInfo(cqData, empIdWithAllowanceInfo, bcWithAllowanceInfo, allowanceIdWithKqxmInfo);
|
|
|
|
|
bs.writeLog("allowanceInfoList_size : " + allowanceInfoList.size());
|
|
|
|
@ -188,13 +190,10 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
Map<String, String> allowanceInfoItem;
|
|
|
|
|
//获取加班类型的考勤项目,并构建项目id和核算单位映射关系
|
|
|
|
|
Map<String, String> jbKqxmUnitInfo = collectKqxmUnitInfo(AttendanceItemTypeEnum.WORK_OVERTIME.getKey());
|
|
|
|
|
bs.writeLog("jbKqxmUnitInfo : " + jbKqxmUnitInfo);
|
|
|
|
|
//获取津贴类型的考勤项目,并构建项目id和核算单位映射关系
|
|
|
|
|
Map<String, String> jtKqxmUnitInfo = collectKqxmUnitInfo(AttendanceItemTypeEnum.ALLOWANCE.getKey());
|
|
|
|
|
bs.writeLog("jtKqxmUnitInfo : " + jtKqxmUnitInfo);
|
|
|
|
|
//获取津贴类型的考勤项目,并构建项目id和核算量映射关系
|
|
|
|
|
Map<String, String> jtKqxmCountScaleInfo = collectKqxmCountScaleInfo(AttendanceItemTypeEnum.ALLOWANCE.getKey());
|
|
|
|
|
bs.writeLog("jtKqxmCountScaleInfo : " + jtKqxmCountScaleInfo);
|
|
|
|
|
//遍历出勤结果
|
|
|
|
|
for (Map<String, Object> map : cqData) {
|
|
|
|
|
String empId = map.get("ygid").toString();
|
|
|
|
@ -214,10 +213,8 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
}
|
|
|
|
|
//收集下出勤结果中项目1-8存在的项目id
|
|
|
|
|
List<String> kqxmIdsWithCq = collectKqxmIdsByCq(map);
|
|
|
|
|
bs.writeLog("kqxmIdsWithCq : " + kqxmIdsWithCq);
|
|
|
|
|
//收集下出勤结果中进出时间,仅收集进出两个时间点都有的数据
|
|
|
|
|
List<Map<String, String>> jcInfoList = collectJcInfoByCq(map);
|
|
|
|
|
bs.writeLog("jcInfoList : " + jcInfoList);
|
|
|
|
|
//收集下出勤结果中,项目1-8中累积的加班时长,处理成分钟数
|
|
|
|
|
Integer overtimeMinutes = collectOvertimeMinutes(map, jbKqxmUnitInfo);
|
|
|
|
|
bs.writeLog("overtimeMinutes : " + overtimeMinutes);
|
|
|
|
@ -227,23 +224,25 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
double cqsc = Util.null2String(map.get("cqsc")).equals("") ? 0 : Double.parseDouble(map.get("cqsc").toString());
|
|
|
|
|
//获取班次班段时间范围
|
|
|
|
|
List<Map<String, String>> bcTimeRangeList = collectBcTimeRangeInfo(Util.null2String(map.get("bcbdxx")));
|
|
|
|
|
bs.writeLog("bcTimeRangeList : " + bcTimeRangeList);
|
|
|
|
|
//遍历该出勤结果中班次、人员都关联的津贴项目
|
|
|
|
|
for(String allowanceId : allowanceIdsByBc) {
|
|
|
|
|
Map<String, Object> allowanceInfo = allowanceIdWithKqxmInfo.get(allowanceId);
|
|
|
|
|
bs.writeLog("allowanceInfo : " + allowanceInfo);
|
|
|
|
|
//项目1-8中出现以下考勤项目时,津贴失效
|
|
|
|
|
String banKqxm = Util.null2String(allowanceInfo.get("bxsdxm"));
|
|
|
|
|
List<String> banKqxmList = new ArrayList<>();
|
|
|
|
|
if (!banKqxm.equals("")) {
|
|
|
|
|
banKqxmList = Arrays.asList(banKqxm.split(","));
|
|
|
|
|
}
|
|
|
|
|
//出勤日期
|
|
|
|
|
String cqRq = Util.null2String(map.get("rq"));
|
|
|
|
|
//正常工作时长计入核算量_标识,0-否,1-是
|
|
|
|
|
String includeDailyWorkHours = Util.null2String(allowanceInfo.get("ljbcngzsj"));
|
|
|
|
|
//检查特定时间点是否在岗_标识,0-否,1-是
|
|
|
|
|
String checkOneTimeOnDuty = Util.null2String(allowanceInfo.get("xysjd"));
|
|
|
|
|
//特定在岗时间点
|
|
|
|
|
String onDutyTime = Util.null2String(allowanceInfo.get("sjd"));
|
|
|
|
|
//判断特定在岗时间点指向日期
|
|
|
|
|
String onDutyDate = getOnDutyDate(bcTimeRangeList, onDutyTime, cqRq);
|
|
|
|
|
//时间点之前的时长也计入核算量_标识,0-否,1-是
|
|
|
|
|
String includeHoursBeforeDutyTime = Util.null2String(allowanceInfo.get("jljxysjdzqdsc"));
|
|
|
|
|
//起算分钟数(不包含)
|
|
|
|
@ -267,8 +266,10 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
//2-如果勾选“检查特定时间点是否在岗”,则需要判断员工当天“须要在岗的时间点”所设置的时间员工是否在岗
|
|
|
|
|
if (checkOneTimeOnDuty.equals("1") && !onDutyTime.equals("")) {
|
|
|
|
|
boolean onDuty = false;
|
|
|
|
|
//将特殊在岗时间点拼接上日期
|
|
|
|
|
String onDutyTimeWithDate = onDutyDate + " " + onDutyTime;
|
|
|
|
|
for (Map<String, String> jcInfo : jcInfoList) {
|
|
|
|
|
if (onDutyTime.compareTo(jcInfo.get("signIn")) >= 0 && onDutyTime.compareTo(jcInfo.get("signOut")) <= 0) {
|
|
|
|
|
if (onDutyTimeWithDate.compareTo(jcInfo.get("signIn")) >= 0 && onDutyTimeWithDate.compareTo(jcInfo.get("signOut")) <= 0) {
|
|
|
|
|
onDuty = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@ -289,7 +290,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
countMinutes = countMinutes + cqsc * 60;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
countMinutes = getMinutesWithAfterPointTime(bcTimeRangeList, jcInfoList, overtimeMinutes, onDutyTime, includeDailyWorkHours);
|
|
|
|
|
countMinutes = getMinutesWithAfterPointTime(cqRq, bcTimeRangeList, jcInfoList, overtimeMinutes, onDutyTimeWithDate, includeDailyWorkHours);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//未勾选“检查特定时间点是否在岗”
|
|
|
|
@ -331,13 +332,13 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
allowanceInfoItem = new HashMap<>();
|
|
|
|
|
allowanceInfoItem.put("szjg", Util.null2String(map.get("szjg")));
|
|
|
|
|
allowanceInfoItem.put("yg", Util.null2String(map.get("ygid")));
|
|
|
|
|
allowanceInfoItem.put("rq", Util.null2String(map.get("rq")));
|
|
|
|
|
allowanceInfoItem.put("rq", cqRq);
|
|
|
|
|
allowanceInfoItem.put("bc", Util.null2String(map.get("bc")));
|
|
|
|
|
allowanceInfoItem.put("jtlx", allowanceId);
|
|
|
|
|
if (!allowanceUnit.equals(AccountingUnitEnum.ONCE.getKey())) {
|
|
|
|
|
allowanceInfoItem.put("sc", String.format("%.2f", sc));
|
|
|
|
|
} else {
|
|
|
|
|
allowanceInfoItem.put("sc", "0");
|
|
|
|
|
allowanceInfoItem.put("sc", "1");
|
|
|
|
|
}
|
|
|
|
|
allowanceInfoList.add(allowanceInfoItem);
|
|
|
|
|
}
|
|
|
|
@ -348,17 +349,49 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
return allowanceInfoList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取当前出勤数据指向的津贴所属日期
|
|
|
|
|
* @param bcTimeRangeList 班次班段时间区间
|
|
|
|
|
* @param onDutyTime 特殊在岗时间点
|
|
|
|
|
* @param cqRq 出勤结果中出勤日期
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private String getOnDutyDate(List<Map<String, String>> bcTimeRangeList, String onDutyTime, String cqRq) {
|
|
|
|
|
boolean currentDateSign = false;
|
|
|
|
|
if (!onDutyTime.equals("")) {
|
|
|
|
|
for (Map<String, String> bcTime : bcTimeRangeList) {
|
|
|
|
|
if (currentDateSign) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (onDutyTime.compareTo(bcTime.get("startTime")) >= 0) {
|
|
|
|
|
currentDateSign = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return cqRq;
|
|
|
|
|
}
|
|
|
|
|
if (currentDateSign) {
|
|
|
|
|
return cqRq;
|
|
|
|
|
} else {
|
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 时间格式
|
|
|
|
|
LocalDate date = LocalDate.parse(cqRq, formatter); // 解析为LocalDate对象
|
|
|
|
|
LocalDate nextDay = date.plusDays(1); // 将日期加一天
|
|
|
|
|
return nextDay.format(formatter);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取考虑特殊在岗时间点情况下的考核时长分钟数
|
|
|
|
|
* 勾选在岗时间点时,
|
|
|
|
|
* 1-处于班次工作时间段时,结合进出时间和班次班段判断班段时间内实际工作分钟数
|
|
|
|
|
* 2-处于加班时间段内,结合进出时间记录,累加
|
|
|
|
|
* @param overtimeMinutes
|
|
|
|
|
* @param onDutyTime
|
|
|
|
|
* @param onDutyTimeWithDate
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private double getMinutesWithAfterPointTime(List<Map<String, String>> bcTimeRangeList, List<Map<String, String>> jcInfoList,
|
|
|
|
|
Integer overtimeMinutes, String onDutyTime, String includeDailyWorkHours) {
|
|
|
|
|
private double getMinutesWithAfterPointTime(String cqRq, List<Map<String, String>> bcTimeRangeList, List<Map<String, String>> jcInfoList,
|
|
|
|
|
Integer overtimeMinutes, String onDutyTimeWithDate, String includeDailyWorkHours) {
|
|
|
|
|
double bcOnDutyMinutes = 0;
|
|
|
|
|
double realOverWorkMinutes = 0;
|
|
|
|
|
if (includeDailyWorkHours.equals("1")) {
|
|
|
|
@ -369,8 +402,9 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
for (Map<String, String> bcTime : bcTimeRangeList) {
|
|
|
|
|
String realStartTime = "";
|
|
|
|
|
String realEndTime = "";
|
|
|
|
|
String startTime = bcTime.get("startTime");
|
|
|
|
|
String endTime = bcTime.get("endTime");
|
|
|
|
|
//给班次时间拼接下出勤日期
|
|
|
|
|
String startTime = cqRq + " " + bcTime.get("startTime");
|
|
|
|
|
String endTime = cqRq + " " + bcTime.get("endTime");
|
|
|
|
|
for (Map<String, String> jcTime : jcInfoList) {
|
|
|
|
|
String signInTime = jcTime.get("signIn");
|
|
|
|
|
String signOutTime = jcTime.get("signOut");
|
|
|
|
@ -400,19 +434,19 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
}
|
|
|
|
|
//遍历获取班次班段时间内的累计时长(某一在岗时间点之后的时间)
|
|
|
|
|
for (Map<String, String> bcRealTimeInfo : bcRealOnDutyTimeRange) {
|
|
|
|
|
if (onDutyTime.compareTo(bcRealTimeInfo.get("startTime")) <= 0) {
|
|
|
|
|
if (onDutyTimeWithDate.compareTo(bcRealTimeInfo.get("startTime")) <= 0) {
|
|
|
|
|
bcOnDutyMinutes = bcOnDutyMinutes + getMinutesByTwo(bcRealTimeInfo.get("startTime"), bcRealTimeInfo.get("endTime"));
|
|
|
|
|
} else if (onDutyTime.compareTo(bcRealTimeInfo.get("startTime")) >= 0 && onDutyTime.compareTo(bcRealTimeInfo.get("endTime")) <= 0) {
|
|
|
|
|
bcOnDutyMinutes = bcOnDutyMinutes + getMinutesByTwo(onDutyTime, bcRealTimeInfo.get("endTime"));
|
|
|
|
|
} else if (onDutyTimeWithDate.compareTo(bcRealTimeInfo.get("startTime")) >= 0 && onDutyTimeWithDate.compareTo(bcRealTimeInfo.get("endTime")) <= 0) {
|
|
|
|
|
bcOnDutyMinutes = bcOnDutyMinutes + getMinutesByTwo(onDutyTimeWithDate, bcRealTimeInfo.get("endTime"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//判断在岗时间点和加班时间区间的关系,即进出打卡记录是否与在岗时间点有包含关系,分情况累计时间
|
|
|
|
|
for (Map<String, String> jcInfo : jcInfoList) {
|
|
|
|
|
if (onDutyTime.compareTo(jcInfo.get("signIn")) <= 0) {
|
|
|
|
|
if (onDutyTimeWithDate.compareTo(jcInfo.get("signIn")) <= 0) {
|
|
|
|
|
realOverWorkMinutes = realOverWorkMinutes + getMinutesByTwo(jcInfo.get("signIn"), jcInfo.get("signOut"));
|
|
|
|
|
} else if (onDutyTime.compareTo(jcInfo.get("signIn")) >= 0 && onDutyTime.compareTo(jcInfo.get("signOut")) <= 0) {
|
|
|
|
|
realOverWorkMinutes = realOverWorkMinutes + getMinutesByTwo(onDutyTime, jcInfo.get("signOut"));
|
|
|
|
|
} else if (onDutyTimeWithDate.compareTo(jcInfo.get("signIn")) >= 0 && onDutyTimeWithDate.compareTo(jcInfo.get("signOut")) <= 0) {
|
|
|
|
|
realOverWorkMinutes = realOverWorkMinutes + getMinutesByTwo(onDutyTimeWithDate, jcInfo.get("signOut"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//实际加班时长累计的核算分钟数,不可以超过项目1-8累计的加班时长分钟数
|
|
|
|
@ -423,12 +457,31 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private double getMinutesByTwo(String startTime, String endTime) {
|
|
|
|
|
LocalTime time1 = LocalTime.of(Integer.parseInt(startTime.split(":")[0]), Integer.parseInt(startTime.split(":")[1]));
|
|
|
|
|
LocalTime time2 = LocalTime.of(Integer.parseInt(endTime.split(":")[0]), Integer.parseInt(endTime.split(":")[1]));
|
|
|
|
|
Duration duration = Duration.between(time1, time2);
|
|
|
|
|
List<String> startInfoList = Arrays.asList(startTime.split("\\s+|-|:"));
|
|
|
|
|
List<String> endInfoList = Arrays.asList(endTime.split("\\s+|-|:"));
|
|
|
|
|
|
|
|
|
|
LocalDateTime dateTime1 = LocalDateTime.of(Integer.parseInt(startInfoList.get(0)),
|
|
|
|
|
Integer.parseInt(replaceFirstChar(startInfoList.get(1),"0", "")),
|
|
|
|
|
Integer.parseInt(replaceFirstChar(startInfoList.get(2),"0", "")),
|
|
|
|
|
Integer.parseInt(replaceFirstChar(startInfoList.get(3),"0", "")),
|
|
|
|
|
Integer.parseInt(replaceFirstChar(startInfoList.get(4),"0", "")));
|
|
|
|
|
LocalDateTime dateTime2 = LocalDateTime.of(Integer.parseInt(endInfoList.get(0)),
|
|
|
|
|
Integer.parseInt(replaceFirstChar(endInfoList.get(1),"0", "")),
|
|
|
|
|
Integer.parseInt(replaceFirstChar(endInfoList.get(2),"0", "")),
|
|
|
|
|
Integer.parseInt(replaceFirstChar(endInfoList.get(3),"0", "")),
|
|
|
|
|
Integer.parseInt(replaceFirstChar(endInfoList.get(4),"0", "")));
|
|
|
|
|
|
|
|
|
|
Duration duration = Duration.between(dateTime1, dateTime2);
|
|
|
|
|
// 获取分钟数
|
|
|
|
|
return duration.toMinutes();
|
|
|
|
|
}
|
|
|
|
|
public static String replaceFirstChar(String original, String target, String replacement) {
|
|
|
|
|
int index = original.indexOf(target);
|
|
|
|
|
if (index == -1) {
|
|
|
|
|
return original; // 如果没有找到目标字符,返回原字符串
|
|
|
|
|
}
|
|
|
|
|
return original.substring(0, index) + replacement + original.substring(index + 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<Map<String, String>> collectBcTimeRangeInfo(String bcbdxx) {
|
|
|
|
|
List<Map<String, String>> timeRangeInfo = new ArrayList<>();
|
|
|
|
@ -489,140 +542,36 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
|
|
|
|
|
|
|
|
|
|
private List<Map<String, String>> collectJcInfoByCq(Map<String, Object> cqMap) {
|
|
|
|
|
List<Map<String, String>> jcInfoList = new ArrayList<>();
|
|
|
|
|
String j1 = Util.null2String(cqMap.get("j1"));
|
|
|
|
|
String j2 = Util.null2String(cqMap.get("j2"));
|
|
|
|
|
String j3 = Util.null2String(cqMap.get("j3"));
|
|
|
|
|
String j4 = Util.null2String(cqMap.get("j4"));
|
|
|
|
|
String j5 = Util.null2String(cqMap.get("j5"));
|
|
|
|
|
String j6 = Util.null2String(cqMap.get("j6"));
|
|
|
|
|
String j7 = Util.null2String(cqMap.get("j7"));
|
|
|
|
|
String j8 = Util.null2String(cqMap.get("j8"));
|
|
|
|
|
String c1 = Util.null2String(cqMap.get("c1"));
|
|
|
|
|
String c2 = Util.null2String(cqMap.get("c2"));
|
|
|
|
|
String c3 = Util.null2String(cqMap.get("c3"));
|
|
|
|
|
String c4 = Util.null2String(cqMap.get("c4"));
|
|
|
|
|
String c5 = Util.null2String(cqMap.get("c5"));
|
|
|
|
|
String c6 = Util.null2String(cqMap.get("c6"));
|
|
|
|
|
String c7 = Util.null2String(cqMap.get("c7"));
|
|
|
|
|
String c8 = Util.null2String(cqMap.get("c8"));
|
|
|
|
|
String singIn = "";
|
|
|
|
|
String signOut = "";
|
|
|
|
|
Map<String, String> itemMap;
|
|
|
|
|
if (!j1.equals("") && !c1.equals("")) {
|
|
|
|
|
itemMap = new HashMap<>();
|
|
|
|
|
itemMap.put("signIn", j1.substring(0, 5));
|
|
|
|
|
itemMap.put("signOut", c1.substring(0, 5));
|
|
|
|
|
jcInfoList.add(itemMap);
|
|
|
|
|
} else {
|
|
|
|
|
return jcInfoList;
|
|
|
|
|
}
|
|
|
|
|
if (!j2.equals("") && !c2.equals("")) {
|
|
|
|
|
itemMap = new HashMap<>();
|
|
|
|
|
itemMap.put("signIn", j2.substring(0, 5));
|
|
|
|
|
itemMap.put("signOut", c2.substring(0, 5));
|
|
|
|
|
jcInfoList.add(itemMap);
|
|
|
|
|
} else {
|
|
|
|
|
return jcInfoList;
|
|
|
|
|
}
|
|
|
|
|
if (!j3.equals("") && !c3.equals("")) {
|
|
|
|
|
itemMap = new HashMap<>();
|
|
|
|
|
itemMap.put("signIn", j3.substring(0, 5));
|
|
|
|
|
itemMap.put("signOut", c3.substring(0, 5));
|
|
|
|
|
jcInfoList.add(itemMap);
|
|
|
|
|
} else {
|
|
|
|
|
return jcInfoList;
|
|
|
|
|
}
|
|
|
|
|
if (!j4.equals("") && !c4.equals("")) {
|
|
|
|
|
itemMap = new HashMap<>();
|
|
|
|
|
itemMap.put("signIn", j4.substring(0, 5));
|
|
|
|
|
itemMap.put("signOut", c4.substring(0, 5));
|
|
|
|
|
jcInfoList.add(itemMap);
|
|
|
|
|
} else {
|
|
|
|
|
return jcInfoList;
|
|
|
|
|
}
|
|
|
|
|
if (!j5.equals("") && !c5.equals("")) {
|
|
|
|
|
itemMap = new HashMap<>();
|
|
|
|
|
itemMap.put("signIn", j5.substring(0, 5));
|
|
|
|
|
itemMap.put("signOut", c5.substring(0, 5));
|
|
|
|
|
jcInfoList.add(itemMap);
|
|
|
|
|
} else {
|
|
|
|
|
return jcInfoList;
|
|
|
|
|
}
|
|
|
|
|
if (!j6.equals("") && !c6.equals("")) {
|
|
|
|
|
itemMap = new HashMap<>();
|
|
|
|
|
itemMap.put("signIn", j6.substring(0, 5));
|
|
|
|
|
itemMap.put("signOut", c6.substring(0, 5));
|
|
|
|
|
jcInfoList.add(itemMap);
|
|
|
|
|
} else {
|
|
|
|
|
return jcInfoList;
|
|
|
|
|
}
|
|
|
|
|
if (!j7.equals("") && !c7.equals("")) {
|
|
|
|
|
itemMap = new HashMap<>();
|
|
|
|
|
itemMap.put("signIn", j7.substring(0, 5));
|
|
|
|
|
itemMap.put("signOut", c7.substring(0, 5));
|
|
|
|
|
jcInfoList.add(itemMap);
|
|
|
|
|
} else {
|
|
|
|
|
return jcInfoList;
|
|
|
|
|
}
|
|
|
|
|
if (!j8.equals("") && !c8.equals("")) {
|
|
|
|
|
itemMap = new HashMap<>();
|
|
|
|
|
itemMap.put("signIn", j8.substring(0, 5));
|
|
|
|
|
itemMap.put("signOut", c8.substring(0, 5));
|
|
|
|
|
jcInfoList.add(itemMap);
|
|
|
|
|
} else {
|
|
|
|
|
return jcInfoList;
|
|
|
|
|
for (int i = 1; i <= 8; i++) {
|
|
|
|
|
singIn = Util.null2String(cqMap.get("j" + i));
|
|
|
|
|
signOut = Util.null2String(cqMap.get("c" + i));
|
|
|
|
|
if (!singIn.equals("") && !signOut.equals("")) {
|
|
|
|
|
itemMap = new HashMap<>();
|
|
|
|
|
itemMap.put("signIn", singIn.substring(0, 16));
|
|
|
|
|
itemMap.put("signOut", signOut.substring(0, 16));
|
|
|
|
|
jcInfoList.add(itemMap);
|
|
|
|
|
} else if (singIn.equals("") && signOut.equals("")){
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return jcInfoList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<String> collectKqxmIdsByCq(Map<String, Object> cqMap) {
|
|
|
|
|
List<String> kqxmIdsWithCq = new ArrayList<>();
|
|
|
|
|
String xm1 = Util.null2String(cqMap.get("xm1"));
|
|
|
|
|
String xm2 = Util.null2String(cqMap.get("xm2"));
|
|
|
|
|
String xm3 = Util.null2String(cqMap.get("xm3"));
|
|
|
|
|
String xm4 = Util.null2String(cqMap.get("xm4"));
|
|
|
|
|
String xm5 = Util.null2String(cqMap.get("xm5"));
|
|
|
|
|
String xm6 = Util.null2String(cqMap.get("xm6"));
|
|
|
|
|
String xm7 = Util.null2String(cqMap.get("xm7"));
|
|
|
|
|
String xm8 = Util.null2String(cqMap.get("xm8"));
|
|
|
|
|
if (!xm1.equals("")) {
|
|
|
|
|
kqxmIdsWithCq.add(xm1);
|
|
|
|
|
} else {
|
|
|
|
|
return kqxmIdsWithCq;
|
|
|
|
|
}
|
|
|
|
|
if (!xm2.equals("")) {
|
|
|
|
|
kqxmIdsWithCq.add(xm2);
|
|
|
|
|
} else {
|
|
|
|
|
return kqxmIdsWithCq;
|
|
|
|
|
}
|
|
|
|
|
if (!xm3.equals("")) {
|
|
|
|
|
kqxmIdsWithCq.add(xm3);
|
|
|
|
|
} else {
|
|
|
|
|
return kqxmIdsWithCq;
|
|
|
|
|
}
|
|
|
|
|
if (!xm4.equals("")) {
|
|
|
|
|
kqxmIdsWithCq.add(xm4);
|
|
|
|
|
} else {
|
|
|
|
|
return kqxmIdsWithCq;
|
|
|
|
|
}
|
|
|
|
|
if (!xm5.equals("")) {
|
|
|
|
|
kqxmIdsWithCq.add(xm5);
|
|
|
|
|
} else {
|
|
|
|
|
return kqxmIdsWithCq;
|
|
|
|
|
}
|
|
|
|
|
if (!xm6.equals("")) {
|
|
|
|
|
kqxmIdsWithCq.add(xm6);
|
|
|
|
|
} else {
|
|
|
|
|
return kqxmIdsWithCq;
|
|
|
|
|
}
|
|
|
|
|
if (!xm7.equals("")) {
|
|
|
|
|
kqxmIdsWithCq.add(xm7);
|
|
|
|
|
} else {
|
|
|
|
|
return kqxmIdsWithCq;
|
|
|
|
|
}
|
|
|
|
|
if (!xm8.equals("")) {
|
|
|
|
|
kqxmIdsWithCq.add(xm8);
|
|
|
|
|
} else {
|
|
|
|
|
return kqxmIdsWithCq;
|
|
|
|
|
String xmId = "";
|
|
|
|
|
for (int i = 1; i <= 8; i++) {
|
|
|
|
|
xmId = Util.null2String(cqMap.get("xm" + i));
|
|
|
|
|
if (!xmId.equals("")) {
|
|
|
|
|
kqxmIdsWithCq.add(xmId);
|
|
|
|
|
} else {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return kqxmIdsWithCq;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|