考勤-批量请假,明细表1数据生成按钮接口逻辑优化,增加姓名和假期名称返回

zm_dev
sy 11 months ago
parent abf310ecd3
commit 9b526d31a7

@ -182,6 +182,8 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
//获取填写的请假类型关联的考勤项目
String sql = "select id,mc,hsdw,hsl,jcbyxsyqjb,yxsydjb,qzsyyxjb,zdycbcndfgzsd,zdycrqqjndxxb from uf_jcl_kq_kqxm where id=?";
Map<String,Object> holidayItem = DbTools.getSqlToMap(sql,leaveType);
//勾选假期类型名称
String checkItemName = Util.null2String(holidayItem.get("mc"));
//判断是否需要自动移除时间区间内的非工作时长、自动移除日期区间内的休息日
boolean removeNonWorkTimeRange = "1".equals(Util.null2String(holidayItem.get("zdycbcndfgzsd")));
boolean removeNonWorkDayRange = "1".equals(Util.null2String(holidayItem.get("zdycrqqjndxxb")));
@ -213,11 +215,15 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
List<Map<String,String>> detailListItem;
//判断考勤项目是否需要强制使用“优先使用项目”
if (useFirstItemSign) {
//勾选假期类型名称
String firstItemName = Util.null2String(holidayPriorityItem.get("mc"));
//2-收集优先使用的项目关联的可使用的余额才能够生成请假明细可使用的条件为a-满足最小使用时长b-满足使用次数上限c-存在未休时长
List<Map<String, Object>> canUseFirstJqyeInfo = collectUsableHolidayBalance(unableUseJqyeIdList, editedUseJqed, holidayPriorityItem.get("id").toString(), startDate, entry.getKey());
detailListItem = matchHolidayBalance(editedLeaveInfo, checkAmountJqIdList, errorMessage, entry.getKey(), empIdToName.get(entry.getKey()), canUseCheckJqyeInfo, canUseFirstJqyeInfo, editedUseJqed, editedUseJqlxWithEmp, entry.getValue(), leaveType, holidayPriorityItem.get("id").toString());
detailListItem = matchHolidayBalance(editedLeaveInfo, checkAmountJqIdList, errorMessage, entry.getKey(), empIdToName.get(entry.getKey()), canUseCheckJqyeInfo, canUseFirstJqyeInfo, editedUseJqed,
editedUseJqlxWithEmp, entry.getValue(), leaveType, holidayPriorityItem.get("id").toString(), checkItemName, firstItemName);
} else {
detailListItem = matchHolidayBalance(editedLeaveInfo, checkAmountJqIdList, errorMessage, entry.getKey(), empIdToName.get(entry.getKey()), canUseCheckJqyeInfo, null, editedUseJqed, editedUseJqlxWithEmp, entry.getValue(), leaveType, null);
detailListItem = matchHolidayBalance(editedLeaveInfo, checkAmountJqIdList, errorMessage, entry.getKey(), empIdToName.get(entry.getKey()), canUseCheckJqyeInfo, null, editedUseJqed,
editedUseJqlxWithEmp, entry.getValue(), leaveType, null, checkItemName, null);
}
if (detailListItem.size() > 0) {
completeLeaveDetailList.addAll(detailListItem);
@ -453,7 +459,8 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
*/
private List<Map<String, String>> matchHolidayBalance(Map<String, String> editedLeaveInfo, List<String> checkAmountJqIdList, List<String> errorMessage, String empId, String empName,
List<Map<String, Object>> canUseCheckJqyeInfo, List<Map<String, Object>> canUseFirstJqyeInfo, Map<String, Double> editedUseJqed,
Map<String, Double> editedUseJqlxWithEmp,List<Map<String, String>> leaveDetailList, String checkItemId, String firstItemId) {
Map<String, Double> editedUseJqlxWithEmp,List<Map<String, String>> leaveDetailList, String checkItemId, String firstItemId,
String checkItemName, String firstItemName) {
List<Map<String, String>> result = new ArrayList<>();
//记录分配假期余额的结果
boolean matchResultSign = true;
@ -497,6 +504,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
String ksrq = Util.null2String(detailData.get("ksrq"));
String qtj = Util.null2String(detailData.get("qtj"));
String btj = Util.null2String(detailData.get("btj"));
detailData.put("qjrName", empName);
//请假时间
double leaveDuration;
if (qtj.equals(CheckBoxEnum.CHECKED.getKey())) {
@ -524,6 +532,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
//存在优先使用假期类型时,且该假期类型不需要进行额度校验
if (firstItemNonCheck && !firstItemEditedDetail) {
detailData.put("qjlx", firstItemId);
detailData.put("qjlxName", firstItemName);
detailData.put("qjsc", String.valueOf(leaveDuration));
result.add(detailData);
continue;
@ -531,6 +540,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
//不存在优先使用假期类型时,勾选的假期类型不需要进行额度校验
if (firstItemId == null && checkItemNonCheck && !checkItemEditedDetail) {
detailData.put("qjlx", checkItemId);
detailData.put("qjlxName", checkItemName);
detailData.put("qjsc", String.valueOf(leaveDuration));
result.add(detailData);
continue;
@ -539,7 +549,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
leaveDurationMap.put("leaveDuration", leaveDuration);
//存在优先使用假期类型时,但是需要进行额度校验
if (canUseFirstJqyeInfo != null && canUseFirstJqyeInfo.size() > 0 && firstItemHaveDuration && !firstItemEditedDetail) {
dealLeaveDetailWithJqyeInfo(detailData, canUseFirstJqyeInfo, editedUseJqed, leaveDurationMap, ksrq, firstItemId, result);
dealLeaveDetailWithJqyeInfo(detailData, canUseFirstJqyeInfo, editedUseJqed, leaveDurationMap, ksrq, firstItemId, firstItemName, result);
if (leaveDurationMap.get("leaveDuration") == 0) {
//如果同假期类型出现多假期余额拼接配置一条请假明细时,请假明细的时长需要重新设置下
//请假明细初始要求时长已配置完成则赋值为初始请假时长,否则为初始时长-剩余未配置时长
@ -557,6 +567,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
if (!"".equals(Util.null2String(detailData.get("qjlx")))) {
result.add(new HashMap<>(detailData));
detailData.remove("qjlx");
detailData.remove("qjlxName");
detailData.remove("qjsc");
detailData.remove("jqye");
}
@ -564,6 +575,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
//勾选的假期类型不需要进行额度校验
if (checkItemNonCheck && !checkItemEditedDetail) {
detailData.put("qjlx", checkItemId);
detailData.put("qjlxName", checkItemName);
detailData.put("qjsc", String.valueOf(leaveDurationMap.get("leaveDuration")));
leaveDurationMap.put("totalLeaveDuration", Utils.subtract(leaveDurationMap.get("totalLeaveDuration"), leaveDurationMap.get("leaveDuration")));
result.add(detailData);
@ -571,7 +583,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
}
//勾选的假期类型需要进行额度校验
if (!checkItemEditedDetail) {
dealLeaveDetailWithJqyeInfo(detailData, canUseCheckJqyeInfo, editedUseJqed, leaveDurationMap, ksrq, checkItemId, result);
dealLeaveDetailWithJqyeInfo(detailData, canUseCheckJqyeInfo, editedUseJqed, leaveDurationMap, ksrq, checkItemId, checkItemName, result);
}
if (leaveDurationMap.get("leaveDuration") > 0) {
String message = empName;
@ -591,7 +603,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
private void dealLeaveDetailWithJqyeInfo(Map<String, String> detailData, List<Map<String, Object>> canUseJqyeInfo,
Map<String, Double> editedUseJqed, Map<String, Double> leaveDurationMap,
String ksrq, String itemId, List<Map<String, String>> result) {
String ksrq, String itemId, String itemName, List<Map<String, String>> result) {
double totalLeaveDuration = leaveDurationMap.get("totalLeaveDuration");
double leaveDuration = leaveDurationMap.get("leaveDuration");
//假期类型相关的假期余额记录
@ -601,6 +613,9 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
holidayBalancefilterList.add(map);
}
}
if (holidayBalancefilterList.size() == 0) {
return;
}
//使用的假期类型的额度单位
String eddw = Util.null2String(holidayBalancefilterList.get(0).get("eddw"));
int multipleNum = eddw.equals(AccountingUnitEnum.DAY.getKey()) ? 8 : 1;
@ -621,6 +636,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
wxsc = multipleNum * wxsc;
if (leaveDuration > 0 && wxsc > 0) {
detailData.put("qjlx", itemId);
detailData.put("qjlxName", itemName);
String jqyeId = Util.null2String(detailData.get("jqye"));
if (leaveDuration > wxsc) {
detailData.put("qjsc", String.valueOf(wxsc));

Loading…
Cancel
Save