zm_dev
liuliang 1 year ago
parent eab7cad87d
commit 8b602159d9

@ -1 +1 @@
<EFBFBD><EFBFBD><EFBFBD>}<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>Z譿<EFBFBD>y<EFBFBD>Q<EFBFBD><EFBFBD>
<EFBFBD>[<EFBFBD><EFBFBD>鵿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

@ -10,9 +10,49 @@
</component>
<component name="ChangeListManager">
<list default="true" id="baeb3dfb-5097-46c5-933e-6d1dab18b815" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/log/sdk.log" beforeDir="false" afterPath="$PROJECT_DIR$/log/sdk.log" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/ComprehensiveWorkingHourServiceImpl/Test1.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/ComprehensiveWorkingHourServiceImpl/Test1.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/AllowanceService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/AllowanceService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/util/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/AllowanceService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/AllowanceService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$2.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/cmd/VocationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/cmd/VocationCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/util/VocationCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/util/VocationCommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/AllowanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/AllowanceServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$2.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$3.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$3.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/ComprehensiveWorkingHourServiceImpl/Test1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/ComprehensiveWorkingHourServiceImpl/Test1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestObj.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestObj.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/shuju/Test.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/shuju/Test.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestObj.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestObj.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/shuju/Test.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/shuju/Test.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -57,7 +97,7 @@
<property name="last_directory_selection" value="$PROJECT_DIR$/src/com/engine/kq" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../AO史密斯/aosmithProject" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="project.structure.last.edited" value="SDKs" />
<property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.14124292" />
<property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
@ -89,7 +129,7 @@
<command value="organzationList" />
</option>
</component>
<component name="RunManager" selected="JUnit.Tset_sy.test">
<component name="RunManager" selected="Application.Test (1)">
<configuration name="Test (1)" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="shuju.Test" />
<module name="hrm-attendance" />
@ -183,10 +223,10 @@
</configuration>
<recent_temporary>
<list>
<item itemvalue="Application.Test (1)" />
<item itemvalue="JUnit.Tset_sy.test" />
<item itemvalue="JUnit.Test1.test" />
<item itemvalue="Application.Test1" />
<item itemvalue="Application.Test (1)" />
<item itemvalue="Application.TestMain" />
</list>
</recent_temporary>
@ -550,7 +590,9 @@
<workItem from="1712712249272" duration="6788000" />
<workItem from="1712726952165" duration="19422000" />
<workItem from="1712798979811" duration="5690000" />
<workItem from="1712812681283" duration="5906000" />
<workItem from="1712812681283" duration="23124000" />
<workItem from="1712885635868" duration="7005000" />
<workItem from="1712899728990" duration="7469000" />
</task>
<servers />
</component>

@ -30770,3 +30770,5 @@
2024-04-11 14:59:51,031 [main] [org.logicalcobwebs.proxool.ConnectionPool] [DEBUG] - 000006 (01/04/01) - Connection #3 tested: OK
2024-04-11 14:59:51,118 [main] [org.logicalcobwebs.proxool.ConnectionPool] [DEBUG] - 000007 (01/04/01) - Connection #3 tested: OK
2024-04-11 14:59:51,119 [main] [A2] [INFO] - [null] main-1[com.engine.attendance.workflow.service.impl.AllowanceServiceImpl:43] - tyAllowanceIds : [149, 150]
2024-04-12 15:02:41,352 [Timer-0] [A2] [INFO] - rootPath == null
2024-04-12 15:02:41,356 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties

@ -4,5 +4,7 @@ import java.util.List;
import java.util.Map;
public interface AllowanceService {
List<Map<String,Object>> removeAbnormal(Map<String,Object> param);
Map<String,Object> allowanceHandle(Map<String,Object> param);
Map<String,Object> removeAbnormal(Map<String,Object> param);
}

@ -1,18 +1,31 @@
package com.engine.attendance.attendanceanalysis.service.impl;
import com.engine.attendance.attendanceanalysis.cmd.item.AbsenteeismItemCmd;
import com.engine.attendance.attendanceanalysis.cmd.item.BeLateItemCmd;
import com.engine.attendance.attendanceanalysis.service.AllowanceService;
import com.engine.attendance.enums.AccountingUnitEnum;
import com.engine.attendance.enums.AttendanceItemTypeEnum;
import com.engine.attendance.enums.CheckBoxEnum;
import com.engine.attendance.enums.WorkForTimeEnum;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.engine.common.util.Utils;
import com.engine.core.impl.Service;
import com.google.common.collect.Maps;
import weaver.general.Util;
import java.time.ZoneOffset;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class AllowanceServiceImpl extends Service implements AllowanceService {
@Override
public List<Map<String, Object>> removeAbnormal(Map<String, Object> param) {
public Map<String, Object> allowanceHandle(Map<String, Object> param) {
String userId = Util.null2String(param.get("userId"));
String analysisDate = Util.null2String(param.get("analysisDate"));
@ -21,9 +34,132 @@ public class AllowanceServiceImpl extends Service implements AllowanceService {
if (allowanceList.size() == 0){
return null;
}
Set<String> allowances = allowanceList.stream().map(e-> e.get("jtlx").toString()).collect(Collectors.toSet());
Map<String,List<Map<String,Object>>> allowanceGroupByList = allowanceList.stream().collect(Collectors.groupingBy(e->e.get("jtlx").toString()));
sql = "select id,csjthdclfs,tcscws,hsdw from uf_jcl_kq_kqxm where id in ("+String.join(",",allowances)+")";
List<Map<String,Object>> itemList = DbTools.getSqlToList(sql);
Map<String,List<Map<String,Object>>> itemGroupbyList = itemList.stream().collect(Collectors.groupingBy(e->e.get("id").toString()));
Map<String,Object> resultMap = Maps.newHashMap();
allowanceGroupByList.entrySet().forEach(e -> {
String jtlx = e.getKey();
List<Map<String,Object>> list = e.getValue();
Map<String,Object> item = itemGroupbyList.get(jtlx).get(0);
String csjthdclfs = Util.null2String(item.get("csjthdclfs"));
String tcscws = Util.null2String(item.get("tcscws"));
String hsdw = Util.null2String(item.get("hsdw"));
if ("1".equals(csjthdclfs)){
//次日免班
resultMap.put("ifnotWork","true");
}else if ("2".equals(csjthdclfs)){
//推迟上班
double scsum = list.stream().mapToDouble(f->Double.valueOf(f.get("sc").toString())).sum();
scsum = Utils.converTimeToMinute(scsum,hsdw);
double multiple = Double.valueOf(tcscws);
resultMap.put(jtlx, Utils.multiply(scsum,multiple));
}
});
if (resultMap.get("ifnotWork") != null){
//次日免班
}else {
//推迟上班分钟数
double delayMinute = 0;
for (Map.Entry<String,Object> entry :resultMap.entrySet()){
delayMinute = delayMinute+Double.valueOf(String.valueOf(entry.getValue()));
}
resultMap.put("delayMinute",delayMinute);
}
return resultMap;
}
@Override
public Map<String, Object> removeAbnormal(Map<String, Object> param) {
List<Map<String,Object>> abnormalClockInList = (List<Map<String,Object>>)param.get("abnormalClockInList");
//班次
List<Map<String,Object>> scheduleResult = (List<Map<String,Object>>)param.get("scheduleResult");
//分析日期
String analysisDate = Util.null2String(param.get("analysisDate"));
//考勤项目
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)param.get("attendanceItems");
int delayMinute = Double.valueOf(Util.null2String(param.get("delayMinute"))).intValue();
List<Map<String,Object>> lateList = abnormalClockInList.stream().filter(e-> AttendanceItemTypeEnum.LATE.equals(e.get("itemType"))).collect(Collectors.toList());
lateList = lateList.stream().sorted(Comparator.comparing(e-> DateUtil.getTime(e.get("classStartTime").toString()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
Map<String,Object> lateMap = lateList.get(0);
if (delayMinute > 0){
//早上卡嗲
String classStartTime = Util.null2String(lateMap.get("classStartTime"));
//早上打卡时间
String classEndTime = Util.null2String(lateMap.get("classEndTime"));
for (Map<String,Object> abnormalClockIn:abnormalClockInList){
if (abnormalClockIn.get("itemType").equals(AttendanceItemTypeEnum.LATE) &&
abnormalClockIn.get("classStartTime").equals(lateMap.get("classStartTime")) ){
abnormalClockInList.remove(abnormalClockIn);
}
}
//延迟上班后新的上班时间
String newClassStartTime = DateUtil.AfterMinutes(classStartTime,delayMinute);
if (DateUtil.getTime(newClassStartTime).compareTo(DateUtil.getTime(classEndTime)) >=0){
//消除迟到
}else {
//重新计算迟到项目以及时间
int between = Utils.removeRestTime(newClassStartTime,classEndTime,scheduleResult,analysisDate);
Map<String,Object> lateParams = Maps.newHashMap();
lateParams.put("attendanceItems",attendanceItems);
lateParams.put("time",between);
lateParams.put("rqlx",scheduleResult.get(0).get("rqlx"));
lateParams.put("workfor", WorkForTimeEnum.WORK_TIME.getKey());
Map<String,Object> result = commandExecutor.execute(new BeLateItemCmd(lateParams));
List<Map<String,Object>> workTimeBeLateItems = (List<Map<String,Object>>)result.get("attendanceItems");
if (workTimeBeLateItems.size() == 0){
workTimeBeLateItems = (List<Map<String,Object>>)commandExecutor.execute(new AbsenteeismItemCmd(lateParams)).get("attendanceItems");
}
if (workTimeBeLateItems.size() > 0){
Map<String,Object> saveWorkTimeBeLateParam = Maps.newHashMap();
double hsl = Double.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("hsl")));
String hsdw = Util.null2String(workTimeBeLateItems.get(0).get("hsdw"));
String kczgsc = Util.null2String(workTimeBeLateItems.get(0).get("kczgsc"));
if (CheckBoxEnum.CHECKED.getKey().equals(kczgsc)){
//起步扣除分钟数
int qbkcsc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("qbkcsc")));
//超出后单次累加扣除分钟数
int cckcbc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("cckcbc")));
if (between <= qbkcsc){
between = qbkcsc;
}else {
int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue()+qbkcsc;
}
}
double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES);
saveWorkTimeBeLateParam.put("item",workTimeBeLateItems.get(0).get("key"));
saveWorkTimeBeLateParam.put("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("hsl",hsl);
saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
saveWorkTimeBeLateParam.put("classStartTime",classStartTime);
saveWorkTimeBeLateParam.put("classEndTime",classEndTime);
abnormalClockInList.add(saveWorkTimeBeLateParam);
}
}
}
return null;
}
}

@ -36,7 +36,7 @@ public class ComprehensiveWorkingHourServiceImpl extends Service implements Comp
@Override
public Map<String, Object> excuteByWorkHour(Map<String, Object> param) {
Map<String, Object> resultMap = Maps.newHashMap();
log.info("ComprehensiveWorkingHourServiceImpl param : [{}]",param);
//按照日期分割的打卡时间
List<Map<String,Object>> clockInTimeList = (List<Map<String,Object>>) param.get("clockInTimeCollect");
//分析日期

@ -142,6 +142,11 @@ public class AttendanceAnalysisWrapper extends Service {
workingHourparam.put("userId",userId);
workingHourparam.put("attendanceItems",attendanceItems);
/**
*
*/
Map<String,Object> allowanceMap = updateAttendanceResultWrapper.allowanceHandle(recordParam);
if (workHourItems !=null && workHourItems.size() >0){
workingHourparam.put("workHourItem",workHourItems.get(0));
String ifPriority = Util.null2String(workHourItems.get(0).get("hlpbyxsyzhgs"));
@ -161,6 +166,7 @@ public class AttendanceAnalysisWrapper extends Service {
params.put("scheduleList",scheduleList);
params.put("workHourItems",workHourItems);
params.put("attendanceItems",attendanceItems);
params.put("allowanceMap",allowanceMap);
updateAttendanceResultWrapper.recordNoClass(params);
return;
}
@ -316,9 +322,28 @@ public class AttendanceAnalysisWrapper extends Service {
/**
*
*
*/
recordAbnormalParam.put("abnormalClockInList",abnormalClockInList);
String ifnotWork = Util.null2String(allowanceMap.get("ifnotWork"));
if (!"".equals(ifnotWork)){
//次日免班
recordParam.put("recordData",Lists.newArrayList());
recordParam.put("recordDataTime",Maps.newHashMap());
recordParam.put("attendanceDuration",0);
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
utilService.recordItem(recordParam);
return;
}
if (!"".equals(allowanceMap.get("delayMinute"))){
recordAbnormalParam.put("delayMinute",allowanceMap.get("delayMinute"));
updateAttendanceResultWrapper.removeAbnormal(recordAbnormalParam);
}
/**
*
*/
Map<String, Object> vactionMap = updateAttendanceResultWrapper.recordAskForLeave(recordAbnormalParam);
List<Map<String,Object>> abnormalClockInListByAskForLeave = (List<Map<String,Object>>)vactionMap.get("abnormalClockInList");
List<Map<String,Object>> vactionList = (List<Map<String,Object>>)vactionMap.get("resultList");
@ -340,9 +365,6 @@ public class AttendanceAnalysisWrapper extends Service {
*/
List<Map<String,Object>> recordWorkOverTime= updateAttendanceResultWrapper.recordWorkOverTime(recordAbnormalParam);
/**
*
*/
/**

@ -27,7 +27,8 @@ public class UpdateAttendanceResultWrapper extends Service {
private EvectionService evectionService= ServiceUtil.getService(EvectionServiceImpl.class);
private WorkOverTimeService workOverTimeService = ServiceUtil.getService(WorkOverTimeServiceImpl.class);
private ComprehensiveWorkingHourService comprehensiveWorkingHourService = ServiceUtil.getService(ComprehensiveWorkingHourServiceImpl.class);
private AllowanceService allowanceService = ServiceUtil.getService(AllowanceServiceImpl.class);
private UtilService utilService = ServiceUtil.getService(UtilServiceImpl.class);
/**
*
@ -409,6 +410,8 @@ public class UpdateAttendanceResultWrapper extends Service {
String userId = Util.null2String(params.get("userId"));
//综合工时
List<Map<String,Object>> workHourItems = (List<Map<String,Object>>)params.get("workHourItems");
//津贴
Map<String,Object> allowanceMap = (Map<String,Object>)params.get("allowanceMap");
Map<String,Object> normalParams = Maps.newHashMap();
@ -417,6 +420,23 @@ public class UpdateAttendanceResultWrapper extends Service {
normalParams.put("modeId",params.get("modeId"));
normalParams.put("scheduleList",params.get("scheduleList"));
log.info("userId : {} ,analysisDate: {} have no class",userId,analysisDate);
if (allowanceMap.get("ifnotWork") != null){
//次日免班
Map<String,Object> recordParam = Maps.newHashMap();
recordParam.put("userId",userId);
recordParam.put("analysisDate",analysisDate);
recordParam.put("recordData",Lists.newArrayList());
recordParam.put("rqlx",Utils.getDateType(analysisDate));
recordParam.put("classInfo",Lists.newArrayList());
recordParam.put("recordDataTime",Maps.newHashMap());
recordParam.put("attendanceDuration",0);
recordParam.put("formmodeIdMap",Utils.getFormmodeIdMap());
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
utilService.recordItem(recordParam);
return false;
}
if (workHourItems.size() >0){
params.put("workHourItem",workHourItems.get(0));
comprehensiveWorkingHourService.excuteByWorkHour(params);
@ -433,9 +453,16 @@ public class UpdateAttendanceResultWrapper extends Service {
* @param params
* @return
*/
public List<Map<String,Object>> allowanceHandle(Map<String,Object> params){
public Map<String,Object> allowanceHandle(Map<String,Object> params){
return allowanceService.allowanceHandle(params);
}
return null;
/**
*
* @param params
* @return
*/
public Map<String,Object> removeAbnormal(Map<String,Object> params){
return allowanceService.removeAbnormal(params);
}
}

@ -16,6 +16,7 @@ import java.io.IOException;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLDecoder;
@ -562,14 +563,30 @@ public class Utils<T> {
return resultList;
}
/**
*
* @param value1
* @param value2
* @return
*/
public static double subtract(double value1,double value2){
return new BigDecimal(value1).subtract(new BigDecimal(value2),new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue();
return new BigDecimal(value1).subtract(new BigDecimal(value2),new MathContext(BigDecimal.ROUND_HALF_UP)).doubleValue();
}
/**
*
* @param value1
* @param value2
* @return
*/
public static double add(double value1,double value2){
return new BigDecimal(value1).add(new BigDecimal(value2),new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue();
return new BigDecimal(value1).add(new BigDecimal(value2),new MathContext(BigDecimal.ROUND_HALF_UP)).doubleValue();
}
public static double multiply(double value1,double value2){
return new BigDecimal(value1).multiply(new BigDecimal(value2),new MathContext(BigDecimal.ROUND_HALF_UP)).doubleValue();
}
/**
@ -603,4 +620,30 @@ public class Utils<T> {
Map<String,Object> data = DbTools.getSqlToMap(sql,rlmc,date.split(" ")[0]);
return Util.null2String(data.get("rqlx"));
}
/**
*
* @param date
* @return
*/
public static String getDateType(String date){
String sql = "select a.rqlx from uf_jcl_kq_rlxx a left join uf_jcl_kq_rlmc b on a.rlmc=b.id where b.mrrl=1 and a.rq=?";
Map<String,Object> data = DbTools.getSqlToMap(sql,date);
return Util.null2String(data.get("rqlx"));
}
/**
*
* @param time
* @param hsdw
* @return
*/
public static double converTimeToMinute(double time,String hsdw){
if (AccountingUnitEnum.DAY.getKey().equals(hsdw)){
time = time*24*60;
}else if (AccountingUnitEnum.HOUR.getKey().equals(hsdw)){
time = time*60;
}
return time;
}
}

Binary file not shown.

@ -54,9 +54,10 @@ public class TestObj {
//
//
// System.out.println(DateUtil.getBetWeenMinutes("2023-12-01 10:14","2023-12-01 12:25"));
BigDecimal bigDecimal1 = new BigDecimal(100);
BigDecimal bigDecimal2 = new BigDecimal(60);
System.out.println(bigDecimal1.divide(bigDecimal2,2,RoundingMode.HALF_UP).doubleValue());
// BigDecimal bigDecimal1 = new BigDecimal(100);
// BigDecimal bigDecimal2 = new BigDecimal(60);
// System.out.println(bigDecimal1.divide(bigDecimal2,2,RoundingMode.HALF_UP).doubleValue());
System.out.println(Utils.multiply(1.1,1.5));
// System.out.println(Utils.getItemdurationDown(30, AccountingUnitEnum.MINUTES.getKey(), 35,AccountingUnitEnum.MINUTES));
}

@ -1,13 +1,18 @@
package shuju;
import com.engine.common.util.DateUtil;
import com.engine.common.util.Utils;
import com.google.common.collect.Lists;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
System.out.println(DateUtil.getBetWeenMinutes("2024-04-10 09:06:00","2024-04-10 18:04:00"));
System.out.println(Utils.subtract(1,2));
}
}

Loading…
Cancel
Save