考勤,请假流程节点action类逻辑修改,增加需要校验假期额度的假期类型筛选

zm_dev
sy 1 year ago
parent 20d8957f59
commit 3c82054b63

@ -35,6 +35,8 @@ public class AskForLeaveWorkFlowArchivingAction implements Action {
String qjry = mainTableData.get("qjry"); String qjry = mainTableData.get("qjry");
//实际假期类型 //实际假期类型
String jqlx = mainTableData.get("sjqjlx"); String jqlx = mainTableData.get("sjqjlx");
//需要校验假期额度的假期类型
List<String> checkAmountJqIdList = CommonUtil.getJqInfoWithAmount();
//第一笔开始时间 //第一笔开始时间
String firstStartDate = detailTableData.get(0).get("ksrq"); String firstStartDate = detailTableData.get(0).get("ksrq");
@ -46,36 +48,40 @@ public class AskForLeaveWorkFlowArchivingAction implements Action {
try { try {
Map<String,Object> balanceMap = Maps.newHashMap(); //当前假期类型需要校验剩余额度时则更新假期余额,否则跳过
for (Map<String, String> data : detailTable2){ if (checkAmountJqIdList.contains(jqlx)) {
String jqye = Util.null2String(data.get("jqye")); Map<String,Object> balanceMap = Maps.newHashMap();
double sysc = Double.valueOf(data.get("sysc").toString()); for (Map<String, String> data : detailTable2){
double havedSysc= balanceMap.get(jqye) ==null?0:Double.valueOf(balanceMap.get(jqye).toString()); String jqye = Util.null2String(data.get("jqye"));
sysc = Utils.add(sysc,havedSysc); double sysc = Double.valueOf(data.get("sysc").toString());
balanceMap.put(jqye,sysc); double havedSysc= balanceMap.get(jqye) ==null?0:Double.valueOf(balanceMap.get(jqye).toString());
} sysc = Utils.add(sysc,havedSysc);
balanceMap.put(jqye,sysc);
}
for (Map.Entry<String,Object> entry:balanceMap.entrySet()){ for (Map.Entry<String,Object> entry:balanceMap.entrySet()){
String id = entry.getKey(); String id = entry.getKey();
double ztsc = Double.valueOf(entry.getValue().toString()); double ztsc = Double.valueOf(entry.getValue().toString());
Map<String,Object> map = (Map<String,Object>)holidayBalanceMap.get(id); Map<String,Object> map = (Map<String,Object>)holidayBalanceMap.get(id);
double havedztsc = Util.null2String(map.get("ztsc")).equals("") ? 0 : Double.valueOf(map.get("ztsc").toString()); double havedztsc = Util.null2String(map.get("ztsc")).equals("") ? 0 : Double.valueOf(map.get("ztsc").toString());
double havedyxsc = Util.null2String(map.get("yxsc")).equals("") ? 0 : Double.valueOf(map.get("yxsc").toString()); double havedyxsc = Util.null2String(map.get("yxsc")).equals("") ? 0 : Double.valueOf(map.get("yxsc").toString());
double updatedztsc = Utils.subtract(havedztsc,ztsc); double updatedztsc = Utils.subtract(havedztsc,ztsc);
double updatedwxsc = Utils.add(havedyxsc,ztsc); double updatedwxsc = Utils.add(havedyxsc,ztsc);
String updateSql = "update uf_jcl_kq_jqye set yxsc=?,ztsc=? where id=?"; String updateSql = "update uf_jcl_kq_jqye set yxsc=?,ztsc=? where id=?";
if (!DbTools.update(updateSql,updatedwxsc,updatedztsc,id)){ if (!DbTools.update(updateSql,updatedwxsc,updatedztsc,id)){
//更新假期余额失败 //更新假期余额失败
String message = "更新假期余额失败"; String message = "更新假期余额失败";
log.error(message); log.error(message);
requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222"); requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222");
requestInfo.getRequestManager().setMessagecontent(message); requestInfo.getRequestManager().setMessagecontent(message);
return Action.FAILURE_AND_CONTINUE; return Action.FAILURE_AND_CONTINUE;
}
} }
} }
}catch (Exception e){ }catch (Exception e){
log.error("AskForLeaveWorkFlowSubmitAction error : [{}]",e); log.error("AskForLeaveWorkFlowSubmitAction error : [{}]",e);
return Action.FAILURE_AND_CONTINUE; return Action.FAILURE_AND_CONTINUE;

@ -41,6 +41,8 @@ public class AskForLeaveWorkFlowSubmitAction implements Action {
String qjry = mainTableData.get("qjry"); String qjry = mainTableData.get("qjry");
//实际假期类型 //实际假期类型
String jqlx = mainTableData.get("sjqjlx"); String jqlx = mainTableData.get("sjqjlx");
//需要校验假期额度的假期类型
List<String> checkAmountJqIdList = CommonUtil.getJqInfoWithAmount();
//第一笔开始时间 //第一笔开始时间
String firstStartDate = detailTableData.get(0).get("ksrq"); String firstStartDate = detailTableData.get(0).get("ksrq");
@ -92,73 +94,70 @@ public class AskForLeaveWorkFlowSubmitAction implements Action {
return Action.FAILURE_AND_CONTINUE; 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"; 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); 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)); 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=?"; sql = "select id,mc,hsdw,hsl,jcbyxsyqjb,yxsydjb,qzsyyxjb from uf_jcl_kq_kqxm where id=?";
Map<String, Object> holidayItem = DbTools.getSqlToMap(sql, jqlx); Map<String, Object> holidayItem = DbTools.getSqlToMap(sql, jqlx);
//当前假期类型需要校验剩余额度时则校验假期剩余额度,否则跳过校验
//假期核算单位 if (checkAmountJqIdList.contains(jqlx)) {
String hsdw = Util.null2String(holidayItem.get("hsdw")); //假期核算单位
//请假方式 String hsdw = Util.null2String(holidayItem.get("hsdw"));
String cxjqj = mainTableData.get("cxjqj"); //请假方式
String cxjqj = mainTableData.get("cxjqj");
for (Map<String, String> detailData : detailTableData) {
String ksrq = detailData.get("ksrq"); for (Map<String, String> detailData : detailTableData) {
//请假时间 String ksrq = detailData.get("ksrq");
double leaveDuration = 0; //请假时间
if (cxjqj.equals(AskAndEvctionWayEnum.ALLDAY.getKey())) { double leaveDuration = 0;
leaveDuration = 1; if (cxjqj.equals(AskAndEvctionWayEnum.ALLDAY.getKey())) {
} else if (cxjqj.equals(AskAndEvctionWayEnum.HALFDAY.getKey())) { leaveDuration = 1;
leaveDuration = 0.5; } else if (cxjqj.equals(AskAndEvctionWayEnum.HALFDAY.getKey())) {
} else if (cxjqj.equals(AskAndEvctionWayEnum.TIME_INTERVAL.getKey()) || cxjqj.equals(AskAndEvctionWayEnum.HOUR.getKey())) { leaveDuration = 0.5;
leaveDuration = Double.valueOf(Util.null2String(detailData.get("qjsc"))); } else if (cxjqj.equals(AskAndEvctionWayEnum.TIME_INTERVAL.getKey()) || cxjqj.equals(AskAndEvctionWayEnum.HOUR.getKey())) {
} leaveDuration = Double.valueOf(Util.null2String(detailData.get("qjsc")));
if (hsdw.equals(AccountingUnitEnum.HOUR.getKey()) && (cxjqj.equals(AskAndEvctionWayEnum.ALLDAY.getKey()) || cxjqj.equals(AskAndEvctionWayEnum.HALFDAY.getKey()))) { }
leaveDuration = leaveDuration * 8; if (hsdw.equals(AccountingUnitEnum.HOUR.getKey()) && (cxjqj.equals(AskAndEvctionWayEnum.ALLDAY.getKey()) || cxjqj.equals(AskAndEvctionWayEnum.HALFDAY.getKey()))) {
} leaveDuration = leaveDuration * 8;
log.info("leaveDuration : [{}]", leaveDuration); }
List<Map<String, Object>> holidayBalancefilterList = holidayBalanceList.stream().filter(e -> DateUtil.getTime(e.get("yqsxrq").toString()).compareTo(DateUtil.getTime(ksrq)) >= 0).collect(Collectors.toList()); log.info("leaveDuration : [{}]", leaveDuration);
for (Map<String, Object> holidayBalance : holidayBalancefilterList) { List<Map<String, Object>> holidayBalancefilterList = holidayBalanceList.stream().filter(e -> DateUtil.getTime(e.get("yqsxrq").toString()).compareTo(DateUtil.getTime(ksrq)) >= 0).collect(Collectors.toList());
//额定未休时长 for (Map<String, Object> holidayBalance : holidayBalancefilterList) {
double wxsc = holidayBalance.get("wxsc") == null ? 0 : Double.valueOf(holidayBalance.get("wxsc").toString()); //额定未休时长
if (leaveDuration > 0) { double wxsc = Util.null2String(holidayBalance.get("wxsc")).equals("") ? 0 : Double.valueOf(holidayBalance.get("wxsc").toString());
Map<String, Object> detail2Map = Maps.newHashMap(); if (leaveDuration > 0) {
detail2Map.put("glmxid", detailData.get("id")); Map<String, Object> detail2Map = Maps.newHashMap();
detail2Map.put("jqye", holidayBalance.get("id")); detail2Map.put("glmxid", detailData.get("id"));
detail2Map.put("mainid", mainTableData.get("id")); detail2Map.put("jqye", holidayBalance.get("id"));
detail2Map.put("glrq", detailData.get("ksrq")); detail2Map.put("mainid", mainTableData.get("id"));
if (leaveDuration > wxsc) { detail2Map.put("glrq", detailData.get("ksrq"));
detail2Map.put("sysc", wxsc); if (leaveDuration > wxsc) {
leaveDuration = Utils.subtract(leaveDuration, wxsc); detail2Map.put("sysc", wxsc);
wxsc = 0; leaveDuration = Utils.subtract(leaveDuration, wxsc);
} else { wxsc = 0;
detail2Map.put("sysc", leaveDuration); } else {
leaveDuration = 0; detail2Map.put("sysc", leaveDuration);
wxsc = Utils.subtract(wxsc, leaveDuration); leaveDuration = 0;
wxsc = Utils.subtract(wxsc, leaveDuration);
}
detailTable2.add(detail2Map);
holidayBalance.put("wxsc", wxsc);
} }
detailTable2.add(detail2Map);
holidayBalance.put("wxsc", wxsc);
} }
} if (leaveDuration > 0) {
if (leaveDuration > 0) { //假期余额不足
//假期余额不足 String message = ksrq + "对应的" + holidayItem.get("mc") + "假期余额不足!";
String message = ksrq + "对应的" + holidayItem.get("mc") + "假期余额不足!"; log.error(message);
log.error(message); requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222");
requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); requestInfo.getRequestManager().setMessagecontent(message);
requestInfo.getRequestManager().setMessagecontent(message); return Action.FAILURE_AND_CONTINUE;
return Action.FAILURE_AND_CONTINUE; }
} }
} }
log.info("detailTable2 : [{}]", detailTable2); log.info("detailTable2 : [{}]", detailTable2);
//更新流程明细表2 //更新流程明细表2
@ -173,36 +172,40 @@ public class AskForLeaveWorkFlowSubmitAction implements Action {
return Action.FAILURE_AND_CONTINUE; return Action.FAILURE_AND_CONTINUE;
} }
//更新假期余额在途时长 //当前假期类型需要校验剩余额度时则更新假期余额在途时长,否则跳过
Map<String, Object> balanceMap = Maps.newHashMap(); if (checkAmountJqIdList.contains(jqlx)) {
for (Map<String, Object> data : detailTable2) { //更新假期余额在途时长
String jqye = Util.null2String(data.get("jqye")); Map<String, Object> balanceMap = Maps.newHashMap();
double sysc = Double.valueOf(data.get("sysc").toString()); for (Map<String, Object> data : detailTable2) {
double havedSysc = balanceMap.get(jqye) == null ? 0 : Double.valueOf(balanceMap.get(jqye).toString()); String jqye = Util.null2String(data.get("jqye"));
sysc = Utils.add(sysc, havedSysc); double sysc = Double.valueOf(data.get("sysc").toString());
balanceMap.put(jqye, sysc); double havedSysc = balanceMap.get(jqye) == null ? 0 : Double.valueOf(balanceMap.get(jqye).toString());
} sysc = Utils.add(sysc, havedSysc);
for (Map.Entry<String, Object> entry : balanceMap.entrySet()) { balanceMap.put(jqye, sysc);
String id = entry.getKey(); }
double ztsc = Double.valueOf(entry.getValue().toString()); for (Map.Entry<String, Object> entry : balanceMap.entrySet()) {
Map<String, Object> map = (Map<String, Object>) holidayBalanceMap.get(id); String id = entry.getKey();
double ztsc = Double.valueOf(entry.getValue().toString());
double havedztsc = Util.null2String(map.get("ztsc")).equals("") ? 0 : Double.valueOf(map.get("ztsc").toString()); Map<String, Object> map = (Map<String, Object>) holidayBalanceMap.get(id);
double havedwxsc = Util.null2String(map.get("wxsc")).equals("") ? 0 : Double.valueOf(map.get("wxsc").toString());
double havedztsc = Util.null2String(map.get("ztsc")).equals("") ? 0 : Double.valueOf(map.get("ztsc").toString());
double updatedztsc = Utils.add(havedztsc, ztsc); double havedwxsc = Util.null2String(map.get("wxsc")).equals("") ? 0 : Double.valueOf(map.get("wxsc").toString());
double updatedwxsc = Utils.subtract(havedwxsc, ztsc);
double updatedztsc = Utils.add(havedztsc, ztsc);
String updateSql = "update uf_jcl_kq_jqye set wxsc=?,ztsc=? where id=?"; double updatedwxsc = Utils.subtract(havedwxsc, ztsc);
if (!DbTools.update(updateSql, updatedwxsc, updatedztsc, id)) {
//更新假期余额失败 String updateSql = "update uf_jcl_kq_jqye set wxsc=?,ztsc=? where id=?";
String message = "更新假期余额失败"; if (!DbTools.update(updateSql, updatedwxsc, updatedztsc, id)) {
log.error(message); //更新假期余额失败
requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); String message = "更新假期余额失败";
requestInfo.getRequestManager().setMessagecontent(message); log.error(message);
return Action.FAILURE_AND_CONTINUE; requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222");
requestInfo.getRequestManager().setMessagecontent(message);
return Action.FAILURE_AND_CONTINUE;
}
} }
} }
}catch (Exception e){ }catch (Exception e){
log.error("AskForLeaveWorkFlowSubmitAction error : [{}]",e); log.error("AskForLeaveWorkFlowSubmitAction error : [{}]",e);
return Action.FAILURE_AND_CONTINUE; return Action.FAILURE_AND_CONTINUE;

@ -425,5 +425,28 @@ public class CommonUtil {
return empIdList; return empIdList;
} }
/**
* 使
* @return
*/
public static List<String> getJqInfoWithAmount() {
List<String> jqIdList = new ArrayList<>();
//来自假期额度
String sql1 = "select * from uf_jcl_kq_jqed";
List<Map<String,Object>> data1 = DbTools.getSqlToList(sql1);
for (Map<String, Object> map : data1) {
jqIdList.add(Util.null2String(map.get("id")));
}
//来自加班类型的考勤项目中关联的假期类型
String sql2 = "select * from uf_jcl_kq_kqxm where xmlx = 4 and jbzdzjqye = 1";
List<Map<String,Object>> data2 = DbTools.getSqlToList(sql2);
for (Map<String, Object> map : data2) {
String jqId = Util.null2String(map.get("zrdjb"));
if (!"".equals(jqId)) {
jqIdList.add(jqId);
}
}
jqIdList = jqIdList.stream().distinct().collect(Collectors.toList());
return jqIdList;
}
} }

Loading…
Cancel
Save