diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java index 47a88e8..ade5058 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java @@ -122,7 +122,7 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand> { } sql = sql.substring(0,sql.length()-1) +" where ygid=? and rq=?"; - log.info("update sql : {}",sql); + log.debug("update sql : {}",sql); DbTools.update(sql,userId,analysisDate); }else { sql = "select subcompanyid1,departmentid,jobtitle from hrmresource where id=?"; @@ -170,8 +170,8 @@ public class RecordDataCmd extends AbstractCommonCommand> { } value = value.substring(0,value.length()-1); sql = sql +cloumns +") values ("+value+")"; - log.info("insert sql : {}",sql); - log.info("insert data : {}",insertDatas); + log.debug("insert sql : {}",sql); + log.debug("insert data : {}",insertDatas); DbTools.update(sql,insertDatas.toArray()); } diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java index 5a35837..a046516 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java @@ -241,14 +241,14 @@ public class GetClockInPointCmd extends AbstractCommonCommand clcokInPointList = getClockInPoint(analysisDate, scheduleResult, clockInTimeList,needClockDateList); - log.info("clcokInPointList :[{}]",clcokInPointList); + log.debug("clcokInPointList :[{}]",clcokInPointList); resultMap.put("clcokInPointList", clcokInPointList); resultMap.put("scheduleResult",scheduleResult); resultMap.put("clockInTimeList",clockInTimeList); diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.java index 8a7773e..b9afa9f 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.java @@ -122,7 +122,7 @@ public class MergeApairClockPoint extends AbstractAdjustClockPointAction { } adjustClcokInPointList.addAll(clcokInPointList); - log.info("MergeApairClockPoint : [{}]",adjustClcokInPointList); + log.debug("MergeApairClockPoint : [{}]",adjustClcokInPointList); return adjustClcokInPointList; } diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java index d349a00..73b68c8 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java @@ -252,7 +252,12 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand resultMap = Maps.newHashMap(); - if (params.get("beSplit") == null || !(boolean)params.get("beSplit")){ + if ((params.get("beSplit") == null || !(boolean)params.get("beSplit")) && xzzjbsc.equals(CheckBoxEnum.CHECKED.getKey())){ if (!"".equals(jbqsfzs)){ if (jbsc < Integer.valueOf(jbqsfzs)){ //小于最小加班分钟数不算加班 @@ -132,6 +134,9 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand maxWeekTime){ jbsc = maxWeekTime-weekTime; } + if (jbsc <0){ + jbsc = 0; + } } if ("2".equals(ccclfs) && !"".equals(yzdjbxss)){ //每月最大加班数 @@ -143,6 +148,10 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand clockPointDTOS = action.execute(clockPointInfo); clockPointInfo.setClcokInPointList(clockPointDTOS); } - log.info("after adjustClockPointAction : [{}]",clockPointInfo.getClcokInPointList()); + log.debug("after adjustClockPointAction : [{}]",clockPointInfo.getClcokInPointList()); return clockPointInfo.getClcokInPointList(); } diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java index bb9b3b3..0f1fe47 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java @@ -82,6 +82,9 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ Map overTimeDuraionMap = commandExecutor.execute(new GetOvertimeDurationCmd(params)); String realityStartTime = Util.null2String(overTimeDuraionMap.get("realityStartTime")); String realityEndime = Util.null2String(overTimeDuraionMap.get("realityEndime")); + if ("".equals(realityStartTime) || "".equals(realityEndime)){ + continue; + } //获得加班时长以及加班开始时间和结束时间 params.putAll(overTimeDuraionMap); //获得加班项目 diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java index cf8e165..a8b77dd 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java @@ -46,10 +46,11 @@ public class AttendanceanalysisAction { @Produces({"text/plain"}) public String getSchedulingData(@Context HttpServletRequest request, @Context HttpServletResponse response) { try { + log.info("********AttendanceAnalysisJob start********"); Map paramMap = ParamUtil.request2Map(request); // Map paramMap = Maps.newHashMap(); -// paramMap.put("startDate","2024-08-05"); -// paramMap.put("endDate","2024-08-05"); +// paramMap.put("startDate","2024-08-11"); +// paramMap.put("endDate","2024-08-11"); // paramMap.put("userIds","81"); String startDate = Util.null2String(paramMap.get("startDate")); @@ -191,6 +192,7 @@ public class AttendanceanalysisAction { paramMap.put("empIds",paramMap.get("userIds")); allowanceService.addAllowanceRecords(paramMap); } + log.info("********AttendanceAnalysisJob start********"); return null; }catch (Exception e){ log.error("execute fail,catch error: [{}]",e); diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java index 0f0de16..ec25665 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java @@ -41,9 +41,8 @@ public class AttendanceAnalysisWrapper extends Service { * @param attendanceItems 考勤项目 */ public void attendanceAnalysis(String userId, List analysisDateList, List> dataList, List> attendanceItems, List> workHourItems, Map> clockInTimeMap, Map>> attendaceResultMap) { - log.info("***********analysis userId:{} start***********", userId); - log.info("***********analysisDate:{}", analysisDateList); - log.info("clockInTimeDate : [{}]", dataList); + log.info("***********analysis userId:{} analysisDate:{} start***********", userId,analysisDateList); + log.debug("clockInTimeDate : [{}]", dataList); String beforeTwoDayDateDate = DateUtil.beforeDay(analysisDateList.get(0), 2); /** 打卡数据 */ @@ -97,9 +96,9 @@ public class AttendanceAnalysisWrapper extends Service { * @param attendanceItems 人员考勤项目 */ public void attendanceAnalysisForApi(String userId, String analysisDate, List> dataList, List> attendanceItems, Map schedulMap, List> workHourItems, Map> clockInTimeMap,List> attendaceResult) { - log.info("***********analysis userId:{},analysisDate:{} start***********", userId, analysisDate); - log.info("clockInTimeDate : [{}]", dataList); - log.info("attendaceResult : [{}]",attendaceResult); + log.debug("***********analysis userId:{},analysisDate:{} start***********", userId, analysisDate); + log.debug("clockInTimeDate : [{}]", dataList); + log.debug("attendaceResult : [{}]",attendaceResult); if (attendaceResult!=null && attendaceResult.size()>0 && (CheckBoxEnum.CHECKED.getKey().equals(attendaceResult.get(0).get("sgsj")) || "3".equals(attendaceResult.get(0).get("sjzt")))) { return; @@ -336,7 +335,7 @@ public class AttendanceAnalysisWrapper extends Service { recordParam.put("attendanceDuration", attendanceDuration); recordParam.put("overTimeHolidayList",recordWorkOverTime.get("overTimeHolidayList") == null?Lists.newArrayList():recordWorkOverTime.get("overTimeHolidayList")); recordParam.put("overTimeResultList",recordWorkOverTime.get("overTimeResultList") == null?Lists.newArrayList():recordWorkOverTime.get("overTimeResultList")); - log.info("recordParam : {}", recordParam); + log.debug("recordParam : {}", recordParam); if (abnormalClockInListByEvction.size() > 0) { recordParam.put("cqzt", CheckBoxEnum.CHECKED.getKey()); } else { diff --git a/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java b/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java index 8c3bc58..67e370d 100644 --- a/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java @@ -202,7 +202,7 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService { }else { sql = sql+ " and "+filters; } - log.debug("getPersonnelGroupingByPerson filter sql : {}",sql); + log.debug("getDepartSchedule filter sql : {}",sql); List> dataList = DbTools.getSqlToList(sql); for (Map dataMap :dataList){ String hrmId = Util.null2String(dataMap.get("id")); @@ -210,7 +210,7 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService { } }else if ("2".equals(list_type) && !"".equals(sqltj)){ sqltj = Utils.converSQL(sqltj); - log.info("getPersonnelGroupingByPerson sqltj : [{}]",sqltj); + log.info("getDepartSchedule sqltj : [{}]",sqltj); List> dataList = DbTools.getSqlToList(sqltj); for (Map dataMap :dataList){ String hrmId = Util.null2String(dataMap.get("id")); diff --git a/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.java b/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.java index df6174d..9edf8ff 100644 --- a/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.java @@ -37,7 +37,7 @@ public class PersonGroupServiceImpl extends Service implements PersonGroupServic Map data = Maps.newHashMap(); String sql = "select * from (select t1.fieldid,t2.fieldname,t1.fieldlable,t1.ismand,t2.fielddbtype,t2.fieldhtmltype,t2.type, t1.dmlurl, t1.fieldorder, t1.isuse, t1.isModify,'1' as allowModify, t1.groupid, 1 as allowhide from cus_formfield t1, cus_formdict t2 where t1.fieldid=t2.id and t1.scope='HrmCustomFieldByInfoType' and (t1.scopeid='1' or t1.scopeid='-1' or t1.scopeid='3' ) " + " UNION all " + - " select fieldid, fieldname, fieldlabel ,ismand ,fielddbtype ,fieldhtmltype ,type , dmlurl,fieldorder ,isuse ,isModify ,allowModify, groupid, allowhide from hrm_formfield) hrmallfield where groupid in (select id from hrm_fieldgroup where (grouptype = '1' or grouptype = '-1' or grouptype = '3')) or fieldname='subcompanyid1'"; + " select fieldid, fieldname, fieldlabel ,ismand ,fielddbtype ,fieldhtmltype ,type , dmlurl,fieldorder ,isuse ,isModify ,allowModify, groupid, allowhide from hrm_formfield) hrmallfield where (groupid in (select id from hrm_fieldgroup where (grouptype = '1' or grouptype = '-1' or grouptype = '3')) or fieldname='subcompanyid1')"; sql = sql +condition+" order by hrmallfield.groupid, hrmallfield.fieldorder "; log.debug("sql :[{}]",sql); diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java index 0f4ec6c..e9c9b67 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java @@ -106,13 +106,17 @@ public class ByIntervalPayMentWay implements HolidayGenerationWay{ if (CheckBoxEnum.CHECKED.getKey().equals(schdedkzsxrq)) { int seniority = "".equals(ljcrglyfslwz)?0:Double.valueOf(ljcrglyfslwz).intValue(); String divideTime = DateUtil.beforeMonth(qsrq,seniority); - divideTime = sxrq.split("-")[0]+"-"+divideTime.split("-")[1]+"-"+divideTime.split("-")[2]; - insertHoliDayParam.put("sxrq", divideTime); - dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam); - //已存在数据且不覆盖 - if (dataList.size()>0 && !"1".equals(cover)) { + divideTime = DateUtil.nextYear(divideTime,1, DateUtil.yyyyMMdd); + if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(insertHoliDayParam.get("jzrq").toString())) > 0){ return insertHoliDayParam; } + insertHoliDayParam.put("sxrq", divideTime); + +// dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam); +// //已存在数据且不覆盖 +// if (dataList.size()>0 && !"1".equals(cover)) { +// return insertHoliDayParam; +// } } insertHoliDayParam.put("ktsc", restTime); }else if (allMonths >= 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) { diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java index 65d0743..774e7a0 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java @@ -131,13 +131,17 @@ public class BySchedulePaymentWay implements HolidayGenerationWay{ if (CheckBoxEnum.CHECKED.getKey().equals(schdedkzsxrq)) { int seniority = "".equals(ljcrglyfslwz)?0:Double.valueOf(ljcrglyfslwz).intValue(); String divideTime = DateUtil.beforeMonth(qsrq,seniority); - divideTime = sxrq.split("-")[0]+"-"+divideTime.split("-")[1]+"-"+divideTime.split("-")[2]; - insertHoliDayParam.put("sxrq", divideTime); - dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam); - //已存在数据且不覆盖 - if (dataList.size()>0 && !"1".equals(cover)) { + divideTime = DateUtil.nextYear(divideTime,1, DateUtil.yyyyMMdd); + if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(insertHoliDayParam.get("jzrq").toString())) > 0){ return insertHoliDayParam; } + insertHoliDayParam.put("sxrq", divideTime); + +// dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam); +// //已存在数据且不覆盖 +// if (dataList.size()>0 && !"1".equals(cover)) { +// return insertHoliDayParam; +// } } insertHoliDayParam.put("ktsc", restTime); } else if (allMonths >= 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) { diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java index b6a9b95..4ca898a 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java @@ -10,6 +10,7 @@ import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import weaver.general.Util; +import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.List; import java.util.Map; @@ -119,14 +120,17 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay { if (CheckBoxEnum.CHECKED.getKey().equals(schdedkzsxrq)) { int seniority = "".equals(ljcrglyfslwz)?0:Double.valueOf(ljcrglyfslwz).intValue(); String divideTime = DateUtil.beforeMonth(qsrq,seniority); - divideTime = sxrq.split("-")[0]+"-"+divideTime.split("-")[1]+"-"+divideTime.split("-")[2]; - insertHoliDayParam.put("sxrq", divideTime); - - dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam); - //已存在数据且不覆盖 - if (dataList.size()>0 && !"1".equals(cover)) { + divideTime = DateUtil.nextYear(divideTime,1, DateUtil.yyyyMMdd); + if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(insertHoliDayParam.get("jzrq").toString())) > 0){ return insertHoliDayParam; } + insertHoliDayParam.put("sxrq", divideTime); + +// dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam); +// //已存在数据且不覆盖 +// if (dataList.size()>0 && !"1".equals(cover)) { +// return insertHoliDayParam; +// } } insertHoliDayParam.put("ktsc", restTime); } else if (allMonths >= 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) { diff --git a/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java b/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java index e351c13..16ff1e5 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java +++ b/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java @@ -567,7 +567,7 @@ public class VocationCommonUtil { String jqid = Util.null2String(dataMap.get("jqid")); String sxrq = Util.null2String(dataMap.get("sxrq")); String jzrq = Util.null2String(dataMap.get("jzrq")); - String sql = "select id,ffsj,ktsc,yxsc,wxsc,ztsc,zfsc,yqsc,yqyxsc,yqsxrq from "+tableName +" where lyid=? and ygid=? and jqid=? and sxrq=? and jzrq=?"; + String sql = "select id,ffsj,ktsc,yxsc,wxsc,ztsc,zfsc,yqsc,yqyxsc,yqsxrq from "+tableName +" where lyid=? and ygid=? and jqid=? and sxrq>=? and jzrq<=?"; List> dataList = DbTools.getSqlToList(sql,lyid,ygid,jqid,sxrq,jzrq); return dataList; diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java index 5c9d6dd..7c78f83 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java +++ b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java @@ -30,7 +30,8 @@ public class AskForLeaveWorkFlowSubmitAction implements Action { @Override public String execute(RequestInfo requestInfo) { String requestid = requestInfo.getRequestid(); - + int billid = requestInfo.getRequestManager().getBillid(); + log.info("billid : [{}]",billid); try { // 流程表单主表数据 @@ -251,7 +252,7 @@ public class AskForLeaveWorkFlowSubmitAction implements Action { //更新流程明细表2 String delteSql = "delete from " + detail2TableName + " where mainid=?"; - DbTools.update(delteSql, requestid); + DbTools.update(delteSql, billid); if (detailTable2.size() > 0 && !CommonUtil.insertBatch(detailTable2, detail2TableName)) { //更新流程明细表2失败 String message = "更新流程明细表2失败"; diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowBackAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowBackAction.java new file mode 100644 index 0000000..700294b --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowBackAction.java @@ -0,0 +1,130 @@ +package com.engine.jucailinkq.attendance.workflow.action.askforleave; + +import com.engine.jucailinkq.common.util.CommonUtil; +import com.engine.jucailinkq.common.util.DateUtil; +import com.engine.jucailinkq.common.util.DbTools; +import com.engine.jucailinkq.common.util.Utils; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +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; +import java.util.stream.Collectors; + +/** + * @Author: sy + * @Description: 批量请假-退回到提交节点附加操作 + * @Date: 2024/8/16 + **/ +@Slf4j +public class BatchAskForLeaveWorkFlowBackAction implements Action { + @Override + public String execute(RequestInfo requestInfo) { + String requestid = requestInfo.getRequestid(); + + String sql = "select id, jlzt from uf_jcl_kq_qjjl where djid = " + requestid; + Map qjllData = DbTools.getSqlToMap(sql); + String jlzt = Util.null2String(qjllData.get("jlzt")); + + // 流程表单主表数据 + HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); + log.info("mainTableData : [{}]",mainTableData); + // 流程表单明细表1数据 + List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0); + log.info("detailTableData : [{}]",detailTableData); + + //流程表单明细表2数据 + List> detailTable2 = CommonUtil.getDetailTableInfo(requestInfo,1); + log.info("BatchAskForLeaveWorkFlowBackAction-detailTable2Data : [{}]",detailTable2); + + sql = "select id,jqid,sxrq,ktsc,yxsc,wxsc,yqsxrq,ztsc from uf_jcl_kq_jqye order by sxrq"; + + List> holidayBalanceList = DbTools.getSqlToList(sql); + + Map holidayBalanceMap = holidayBalanceList.stream().collect(Collectors.toMap(e->e.get("id").toString(), e->e)); + + try { + if (detailTable2.size() > 0) { + Map balanceMap = Maps.newHashMap(); + for (Map 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); + } + log.info("balanceMap : [{}]",balanceMap); + for (Map.Entry entry:balanceMap.entrySet()){ + String id = entry.getKey(); + double ztsc = Double.valueOf(entry.getValue().toString()); + Map map = (Map)holidayBalanceMap.get(id); + boolean updateSign = true; + log.info("jlzt : [{}]",jlzt); + if ("1".equals(jlzt)) { + double havedyxsc = Util.null2String(map.get("yxsc")).equals("") ? 0 : Double.valueOf(map.get("yxsc").toString()); + + double updatedyxsc = Utils.subtract(havedyxsc,ztsc); + + log.info("updatedyxsc : [{}],id:[{}]",updatedyxsc,id); + String updateSql = "update uf_jcl_kq_jqye set yxsc=? where id=?"; + updateSign = DbTools.update(updateSql,updatedyxsc,id); + } else if("0".equals(jlzt)){ + 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.subtract(havedztsc,ztsc); + double updatedwxsc = Utils.add(havedwxsc,ztsc); + + log.info("updatedwxsc : [{}],updatedztsc:[{}],id:[{}]",updatedwxsc,updatedztsc,id); + String updateSql = "update uf_jcl_kq_jqye set wxsc=?,ztsc=? where id=?"; + updateSign = DbTools.update(updateSql,updatedwxsc,updatedztsc,id); + } + + log.info("updateSign : [{}]",updateSign); + if (!updateSign){ + //更新假期余额失败 + String message = "更新假期余额失败"; + log.error(message); + requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } + } + } + + //删除请假记录 + if ("1".equals(jlzt) || "0".equals(jlzt)) { + String qjjlMainId = Util.null2String(qjllData.get("id")); + if (!"".equals(qjjlMainId)) { + String delteSql = "delete from uf_jcl_kq_qjjl_dt1 where mainid = " + qjjlMainId; + boolean delSignDt1 = DbTools.update(delteSql); + delteSql = "delete from uf_jcl_kq_qjjl_dt2 where mainid = " + qjjlMainId; + boolean delSignDt2 = DbTools.update(delteSql); + delteSql = "delete from uf_jcl_kq_qjjl where id = " + qjjlMainId; + boolean delSignMain = DbTools.update(delteSql); + if (!delSignDt1 || !delSignDt2 || !delSignMain) { + 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("BatchAskForLeaveWorkFlowBackAction error : [{}]",e); + return Action.FAILURE_AND_CONTINUE; + } + + + return Action.SUCCESS; + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.java index 904965d..ac2f540 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.java +++ b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.java @@ -24,7 +24,8 @@ public class BatchAskForLeaveWorkFlowSubmitAction implements Action { @Override public String execute(RequestInfo requestInfo) { String requestid = requestInfo.getRequestid(); - + int billid = requestInfo.getRequestManager().getBillid(); + log.info("billid : [{}]",billid); try { // 流程表单主表数据 HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); @@ -79,7 +80,7 @@ public class BatchAskForLeaveWorkFlowSubmitAction implements Action { //明细表2有数据时,更新明细表2入库,并且更新假期余额表 //更新流程明细表2 String delteSql = "delete from " + detail2TableName + " where mainid=?"; - DbTools.update(delteSql, requestid); + DbTools.update(delteSql, billid); if (detailTable2.size() > 0 && !CommonUtil.insertBatch(detailTable2, detail2TableName)) { //更新流程明细表2失败 String message = "更新流程明细表2失败"; diff --git a/src/com/engine/jucailinkq/attendance/workflow/proxy/DoRepossessedProxyCmd.java b/src/com/engine/jucailinkq/attendance/workflow/proxy/DoRepossessedProxyCmd.java new file mode 100644 index 0000000..a80805c --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/proxy/DoRepossessedProxyCmd.java @@ -0,0 +1,38 @@ +package com.engine.jucailinkq.attendance.workflow.proxy; + +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.monitor.DoRepossessedCmd; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.workflow.workflow.RequestForceDrawBack; + +import java.util.Map; + + +/** + * 流程强制收回代理类 + */ +@CommandDynamicProxy(target = DoRepossessedCmd.class, desc="流程强制收回") +public class DoRepossessedProxyCmd extends AbstractCommandProxy> { + @Override + public Map execute(Command> command) { + Map resultMap = nextExecute(command); + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + Map requestMap = (Map)resultMap.get("result"); + bb.writeLog("DoRepossessedProxyCmd requestMap"+requestMap.toString()); + requestMap.entrySet().forEach(e->{ + String requestId = e.getKey(); + String status = e.getValue().toString(); + if (status.equals(RequestForceDrawBack.SUCCESS)){ + rs.executeProc("workflow_Requestbase_SByID", requestId); + int workflowid = rs.getInt("workflowid"); + } + }); + + return resultMap; + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.java b/src/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.java index c358dc7..215fdb7 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.java @@ -54,7 +54,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService { for (Map map : tyAllowanceData) { tyAllowanceIds.add(map.get("id").toString()); } - bs.writeLog("tyAllowanceIds : " + tyAllowanceIds); +// log.debug("tyAllowanceIds : " + tyAllowanceIds); //获取人员和津贴类型考勤项目信息,构建映射关系 Map> empIdWithAllowanceInfo = new HashMap<>(); List targetEmpIdList = new ArrayList<>(); @@ -151,16 +151,16 @@ public class AllowanceServiceImpl extends Service implements AllowanceService { + " and bc in ("+String.join(",",targetBcIdList) + ")"; cqData = DbTools.getSqlToList(cqSql); } - bs.writeLog("cqData_size : " + cqData.size()); + log.debug("cqData_size : " + cqData.size()); //获取待新增的津贴数据 List> allowanceInfoList = createAllowanceInfo(cqData, empIdWithAllowanceInfo, bcWithAllowanceInfo, allowanceIdWithKqxmInfo); - bs.writeLog("allowanceInfoList_size : " + allowanceInfoList.size()); + log.debug("allowanceInfoList_size : " + allowanceInfoList.size()); //新增津贴数据,先删后加 if (targetEmpIdList.size() > 0 && targetBcIdList.size() > 0) { String delSql = "delete from uf_jcl_kq_cqjt where rq >= '" + startDate +"'" + " and rq <= '" + endDate +"'" + " and yg in (" + String.join(",",targetEmpIdList) + ") and bc in (" + String.join(",",targetBcIdList) + ")"; boolean delSign = DbTools.update(delSql); - bs.writeLog("delSign : " + delSign + ", delSql : " + delSql); + log.debug("delSign : " + delSign + ", delSql : " + delSql); } if (allowanceInfoList.size() > 0) { //插入津贴数据 @@ -187,11 +187,11 @@ public class AllowanceServiceImpl extends Service implements AllowanceService { dataList.add(list); } - bs.writeLog("dataList_size : " + dataList.size()); + log.debug("dataList_size : " + dataList.size()); if(dataList.size() > 0){ - bs.writeLog("津贴数据记录入库开始---"); + log.debug("津贴数据记录入库开始---"); boolean insertSign = DbTools.updateBatch(insertSql,dataList); - bs.writeLog("insertSign : " + insertSign); + log.debug("insertSign : " + insertSign); result.put("result", insertSign); } } @@ -244,7 +244,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService { //20240703需求变更,收集加班结果列表中的加班时长 List> realOvertimeInfoList = collectOvertimeInfo(empId, cqRq, jbKqxmUnitInfo); int realOvertimeMinutes = realOvertimeInfoList.stream().mapToInt(e->Integer.parseInt(e.get("scMinutes"))).sum(); - bs.writeLog("realOvertimeMinutes : " + realOvertimeMinutes); + log.debug("realOvertimeMinutes : " + realOvertimeMinutes); //最终核算分钟数 double countMinutes = 0; //出勤时长 @@ -292,7 +292,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService { String maxMinutes = Util.null2String(allowanceInfo.get("zdhsfzs")); //超出起算时长的单次累加分钟数 String oneTimeAddMinutes = Util.null2String(allowanceInfo.get("cchsfzs")); - bs.writeLog("includeDailyWorkHours : " + includeDailyWorkHours + ",checkOneTimeOnDuty : " + checkOneTimeOnDuty + log.debug("includeDailyWorkHours : " + includeDailyWorkHours + ",checkOneTimeOnDuty : " + checkOneTimeOnDuty + ",onDutyTime : " + onDutyTime + ",onlyCountBeforeDutyTime : " + onlyCountBeforeDutyTime + ",onlyCountAfterDutyTime : " + onlyCountAfterDutyTime + ",startMinutes : " + startMinutes,"maxMinutes : " + maxMinutes + ",oneTimeAddMinutes : " + oneTimeAddMinutes); //逐一判断是否满足津贴时长计入规则 @@ -345,7 +345,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService { //a-起算分钟数 + 超出起算时长的单次累加分钟数 * N <= 最大核算分钟数 //b-由a点获取到分钟数后,要根据津贴项目的核算量+核算单位来获取最终津贴时长,例如分钟数170分钟,核算量为0.5,核算单位为小时,则最终核算时长为2.5小时 double allowanceMinutes = 0; - bs.writeLog("countMinutes : " + countMinutes); + log.debug("countMinutes : " + countMinutes); if (countMinutes > Double.parseDouble(startMinutes)) { if (!"".equals(oneTimeAddMinutes) && !"0".equals(oneTimeAddMinutes)) { double multiple = (countMinutes - Double.parseDouble(startMinutes)) / Double.parseDouble(oneTimeAddMinutes); @@ -356,7 +356,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService { if (allowanceMinutes > Double.parseDouble(maxMinutes)) { allowanceMinutes = Double.parseDouble(maxMinutes); } - bs.writeLog("allowanceMinutes : " + allowanceMinutes); + log.debug("allowanceMinutes : " + allowanceMinutes); //津贴时长 String allowanceUnit = Util.null2String(jtKqxmUnitInfo.get(allowanceId)); String countScale = Util.null2String(jtKqxmCountScaleInfo.get(allowanceId)); @@ -369,7 +369,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService { } else if (allowanceUnit.equals(AccountingUnitEnum.MINUTES.getKey())) { sc = allowanceMinutes - allowanceMinutes % Double.parseDouble(countScale); } - bs.writeLog("sc : " + sc); + log.debug("sc : " + sc); //记录待新增的津贴记录 allowanceInfoItem = new HashMap<>(); allowanceInfoItem.put("szjg", Util.null2String(map.get("szjg"))); @@ -759,7 +759,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService { startDate = targetMonth + "-01"; //结束日期只作为范围筛选,不用考虑是目标月份是否存在31号 endDate = targetMonth + "-31"; - log.info("targetUserId : {}, queryDateRange : {}, startDate : {}, endDate : {}", targetUserId, queryDateRange, startDate, endDate); + log.debug("targetUserId : {}, queryDateRange : {}, startDate : {}, endDate : {}", targetUserId, queryDateRange, startDate, endDate); String detailSql = "select a.id as jtid, a.rq, a.bc, a.jtlx, a.sc, a.zt , a.bz as sm, c.mc as jtlxName, d.mc as bcName, b.bcbdxx, b.cqzt, b.id as cqjg, " + "b.j1, b.c1, b.j2, b.c2, b.j3, b.c3, b.j4, b.c4, b.j5, b.c5, b.j6, b.c6, b.j7, b.c7, b.j8, b.c8 from uf_jcl_kq_cqjt a " + "left join uf_jcl_kq_cqjg b on a.yg = b.ygid and a.rq = b.rq " + @@ -785,7 +785,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService { } else { resultMap.put("data", null); } - log.info("detailList : [{}]", detailList); + log.debug("detailList : [{}]", detailList); return resultMap; } diff --git a/src/com/engine/jucailinkq/attendance/workflow/service/impl/OvertimePlanServiceImpl.java b/src/com/engine/jucailinkq/attendance/workflow/service/impl/OvertimePlanServiceImpl.java index 91ce154..dfdb28b 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/service/impl/OvertimePlanServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/workflow/service/impl/OvertimePlanServiceImpl.java @@ -54,8 +54,9 @@ public class OvertimePlanServiceImpl extends Service implements OvertimePlanServ Map detailItem; String sql = ""; //获取作用时段包含计划加班的加班类型的考勤项目集合 - sql = "select id,mc, bddrqlx, jbqsfzs,xzzjbsc,rzdjbxss,zzdjbxss,yzdjbxss from uf_jcl_kq_kqxm where xmlx = ? and zysd = ?"; - List> jblxAttendanceList = DbTools.getSqlToList(sql, AttendanceItemTypeEnum.WORK_OVERTIME.getKey(), WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey()); + sql = "select id,mc, bddrqlx, jbqsfzs, xzzjbsc, rzdjbxss, zzdjbxss, yzdjbxss, zysd, ccclfs from uf_jcl_kq_kqxm where xmlx = ?"; + List> jblxAttendanceList = DbTools.getSqlToList(sql, AttendanceItemTypeEnum.WORK_OVERTIME.getKey()); + jblxAttendanceList = jblxAttendanceList.stream().filter(f -> Util.null2String(f.get("zysd")).contains(WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey())).collect(Collectors.toList()); //获取人员id和姓名信息 Map empIdToNameInfo = CommonUtil.empIdToNameInfo(empIdList); //获取目标人员列表已存在的加班计划 diff --git a/src/com/engine/jucailinkq/common/util/Utils.java b/src/com/engine/jucailinkq/common/util/Utils.java index c3e4f59..2b767bf 100644 --- a/src/com/engine/jucailinkq/common/util/Utils.java +++ b/src/com/engine/jucailinkq/common/util/Utils.java @@ -1160,6 +1160,11 @@ public class Utils { return resultList; } + /** + * 转换sql语句 + * @param sqltj + * @return + */ public static String converSQL(String sqltj){ sqltj = sqltj.replace("select","select"); sqltj = sqltj.replace("SELECT","select");