zm_dev
liuliang 1 year 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: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-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.core.interceptor.CommandContext;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<String,Object>> {
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);
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){
edsc=0;
}
@ -101,6 +105,9 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
Map<String,Map<String,Object>> askForLeaveItems,List<Map<String, Object>> offsetAskForLeaveAnomaly){
double employTime = 0;
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++){
//请假时长
String qjsc = Util.null2String(askForLeaveList.get(i).get("qjsc"));
@ -124,17 +131,21 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
if (offsetAskForLeaveAnomaly.size() > 0){
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);
}else {
employTime +=Double.valueOf(qjsc)*60;
}
}
}else {
//按照开始时间,结束时间请假
for (Map<String, Object> scheduleMap:scheduleResult){
String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj");
String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+scheduleMap.get("dtjssj");
if (ClassSegmentTypeEnum.WORK_TIME.getKey().equals(scheduleMap.get("bdlx"))){
String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj");
String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+scheduleMap.get("dtjssj");
}
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){
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);
}else {
employTime += Double.valueOf(ccsc)*60;
}
}
}else {
@ -176,10 +189,12 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
for (Map<String, Object> scheduleMap:scheduleResult){
String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj");
String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+scheduleMap.get("dtjssj");
if (ClassSegmentTypeEnum.WORK_TIME.getKey().equals(scheduleMap.get("bdlx"))){
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
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;
}
}).collect(Collectors.toList());
log.info("absenteeismCmd attendanceItems : [{}]",attendanceItems);
log.info("WorkOvertimeItemCmd attendanceItems : [{}]",attendanceItems);
resultMap.put("attendanceItems",attendanceItems);
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");
//进出时间
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"));
@ -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=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,userId,analysisDate);
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++){
String item = Util.null2String(recordDataList.get(i).get("item"));
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("bcsdxx"));
insertDatas.add(cqzt);
insertDatas.add(classInfo.get(0).get("edsc"));
insertDatas.add(attendanceDuration);
insertDatas.add(1);
insertDatas.add(DateUtil.getCurrentDate());
insertDatas.add(formmodeid);

@ -19,10 +19,6 @@ import java.util.stream.Collectors;
@Slf4j
public class AttendanceAnalysisJob extends BaseCronJob {
private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class);
/**
* id
*/
private String modeId;
private AttendanceAnalysisWrapper attendanceAnalysisService = ServiceUtil.getService(AttendanceAnalysisWrapper.class);
@Override
@ -50,7 +46,7 @@ public class AttendanceAnalysisJob extends BaseCronJob {
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap);
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********");
}

@ -78,7 +78,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc;
}else {
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("itemType", AttendanceItemTypeEnum.LATE);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
resultList.add(saveWorkTimeBeLateParam);
}
@ -121,7 +121,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc;
}else {
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("itemType", AttendanceItemTypeEnum.LATE);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
resultList.add(saveWorkTimeBeLateParam);
}
@ -162,7 +162,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc;
}else {
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("itemType", AttendanceItemTypeEnum.LATE);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
resultList.add(saveWorkTimeBeLateParam);
}
@ -239,7 +239,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc;
}else {
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("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LEAVE_EARLY);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
resultList.add(saveWorkTimeBeLateParam);
}
@ -283,7 +284,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc;
}else {
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("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LEAVE_EARLY);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
resultList.add(saveWorkTimeBeLateParam);
}
@ -323,7 +325,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
between = qbkcsc;
}else {
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("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LEAVE_EARLY);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("kczgsc",workTimeBeLateItems.get(0));
saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
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.recordDataCmd;
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.impl.SchedulingResultsServiceImpl;
import com.engine.attendance.enums.*;
@ -28,8 +26,6 @@ import java.util.stream.Collectors;
@Slf4j
public class UtilServiceImpl extends Service implements UtilService {
private SchedulingResultsService schedulingResultsService = ServiceUtil.getService(SchedulingResultsServiceImpl.class);
private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class);
@Override
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,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();
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 = "";
for (Map.Entry<String,List<Map<String,Object>>> entry :schedulingMap.entrySet()){
bcxxIds +=entry.getKey() +",";
@ -60,15 +56,18 @@ public class UtilServiceImpl extends Service implements UtilService {
dataMap.entrySet().forEach(e -> {
List<Map<String,Object>> schedulingList = schedulingMap.get(e.getKey());
List<Map<String,Object>> bcxxs = e.getValue();
for (Map<String,Object> scheduling :schedulingList){
String bcrq = Util.null2String(scheduling.get("bcrq"));
String rqlx = Util.null2String(scheduling.get("rqlx"));
List<Map<String,Object>> bcxxs = e.getValue();
List<Map<String,Object>> classs = Lists.newArrayList();
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,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate","");
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");
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)params.get("attendanceItems");
//日期集合
Map<String,Object> dateParam = Maps.newHashMap();
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)){
return true;
}else {
return false;
}
return false;
}).collect(Collectors.toList());
map.put("bcxx","0");
map.put("bcsdxx","");
map.put("bcxx",resultList.get(0) == null ? "0" :resultList.get(0).get("bcxx"));
map.put("bcsdxx",resultList.get(0) == null ? "":resultList.get(0).get("bcsdxx"));
if (dataList.size()>0){
map.put("edsc",Util.null2String(dataList.get(0).get("edsc")));
}else {
@ -143,7 +138,7 @@ public class UtilServiceImpl extends Service implements UtilService {
map.put("zddxfz","0");
map.put("dxhs","0");
map.put("rqlx",dateMap.get(e.getKey()));
map.put("jbsc",overtimePlan.get("jbsc"));
map.put("edxss",overtimePlan.get("jbsc"));
if (attendanceItems.size() >0){
map.put("ksdk",attendanceItems.get(0).get("ksjbbxydk"));
map.put("jsdk",attendanceItems.get(0).get("jsjbbxydk"));
@ -152,19 +147,27 @@ public class UtilServiceImpl extends Service implements UtilService {
map.put("jbwdhlfzs",attendanceItems.get(0).get("jbwdhlfzs"));
map.put("jbzzhlfzs",attendanceItems.get(0).get("jbzzhlfzs"));
}
if (resultList.size() == 0){
resultList.add(map);
}
for (int j=0;j<resultList.size();j++){
String kssj1 = e.getKey() +" "+resultList.get(j).get("dtkssj");
String kssj2 = e.getKey() +" "+overtimePlan.get("kssj");
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){
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);
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);
}else {
for (int j=1;j<resultList.size();j++){
String kssj1 = e.getKey() +" "+resultList.get(j).get("dtkssj");
String kssj2 = e.getKey() +" "+overtimePlan.get("kssj");
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){
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;
Calendar calendar = Calendar.getInstance();
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];
clcokInTimeMap.put(pointTime,clcokInTimeData);
clcokInTimeMap.put(pointTime.split(" ")[1],clcokInTimeData);
}
//人员
String userId = Util.null2String(params.get("userId"));
@ -94,7 +96,6 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
String realityEndime = "";
resultLists.add(workOverTimeItems);
getWorkOverTimeParam.put("attendanceItems",attendanceItems);
getWorkOverTimeParam.put("rqlx",scheduleMap.get("rqlx"));
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());
}else if (ClassSegmentTypeEnum.OVERTIME_PLAN.getKey().equals(bdlx)){
getWorkOverTimeParam.put("workfor",WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey());
}else {
continue;
}
Map<String,Object> result = commandExecutor.execute(new WorkOvertimeItemCmd(getWorkOverTimeParam));
//加班项目
List<Map<String,Object>> workTimeBeLateItems = (List<Map<String,Object>>)result.get("attendanceItems");
if (workTimeBeLateItems.size() == 0){
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)){
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");
realityStartTime = signTime;
}else {
@ -156,6 +167,13 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
}
if (CheckBoxEnum.CHECKED.getKey().equals(jsjbbxydk)){
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");
realityEndime = signTime;
}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());
double leaveElaryTime=0;
if (leaveEarlyAbnormal.size() > 0){
String hsdw = Util.null2String(beLateAbnormal.get(0).get("hsdw"));
String itemduration = Util.null2String(beLateAbnormal.get(0).get("itemduration"));
AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)beLateAbnormal.get(0).get("itemType");
String hsdw = Util.null2String(leaveEarlyAbnormal.get(0).get("hsdw"));
String itemduration = Util.null2String(leaveEarlyAbnormal.get(0).get("itemduration"));
AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)leaveEarlyAbnormal.get(0).get("itemType");
if (itemType == AttendanceItemTypeEnum.MISSE_CARD){
//下午漏卡
leaveElaryTime = jbsc;
@ -239,13 +257,13 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
*
*/
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"))
,bdlx,askForLeaveList,evectionItems,offsetEvectionAnomaly);
,bdlx,evectionList,evectionItems,offsetEvectionAnomaly);
log.info("加班时长: {}",jbsc);
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("itemduration","0");
resultLists.add(workOverTimeItems);
continue;
}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();
@ -266,6 +285,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
//加班时长为0
workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key"));
workOverTimeItems.put("itemduration","0");
resultLists.add(workOverTimeItems);
continue;
}
@ -326,7 +346,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
insertParam.put("sjjbsc",String.format ("%.2f", jbsc/60));
insertParam.put("jbjgly","4");
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));
}
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;
@ -525,4 +547,5 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
}
}

@ -67,11 +67,12 @@ public class AttendanceanalysisAction {
classesParamMap.put("current","1");
classesParamMap.put("pageSize",10);
classesParamMap.put("recurrence",1);
classesParamMap.put("attendanceItems",attendanceItems);
Map<String,List<Map<String,Object>>> schedulingResultsMap = utilService.getSchedulingInFormation(classesParamMap);
for (int i=0; i<=betweenDays;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;

@ -41,9 +41,8 @@ public class AttendanceAnalysisWrapper extends Service {
* @param userId id
* @param dataList
* @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("clockInTimeDate : [{}]",dataList);
@ -65,6 +64,7 @@ public class AttendanceAnalysisWrapper extends Service {
classesParamMap.put("current","1");
classesParamMap.put("pageSize",10);
classesParamMap.put("recurrence",1);
classesParamMap.put("attendanceItems",attendanceItems);
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);
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);
//前第二天打卡数据
List<Map<String, Object>> beforeTwoDayClockInTimeList = utilService.getClockInTime(getClockTimeParam);
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 dataList 23
* @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("clockInTimeDate : [{}]",dataList);
Map<String, List<Map<String,Object>>> collect = Maps.newHashMap();
@ -114,7 +113,7 @@ public class AttendanceAnalysisWrapper extends Service {
log.info("getClockTimeParam : [{}]",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 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,String> formModeIdMap = Utils.getFormmodeIdMap();
recordParam.put("userId",userId);
recordParam.put("analysisDate",analysisDate);
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){
@ -138,7 +141,7 @@ public class AttendanceAnalysisWrapper extends Service {
Map<String,Object> params = Maps.newHashMap();
params.put("userId",userId);
params.put("analysisDate",analysisDate);
params.put("modeId",modeId);
params.put("modeId",formModeIdMap.get("uf_jcl_kq_cqjg"));
updateAttendanceResultWrapper.recordNoClass(params);
return;
}
@ -168,7 +171,7 @@ public class AttendanceAnalysisWrapper extends Service {
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){
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();
Map<String,Object> resultMap = Maps.newHashMap();
resultMap.put("item",askForLeaveData.get("jqlx"));
resultMap.put("itemduration",askForLeaveItem.get("hsl"));
resultMap.put("itemduration",scheduleResult.get(0).get("edsc"));
resultList.add(resultMap);
recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey());
recordParam.put("recordData",resultList);
@ -213,7 +216,7 @@ public class AttendanceAnalysisWrapper extends Service {
List<Map<String,Object>> resultList = Lists.newArrayList();
Map<String,Object> resultMap = Maps.newHashMap();
resultMap.put("item", evectionData.get("cclx"));
resultMap.put("itemduration", evectionItem.get("hsl"));
resultMap.put("itemduration", scheduleResult.get(0).get("edsc"));
resultList.add(resultMap);
recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey());
recordParam.put("recordData",resultList);
@ -257,10 +260,11 @@ public class AttendanceAnalysisWrapper extends Service {
recordAbnormalParam.put("analysisDate",analysisDate);
recordAbnormalParam.put("userId",userId);
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,
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);
recordParam.put("recordData",recordData);
recordParam.put("recordDataTime",utilService.getNeedRecordClockInTime(clcokInTimeData));
recordParam.put("attendanceDuration",attendanceDuration);
log.info("recordParam : {}",recordParam);
if (abnormalClockInListByEvction.size()>0){
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 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=? ";
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();
resultMap.put("data",dataList);
return resultMap;

@ -20,10 +20,7 @@ import java.math.MathContext;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.stream.Collectors;
@ -440,4 +437,22 @@ public class Utils<T> {
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("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(""));
// List<Map<String,Object>> beforeleaveDate = Lists.newArrayList();
@ -118,7 +124,28 @@ public class Test {
// map3.put("value","222");
// System.out.println(DateUtil.getBetWeenMinutes("2023-11-16 08:00","2023-11-16 09:10"));
// 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(){{
// put("aa","bb");
@ -190,10 +217,9 @@ public class Test {
// List<String> lists2 = lists.stream().filter(e->e.equals("aa")).collect(Collectors.toList());
// System.out.println(lists.size());
// System.out.println(lists2.size());
BigDecimal s = new BigDecimal(110.0);
System.out.println(8.0*0.3);
// BigDecimal s = new BigDecimal(110.0);
// List<Map<String,Object>> list1
// System.out.println(8.0*0.3);
//System.out.println(Utils.getItemdurationDown(15,AccountingUnitEnum.MINUTES.getKey(),59,AccountingUnitEnum.MINUTES));
// Calendar calendar = Calendar.getInstance();

Loading…
Cancel
Save