优化日志打印、优化假期额度发放、优化人员分组条件

zm_dev
liuliang 8 months ago
parent f238ff4a45
commit 9c197cb7fc

@ -122,7 +122,7 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
*/ */
double evectionTimeTime = removeEvection(analysisDate,scheduleResult,evectionList,evectionItems,abnormalClockInList,evectionToOffsetAbnomaly); double evectionTimeTime = removeEvection(analysisDate,scheduleResult,evectionList,evectionItems,abnormalClockInList,evectionToOffsetAbnomaly);
log.info("misscardHour : {},abnormalMinute : {}, : {},evectionTimeTime:{}",misscardHour,abnormalMinute,askForLeaveTime,evectionTimeTime); log.debug("misscardHour : {},abnormalMinute : {}, : {},evectionTimeTime:{}",misscardHour,abnormalMinute,askForLeaveTime,evectionTimeTime);
double deductTime = Double.valueOf(String.format ("%.2f",(abnormalMinute+askForLeaveTime+evectionTimeTime)/60)); double deductTime = Double.valueOf(String.format ("%.2f",(abnormalMinute+askForLeaveTime+evectionTimeTime)/60));
edsc = edsc-misscardHour-deductTime; edsc = edsc-misscardHour-deductTime;
if (edsc < 0){ if (edsc < 0){

@ -241,14 +241,14 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
this.needClockDateList=needClockDateList; this.needClockDateList=needClockDateList;
log.info("经过重新计算卡点时 新的scheduleResult : [{}]",scheduleResult); log.debug("经过重新计算卡点时 新的scheduleResult : [{}]",scheduleResult);
List<ClockPointDTO> clcokInPointList = getClockInPoint(analysisDate, scheduleResult, clockInTimeList,needClockDateList); List<ClockPointDTO> clcokInPointList = getClockInPoint(analysisDate, scheduleResult, clockInTimeList,needClockDateList);
log.info("clcokInPointList :[{}]",clcokInPointList); log.debug("clcokInPointList :[{}]",clcokInPointList);
resultMap.put("clcokInPointList", clcokInPointList); resultMap.put("clcokInPointList", clcokInPointList);
resultMap.put("scheduleResult",scheduleResult); resultMap.put("scheduleResult",scheduleResult);
resultMap.put("clockInTimeList",clockInTimeList); resultMap.put("clockInTimeList",clockInTimeList);

@ -122,7 +122,7 @@ public class MergeApairClockPoint extends AbstractAdjustClockPointAction {
} }
adjustClcokInPointList.addAll(clcokInPointList); adjustClcokInPointList.addAll(clcokInPointList);
log.info("MergeApairClockPoint : [{}]",adjustClcokInPointList); log.debug("MergeApairClockPoint : [{}]",adjustClcokInPointList);
return adjustClcokInPointList; return adjustClcokInPointList;
} }

@ -252,7 +252,12 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
/** /**
* *
*/ */
int dinnerTime = Utils.dinnerTime(realityStartTime, realityEndime, scheduleResult, analysisDate); int dinnerTime = 0;
double workflowBetweenHour = Double.valueOf(String.format("%.2f", DateUtil.getBetWeenMinutes(kssj,jssj) / 60.0));
if (workflowBetweenHour <= Double.valueOf(Util.null2String(scheduleMap.get("edxss"))) && scheduleMap.get("bdlx").equals(ClassSegmentTypeEnum.OVERTIME_PLAN.getKey())){
//当为加班计划时,前台流程未扣过休息时长
dinnerTime = Utils.dinnerTime(realityStartTime, realityEndime, scheduleResult, analysisDate);
}
log.debug("未扣减过的加班时长: {}", jbsc); log.debug("未扣减过的加班时长: {}", jbsc);
log.debug("beLateTime :[{}],leaveElaryTime :[{}],askForLeaveTime:[{}],evectionTime:[{}],dinnerTime:[{}]", beLateTime, leaveElaryTime, askForLeaveTime, evectionTime, dinnerTime); log.debug("beLateTime :[{}],leaveElaryTime :[{}],askForLeaveTime:[{}],evectionTime:[{}],dinnerTime:[{}]", beLateTime, leaveElaryTime, askForLeaveTime, evectionTime, dinnerTime);

@ -51,6 +51,8 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
//超出限制时长的处理方式 //超出限制时长的处理方式
String ccclfs = Util.null2String(workTimeBeLateItems.get(0).get("ccclfs")); String ccclfs = Util.null2String(workTimeBeLateItems.get(0).get("ccclfs"));
//限制加班总长数
String xzzjbsc = Util.null2String(workTimeBeLateItems.get(0).get("xzzjbsc"));
//工作日加班最大小时数 //工作日加班最大小时数
String rzdjbxss = Util.null2String(workTimeBeLateItems.get(0).get("rzdjbxss")); String rzdjbxss = Util.null2String(workTimeBeLateItems.get(0).get("rzdjbxss"));
//每周最大加班小时数 //每周最大加班小时数
@ -90,7 +92,7 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
Map<String,Object> resultMap = Maps.newHashMap(); Map<String,Object> 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 (!"".equals(jbqsfzs)){
if (jbsc < Integer.valueOf(jbqsfzs)){ if (jbsc < Integer.valueOf(jbqsfzs)){
//小于最小加班分钟数不算加班 //小于最小加班分钟数不算加班
@ -132,6 +134,9 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
if (time > maxWeekTime){ if (time > maxWeekTime){
jbsc = maxWeekTime-weekTime; jbsc = maxWeekTime-weekTime;
} }
if (jbsc <0){
jbsc = 0;
}
} }
if ("2".equals(ccclfs) && !"".equals(yzdjbxss)){ if ("2".equals(ccclfs) && !"".equals(yzdjbxss)){
//每月最大加班数 //每月最大加班数
@ -143,6 +148,10 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
} }
} }
} }
if (jbsc <0){
jbsc = 0;
}
log.debug("最终加班时长: {}",jbsc); log.debug("最终加班时长: {}",jbsc);
workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key")); workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key"));
double itemduration = Utils.getItemdurationDown(workOverTimeHsl,workOverTimeHsdw,Long.valueOf(Math.round(jbsc)).intValue(),AccountingUnitEnum.MINUTES); double itemduration = Utils.getItemdurationDown(workOverTimeHsl,workOverTimeHsdw,Long.valueOf(Math.round(jbsc)).intValue(),AccountingUnitEnum.MINUTES);

@ -207,7 +207,7 @@ public class UtilServiceImpl extends Service implements UtilService {
List<ClockPointDTO> clockPointDTOS = action.execute(clockPointInfo); List<ClockPointDTO> clockPointDTOS = action.execute(clockPointInfo);
clockPointInfo.setClcokInPointList(clockPointDTOS); clockPointInfo.setClcokInPointList(clockPointDTOS);
} }
log.info("after adjustClockPointAction : [{}]",clockPointInfo.getClcokInPointList()); log.debug("after adjustClockPointAction : [{}]",clockPointInfo.getClcokInPointList());
return clockPointInfo.getClcokInPointList(); return clockPointInfo.getClcokInPointList();
} }

@ -82,6 +82,9 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
Map<String,Object> overTimeDuraionMap = commandExecutor.execute(new GetOvertimeDurationCmd(params)); Map<String,Object> overTimeDuraionMap = commandExecutor.execute(new GetOvertimeDurationCmd(params));
String realityStartTime = Util.null2String(overTimeDuraionMap.get("realityStartTime")); String realityStartTime = Util.null2String(overTimeDuraionMap.get("realityStartTime"));
String realityEndime = Util.null2String(overTimeDuraionMap.get("realityEndime")); String realityEndime = Util.null2String(overTimeDuraionMap.get("realityEndime"));
if ("".equals(realityStartTime) || "".equals(realityEndime)){
continue;
}
//获得加班时长以及加班开始时间和结束时间 //获得加班时长以及加班开始时间和结束时间
params.putAll(overTimeDuraionMap); params.putAll(overTimeDuraionMap);
//获得加班项目 //获得加班项目

@ -48,8 +48,8 @@ public class AttendanceanalysisAction {
try { try {
Map<String,Object> paramMap = ParamUtil.request2Map(request); Map<String,Object> paramMap = ParamUtil.request2Map(request);
// Map<String,Object> paramMap = Maps.newHashMap(); // Map<String,Object> paramMap = Maps.newHashMap();
// paramMap.put("startDate","2024-08-05"); // paramMap.put("startDate","2024-08-11");
// paramMap.put("endDate","2024-08-05"); // paramMap.put("endDate","2024-08-11");
// paramMap.put("userIds","81"); // paramMap.put("userIds","81");
String startDate = Util.null2String(paramMap.get("startDate")); String startDate = Util.null2String(paramMap.get("startDate"));

@ -41,9 +41,8 @@ public class AttendanceAnalysisWrapper extends Service {
* @param attendanceItems * @param attendanceItems
*/ */
public void attendanceAnalysis(String userId, List<String> analysisDateList, List<Map<String, Object>> dataList, List<Map<String, Object>> attendanceItems, List<Map<String, Object>> workHourItems, Map<String, Map<String, Object>> clockInTimeMap, Map<String, List<Map<String, Object>>> attendaceResultMap) { public void attendanceAnalysis(String userId, List<String> analysisDateList, List<Map<String, Object>> dataList, List<Map<String, Object>> attendanceItems, List<Map<String, Object>> workHourItems, Map<String, Map<String, Object>> clockInTimeMap, Map<String, List<Map<String, Object>>> attendaceResultMap) {
log.info("***********analysis userId:{} start***********", userId); log.info("***********analysis userId:{} analysisDate:{} start***********", userId,analysisDateList);
log.info("***********analysisDate:{}", analysisDateList); log.debug("clockInTimeDate : [{}]", dataList);
log.info("clockInTimeDate : [{}]", dataList);
String beforeTwoDayDateDate = DateUtil.beforeDay(analysisDateList.get(0), 2); String beforeTwoDayDateDate = DateUtil.beforeDay(analysisDateList.get(0), 2);
/** 打卡数据 */ /** 打卡数据 */
@ -98,8 +97,8 @@ public class AttendanceAnalysisWrapper extends Service {
*/ */
public void attendanceAnalysisForApi(String userId, String analysisDate, List<Map<String, Object>> dataList, List<Map<String, Object>> attendanceItems, Map<String, Object> schedulMap, List<Map<String, Object>> workHourItems, Map<String, Map<String, Object>> clockInTimeMap,List<Map<String,Object>> attendaceResult) { public void attendanceAnalysisForApi(String userId, String analysisDate, List<Map<String, Object>> dataList, List<Map<String, Object>> attendanceItems, Map<String, Object> schedulMap, List<Map<String, Object>> workHourItems, Map<String, Map<String, Object>> clockInTimeMap,List<Map<String,Object>> attendaceResult) {
log.info("***********analysis userId:{},analysisDate:{} start***********", userId, analysisDate); log.info("***********analysis userId:{},analysisDate:{} start***********", userId, analysisDate);
log.info("clockInTimeDate : [{}]", dataList); log.debug("clockInTimeDate : [{}]", dataList);
log.info("attendaceResult : [{}]",attendaceResult); log.debug("attendaceResult : [{}]",attendaceResult);
if (attendaceResult!=null && attendaceResult.size()>0 && (CheckBoxEnum.CHECKED.getKey().equals(attendaceResult.get(0).get("sgsj")) || if (attendaceResult!=null && attendaceResult.size()>0 && (CheckBoxEnum.CHECKED.getKey().equals(attendaceResult.get(0).get("sgsj")) ||
"3".equals(attendaceResult.get(0).get("sjzt")))) { "3".equals(attendaceResult.get(0).get("sjzt")))) {
return; return;
@ -336,7 +335,7 @@ public class AttendanceAnalysisWrapper extends Service {
recordParam.put("attendanceDuration", attendanceDuration); recordParam.put("attendanceDuration", attendanceDuration);
recordParam.put("overTimeHolidayList",recordWorkOverTime.get("overTimeHolidayList") == null?Lists.newArrayList():recordWorkOverTime.get("overTimeHolidayList")); recordParam.put("overTimeHolidayList",recordWorkOverTime.get("overTimeHolidayList") == null?Lists.newArrayList():recordWorkOverTime.get("overTimeHolidayList"));
recordParam.put("overTimeResultList",recordWorkOverTime.get("overTimeResultList") == null?Lists.newArrayList():recordWorkOverTime.get("overTimeResultList")); recordParam.put("overTimeResultList",recordWorkOverTime.get("overTimeResultList") == null?Lists.newArrayList():recordWorkOverTime.get("overTimeResultList"));
log.info("recordParam : {}", recordParam); log.debug("recordParam : {}", recordParam);
if (abnormalClockInListByEvction.size() > 0) { if (abnormalClockInListByEvction.size() > 0) {
recordParam.put("cqzt", CheckBoxEnum.CHECKED.getKey()); recordParam.put("cqzt", CheckBoxEnum.CHECKED.getKey());
} else { } else {

@ -202,7 +202,7 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
}else { }else {
sql = sql+ " and "+filters; sql = sql+ " and "+filters;
} }
log.debug("getPersonnelGroupingByPerson filter sql : {}",sql); log.debug("getDepartSchedule filter sql : {}",sql);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql); List<Map<String,Object>> dataList = DbTools.getSqlToList(sql);
for (Map<String,Object> dataMap :dataList){ for (Map<String,Object> dataMap :dataList){
String hrmId = Util.null2String(dataMap.get("id")); 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)){ }else if ("2".equals(list_type) && !"".equals(sqltj)){
sqltj = Utils.converSQL(sqltj); sqltj = Utils.converSQL(sqltj);
log.info("getPersonnelGroupingByPerson sqltj : [{}]",sqltj); log.info("getDepartSchedule sqltj : [{}]",sqltj);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sqltj); List<Map<String,Object>> dataList = DbTools.getSqlToList(sqltj);
for (Map<String,Object> dataMap :dataList){ for (Map<String,Object> dataMap :dataList){
String hrmId = Util.null2String(dataMap.get("id")); String hrmId = Util.null2String(dataMap.get("id"));

@ -37,7 +37,7 @@ public class PersonGroupServiceImpl extends Service implements PersonGroupServic
Map<String, Object> data = Maps.newHashMap(); Map<String, Object> 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' ) " + 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 " + " 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 "; sql = sql +condition+" order by hrmallfield.groupid, hrmallfield.fieldorder ";
log.debug("sql :[{}]",sql); log.debug("sql :[{}]",sql);

@ -106,13 +106,17 @@ public class ByIntervalPayMentWay implements HolidayGenerationWay{
if (CheckBoxEnum.CHECKED.getKey().equals(schdedkzsxrq)) { if (CheckBoxEnum.CHECKED.getKey().equals(schdedkzsxrq)) {
int seniority = "".equals(ljcrglyfslwz)?0:Double.valueOf(ljcrglyfslwz).intValue(); int seniority = "".equals(ljcrglyfslwz)?0:Double.valueOf(ljcrglyfslwz).intValue();
String divideTime = DateUtil.beforeMonth(qsrq,seniority); String divideTime = DateUtil.beforeMonth(qsrq,seniority);
divideTime = sxrq.split("-")[0]+"-"+divideTime.split("-")[1]+"-"+divideTime.split("-")[2]; divideTime = DateUtil.nextYear(divideTime,1, DateUtil.yyyyMMdd);
insertHoliDayParam.put("sxrq", divideTime); if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(insertHoliDayParam.get("jzrq").toString())) > 0){
dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam);
//已存在数据且不覆盖
if (dataList.size()>0 && !"1".equals(cover)) {
return insertHoliDayParam; 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); insertHoliDayParam.put("ktsc", restTime);
}else if (allMonths >= 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) { }else if (allMonths >= 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) {

@ -131,13 +131,17 @@ public class BySchedulePaymentWay implements HolidayGenerationWay{
if (CheckBoxEnum.CHECKED.getKey().equals(schdedkzsxrq)) { if (CheckBoxEnum.CHECKED.getKey().equals(schdedkzsxrq)) {
int seniority = "".equals(ljcrglyfslwz)?0:Double.valueOf(ljcrglyfslwz).intValue(); int seniority = "".equals(ljcrglyfslwz)?0:Double.valueOf(ljcrglyfslwz).intValue();
String divideTime = DateUtil.beforeMonth(qsrq,seniority); String divideTime = DateUtil.beforeMonth(qsrq,seniority);
divideTime = sxrq.split("-")[0]+"-"+divideTime.split("-")[1]+"-"+divideTime.split("-")[2]; divideTime = DateUtil.nextYear(divideTime,1, DateUtil.yyyyMMdd);
insertHoliDayParam.put("sxrq", divideTime); if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(insertHoliDayParam.get("jzrq").toString())) > 0){
dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam);
//已存在数据且不覆盖
if (dataList.size()>0 && !"1".equals(cover)) {
return insertHoliDayParam; 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); insertHoliDayParam.put("ktsc", restTime);
} else if (allMonths >= 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) { } else if (allMonths >= 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) {

@ -10,6 +10,7 @@ import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import weaver.general.Util; import weaver.general.Util;
import java.time.format.DateTimeFormatter;
import java.util.Calendar; import java.util.Calendar;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -119,14 +120,17 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay {
if (CheckBoxEnum.CHECKED.getKey().equals(schdedkzsxrq)) { if (CheckBoxEnum.CHECKED.getKey().equals(schdedkzsxrq)) {
int seniority = "".equals(ljcrglyfslwz)?0:Double.valueOf(ljcrglyfslwz).intValue(); int seniority = "".equals(ljcrglyfslwz)?0:Double.valueOf(ljcrglyfslwz).intValue();
String divideTime = DateUtil.beforeMonth(qsrq,seniority); String divideTime = DateUtil.beforeMonth(qsrq,seniority);
divideTime = sxrq.split("-")[0]+"-"+divideTime.split("-")[1]+"-"+divideTime.split("-")[2]; divideTime = DateUtil.nextYear(divideTime,1, DateUtil.yyyyMMdd);
insertHoliDayParam.put("sxrq", divideTime); if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(insertHoliDayParam.get("jzrq").toString())) > 0){
dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam);
//已存在数据且不覆盖
if (dataList.size()>0 && !"1".equals(cover)) {
return insertHoliDayParam; 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); insertHoliDayParam.put("ktsc", restTime);
} else if (allMonths >= 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) { } else if (allMonths >= 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) {

@ -567,7 +567,7 @@ public class VocationCommonUtil {
String jqid = Util.null2String(dataMap.get("jqid")); String jqid = Util.null2String(dataMap.get("jqid"));
String sxrq = Util.null2String(dataMap.get("sxrq")); String sxrq = Util.null2String(dataMap.get("sxrq"));
String jzrq = Util.null2String(dataMap.get("jzrq")); 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<Map<String,Object>> dataList = DbTools.getSqlToList(sql,lyid,ygid,jqid,sxrq,jzrq); List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,lyid,ygid,jqid,sxrq,jzrq);
return dataList; return dataList;

@ -30,7 +30,8 @@ public class AskForLeaveWorkFlowSubmitAction implements Action {
@Override @Override
public String execute(RequestInfo requestInfo) { public String execute(RequestInfo requestInfo) {
String requestid = requestInfo.getRequestid(); String requestid = requestInfo.getRequestid();
int billid = requestInfo.getRequestManager().getBillid();
log.info("billid : [{}]",billid);
try { try {
// 流程表单主表数据 // 流程表单主表数据
@ -251,7 +252,7 @@ public class AskForLeaveWorkFlowSubmitAction implements Action {
//更新流程明细表2 //更新流程明细表2
String delteSql = "delete from " + detail2TableName + " where mainid=?"; String delteSql = "delete from " + detail2TableName + " where mainid=?";
DbTools.update(delteSql, requestid); DbTools.update(delteSql, billid);
if (detailTable2.size() > 0 && !CommonUtil.insertBatch(detailTable2, detail2TableName)) { if (detailTable2.size() > 0 && !CommonUtil.insertBatch(detailTable2, detail2TableName)) {
//更新流程明细表2失败 //更新流程明细表2失败
String message = "更新流程明细表2失败"; String message = "更新流程明细表2失败";

@ -0,0 +1,126 @@
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<String, Object> qjllData = DbTools.getSqlToMap(sql);
String jlzt = Util.null2String(qjllData.get("jlzt"));
// 流程表单主表数据
HashMap<String,String> mainTableData = CommonUtil.getMainTableInfo(requestInfo);
log.info("mainTableData : [{}]",mainTableData);
// 流程表单明细表1数据
List<Map<String, String>> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0);
log.info("detailTableData : [{}]",detailTableData);
//流程表单明细表2数据
List<Map<String, String>> 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<Map<String,Object>> holidayBalanceList = DbTools.getSqlToList(sql);
Map<String,Object> holidayBalanceMap = holidayBalanceList.stream().collect(Collectors.toMap(e->e.get("id").toString(), e->e));
try {
if (detailTable2.size() > 0) {
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);
boolean updateSign = true;
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);
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);
String updateSql = "update uf_jcl_kq_jqye set wxsc=?,ztsc=? where id=?";
updateSign = DbTools.update(updateSql,updatedwxsc,updatedztsc,id);
}
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;
}
}

@ -24,7 +24,8 @@ public class BatchAskForLeaveWorkFlowSubmitAction implements Action {
@Override @Override
public String execute(RequestInfo requestInfo) { public String execute(RequestInfo requestInfo) {
String requestid = requestInfo.getRequestid(); String requestid = requestInfo.getRequestid();
int billid = requestInfo.getRequestManager().getBillid();
log.info("billid : [{}]",billid);
try { try {
// 流程表单主表数据 // 流程表单主表数据
HashMap<String, String> mainTableData = CommonUtil.getMainTableInfo(requestInfo); HashMap<String, String> mainTableData = CommonUtil.getMainTableInfo(requestInfo);
@ -79,7 +80,7 @@ public class BatchAskForLeaveWorkFlowSubmitAction implements Action {
//明细表2有数据时更新明细表2入库并且更新假期余额表 //明细表2有数据时更新明细表2入库并且更新假期余额表
//更新流程明细表2 //更新流程明细表2
String delteSql = "delete from " + detail2TableName + " where mainid=?"; String delteSql = "delete from " + detail2TableName + " where mainid=?";
DbTools.update(delteSql, requestid); DbTools.update(delteSql, billid);
if (detailTable2.size() > 0 && !CommonUtil.insertBatch(detailTable2, detail2TableName)) { if (detailTable2.size() > 0 && !CommonUtil.insertBatch(detailTable2, detail2TableName)) {
//更新流程明细表2失败 //更新流程明细表2失败
String message = "更新流程明细表2失败"; String message = "更新流程明细表2失败";

@ -54,7 +54,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
for (Map<String, Object> map : tyAllowanceData) { for (Map<String, Object> map : tyAllowanceData) {
tyAllowanceIds.add(map.get("id").toString()); tyAllowanceIds.add(map.get("id").toString());
} }
bs.writeLog("tyAllowanceIds : " + tyAllowanceIds); // log.debug("tyAllowanceIds : " + tyAllowanceIds);
//获取人员和津贴类型考勤项目信息,构建映射关系 //获取人员和津贴类型考勤项目信息,构建映射关系
Map<String, List<String>> empIdWithAllowanceInfo = new HashMap<>(); Map<String, List<String>> empIdWithAllowanceInfo = new HashMap<>();
List<String> targetEmpIdList = new ArrayList<>(); List<String> targetEmpIdList = new ArrayList<>();
@ -151,16 +151,16 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
+ " and bc in ("+String.join(",",targetBcIdList) + ")"; + " and bc in ("+String.join(",",targetBcIdList) + ")";
cqData = DbTools.getSqlToList(cqSql); cqData = DbTools.getSqlToList(cqSql);
} }
bs.writeLog("cqData_size : " + cqData.size()); log.debug("cqData_size : " + cqData.size());
//获取待新增的津贴数据 //获取待新增的津贴数据
List<Map<String, String>> allowanceInfoList = createAllowanceInfo(cqData, empIdWithAllowanceInfo, bcWithAllowanceInfo, allowanceIdWithKqxmInfo); List<Map<String, String>> 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) { if (targetEmpIdList.size() > 0 && targetBcIdList.size() > 0) {
String delSql = "delete from uf_jcl_kq_cqjt where rq >= '" + startDate +"'" + " and rq <= '" + endDate +"'" 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) + ")"; + " and yg in (" + String.join(",",targetEmpIdList) + ") and bc in (" + String.join(",",targetBcIdList) + ")";
boolean delSign = DbTools.update(delSql); boolean delSign = DbTools.update(delSql);
bs.writeLog("delSign : " + delSign + ", delSql : " + delSql); log.debug("delSign : " + delSign + ", delSql : " + delSql);
} }
if (allowanceInfoList.size() > 0) { if (allowanceInfoList.size() > 0) {
//插入津贴数据 //插入津贴数据
@ -187,11 +187,11 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
dataList.add(list); dataList.add(list);
} }
bs.writeLog("dataList_size : " + dataList.size()); log.debug("dataList_size : " + dataList.size());
if(dataList.size() > 0){ if(dataList.size() > 0){
bs.writeLog("津贴数据记录入库开始---"); log.debug("津贴数据记录入库开始---");
boolean insertSign = DbTools.updateBatch(insertSql,dataList); boolean insertSign = DbTools.updateBatch(insertSql,dataList);
bs.writeLog("insertSign : " + insertSign); log.debug("insertSign : " + insertSign);
result.put("result", insertSign); result.put("result", insertSign);
} }
} }
@ -244,7 +244,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
//20240703需求变更收集加班结果列表中的加班时长 //20240703需求变更收集加班结果列表中的加班时长
List<Map<String, String>> realOvertimeInfoList = collectOvertimeInfo(empId, cqRq, jbKqxmUnitInfo); List<Map<String, String>> realOvertimeInfoList = collectOvertimeInfo(empId, cqRq, jbKqxmUnitInfo);
int realOvertimeMinutes = realOvertimeInfoList.stream().mapToInt(e->Integer.parseInt(e.get("scMinutes"))).sum(); int realOvertimeMinutes = realOvertimeInfoList.stream().mapToInt(e->Integer.parseInt(e.get("scMinutes"))).sum();
bs.writeLog("realOvertimeMinutes : " + realOvertimeMinutes); log.debug("realOvertimeMinutes : " + realOvertimeMinutes);
//最终核算分钟数 //最终核算分钟数
double countMinutes = 0; double countMinutes = 0;
//出勤时长 //出勤时长
@ -292,7 +292,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
String maxMinutes = Util.null2String(allowanceInfo.get("zdhsfzs")); String maxMinutes = Util.null2String(allowanceInfo.get("zdhsfzs"));
//超出起算时长的单次累加分钟数 //超出起算时长的单次累加分钟数
String oneTimeAddMinutes = Util.null2String(allowanceInfo.get("cchsfzs")); 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 + ",onDutyTime : " + onDutyTime + ",onlyCountBeforeDutyTime : " + onlyCountBeforeDutyTime + ",onlyCountAfterDutyTime : " + onlyCountAfterDutyTime
+ ",startMinutes : " + startMinutes,"maxMinutes : " + maxMinutes + ",oneTimeAddMinutes : " + oneTimeAddMinutes); + ",startMinutes : " + startMinutes,"maxMinutes : " + maxMinutes + ",oneTimeAddMinutes : " + oneTimeAddMinutes);
//逐一判断是否满足津贴时长计入规则 //逐一判断是否满足津贴时长计入规则
@ -345,7 +345,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
//a-起算分钟数 + 超出起算时长的单次累加分钟数 * N <= 最大核算分钟数 //a-起算分钟数 + 超出起算时长的单次累加分钟数 * N <= 最大核算分钟数
//b-由a点获取到分钟数后要根据津贴项目的核算量+核算单位来获取最终津贴时长例如分钟数170分钟核算量为0.5核算单位为小时则最终核算时长为2.5小时 //b-由a点获取到分钟数后要根据津贴项目的核算量+核算单位来获取最终津贴时长例如分钟数170分钟核算量为0.5核算单位为小时则最终核算时长为2.5小时
double allowanceMinutes = 0; double allowanceMinutes = 0;
bs.writeLog("countMinutes : " + countMinutes); log.debug("countMinutes : " + countMinutes);
if (countMinutes > Double.parseDouble(startMinutes)) { if (countMinutes > Double.parseDouble(startMinutes)) {
if (!"".equals(oneTimeAddMinutes) && !"0".equals(oneTimeAddMinutes)) { if (!"".equals(oneTimeAddMinutes) && !"0".equals(oneTimeAddMinutes)) {
double multiple = (countMinutes - Double.parseDouble(startMinutes)) / Double.parseDouble(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)) { if (allowanceMinutes > Double.parseDouble(maxMinutes)) {
allowanceMinutes = Double.parseDouble(maxMinutes); allowanceMinutes = Double.parseDouble(maxMinutes);
} }
bs.writeLog("allowanceMinutes : " + allowanceMinutes); log.debug("allowanceMinutes : " + allowanceMinutes);
//津贴时长 //津贴时长
String allowanceUnit = Util.null2String(jtKqxmUnitInfo.get(allowanceId)); String allowanceUnit = Util.null2String(jtKqxmUnitInfo.get(allowanceId));
String countScale = Util.null2String(jtKqxmCountScaleInfo.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())) { } else if (allowanceUnit.equals(AccountingUnitEnum.MINUTES.getKey())) {
sc = allowanceMinutes - allowanceMinutes % Double.parseDouble(countScale); sc = allowanceMinutes - allowanceMinutes % Double.parseDouble(countScale);
} }
bs.writeLog("sc : " + sc); log.debug("sc : " + sc);
//记录待新增的津贴记录 //记录待新增的津贴记录
allowanceInfoItem = new HashMap<>(); allowanceInfoItem = new HashMap<>();
allowanceInfoItem.put("szjg", Util.null2String(map.get("szjg"))); allowanceInfoItem.put("szjg", Util.null2String(map.get("szjg")));
@ -759,7 +759,7 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
startDate = targetMonth + "-01"; startDate = targetMonth + "-01";
//结束日期只作为范围筛选不用考虑是目标月份是否存在31号 //结束日期只作为范围筛选不用考虑是目标月份是否存在31号
endDate = targetMonth + "-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, " + 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 " + "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 " + "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 { } else {
resultMap.put("data", null); resultMap.put("data", null);
} }
log.info("detailList : [{}]", detailList); log.debug("detailList : [{}]", detailList);
return resultMap; return resultMap;
} }

@ -55,8 +55,9 @@ public class OvertimePlanServiceImpl extends Service implements OvertimePlanServ
Map<String, String> detailItem; Map<String, String> detailItem;
String sql = ""; String sql = "";
//获取作用时段包含计划加班的加班类型的考勤项目集合 //获取作用时段包含计划加班的加班类型的考勤项目集合
sql = "select id,mc, bddrqlx from uf_jcl_kq_kqxm where xmlx = ? and zysd = ?"; sql = "select id,mc, bddrqlx, jbqsfzs, xzzjbsc, rzdjbxss, zzdjbxss, yzdjbxss, zysd, ccclfs from uf_jcl_kq_kqxm where xmlx = ?";
List<Map<String, Object>> jblxAttendanceList = DbTools.getSqlToList(sql, AttendanceItemTypeEnum.WORK_OVERTIME.getKey(), WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey()); List<Map<String, Object>> 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和姓名信息 //获取人员id和姓名信息
Map<String, String> empIdToNameInfo = CommonUtil.empIdToNameInfo(empIdList); Map<String, String> empIdToNameInfo = CommonUtil.empIdToNameInfo(empIdList);
//获取目标人员列表已存在的加班计划 //获取目标人员列表已存在的加班计划

@ -1160,6 +1160,11 @@ public class Utils<T> {
return resultList; return resultList;
} }
/**
* sql
* @param sqltj
* @return
*/
public static String converSQL(String sqltj){ public static String converSQL(String sqltj){
sqltj = sqltj.replace("","select"); sqltj = sqltj.replace("","select");
sqltj = sqltj.replace("","select"); sqltj = sqltj.replace("","select");

Loading…
Cancel
Save