|
|
package weaver.attendance.service;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
import com.engine.kq.entity.KQOvertimeRulesDetailEntity;
|
|
|
import com.google.common.collect.Maps;
|
|
|
|
|
|
import weaver.hrm.User;
|
|
|
import weaver.sqsddldcxt.attendance.service.OvertimeRuleComputingMode5Service;
|
|
|
|
|
|
|
|
|
public class OvertimeRuleComputingModeService {
|
|
|
|
|
|
private OvertimeRuleComputingMode5Service mode5Service;
|
|
|
|
|
|
public OvertimeRuleComputingModeService() {
|
|
|
this.mode5Service = new OvertimeRuleComputingMode5Service();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 自定义新的加班计算方式(computingMode)
|
|
|
* key值为int型,并且不允许与系统现有的值重复
|
|
|
*
|
|
|
* 系统现有值包括:
|
|
|
* 0=不允许加班
|
|
|
* 1=需审批,以加班流程为准
|
|
|
* 2=需审批,以打卡为准,但是不能超过加班流程时长
|
|
|
* 3=无需审批,根据打卡时间计算加班时长
|
|
|
* 4=需审批,流程和打卡取交集
|
|
|
*
|
|
|
* @param languageId
|
|
|
* @return
|
|
|
*/
|
|
|
public Map<Integer, String> getNewComputingMode(int languageId) {
|
|
|
Map<Integer, String> map = Maps.newLinkedHashMap();
|
|
|
// map.put(mode5Service.getComputingMode(), mode5Service.getComputingModeTitle(languageId));
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 考勤报表点击弹出的加班明细页签中,需要处理自定义的加班计算方式
|
|
|
*
|
|
|
* @param computingMode
|
|
|
* 加班计算方式
|
|
|
* @param params
|
|
|
* @param user
|
|
|
*/
|
|
|
public String buildTableString4CustomOvertimeFlow(int computingMode, Map<String, Object> params, User user) {
|
|
|
String result = "";
|
|
|
switch(computingMode) {
|
|
|
case 5:
|
|
|
result = mode5Service.buildTableString4CustomOvertimeFlow(params, user);
|
|
|
break;
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 加班归档时,需要处理自定义的加班计算方式
|
|
|
*
|
|
|
* @param computingMode
|
|
|
* 当前加班计算方式
|
|
|
* @param resourceid
|
|
|
* 加班人
|
|
|
* @param splitDate
|
|
|
* 加班日期
|
|
|
* @param changeTypeMap
|
|
|
* 人员在指定日期属于工作日、休息日还是节假日。
|
|
|
* {key:splitDate+"_"+resourceId, value:1=节假日、2=工作日、3=休息日}
|
|
|
* @param overRulesDetailMap
|
|
|
* 指定日期、指定日期类型的 加班规则对象。
|
|
|
* {key:splitDate+"_"+changeType, value:加班规则对象}
|
|
|
* @param restTimeMap
|
|
|
* 指定日期、指定日期类型的 排除休息时段集合。
|
|
|
* {key:splitDate+"_"+changeType, value:加班规则中设置的排除休息时段 {[开始时间,结束时间]} }
|
|
|
* @param computingModeMap
|
|
|
* 指定日期、指定日期类型 启用的加班计算方式。
|
|
|
* {key:splitDate+"_"+changeType, value:0=无效、1=需审批,以加班流程为准、2=需审批,以打卡为准,但是不能超过加班流程时长、3=无需审批,根据打卡时间计算加班时长、4=需审批,流程和打卡取交集、其他值=自定义}
|
|
|
* @param main_uuid
|
|
|
* 已生成的加班日志记录表的uuid(kq_overtime_log),写入加班明细日志时用来关联主表(kq_overtime_log_detail.main_uuid)
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public void doComputingMode(int computingMode, String resourceid, String splitDate,
|
|
|
Map<String, Integer> changeTypeMap,
|
|
|
Map<String, KQOvertimeRulesDetailEntity> overRulesDetailMap,
|
|
|
Map<String, List<String[]>> restTimeMap,
|
|
|
Map<String, Integer> computingModeMap,
|
|
|
String main_uuid) {
|
|
|
switch(computingMode) {
|
|
|
case 5:
|
|
|
mode5Service.doComputingMode(resourceid, splitDate, changeTypeMap, overRulesDetailMap, restTimeMap, computingModeMap, main_uuid);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|