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

zm_dev
sy 12 months ago
parent 20d8957f59
commit 3c82054b63

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

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

@ -425,5 +425,28 @@ public class CommonUtil {
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