zm_dev
liuliang 2 years ago
parent 9338feaea6
commit a6cf2b53b0

@ -762,3 +762,9 @@
2023-11-20 14:02:52,160 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties 2023-11-20 14:02:52,160 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties
2023-11-20 14:35:59,979 [Timer-0] [A2] [INFO] - rootPath == null 2023-11-20 14:35:59,979 [Timer-0] [A2] [INFO] - rootPath == null
2023-11-20 14:35:59,982 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties 2023-11-20 14:35:59,982 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties
2023-11-27 21:26:47,131 [main] [com.engine.common.util.Utils] [INFO] - 请假外出时间 右边
2023-11-28 13:55:01,852 [main] [com.engine.common.util.Utils] [INFO] - 请假外出时间 右边
2023-11-28 15:44:10,438 [main] [com.engine.common.util.Utils] [INFO] - 请假外出时间 右边
2023-11-28 15:44:22,121 [main] [com.engine.common.util.Utils] [INFO] - 请假外出时间 右边
2023-11-28 15:49:22,060 [Timer-0] [A2] [INFO] - rootPath == null
2023-11-28 15:49:22,060 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties

@ -7,12 +7,14 @@ import com.engine.common.util.DateUtil;
import com.engine.common.util.Utils; import com.engine.common.util.Utils;
import com.engine.core.interceptor.CommandContext; import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util; import weaver.general.Util;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j
public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<String,Object>> { public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<String,Object>> {
public ComputeAttendanceDurationCmd(Map<String,Object> params){ public ComputeAttendanceDurationCmd(Map<String,Object> params){
@ -88,7 +90,9 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
*/ */
double evectionTimeTime = removeEvection(analysisDate,scheduleResult,evectionList,evectionItems,offsetEvectionAnomaly); double evectionTimeTime = removeEvection(analysisDate,scheduleResult,evectionList,evectionItems,offsetEvectionAnomaly);
edsc = edsc-abnormalTime-askForLeaveTime-evectionTimeTime; log.info("abnormalTime : {},askForLeaveTime : {},evectionTimeTime:{}",abnormalTime,askForLeaveTime,evectionTimeTime);
double deductTime = Double.valueOf(String.format ("%.2f",(abnormalTime+askForLeaveTime+evectionTimeTime)/60));
edsc = edsc-deductTime;
if (edsc < 0){ if (edsc < 0){
edsc=0; edsc=0;
} }
@ -101,6 +105,9 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
Map<String,Map<String,Object>> askForLeaveItems,List<Map<String, Object>> offsetAskForLeaveAnomaly){ Map<String,Map<String,Object>> askForLeaveItems,List<Map<String, Object>> offsetAskForLeaveAnomaly){
double employTime = 0; double employTime = 0;
double edsc = Double.valueOf(scheduleResult.get(0).get("edsc").toString()); double edsc = Double.valueOf(scheduleResult.get(0).get("edsc").toString());
log.info("removeAskForLeave scheduleResult:{},askForLeaveList:{},askForLeaveItems:{},offsetAskForLeaveAnomaly:{}",scheduleResult,
askForLeaveList,askForLeaveItems,offsetAskForLeaveAnomaly);
for (int i=0;i<askForLeaveList.size();i++){ for (int i=0;i<askForLeaveList.size();i++){
//请假时长 //请假时长
String qjsc = Util.null2String(askForLeaveList.get(i).get("qjsc")); String qjsc = Util.null2String(askForLeaveList.get(i).get("qjsc"));
@ -124,11 +131,14 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
if (offsetAskForLeaveAnomaly.size() > 0){ if (offsetAskForLeaveAnomaly.size() > 0){
List<Map<String, Object>> list = offsetAskForLeaveAnomaly.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList()); List<Map<String, Object>> list = offsetAskForLeaveAnomaly.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList());
employTime += Math.round(list.size()/Double.valueOf(offsetAskForLeaveAnomaly.size()) *Double.valueOf(qjsc)*60); employTime += Math.round(list.size()/Double.valueOf(offsetAskForLeaveAnomaly.size()) *Double.valueOf(qjsc)*60);
}else {
employTime +=Double.valueOf(qjsc)*60;
} }
} }
}else { }else {
//按照开始时间,结束时间请假 //按照开始时间,结束时间请假
for (Map<String, Object> scheduleMap:scheduleResult){ for (Map<String, Object> scheduleMap:scheduleResult){
if (ClassSegmentTypeEnum.WORK_TIME.getKey().equals(scheduleMap.get("bdlx"))){
String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj"); String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj");
String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj"); String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){ if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
@ -136,6 +146,7 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
} }
employTime +=Utils.getStartAndEndTime(dtkssj,dtjssj,askForLeaveList.get(i)); employTime +=Utils.getStartAndEndTime(dtkssj,dtjssj,askForLeaveList.get(i));
} }
}
} }
} }
@ -169,6 +180,8 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
if (offsetEvectionAnomaly.size() > 0){ if (offsetEvectionAnomaly.size() > 0){
List<Map<String, Object>> list = offsetEvectionAnomaly.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList()); List<Map<String, Object>> list = offsetEvectionAnomaly.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList());
employTime += Math.round(list.size()/Double.valueOf(offsetEvectionAnomaly.size()) *Double.valueOf(ccsc)*60); employTime += Math.round(list.size()/Double.valueOf(offsetEvectionAnomaly.size()) *Double.valueOf(ccsc)*60);
}else {
employTime += Double.valueOf(ccsc)*60;
} }
} }
}else { }else {
@ -176,11 +189,13 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
for (Map<String, Object> scheduleMap:scheduleResult){ for (Map<String, Object> scheduleMap:scheduleResult){
String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj"); String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj");
String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj"); String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj");
if (ClassSegmentTypeEnum.WORK_TIME.getKey().equals(scheduleMap.get("bdlx"))){
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){ if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+scheduleMap.get("dtjssj"); dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+scheduleMap.get("dtjssj");
} }
employTime +=Utils.getStartAndEndTime(dtkssj,dtjssj,evectionList.get(i)); employTime +=Utils.getStartAndEndTime(dtkssj,dtjssj,evectionList.get(i));
} }
}
} }
} }

@ -50,7 +50,7 @@ public class WorkOvertimeItemCmd extends AbstractCommonCommand<Map<String,Object
return false; return false;
} }
}).collect(Collectors.toList()); }).collect(Collectors.toList());
log.info("absenteeismCmd attendanceItems : [{}]",attendanceItems); log.info("WorkOvertimeItemCmd attendanceItems : [{}]",attendanceItems);
resultMap.put("attendanceItems",attendanceItems); resultMap.put("attendanceItems",attendanceItems);
return resultMap; return resultMap;

@ -40,8 +40,12 @@ public class recordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
List<Map<String,Object>> classInfo = (List<Map<String,Object>>)params.get("classInfo"); List<Map<String,Object>> classInfo = (List<Map<String,Object>>)params.get("classInfo");
//进出时间 //进出时间
Map<String,Object> recordDataTime = (Map<String,Object>)params.get("recordDataTime"); Map<String,Object> recordDataTime = (Map<String,Object>)params.get("recordDataTime");
//出勤时间
String attendanceDuration = Util.null2String(params.get("attendanceDuration"));
String formmodeid = Util.null2String(params.get("modeId")); Map<String,String> formmodeIdMap = (Map<String,String>)params.get("formmodeIdMap");
String formmodeid = formmodeIdMap.get("uf_jcl_kq_cqjg");
String cqzt = Util.null2String(params.get("cqzt")); String cqzt = Util.null2String(params.get("cqzt"));
@ -63,7 +67,7 @@ public class recordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
String sql = "select ygid,rq from uf_jcl_kq_cqjg where ygid=? and rq=?"; String sql = "select ygid,rq from uf_jcl_kq_cqjg where ygid=? and rq=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,userId,analysisDate); List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,userId,analysisDate);
if (dataList.size() >0){ if (dataList.size() >0){
sql = "update uf_jcl_kq_cqjg set cqzt="+cqzt+",fxrq='"+DateUtil.getCurrentDate()+"',xm1="+dayTYpe+","; sql = "update uf_jcl_kq_cqjg set cqsc="+attendanceDuration+",cqzt="+cqzt+",fxrq='"+DateUtil.getCurrentDate()+"',xm1="+dayTYpe+",";
for (int i =0;i<recordDataList.size();i++){ for (int i =0;i<recordDataList.size();i++){
String item = Util.null2String(recordDataList.get(i).get("item")); String item = Util.null2String(recordDataList.get(i).get("item"));
String itemduration = Util.null2String(recordDataList.get(i).get("itemduration")); String itemduration = Util.null2String(recordDataList.get(i).get("itemduration"));
@ -101,7 +105,7 @@ public class recordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
insertDatas.add(classInfo.get(0).get("bcxx")); insertDatas.add(classInfo.get(0).get("bcxx"));
insertDatas.add(classInfo.get(0).get("bcsdxx")); insertDatas.add(classInfo.get(0).get("bcsdxx"));
insertDatas.add(cqzt); insertDatas.add(cqzt);
insertDatas.add(classInfo.get(0).get("edsc")); insertDatas.add(attendanceDuration);
insertDatas.add(1); insertDatas.add(1);
insertDatas.add(DateUtil.getCurrentDate()); insertDatas.add(DateUtil.getCurrentDate());
insertDatas.add(formmodeid); insertDatas.add(formmodeid);

@ -19,10 +19,6 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class AttendanceAnalysisJob extends BaseCronJob { public class AttendanceAnalysisJob extends BaseCronJob {
private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class); private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class);
/**
* id
*/
private String modeId;
private AttendanceAnalysisWrapper attendanceAnalysisService = ServiceUtil.getService(AttendanceAnalysisWrapper.class); private AttendanceAnalysisWrapper attendanceAnalysisService = ServiceUtil.getService(AttendanceAnalysisWrapper.class);
@Override @Override
@ -50,7 +46,7 @@ public class AttendanceAnalysisJob extends BaseCronJob {
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap); Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap);
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data"); List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data");
attendanceAnalysisService.attendanceAnalysis(userId,collect.get(userMap.get("id")),attendanceItems,modeId); attendanceAnalysisService.attendanceAnalysis(userId,collect.get(userMap.get("id")),attendanceItems);
} }
log.info("********AttendanceAnalysisJob end********"); log.info("********AttendanceAnalysisJob end********");
} }

@ -78,7 +78,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc; between = qbkcsc;
}else { }else {
int deductionDuration = between-qbkcsc; int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue(); between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue()+qbkcsc;
} }
} }
@ -88,7 +88,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
saveWorkTimeBeLateParam.put("betweenMinutes",between); saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE); saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE);
saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0)); saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
resultList.add(saveWorkTimeBeLateParam); resultList.add(saveWorkTimeBeLateParam);
} }
@ -121,7 +121,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc; between = qbkcsc;
}else { }else {
int deductionDuration = between-qbkcsc; int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue(); between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue()+qbkcsc;
} }
} }
@ -131,7 +131,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
saveWorkTimeBeLateParam.put("betweenMinutes",between); saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE); saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE);
saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0)); saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
resultList.add(saveWorkTimeBeLateParam); resultList.add(saveWorkTimeBeLateParam);
} }
@ -162,7 +162,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc; between = qbkcsc;
}else { }else {
int deductionDuration = between-qbkcsc; int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue(); between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue()+qbkcsc;
} }
} }
@ -173,7 +173,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
saveWorkTimeBeLateParam.put("betweenMinutes",between); saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE); saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE);
saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0)); saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
resultList.add(saveWorkTimeBeLateParam); resultList.add(saveWorkTimeBeLateParam);
} }
@ -239,7 +239,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc; between = qbkcsc;
}else { }else {
int deductionDuration = between-qbkcsc; int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue(); between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue()+qbkcsc;
} }
} }
@ -249,8 +249,9 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
saveWorkTimeBeLateParam.put("item",getBeEarlyItems(earlyParams).get(0).get("key")); saveWorkTimeBeLateParam.put("item",getBeEarlyItems(earlyParams).get(0).get("key"));
saveWorkTimeBeLateParam.put("itemduration",itemduration); saveWorkTimeBeLateParam.put("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between); saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LEAVE_EARLY);
saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0)); saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
resultList.add(saveWorkTimeBeLateParam); resultList.add(saveWorkTimeBeLateParam);
} }
@ -283,7 +284,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc; between = qbkcsc;
}else { }else {
int deductionDuration = between-qbkcsc; int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue(); between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue()+qbkcsc;
} }
} }
@ -291,8 +292,9 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
saveWorkTimeBeLateParam.put("item",getBeEarlyItems(earlyParams).get(0).get("key")); saveWorkTimeBeLateParam.put("item",getBeEarlyItems(earlyParams).get(0).get("key"));
saveWorkTimeBeLateParam.put("itemduration",itemduration); saveWorkTimeBeLateParam.put("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between); saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LEAVE_EARLY);
saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0)); saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
resultList.add(saveWorkTimeBeLateParam); resultList.add(saveWorkTimeBeLateParam);
} }
@ -323,7 +325,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc; between = qbkcsc;
}else { }else {
int deductionDuration = between-qbkcsc; int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue(); between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue()+qbkcsc;
} }
} }
@ -333,8 +335,9 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
saveWorkTimeBeLateParam.put("item",getBeEarlyItems(earlyParams).get(0).get("key")); saveWorkTimeBeLateParam.put("item",getBeEarlyItems(earlyParams).get(0).get("key"));
saveWorkTimeBeLateParam.put("itemduration",itemduration); saveWorkTimeBeLateParam.put("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between); saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LEAVE_EARLY);
saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0)); saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
resultList.add(saveWorkTimeBeLateParam); resultList.add(saveWorkTimeBeLateParam);
} }

@ -5,8 +5,6 @@ import com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd;
import com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd; import com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd;
import com.engine.attendance.attendanceanalysis.cmd.recordDataCmd; import com.engine.attendance.attendanceanalysis.cmd.recordDataCmd;
import com.engine.attendance.attendanceanalysis.service.UtilService; import com.engine.attendance.attendanceanalysis.service.UtilService;
import com.engine.attendance.attendanceplan.service.AttendancePlanService;
import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl;
import com.engine.attendance.component.persongroup.service.SchedulingResultsService; import com.engine.attendance.component.persongroup.service.SchedulingResultsService;
import com.engine.attendance.component.persongroup.service.impl.SchedulingResultsServiceImpl; import com.engine.attendance.component.persongroup.service.impl.SchedulingResultsServiceImpl;
import com.engine.attendance.enums.*; import com.engine.attendance.enums.*;
@ -28,8 +26,6 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class UtilServiceImpl extends Service implements UtilService { public class UtilServiceImpl extends Service implements UtilService {
private SchedulingResultsService schedulingResultsService = ServiceUtil.getService(SchedulingResultsServiceImpl.class); private SchedulingResultsService schedulingResultsService = ServiceUtil.getService(SchedulingResultsServiceImpl.class);
private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class);
@Override @Override
public Map<String, List<Map<String,Object>>> getSchedulingInFormation(Map<String, Object> params) { public Map<String, List<Map<String,Object>>> getSchedulingInFormation(Map<String, Object> params) {
@ -45,7 +41,7 @@ public class UtilServiceImpl extends Service implements UtilService {
// Map<String,String> schedulingMap = schedulingResultsList.stream().collect(Collectors.toMap(e-> Util.null2String(e.get("bcxx")).split("-")[0], e->Util.null2String(e.get("bcrq"))+"&"+Util.null2String(e.get("rqlx")))); // Map<String,String> schedulingMap = schedulingResultsList.stream().collect(Collectors.toMap(e-> Util.null2String(e.get("bcxx")).split("-")[0], e->Util.null2String(e.get("bcrq"))+"&"+Util.null2String(e.get("rqlx"))));
Map<String,List<Map<String,Object>>> schedulingMap = schedulingResultsList.stream().collect(Collectors.groupingBy(e-> Util.null2String(e.get("bcxx")).split("-")[0])); Map<String,List<Map<String,Object>>> schedulingMap = schedulingResultsList.stream().collect(Collectors.groupingBy(e-> Util.null2String(e.get("bcxx")).split("-")[0]));
Map<String,List<Map<String,Object>>> resultMap = Maps.newHashMap(); Map<String,List<Map<String,Object>>> resultMap = Maps.newHashMap();
String sql = "select a.id bcxx,a.edsc,a.bcsdxx,a.sfdx,a.sfkt,b.bdlx,a.zddxfz,a.dxhs,b.kssj dtkssj,b.jssj dtjssj,b.ksdk,b.jsdk,b.tqdkfzs,b.thdkfzs from uf_jcl_kq_bcxx a left join uf_jcl_kq_bcxx_dt1 b on a.id=b.mainid where a.id in ("; String sql = "select a.id bcxx,a.edsc,a.bcsdxx,a.sfdx,a.sfkt,b.bdlx,a.zddxfz,a.dxhs,b.kssj dtkssj,b.jssj dtjssj,b.ksdk,b.jsdk,b.tqdkfzs,b.thdkfzs,b.edxss from uf_jcl_kq_bcxx a left join uf_jcl_kq_bcxx_dt1 b on a.id=b.mainid where a.id in (";
String bcxxIds = ""; String bcxxIds = "";
for (Map.Entry<String,List<Map<String,Object>>> entry :schedulingMap.entrySet()){ for (Map.Entry<String,List<Map<String,Object>>> entry :schedulingMap.entrySet()){
bcxxIds +=entry.getKey() +","; bcxxIds +=entry.getKey() +",";
@ -60,15 +56,18 @@ public class UtilServiceImpl extends Service implements UtilService {
dataMap.entrySet().forEach(e -> { dataMap.entrySet().forEach(e -> {
List<Map<String,Object>> schedulingList = schedulingMap.get(e.getKey()); List<Map<String,Object>> schedulingList = schedulingMap.get(e.getKey());
List<Map<String,Object>> bcxxs = e.getValue();
for (Map<String,Object> scheduling :schedulingList){ for (Map<String,Object> scheduling :schedulingList){
String bcrq = Util.null2String(scheduling.get("bcrq")); String bcrq = Util.null2String(scheduling.get("bcrq"));
String rqlx = Util.null2String(scheduling.get("rqlx")); String rqlx = Util.null2String(scheduling.get("rqlx"));
List<Map<String,Object>> classs = Lists.newArrayList();
List<Map<String,Object>> bcxxs = e.getValue();
for (Map<String,Object> map:bcxxs){ for (Map<String,Object> map:bcxxs){
map.put("rqlx",rqlx); Map<String,Object> newMap = Maps.newHashMap();
newMap.putAll(map);
newMap.put("rqlx",rqlx);
classs.add(newMap);
} }
resultMap.put(bcrq,bcxxs); resultMap.put(bcrq,classs);
} }
}); });
@ -77,13 +76,8 @@ public class UtilServiceImpl extends Service implements UtilService {
Map<String,List<Map<String,Object>>> overtimePlanMap = DbTools.getSqlToList(sql,params.get("pbdx"),params.get("startDate"),params.get("endDate")).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("ksrq")))); Map<String,List<Map<String,Object>>> overtimePlanMap = DbTools.getSqlToList(sql,params.get("pbdx"),params.get("startDate"),params.get("endDate")).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("ksrq"))));
//考勤项目 //考勤项目
Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate",""); List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)params.get("attendanceItems");
paramMap.put("endDate","");
paramMap.put("resourceId",params.get("pbdx"));
paramMap.put("modeId","204");
Map<String,Object> attendanceItemMap = basicsetService.getAttendanceItemsByPerson(paramMap);
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)attendanceItemMap.get("data");
//日期集合 //日期集合
Map<String,Object> dateParam = Maps.newHashMap(); Map<String,Object> dateParam = Maps.newHashMap();
dateParam.put("nd",Util.null2String(params.get("startDate")).split("-")[0]); dateParam.put("nd",Util.null2String(params.get("startDate")).split("-")[0]);
@ -120,13 +114,14 @@ public class UtilServiceImpl extends Service implements UtilService {
if (xmlx.equals(AttendanceItemTypeEnum.WORK_OVERTIME.getKey()) && (zysd.contains(WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey()) || zysd.equals(WorkForTimeEnum.ALL_TIME.getKey())) && bddrqlx.contains(dateType)){ if (xmlx.equals(AttendanceItemTypeEnum.WORK_OVERTIME.getKey()) && (zysd.contains(WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey()) || zysd.equals(WorkForTimeEnum.ALL_TIME.getKey())) && bddrqlx.contains(dateType)){
return true; return true;
} }else {
return false; return false;
}
}).collect(Collectors.toList()); }).collect(Collectors.toList());
map.put("bcxx","0"); map.put("bcxx",resultList.get(0) == null ? "0" :resultList.get(0).get("bcxx"));
map.put("bcsdxx",""); map.put("bcsdxx",resultList.get(0) == null ? "":resultList.get(0).get("bcsdxx"));
if (dataList.size()>0){ if (dataList.size()>0){
map.put("edsc",Util.null2String(dataList.get(0).get("edsc"))); map.put("edsc",Util.null2String(dataList.get(0).get("edsc")));
}else { }else {
@ -143,7 +138,7 @@ public class UtilServiceImpl extends Service implements UtilService {
map.put("zddxfz","0"); map.put("zddxfz","0");
map.put("dxhs","0"); map.put("dxhs","0");
map.put("rqlx",dateMap.get(e.getKey())); map.put("rqlx",dateMap.get(e.getKey()));
map.put("jbsc",overtimePlan.get("jbsc")); map.put("edxss",overtimePlan.get("jbsc"));
if (attendanceItems.size() >0){ if (attendanceItems.size() >0){
map.put("ksdk",attendanceItems.get(0).get("ksjbbxydk")); map.put("ksdk",attendanceItems.get(0).get("ksjbbxydk"));
map.put("jsdk",attendanceItems.get(0).get("jsjbbxydk")); map.put("jsdk",attendanceItems.get(0).get("jsjbbxydk"));
@ -152,20 +147,28 @@ public class UtilServiceImpl extends Service implements UtilService {
map.put("jbwdhlfzs",attendanceItems.get(0).get("jbwdhlfzs")); map.put("jbwdhlfzs",attendanceItems.get(0).get("jbwdhlfzs"));
map.put("jbzzhlfzs",attendanceItems.get(0).get("jbzzhlfzs")); map.put("jbzzhlfzs",attendanceItems.get(0).get("jbzzhlfzs"));
} }
if (resultList.size() == 0){ if (resultList.size() > 1){
String kssjbegin = e.getKey() +" "+resultList.get(0).get("dtkssj");
String kssjend = e.getKey() +" "+resultList.get(resultList.size()-1).get("dtkssj");
String kssj = e.getKey() +" "+overtimePlan.get("kssj");
if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(kssjbegin)) <0){
resultList.add(0,map);
}else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(kssjend)) >0){
resultList.add(map); resultList.add(map);
} }else {
for (int j=0;j<resultList.size();j++){ for (int j=1;j<resultList.size();j++){
String kssj1 = e.getKey() +" "+resultList.get(j).get("dtkssj"); String kssj1 = e.getKey() +" "+resultList.get(j).get("dtkssj");
String kssj2 = e.getKey() +" "+overtimePlan.get("kssj"); String kssj2 = e.getKey() +" "+overtimePlan.get("kssj");
String kssj3 = e.getKey() +" "+resultList.get(j-1).get("dtkssj"); String kssj3 = e.getKey() +" "+resultList.get(j-1).get("dtkssj");
if (DateUtil.getTime(kssj1).compareTo(DateUtil.getTime(kssj2)) >=0 && DateUtil.getTime(kssj3).compareTo(DateUtil.getTime(kssj2)) <=0){ if (DateUtil.getTime(kssj1).compareTo(DateUtil.getTime(kssj2)) >=0 && DateUtil.getTime(kssj3).compareTo(DateUtil.getTime(kssj2)) <=0){
map.put("bcxx",resultList.get(0).get("bcxx"));
map.put("bcsdxx",resultList.get(0).get("bcsdxx"));
map.put("edsc",resultList.get(0).get("edsc"));
resultList.add(j,map); resultList.add(j,map);
break;
}
} }
} }
}else {
resultList.add(map);
}
} }

@ -52,6 +52,8 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
List<Map<String, Object>> workOverTimeResults = null; List<Map<String, Object>> workOverTimeResults = null;
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.set(Integer.valueOf(analysisDate.split("-")[0]), Integer.valueOf(analysisDate.split("-")[1]) - 1, 1); calendar.set(Integer.valueOf(analysisDate.split("-")[0]), Integer.valueOf(analysisDate.split("-")[1]) - 1, 1);
@ -67,7 +69,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
} }
//需要计算的班次打卡时间点 //需要计算的班次打卡时间点
String pointTime = point.split("\\|")[0]; String pointTime = point.split("\\|")[0];
clcokInTimeMap.put(pointTime,clcokInTimeData); clcokInTimeMap.put(pointTime.split(" ")[1],clcokInTimeData);
} }
//人员 //人员
String userId = Util.null2String(params.get("userId")); String userId = Util.null2String(params.get("userId"));
@ -94,7 +96,6 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
String realityEndime = ""; String realityEndime = "";
resultLists.add(workOverTimeItems);
getWorkOverTimeParam.put("attendanceItems",attendanceItems); getWorkOverTimeParam.put("attendanceItems",attendanceItems);
getWorkOverTimeParam.put("rqlx",scheduleMap.get("rqlx")); getWorkOverTimeParam.put("rqlx",scheduleMap.get("rqlx"));
if (ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(bdlx)){ if (ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(bdlx)){
@ -103,14 +104,17 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
getWorkOverTimeParam.put("workfor",WorkForTimeEnum.EARLY_TO_WORK_OVERTIME.getKey()); getWorkOverTimeParam.put("workfor",WorkForTimeEnum.EARLY_TO_WORK_OVERTIME.getKey());
}else if (ClassSegmentTypeEnum.OVERTIME_PLAN.getKey().equals(bdlx)){ }else if (ClassSegmentTypeEnum.OVERTIME_PLAN.getKey().equals(bdlx)){
getWorkOverTimeParam.put("workfor",WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey()); getWorkOverTimeParam.put("workfor",WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey());
}else {
continue;
} }
Map<String,Object> result = commandExecutor.execute(new WorkOvertimeItemCmd(getWorkOverTimeParam)); Map<String,Object> result = commandExecutor.execute(new WorkOvertimeItemCmd(getWorkOverTimeParam));
//加班项目 //加班项目
List<Map<String,Object>> workTimeBeLateItems = (List<Map<String,Object>>)result.get("attendanceItems"); List<Map<String,Object>> workTimeBeLateItems = (List<Map<String,Object>>)result.get("attendanceItems");
if (workTimeBeLateItems.size() == 0){ if (workTimeBeLateItems.size() == 0){
continue; continue;
} }
double jbsc = Integer.valueOf(Util.null2String(scheduleMap.get("jbsc"))); double jbsc = Double.valueOf(Util.null2String(scheduleMap.get("edxss")));
//开始加班必须打卡 //开始加班必须打卡
@ -149,6 +153,13 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
*/ */
if (CheckBoxEnum.CHECKED.getKey().equals(ksjbbxydk)){ if (CheckBoxEnum.CHECKED.getKey().equals(ksjbbxydk)){
Map<String,Object> clcokInTimeData = clcokInTimeMap.get(dtkssj); Map<String,Object> clcokInTimeData = clcokInTimeMap.get(dtkssj);
if (clcokInTimeData == null){
log.info("加班开始时间漏卡: {},clcokInTimeData:{}",dtkssj,clcokInTimeMap);
workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key"));
workOverTimeItems.put("itemduration","0");
resultLists.add(workOverTimeItems);
continue;
}
String signTime = clcokInTimeData.get("signdate")+" "+clcokInTimeData.get("signtime"); String signTime = clcokInTimeData.get("signdate")+" "+clcokInTimeData.get("signtime");
realityStartTime = signTime; realityStartTime = signTime;
}else { }else {
@ -156,6 +167,13 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
} }
if (CheckBoxEnum.CHECKED.getKey().equals(jsjbbxydk)){ if (CheckBoxEnum.CHECKED.getKey().equals(jsjbbxydk)){
Map<String,Object> clcokInTimeData = clcokInTimeMap.get(dtjssj); Map<String,Object> clcokInTimeData = clcokInTimeMap.get(dtjssj);
if (clcokInTimeData == null){
log.info("加班结束时间漏卡: {},clcokInTimeData:{}",dtjssj,clcokInTimeData);
workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key"));
workOverTimeItems.put("itemduration","0");
resultLists.add(workOverTimeItems);
continue;
}
String signTime = clcokInTimeData.get("signdate")+" "+clcokInTimeData.get("signtime"); String signTime = clcokInTimeData.get("signdate")+" "+clcokInTimeData.get("signtime");
realityEndime = signTime; realityEndime = signTime;
}else { }else {
@ -209,9 +227,9 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
List<Map<String,Object>> leaveEarlyAbnormal = abnormalClockInList.stream().filter(e->e.get("pointTime").toString().split(" ")[1].equals(dtjssj)).collect(Collectors.toList()); List<Map<String,Object>> leaveEarlyAbnormal = abnormalClockInList.stream().filter(e->e.get("pointTime").toString().split(" ")[1].equals(dtjssj)).collect(Collectors.toList());
double leaveElaryTime=0; double leaveElaryTime=0;
if (leaveEarlyAbnormal.size() > 0){ if (leaveEarlyAbnormal.size() > 0){
String hsdw = Util.null2String(beLateAbnormal.get(0).get("hsdw")); String hsdw = Util.null2String(leaveEarlyAbnormal.get(0).get("hsdw"));
String itemduration = Util.null2String(beLateAbnormal.get(0).get("itemduration")); String itemduration = Util.null2String(leaveEarlyAbnormal.get(0).get("itemduration"));
AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)beLateAbnormal.get(0).get("itemType"); AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)leaveEarlyAbnormal.get(0).get("itemType");
if (itemType == AttendanceItemTypeEnum.MISSE_CARD){ if (itemType == AttendanceItemTypeEnum.MISSE_CARD){
//下午漏卡 //下午漏卡
leaveElaryTime = jbsc; leaveElaryTime = jbsc;
@ -239,13 +257,13 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
* *
*/ */
int askForLeaveTime = removeAskForLeave(realityStartTime,realityEndime,Util.null2String(getWorkOverTimeParam.get("workfor")) int askForLeaveTime = removeAskForLeave(realityStartTime,realityEndime,Util.null2String(getWorkOverTimeParam.get("workfor"))
,bdlx,evectionList,askForLeaveItems,offsetAskForLeaveAnomaly); ,bdlx,askForLeaveList,askForLeaveItems,offsetAskForLeaveAnomaly);
/** /**
* *
*/ */
int evectionTime = removeEvection(realityStartTime,realityEndime,Util.null2String(getWorkOverTimeParam.get("workfor")) int evectionTime = removeEvection(realityStartTime,realityEndime,Util.null2String(getWorkOverTimeParam.get("workfor"))
,bdlx,askForLeaveList,evectionItems,offsetEvectionAnomaly); ,bdlx,evectionList,evectionItems,offsetEvectionAnomaly);
log.info("加班时长: {}",jbsc); log.info("加班时长: {}",jbsc);
log.info("beLateTime :[{}],leaveElaryTime :[{}],askForLeaveTime:[{}],evectionTime:[{}]",beLateTime,leaveElaryTime,askForLeaveTime,evectionTime); log.info("beLateTime :[{}],leaveElaryTime :[{}],askForLeaveTime:[{}],evectionTime:[{}]",beLateTime,leaveElaryTime,askForLeaveTime,evectionTime);
@ -257,6 +275,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
//小于最小加班分钟数不算加班 //小于最小加班分钟数不算加班
workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key")); workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key"));
workOverTimeItems.put("itemduration","0"); workOverTimeItems.put("itemduration","0");
resultLists.add(workOverTimeItems);
continue; continue;
}else if (jbsc >= Integer.valueOf(jbqsfzs) && !"".equals(ccqszhdhsfzs)){ }else if (jbsc >= Integer.valueOf(jbqsfzs) && !"".equals(ccqszhdhsfzs)){
jbsc = Double.valueOf(Utils.getItemdurationDown(Integer.valueOf(ccqszhdhsfzs),AccountingUnitEnum.MINUTES.getKey(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES)).intValue(); jbsc = Double.valueOf(Utils.getItemdurationDown(Integer.valueOf(ccqszhdhsfzs),AccountingUnitEnum.MINUTES.getKey(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES)).intValue();
@ -266,6 +285,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
//加班时长为0 //加班时长为0
workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key")); workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key"));
workOverTimeItems.put("itemduration","0"); workOverTimeItems.put("itemduration","0");
resultLists.add(workOverTimeItems);
continue; continue;
} }
@ -326,7 +346,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
insertParam.put("sjjbsc",String.format ("%.2f", jbsc/60)); insertParam.put("sjjbsc",String.format ("%.2f", jbsc/60));
insertParam.put("jbjgly","4"); insertParam.put("jbjgly","4");
insertParam.put("zt","1"); insertParam.put("zt","1");
DbTools.update(CommonUtil.makeInsertSql("uf_jcl_kq_jbjg",insertParam)); Utils.InsertFormTable("uf_jcl_kq_jbjg",insertParam,(Map<String,String>)params.get("formmodeIdMap"));
/** /**
* *
@ -394,8 +414,10 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
//一年 //一年
insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(analysisDate,12,DateUtil.yyyyMMdd)); insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(analysisDate,12,DateUtil.yyyyMMdd));
} }
DbTools.update(CommonUtil.makeInsertSql("uf_jcl_kq_kqxm",insertHoliDayParam)); Utils.InsertFormTable("uf_jcl_kq_jqye",insertHoliDayParam,(Map<String,String>)params.get("formmodeIdMap"));
} }
resultLists.add(workOverTimeItems);
} }
return resultLists; return resultLists;
@ -525,4 +547,5 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
} }
} }

@ -67,11 +67,12 @@ public class AttendanceanalysisAction {
classesParamMap.put("current","1"); classesParamMap.put("current","1");
classesParamMap.put("pageSize",10); classesParamMap.put("pageSize",10);
classesParamMap.put("recurrence",1); classesParamMap.put("recurrence",1);
classesParamMap.put("attendanceItems",attendanceItems);
Map<String,List<Map<String,Object>>> schedulingResultsMap = utilService.getSchedulingInFormation(classesParamMap); Map<String,List<Map<String,Object>>> schedulingResultsMap = utilService.getSchedulingInFormation(classesParamMap);
for (int i=0; i<=betweenDays;i++){ for (int i=0; i<=betweenDays;i++){
String date = DateUtil.AfterDay(startDate,i); String date = DateUtil.AfterDay(startDate,i);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulingResultsMap,modeId); attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulingResultsMap);
} }
} }
return null; return null;

@ -41,9 +41,8 @@ public class AttendanceAnalysisWrapper extends Service {
* @param userId id * @param userId id
* @param dataList * @param dataList
* @param attendanceItems * @param attendanceItems
* @param modeId formmodeid
*/ */
public void attendanceAnalysis(String userId, List<Map<String,Object>> dataList,List<Map<String,Object>> attendanceItems,String modeId){ public void attendanceAnalysis(String userId, List<Map<String,Object>> dataList,List<Map<String,Object>> attendanceItems){
log.info("***********analysis userId:{} start***********",userId); log.info("***********analysis userId:{} start***********",userId);
log.info("clockInTimeDate : [{}]",dataList); log.info("clockInTimeDate : [{}]",dataList);
@ -65,6 +64,7 @@ public class AttendanceAnalysisWrapper extends Service {
classesParamMap.put("current","1"); classesParamMap.put("current","1");
classesParamMap.put("pageSize",10); classesParamMap.put("pageSize",10);
classesParamMap.put("recurrence",1); classesParamMap.put("recurrence",1);
classesParamMap.put("attendanceItems",attendanceItems);
Map<String,List<Map<String,Object>>> schedulingResultsMap = utilService.getSchedulingInFormation(classesParamMap); Map<String,List<Map<String,Object>>> schedulingResultsMap = utilService.getSchedulingInFormation(classesParamMap);
@ -78,14 +78,14 @@ public class AttendanceAnalysisWrapper extends Service {
List<Map<String, Object>> beforeOneDayClockInTimeList = utilService.getClockInTime(getClockTimeParam); List<Map<String, Object>> beforeOneDayClockInTimeList = utilService.getClockInTime(getClockTimeParam);
log.info("beforeOneDayClockInTimeList : [{}]",beforeOneDayClockInTimeList); log.info("beforeOneDayClockInTimeList : [{}]",beforeOneDayClockInTimeList);
//分析前一天考勤 //分析前一天考勤
analysis(userId,beforeOneDayDate,beforeOneDayClockInTimeList,schedulingResultsMap.get(beforeOneDayDate),attendanceItems,modeId); analysis(userId,beforeOneDayDate,beforeOneDayClockInTimeList,schedulingResultsMap.get(beforeOneDayDate),attendanceItems);
getClockTimeParam.put("date",beforeTwoDayDate); getClockTimeParam.put("date",beforeTwoDayDate);
//前第二天打卡数据 //前第二天打卡数据
List<Map<String, Object>> beforeTwoDayClockInTimeList = utilService.getClockInTime(getClockTimeParam); List<Map<String, Object>> beforeTwoDayClockInTimeList = utilService.getClockInTime(getClockTimeParam);
log.info("beforeTwoDayClockInTimeList : [{}]",beforeTwoDayClockInTimeList); log.info("beforeTwoDayClockInTimeList : [{}]",beforeTwoDayClockInTimeList);
//分析前第二天考勤 //分析前第二天考勤
analysis(userId,beforeTwoDayDate,beforeTwoDayClockInTimeList,schedulingResultsMap.get(beforeTwoDayDate),attendanceItems,modeId); analysis(userId,beforeTwoDayDate,beforeTwoDayClockInTimeList,schedulingResultsMap.get(beforeTwoDayDate),attendanceItems);
} }
@ -96,9 +96,8 @@ public class AttendanceAnalysisWrapper extends Service {
* @param analysisDate * @param analysisDate
* @param dataList 23 * @param dataList 23
* @param attendanceItems * @param attendanceItems
* @param modeId formmodeid
*/ */
public void attendanceAnalysisForApi(String userId,String analysisDate, List<Map<String,Object>> dataList,List<Map<String,Object>> attendanceItems,Map<String,List<Map<String,Object>>> schedulingResultsMap,String modeId){ public void attendanceAnalysisForApi(String userId,String analysisDate, List<Map<String,Object>> dataList,List<Map<String,Object>> attendanceItems,Map<String,List<Map<String,Object>>> schedulingResultsMap){
log.info("***********analysis userId:{} start***********",userId); log.info("***********analysis userId:{} start***********",userId);
log.info("clockInTimeDate : [{}]",dataList); log.info("clockInTimeDate : [{}]",dataList);
Map<String, List<Map<String,Object>>> collect = Maps.newHashMap(); Map<String, List<Map<String,Object>>> collect = Maps.newHashMap();
@ -114,7 +113,7 @@ public class AttendanceAnalysisWrapper extends Service {
log.info("getClockTimeParam : [{}]",getClockTimeParam); log.info("getClockTimeParam : [{}]",getClockTimeParam);
List<Map<String, Object>> clockInTimeList = utilService.getClockInTime(getClockTimeParam); List<Map<String, Object>> clockInTimeList = utilService.getClockInTime(getClockTimeParam);
analysis(userId,analysisDate,clockInTimeList,schedulingResultsMap.get(analysisDate),attendanceItems,modeId); analysis(userId,analysisDate,clockInTimeList,schedulingResultsMap.get(analysisDate),attendanceItems);
} }
/** /**
@ -125,12 +124,16 @@ public class AttendanceAnalysisWrapper extends Service {
* @param scheduleResult * @param scheduleResult
* @param attendanceItems * @param attendanceItems
*/ */
public void analysis(String userId,String analysisDate,List<Map<String, Object>> clockInTimeList,List<Map<String, Object>> scheduleResult,List<Map<String,Object>> attendanceItems,String modeId){ public void analysis(String userId,String analysisDate,List<Map<String, Object>> clockInTimeList,List<Map<String, Object>> scheduleResult,List<Map<String,Object>> attendanceItems){
Map<String,Object> recordParam = Maps.newHashMap(); Map<String,Object> recordParam = Maps.newHashMap();
Map<String,String> formModeIdMap = Utils.getFormmodeIdMap();
recordParam.put("userId",userId); recordParam.put("userId",userId);
recordParam.put("analysisDate",analysisDate); recordParam.put("analysisDate",analysisDate);
recordParam.put("classInfo",scheduleResult); recordParam.put("classInfo",scheduleResult);
recordParam.put("modeId",modeId); recordParam.put("formmodeIdMap",formModeIdMap);
recordParam.put("attendanceDuration",0);
recordParam.put("modeId",formModeIdMap.get("uf_jcl_kq_cqjg"));
if (scheduleResult == null || scheduleResult.size() ==0){ if (scheduleResult == null || scheduleResult.size() ==0){
@ -138,7 +141,7 @@ public class AttendanceAnalysisWrapper extends Service {
Map<String,Object> params = Maps.newHashMap(); Map<String,Object> params = Maps.newHashMap();
params.put("userId",userId); params.put("userId",userId);
params.put("analysisDate",analysisDate); params.put("analysisDate",analysisDate);
params.put("modeId",modeId); params.put("modeId",formModeIdMap.get("uf_jcl_kq_cqjg"));
updateAttendanceResultWrapper.recordNoClass(params); updateAttendanceResultWrapper.recordNoClass(params);
return; return;
} }
@ -168,7 +171,7 @@ public class AttendanceAnalysisWrapper extends Service {
Map<String,Map<String,Object>> evectionItems = Maps.newHashMap(); Map<String,Map<String,Object>> evectionItems = Maps.newHashMap();
sql = "select hsl,hsdw,lgsbxydk,tqlghlfzs,fgsbxydk,thfghlfzs,tybcndbjlhbjs,zdycbcndfgzsd,zdycrqqjndxxb from uf_jcl_kq_kqxm where id=?"; sql = "select hsl,hsdw,lgsbxydk,tqlghlfzs,fgsbxydk,thfghlfzs,tybcndbjlhbjs,zdycbcndfgzsd,zdycrqqjndxxb,zysd from uf_jcl_kq_kqxm where id=?";
for (Map<String,Object> askForLeaveData : askForLeaveList){ for (Map<String,Object> askForLeaveData : askForLeaveList){
Map<String,Object> askForLeaveItem = DbTools.getSqlToMap(sql,askForLeaveData.get("jqlx")); Map<String,Object> askForLeaveItem = DbTools.getSqlToMap(sql,askForLeaveData.get("jqlx"));
//全天请假 //全天请假
@ -176,7 +179,7 @@ public class AttendanceAnalysisWrapper extends Service {
List<Map<String,Object>> resultList = Lists.newArrayList(); List<Map<String,Object>> resultList = Lists.newArrayList();
Map<String,Object> resultMap = Maps.newHashMap(); Map<String,Object> resultMap = Maps.newHashMap();
resultMap.put("item",askForLeaveData.get("jqlx")); resultMap.put("item",askForLeaveData.get("jqlx"));
resultMap.put("itemduration",askForLeaveItem.get("hsl")); resultMap.put("itemduration",scheduleResult.get(0).get("edsc"));
resultList.add(resultMap); resultList.add(resultMap);
recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey()); recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey());
recordParam.put("recordData",resultList); recordParam.put("recordData",resultList);
@ -213,7 +216,7 @@ public class AttendanceAnalysisWrapper extends Service {
List<Map<String,Object>> resultList = Lists.newArrayList(); List<Map<String,Object>> resultList = Lists.newArrayList();
Map<String,Object> resultMap = Maps.newHashMap(); Map<String,Object> resultMap = Maps.newHashMap();
resultMap.put("item", evectionData.get("cclx")); resultMap.put("item", evectionData.get("cclx"));
resultMap.put("itemduration", evectionItem.get("hsl")); resultMap.put("itemduration", scheduleResult.get(0).get("edsc"));
resultList.add(resultMap); resultList.add(resultMap);
recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey()); recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey());
recordParam.put("recordData",resultList); recordParam.put("recordData",resultList);
@ -257,10 +260,11 @@ public class AttendanceAnalysisWrapper extends Service {
recordAbnormalParam.put("analysisDate",analysisDate); recordAbnormalParam.put("analysisDate",analysisDate);
recordAbnormalParam.put("userId",userId); recordAbnormalParam.put("userId",userId);
recordAbnormalParam.put("rqlx",scheduleResult.get(0).get("rqlx")); recordAbnormalParam.put("rqlx",scheduleResult.get(0).get("rqlx"));
recordAbnormalParam.put("modeId",modeId);
recordAbnormalParam.put("formmodeIdMap",formModeIdMap);
log.info("recordAbnormalParam clcokInTimeList:{},attendanceItems size :{},scheduleResult :{},analysisDate:[{}],userId:[{}],rqlx:[{}],modeId:[{}]",clcokInTimeData, log.info("recordAbnormalParam clcokInTimeList:{},attendanceItems size :{},scheduleResult :{},analysisDate:[{}],userId:[{}],rqlx:[{}],modeId:[{}]",clcokInTimeData,
attendanceItems.size(),scheduleResult,analysisDate,userId,scheduleResult.get(0).get("rqlx"),modeId); attendanceItems.size(),scheduleResult,analysisDate,userId,scheduleResult.get(0).get("rqlx"));
/** /**
* *
@ -320,6 +324,7 @@ public class AttendanceAnalysisWrapper extends Service {
recordData.addAll(recordWorkOverTime); recordData.addAll(recordWorkOverTime);
recordParam.put("recordData",recordData); recordParam.put("recordData",recordData);
recordParam.put("recordDataTime",utilService.getNeedRecordClockInTime(clcokInTimeData)); recordParam.put("recordDataTime",utilService.getNeedRecordClockInTime(clcokInTimeData));
recordParam.put("attendanceDuration",attendanceDuration);
log.info("recordParam : {}",recordParam); log.info("recordParam : {}",recordParam);
if (abnormalClockInListByEvction.size()>0){ if (abnormalClockInListByEvction.size()>0){
recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey()); recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey());

@ -26,7 +26,7 @@ public class GetDateCmd extends AbstractCommonCommand<Map<String,Object>> {
String nd = Util.null2String(params.get("nd")); String nd = Util.null2String(params.get("nd"));
String glpb = Util.null2String(params.get("glpb")); String glpb = Util.null2String(params.get("glpb"));
String sql = "select nd,rq,nlrq,rqlx,xq,rlmc from uf_jcl_kq_rlxx a left join uf_jcl_kq_glpb b on a.rlmc=b.qyrl where b.id=? and a.nd=? "; String sql = "select nd,rq,nlrq,rqlx,xq,rlmc from uf_jcl_kq_rlxx a left join uf_jcl_kq_glpb b on a.rlmc=b.qyrl where b.id=? and a.nd=? ";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,nd,glpb); List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,glpb,nd);
Map<String, Object> resultMap = Maps.newHashMap(); Map<String, Object> resultMap = Maps.newHashMap();
resultMap.put("data",dataList); resultMap.put("data",dataList);
return resultMap; return resultMap;

@ -20,10 +20,7 @@ import java.math.MathContext;
import java.net.JarURLConnection; import java.net.JarURLConnection;
import java.net.URL; import java.net.URL;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.util.ArrayList; import java.util.*;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.jar.JarEntry; import java.util.jar.JarEntry;
import java.util.jar.JarFile; import java.util.jar.JarFile;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -440,4 +437,22 @@ public class Utils<T> {
return betweenMinutes; return betweenMinutes;
} }
public static Map<String,String> getFormmodeIdMap(){
String sql = "select modeid,tablename from uf_jcl_form_table ";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql);
return dataList.stream().collect(Collectors.toMap(e->e.get("tablename").toString(),e->e.get("modeid").toString()));
}
public static void InsertFormTable(String tableName,Map<String,Object> dataMap,Map<String,String> formmodeIdMap){
String formmodeId = formmodeIdMap.get(tableName);
dataMap.put("formmodeid",formmodeId);
dataMap.put("modeuuid", UUID.randomUUID().toString());
dataMap.put("modedatacreater","1");
dataMap.put("modedatacreatertype","0");
dataMap.put("modedatacreatedate",DateUtil.getCurrentTime().split(" ")[0]);
dataMap.put("modedatacreatetime",DateUtil.getCurrentTime().split(" ")[1]);
DbTools.update(CommonUtil.makeInsertSql(tableName,dataMap));
}
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -71,6 +71,12 @@ public class Test {
// System.out.println(i); // System.out.println(i);
// } // }
// System.out.println("aaaa"); // System.out.println("aaaa");
Map<String,Object> map = Maps.newHashMap();
map.put("ksrq","2023-11-25");
map.put("jssj","14:00");
map.put("jsrq","2023-11-25");
map.put("kssj","10:00");
System.out.println(Utils.getStartAndEndTime("2023-11-25 09:00","2023-11-25 13:00",map));
//System.out.println(Util.getIntValue("")); //System.out.println(Util.getIntValue(""));
// List<Map<String,Object>> beforeleaveDate = Lists.newArrayList(); // List<Map<String,Object>> beforeleaveDate = Lists.newArrayList();
@ -118,7 +124,28 @@ public class Test {
// map3.put("value","222"); // map3.put("value","222");
// System.out.println(DateUtil.getBetWeenMinutes("2023-11-16 08:00","2023-11-16 09:10")); // System.out.println(DateUtil.getBetWeenMinutes("2023-11-16 08:00","2023-11-16 09:10"));
// BigDecimal durationBig = new BigDecimal(1.5); // BigDecimal durationBig = new BigDecimal(1.5);
List<Map<String,String>> list = Lists.newArrayList();
// List<Map<String,String>> list = Lists.newArrayList();
//
// List<Map<String,String>> list2 = Lists.newArrayList();
// list2.add(new HashMap(){{
// put("one","aa");
// }});
// list.addAll(list2);
// list.get(0).put("two","bb");
//// System.out.println(list2);
//// System.out.println(list);
//
// Map<String,Object> map1 = Maps.newHashMap();
// map1.put("aa","bb");
// Map<String,Object> map2 = Maps.newHashMap();
// map2.putAll(map1);
// map2.put("bb","ss");;
// map1.put("cc","cc");
// System.out.println(map1);
// System.out.println(map2);
// list.add(new HashMap(){{ // list.add(new HashMap(){{
// put("aa","bb"); // put("aa","bb");
@ -190,10 +217,9 @@ public class Test {
// List<String> lists2 = lists.stream().filter(e->e.equals("aa")).collect(Collectors.toList()); // List<String> lists2 = lists.stream().filter(e->e.equals("aa")).collect(Collectors.toList());
// System.out.println(lists.size()); // System.out.println(lists.size());
// System.out.println(lists2.size()); // System.out.println(lists2.size());
BigDecimal s = new BigDecimal(110.0); // BigDecimal s = new BigDecimal(110.0);
// List<Map<String,Object>> list1
// System.out.println(8.0*0.3);
System.out.println(8.0*0.3);
//System.out.println(Utils.getItemdurationDown(15,AccountingUnitEnum.MINUTES.getKey(),59,AccountingUnitEnum.MINUTES)); //System.out.println(Utils.getItemdurationDown(15,AccountingUnitEnum.MINUTES.getKey(),59,AccountingUnitEnum.MINUTES));
// Calendar calendar = Calendar.getInstance(); // Calendar calendar = Calendar.getInstance();

Loading…
Cancel
Save