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 getNewComputingMode(int languageId) { Map map = Maps.newLinkedHashMap(); // map.put(mode5Service.getComputingMode(), mode5Service.getComputingModeTitle(languageId)); return map; } /** * 考勤报表点击弹出的加班明细页签中,需要处理自定义的加班计算方式 * * @param computingMode * 加班计算方式 * @param params * @param user */ public String buildTableString4CustomOvertimeFlow(int computingMode, Map 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 changeTypeMap, Map overRulesDetailMap, Map> restTimeMap, Map computingModeMap, String main_uuid) { switch(computingMode) { case 5: mode5Service.doComputingMode(resourceid, splitDate, changeTypeMap, overRulesDetailMap, restTimeMap, computingModeMap, main_uuid); break; } } }