考勤,请假流程提交节点校验action增加请假次数不足的判断

zm_dev
sy 11 months ago
parent 507d909a8f
commit faeff4269a

@ -337,6 +337,8 @@ public class AttendanceSummaryServiceImpl extends Service implements AttendanceS
}catch (Exception e){
bs.writeLog(e);
retmap.put("errorMessage", e.getMessage());
return retmap;
}
return retmap;
}

@ -13,6 +13,7 @@ import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -89,10 +90,93 @@ public class AskForLeaveWorkFlowSubmitAction implements Action {
return Action.FAILURE_AND_CONTINUE;
}
/**
*
*
*/
String jqedSql = "select eddw, dczskxsc, edbxdcxw from uf_jcl_kq_jqed where jb = ?";
Map<String, Object> jqedInfo = DbTools.getSqlToMap(jqedSql, jqlx);
//假期额度的额度单位0-天、1-小时
String eddw = Util.null2String(jqedInfo.get("eddw"));
String eddwValue = "";
//单次最小休时长
String minDuration = Util.null2String(jqedInfo.get("dczskxsc"));
//请假时长qjsc
String qjsc = Util.null2String(mainTableData.get("qjsc"));
//请假时长单位scdw0-天、1-小时
String scdw = Util.null2String(mainTableData.get("scdw"));
String scdwValue = "";
if (!"".equals(eddw) && !"".equals(minDuration)) {
double minDurationValue = Double.parseDouble(minDuration);
if (eddw.equals(AccountingUnitEnum.DAY.getKey())) {
minDurationValue = minDurationValue * 8;
eddwValue = AccountingUnitEnum.DAY.getValue();
} else {
eddwValue = AccountingUnitEnum.HOUR.getValue();
}
double qjscValue = "".equals(qjsc) ? 0 : Double.parseDouble(qjsc);
if (scdw.equals(AccountingUnitEnum.DAY.getKey())) {
qjscValue = qjscValue * 8;
scdwValue = AccountingUnitEnum.DAY.getValue();
} else {
scdwValue = AccountingUnitEnum.HOUR.getValue();
}
if (Double.compare(minDurationValue, qjscValue) > 0) {
String message = "请假时长" + qjsc + eddwValue + ",不能小于单次最小休时长" + minDuration + scdwValue;
log.error(message);
requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222");
requestInfo.getRequestManager().setMessagecontent(message);
return Action.FAILURE_AND_CONTINUE;
}
}
/**
*
*/
//先获取假期额度规则中指定假别的可休次数
String allowLeaveNumStr = Util.null2String(jqedInfo.get("edbxdcxw"));
String sql = "select id,jqid,sxrq,ktsc,yxsc,wxsc,yqsxrq,ztsc from uf_jcl_kq_jqye where ygid=? and jqid=? and sxrq<=? and yqsxrq>=? order by sxrq";
List<Map<String, Object>> holidayBalanceList = DbTools.getSqlToList(sql, qjry, jqlx, firstStartDate, firstStartDate);
if (!allowLeaveNumStr.equals("") && holidayBalanceList.size() > 0) {
//查询请假记录中人员id+假期类别id情况下的结果遍历每条主表数据下的明细数据中使用了哪些假期余额id
sql = "select a.id,dt2.jqye from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 dt1 on dt1.mainid = a.id left join uf_jcl_kq_qjjl_dt2 dt2 on dt2.glmxid = dt1.glmxid " +
"where a.jqlx = " + jqlx + " and qjry = " + qjry + " and a.cxqj = 0 and dt1.cxqj = 0 and a.jlzt in (0, 1) and dt1.glmxid is not null";
List<Map<String, Object>> leaveList = DbTools.getSqlToList(sql);
Map<String, Integer> jqyeUseNumInfo = new HashMap<>();
List<String> leaveUseList = new ArrayList<>();
Integer useNum = 0;
for (Map<String, Object> leaveItem : leaveList) {
String jqyeId = Util.null2String(leaveItem.get("jqye"));
if (!"".equals(jqyeId)) {
String leaveInfo = leaveItem.get("id").toString() + "_" + jqyeId;
if (leaveUseList.size() == 0) {
leaveUseList.add(leaveInfo);
jqyeUseNumInfo.put(jqyeId, 1);
} else if (!leaveUseList.contains(leaveInfo)) {
leaveUseList.add(leaveInfo);
useNum = jqyeUseNumInfo.get(jqyeId);
jqyeUseNumInfo.put(jqyeId, useNum == null ? 1 : ++useNum);
}
}
}
//筛选次数未使用完的假期余额
holidayBalanceList = holidayBalanceList.stream().filter(f -> {
int beforeUseNum = jqyeUseNumInfo.get(f.get("id").toString()) == null ? 0 : jqyeUseNumInfo.get(f.get("id").toString());
return Integer.parseInt(allowLeaveNumStr) > beforeUseNum;
}).collect(Collectors.toList());
if (holidayBalanceList.size() == 0) {
String message = "本次使用的假期类型下的假期余额可休次数不足!";
log.error(message);
requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222");
requestInfo.getRequestManager().setMessagecontent(message);
return Action.FAILURE_AND_CONTINUE;
}
}
/**
*
*/
// String sql = "select id,jqid,sxrq,ktsc,yxsc,wxsc,yqsxrq,ztsc from uf_jcl_kq_jqye where ygid=? and jqid=? and sxrq<=? and yqsxrq>=? order by sxrq";
// List<Map<String, Object>> holidayBalanceList = DbTools.getSqlToList(sql, qjry, jqlx, firstStartDate, firstStartDate);
Map<String, Object> holidayBalanceMap = holidayBalanceList.stream().collect(Collectors.toMap(e -> e.get("id").toString(), e -> e));
sql = "select id,mc,hsdw,hsl,jcbyxsyqjb,yxsydjb,qzsyyxjb from uf_jcl_kq_kqxm where id=?";
Map<String, Object> holidayItem = DbTools.getSqlToMap(sql, jqlx);
@ -153,45 +237,6 @@ public class AskForLeaveWorkFlowSubmitAction implements Action {
}
log.info("detailTable2 : [{}]", detailTable2);
/**
*
*/
String jqedSql = "select eddw, dczskxsc from uf_jcl_kq_jqed where jb = ?";
Map<String, Object> jqedInfo = DbTools.getSqlToMap(jqedSql, jqlx);
//假期额度的额度单位0-天、1-小时
String eddw = Util.null2String(jqedInfo.get("eddw"));
String eddwValue = "";
//单次最小休时长
String minDuration = Util.null2String(jqedInfo.get("dczskxsc"));
//请假时长qjsc
String qjsc = Util.null2String(mainTableData.get("qjsc"));
//请假时长单位scdw0-天、1-小时
String scdw = Util.null2String(mainTableData.get("scdw"));
String scdwValue = "";
if (!"".equals(eddw) && !"".equals(minDuration)) {
double minDurationValue = Double.parseDouble(minDuration);
if (eddw.equals(AccountingUnitEnum.DAY.getKey())) {
minDurationValue = minDurationValue * 8;
eddwValue = AccountingUnitEnum.DAY.getValue();
} else {
eddwValue = AccountingUnitEnum.HOUR.getValue();
}
double qjscValue = "".equals(qjsc) ? 0 : Double.parseDouble(qjsc);
if (scdw.equals(AccountingUnitEnum.DAY.getKey())) {
qjscValue = qjscValue * 8;
scdwValue = AccountingUnitEnum.DAY.getValue();
} else {
scdwValue = AccountingUnitEnum.HOUR.getValue();
}
if (Double.compare(minDurationValue, qjscValue) > 0) {
String message = "请假时长" + qjsc + eddwValue + ",不能小于单次最小休时长" + minDuration + scdwValue;
log.error(message);
requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222");
requestInfo.getRequestManager().setMessagecontent(message);
return Action.FAILURE_AND_CONTINUE;
}
}
//更新流程明细表2
String delteSql = "delete from " + detail2TableName + " where mainid=?";
DbTools.update(delteSql, requestid);

Loading…
Cancel
Save