修改卡点,出勤结果编辑后增加出勤结果

zm_dev
liuliang 10 months ago
parent 50ae22e21f
commit e57b7c6398

@ -10,26 +10,29 @@
</component>
<component name="ChangeListManager">
<list default="true" id="baeb3dfb-5097-46c5-933e-6d1dab18b815" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPoint.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPointAction.java" afterDir="false" />
<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/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.at" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.s" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.s" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustByWorkOverTimeCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustByWorkOverTimeCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/artifacts/hrm_attendance/hrm-attendance.jar" beforeDir="false" afterPath="$PROJECT_DIR$/out/artifacts/hrm_attendance/hrm-attendance.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPoint.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustWhenHaveTwoClockPoint.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/dto/ClockPointDTO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointDTO.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/UtilService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/UtilService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.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/attendance/attendanceanalysis/dto/clockpoint/ClockPointDTO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointDTO.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test2.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test2.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/service/SchedulingResultsService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/service/SchedulingResultsService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/enums/SchedulingApproachEnum.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/SchedulingApproachEnum.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPoint.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo$ClockPointInfoBuilder.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo$ClockPointInfoBuilder.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo.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/service/SchedulingResultsService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/service/SchedulingResultsService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/enums/SchedulingApproachEnum.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/enums/SchedulingApproachEnum.class" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -675,7 +678,9 @@
<workItem from="1717724528067" duration="12939000" />
<workItem from="1717743947608" duration="9652000" />
<workItem from="1718070961854" duration="6848000" />
<workItem from="1718084052741" duration="4657000" />
<workItem from="1718084052741" duration="16357000" />
<workItem from="1718156293809" duration="8685000" />
<workItem from="1718170520728" duration="317000" />
</task>
<servers />
</component>
@ -726,7 +731,7 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/common/util/DateUtil.java</url>
<line>158</line>
<line>171</line>
<option name="timeStamp" value="138" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
@ -734,11 +739,6 @@
<line>407</line>
<option name="timeStamp" value="155" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java</url>
<line>38</line>
<option name="timeStamp" value="161" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java</url>
<line>111</line>

@ -66,9 +66,7 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
double abnormalTime = 0;
for (Map<String,Object> abnormalClockInMap : abnormalClockInList){
int betweenMinutes = Integer.valueOf(Util.null2String(abnormalClockInMap.get("betweenMinutes")));
AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)abnormalClockInMap.get("itemType");
String item = Util.null2String(abnormalClockInMap.get("item"));
String kczgsc = Util.null2String(abnormalClockInMap.get("kczgsc"));
if (itemType == AttendanceItemTypeEnum.MISSE_CARD){
//早上漏卡
@ -77,6 +75,8 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
if (!CheckBoxEnum.CHECKED.getKey().equals(kczgsc)){
continue;
}
int betweenMinutes = Integer.valueOf(Util.null2String(abnormalClockInMap.get("betweenMinutes")==null?"0":abnormalClockInMap.get("betweenMinutes")));
String item = Util.null2String(abnormalClockInMap.get("item"));
List<Map<String,Object>> abnormalItemList = attendanceItems.stream().filter(e->e.get("key").equals(item)).collect(Collectors.toList());
if (abnormalItemList.size() > 0){
//起步扣除分钟数

@ -1,4 +0,0 @@
package com.engine.attendance.attendanceanalysis.cmd.getclockInpoint;
public interface AdjustClockPoint {
}

@ -0,0 +1,11 @@
package com.engine.attendance.attendanceanalysis.cmd.getclockInpoint;
import com.engine.attendance.attendanceanalysis.dto.clockpoint.ClockPointDTO;
import com.engine.attendance.attendanceanalysis.dto.clockpoint.ClockPointInfo;
import java.util.List;
public interface AdjustClockPointAction {
List<ClockPointDTO> execute(ClockPointInfo clockPointInfo);
}

@ -0,0 +1,74 @@
package com.engine.attendance.attendanceanalysis.cmd.getclockInpoint;
import com.engine.attendance.attendanceanalysis.dto.clockpoint.ClockPointDTO;
import com.engine.attendance.attendanceanalysis.dto.clockpoint.ClockPointInfo;
import com.engine.attendance.enums.ClockPointEnum;
import com.engine.common.util.DateUtil;
import com.engine.common.util.Utils;
import java.time.ZoneOffset;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 2
*/
public class AdjustWhenHaveTwoClockPoint implements AdjustClockPointAction{
@Override
public List<ClockPointDTO> execute(ClockPointInfo clockPointInfo) {
List<ClockPointDTO> clcokInPointList = clockPointInfo.getClcokInPointList();
List<Map<String, Object>> scheduleResult = clockPointInfo.getScheduleResult();
String analysisDate = clockPointInfo.getAnalysisDate();
clcokInPointList = clcokInPointList.stream().sorted(Comparator.comparing(e-> DateUtil.getTime(e.getClassTime()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
if (clcokInPointList.size() ==2 && clcokInPointList.get(0).getPointType() == ClockPointEnum.START
&& clcokInPointList.get(1).getPointType() == ClockPointEnum.END){
if (clcokInPointList.get(0).getTimeType() == ClockPointEnum.EMPTY){
//当上班存在漏卡时则全天漏卡
for (Map<String, Object> map :scheduleResult){
if (!Utils.getkssjTime(map,analysisDate).equals(clcokInPointList.get(0).getClassTime())){
clcokInPointList.add(ClockPointDTO.builder().classTime(Utils.getkssjTime(map,analysisDate)).pointType(ClockPointEnum.START).timeType(ClockPointEnum.EMPTY).classSegmentType(map.get("bdlx").toString())
.record(false).build());
}
}
}
if (clcokInPointList.get(1).getTimeType() == ClockPointEnum.EMPTY){
//当上班存在漏卡时则全天漏卡
for (Map<String, Object> map :scheduleResult){
if (!Utils.getjssjTime(map,analysisDate).equals(clcokInPointList.get(1).getClassTime())){
clcokInPointList.add(ClockPointDTO.builder().classTime(Utils.getjssjTime(map,analysisDate)).pointType(ClockPointEnum.END).timeType(ClockPointEnum.EMPTY).classSegmentType(map.get("bdlx").toString())
.record(false).build());
}
}
}
if (clcokInPointList.get(1).getTimeType() != ClockPointEnum.EMPTY && clcokInPointList.get(0).getTimeType() != ClockPointEnum.EMPTY){
//上班时间
String toWorkTime = clcokInPointList.get(0).getClockTime().get("signdate")+" "+clcokInPointList.get(0).getClockTime().get("signtime");
//下班时间
String afterWorkTime = clcokInPointList.get(1).getClockTime().get("signdate")+" "+clcokInPointList.get(1).getClockTime().get("signtime");
if (clcokInPointList.get(0).getTimeType() == ClockPointEnum.AFTER){
//上班迟到
for (Map<String, Object> map :scheduleResult){
String kssj = Utils.getkssjTime(map,analysisDate);
String jssj = Utils.getjssjTime(map,analysisDate);
if (kssj.equals(clcokInPointList.get(0).getClassTime())){
}
}
}
if (clcokInPointList.get(1).getTimeType() == ClockPointEnum.BEFORE){
//下班早退
}
}
}
return null;
}
}

@ -236,6 +236,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
log.info("clcokInPointList :[{}]",clcokInPointList);
resultMap.put("clcokInPointList", clcokInPointList);
resultMap.put("scheduleResult",scheduleResult);
resultMap.put("clockInTimeList",clockInTimeList);
resultMap.put("needClockDateList",needClockDateList);
resultMap.put("askForLeaveAndEvctionScheduleList",askForLeaveAndEvctionScheduleList);
return resultMap;

@ -17,7 +17,7 @@ import java.util.Map;
@AllArgsConstructor
public class ClockPointDTO {
/**
*
*
* 2023-11-12 09:00
*/
private String classTime;

@ -16,6 +16,10 @@ import java.util.Map;
@NoArgsConstructor
@AllArgsConstructor
public class ClockPointInfo {
/**
*
*/
private String analysisDate;
/**
*
*/
@ -25,7 +29,11 @@ public class ClockPointInfo {
*/
private List<Map<String, Object>> scheduleResult;
/**
*
*
*/
private List<Map<String, Object>> askForLeaveAndEvctionScheduleList;
/**
*
*/
List<Map<String, Object>> clockInTimeList;
}

@ -401,13 +401,12 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
map.put("rqlx",CommonUtil.getRqlx(str,date));
organizationList.add(map);
}
String sql = "select id,mc,sfxx from uf_jcl_kq_bcxx where id=?";
List<Map<String,Object>> bcxxList = DbTools.getSqlToList(sql,bcxxId);
Map<String,Object> insertDataMap = Maps.newHashMap();
insertDataList.add(insertDataMap);
insertDataMap.put("pbtj",RegularScheduleTypeEnum.CALENDAR.getKey());
insertDataMap.put("bcrq",date);
insertDataMap.put("sfxx", bcxxList.get(0).get("sfxx"));
insertDataMap.put("sfxx", CommonUtil.ifrestByClass(bcxxId));
insertDataMap.put("sfdkpp",CheckBoxEnum.UNCHECKED.getKey());
insertDataMap.put("bcxx",bcxxId);
insertDataMap.put("pbrq",DateUtil.getCurrentDate());

@ -17,4 +17,11 @@ public interface SchedulingResultsService {
* @return
*/
Map<String,Object> queryDataTableActualUse(Map<String,Object> params);
/**
*
* @param params
* @return
*/
Map<String,Object> saveScheduleResult(Map<String,Object> params);
}

@ -5,8 +5,11 @@ import com.engine.attendance.component.persongroup.cmd.GetDatatableCountCmd;
import com.engine.attendance.component.persongroup.cmd.GetDatatableRecurrenceCmd;
import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil;
import com.engine.attendance.component.persongroup.service.SchedulingResultsService;
import com.engine.attendance.enums.CheckBoxEnum;
import com.engine.attendance.enums.SchedulingApproachEnum;
import com.engine.common.util.CommonUtil;
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.Lists;
@ -135,4 +138,26 @@ public class SchedulingResultsServiceImpl extends Service implements SchedulingR
log.info("queryDataTableActualUse schedule : [{}]",resultList);
return resultMap;
}
@Override
public Map<String, Object> saveScheduleResult(Map<String, Object> params) {
String billid = Util.null2String(params.get("billid"));
String sql = "select bc,rqlx,rq,ygid from uf_jcl_kq_cqjg where id=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,billid);
Map<String,Object> dataMap = Maps.newHashMap();
dataMap.put("pbtj",SchedulingApproachEnum.UPDATE.getKey());
dataMap.put("dxlx","0");
dataMap.put("pbdxry",dataList.get(0).get("ygid"));
dataMap.put("bcrq",dataList.get(0).get("rq"));
dataMap.put("rqlx",dataList.get(0).get("rqlx"));
dataMap.put("sfxx", CommonUtil.ifrestByClass(dataList.get(0).get("bc").toString()));
dataMap.put("sfdkpp", CheckBoxEnum.CHECKED.getKey());
dataMap.put("bcxx",dataList.get(0).get("bc"));
dataMap.put("pbrq",DateUtil.getCurrentDate());
dataMap.put("pbsj",DateUtil.getCurrentTime("yyyy-MM-dd HH:mm").split(" ")[1]);
Utils.InsertFormTable("uf_pbjg",dataMap,Utils.getFormmodeIdMap());
return null;
}
}

@ -35,4 +35,21 @@ public class SchedulingResultsAction {
return ApiReturnTools.error("500","saveApplicableOrganization error");
}
}
/**
*
* @return
*/
@POST
@Path("/saveScheduleResult")
@Produces({"text/plain"})
public String saveScheduleResult(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try {
Map<String,Object> paramMap = ParamUtil.request2Map(request);
Map<String,Object> dataMap = basicsetService.saveScheduleResult(paramMap);
return ApiReturnTools.success(dataMap);
}catch (Exception e){
log.error("execute fail,catch error: [{}]",e);
return ApiReturnTools.error("500","saveApplicableOrganization error");
}
}
}

@ -13,7 +13,8 @@ public enum SchedulingApproachEnum implements BaseEnum {
SCENE("4","现场排班"),
WORKFLOW("5","流程申请"),
COMPREHENSIVE("6","综合工时"),
DASH("7","划线排班");
DASH("7","划线排班"),
UPDATE("8","出勤结果修改");
private String key;
private String value;

Loading…
Cancel
Save