package com.engine.attendance.attendanceanalysis.wrapper;


import com.engine.attendance.attendanceanalysis.dto.ClockPointDTO;
import com.engine.attendance.attendanceanalysis.service.*;
import com.engine.attendance.attendanceanalysis.service.impl.*;
import com.engine.attendance.enums.*;
import com.engine.common.util.CommonUtil;
import com.engine.common.util.DateUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.common.util.Utils;
import com.engine.core.impl.Service;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Slf4j
public class UpdateAttendanceResultWrapper extends Service {
    private AbnormalAttendanceService beLateService = ServiceUtil.getService(AbnormalAttendanceServiceImpl.class);
    private ForgetClockInService forgetClockInService = ServiceUtil.getService(ForgetClockInServiceImpl.class);
    private AskForLeaveService askForLeaveService= ServiceUtil.getService(AskForLeaveServiceImpl.class);
    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);

    /**
     * 记录异常打卡
     * */
    public List<Map<String,Object>> recordAbnormalClockIn(Map<String,Object> params){
        //卡点
        List<ClockPointDTO> clcokInTimeDataList = (List<ClockPointDTO>)params.get("clcokInTimeData");
        //考勤项目
        List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)params.get("attendanceItems");
        //排班
        List<Map<String, Object>> scheduleResult = (List<Map<String,Object>>)params.get("scheduleResult");
        //分析日期
        String analysisDate = Util.null2String(params.get("analysisDate"));
        //人员
        String userId = Util.null2String(params.get("userId"));
        //请假集合
        List<Map<String,Object>> askForLeaveList = (List<Map<String,Object>>)params.get("askForLeaveList");
        //请假项目
        Map<String,Map<String,Object>> askForLeaveItems = (Map<String,Map<String,Object>>)params.get("askForLeaveItems");
        //出差集合
        List<Map<String,Object>> evectionList = (List<Map<String,Object>>)params.get("evectionList");
        //出差项目
        Map<String,Map<String,Object>> evectionItems = (Map<String,Map<String,Object>>)params.get("evectionItems");

        //以开始时间分割班次
        Map<String,List<Map<String, Object>>> startScheduleResult = scheduleResult.stream().collect(Collectors.groupingBy(e->e.get("dtkssj").toString()));
        //以结束时间分割班次
        Map<String,List<Map<String, Object>>> endScheduleResult = scheduleResult.stream().collect(Collectors.groupingBy(e->e.get("dtjssj").toString()));
        List<Map<String,Object>> resultList = Lists.newArrayList();

        for (ClockPointDTO clcokInTimedto :clcokInTimeDataList){
            //当天打卡数据
            Map<String,Object> clcokInTimeData = clcokInTimedto.getClockTime();
            //需要计算的班次打卡时间点
            String pointTime = clcokInTimedto.getClassTime();
            //start：开始打卡时间点，end：结束打卡时间点
            ClockPointEnum pointType = clcokInTimedto.getPointType();
            //empty:漏卡，equal:打卡时间和班次时间相等，before：打卡时间在班次时间之前，after：打卡时间在班次时间之后
            ClockPointEnum timeType = clcokInTimedto.getTimeType();
            //是否是请假、外出打卡
            boolean ifevectionOrAskLeave = false;
            if (ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey().equals(clcokInTimedto.getClassSegmentType()) ||
                    ClassSegmentTypeEnum.EVECTION.getKey().equals(clcokInTimedto.getClassSegmentType())){
                ifevectionOrAskLeave = true;
            }

            //班次
            Map<String, Object> classInfo = Maps.newHashMap();
            if (ClockPointEnum.START.equals(pointType) && !ifevectionOrAskLeave){
                classInfo = startScheduleResult.get(pointTime.split(" ")[1]).get(0);
            }else if (ClockPointEnum.END.equals(pointType) && !ifevectionOrAskLeave){
                classInfo = endScheduleResult.get(pointTime.split(" ")[1]).get(0);
            }else if (ClockPointEnum.START.equals(pointType) && ifevectionOrAskLeave){
                classInfo = endScheduleResult.get(pointTime.split(" ")[1]).get(0);
            }else if (ClockPointEnum.END.equals(pointType) && ifevectionOrAskLeave){
                classInfo = startScheduleResult.get(pointTime.split(" ")[1]).get(0);
            }
            if (ClockPointEnum.EMPTY.equals(timeType) || clcokInTimeData == null){
                //漏卡
                Map<String,Object> missCardParams = Maps.newHashMap();
                missCardParams.put("classInfo",classInfo);
                missCardParams.put("clcokInTimeData",clcokInTimeData);
                missCardParams.put("attendanceItems",attendanceItems);
                missCardParams.put("analysisDate",analysisDate);
                missCardParams.put("userId",userId);
                missCardParams.put("point",clcokInTimedto);
                missCardParams.put("scheduleResult",scheduleResult);
                log.info("missCardParams classInfo: [{}],clcokInTimeData:[{}]",classInfo,clcokInTimeData);
                List<Map<String,Object>> iforgetClockIn = forgetClockInService.forgetClockIn(missCardParams);
                if (iforgetClockIn.size() >0){
                    iforgetClockIn.get(0).put("pointTime",pointTime);
                    iforgetClockIn.get(0).put("bdlx",classInfo.get("bdlx"));
                    iforgetClockIn.get(0).put("record",clcokInTimedto.isRecord());
                    resultList.add(iforgetClockIn.get(0));
                }

            }else if (ClockPointEnum.START.equals(pointType) && ClockPointEnum.AFTER.equals(timeType)){
                //迟到
                Map<String,Object> beLateParams = Maps.newHashMap();
                beLateParams.put("classInfo",classInfo);
                beLateParams.put("clcokInTimeData",clcokInTimeData);
                beLateParams.put("attendanceItems",attendanceItems);
                beLateParams.put("analysisDate",analysisDate);
                beLateParams.put("userId",userId);
                beLateParams.put("point",clcokInTimedto);
                beLateParams.put("askForLeaveList",askForLeaveList);
                beLateParams.put("askForLeaveItems",askForLeaveItems);
                beLateParams.put("evectionList",evectionList);
                beLateParams.put("evectionItems",evectionItems);
                beLateParams.put("scheduleResult",scheduleResult);
                log.info("beLateParams classInfo: [{}],clcokInTimeData:[{}]",classInfo,clcokInTimeData);
                List<Map<String,Object>> ifBeLate = beLateService.beLate(beLateParams);
                if (ifBeLate.size() > 0){
                    ifBeLate.get(0).put("pointTime",pointTime);
                    ifBeLate.get(0).put("bdlx",classInfo.get("bdlx"));
                    ifBeLate.get(0).put("record",clcokInTimedto.isRecord());
                    resultList.add(ifBeLate.get(0));
                }
            }else if (ClockPointEnum.END.equals(pointType) && ClockPointEnum.BEFORE.equals(timeType)){
                //早退
                Map<String,Object> leaveEarlyParams = Maps.newHashMap();
                leaveEarlyParams.put("classInfo",classInfo);
                leaveEarlyParams.put("clcokInTimeData",clcokInTimeData);
                leaveEarlyParams.put("attendanceItems",attendanceItems);
                leaveEarlyParams.put("analysisDate",analysisDate);
                leaveEarlyParams.put("userId",userId);
                leaveEarlyParams.put("point",clcokInTimedto);
                leaveEarlyParams.put("askForLeaveList",askForLeaveList);
                leaveEarlyParams.put("askForLeaveItems",askForLeaveItems);
                leaveEarlyParams.put("evectionList",evectionList);
                leaveEarlyParams.put("evectionItems",evectionItems);
                leaveEarlyParams.put("scheduleResult",scheduleResult);
                log.info("leaveEarlyParams classInfo: [{}],clcokInTimeData:[{}]",classInfo,clcokInTimeData);
                List<Map<String,Object>> ifLeaveEarly = beLateService.leaveEarly(leaveEarlyParams);
                if (ifLeaveEarly.size() > 0){
                    ifLeaveEarly.get(0).put("pointTime",pointTime);
                    ifLeaveEarly.get(0).put("bdlx",classInfo.get("bdlx"));
                    ifLeaveEarly.get(0).put("record",clcokInTimedto.isRecord());
                    resultList.add(ifLeaveEarly.get(0));
                }
            }

        }

//        if (iforgetClockIn || ifBeLate ||ifLeaveEarly){
//            return true;
//        }
        log.info("abnormalClockInList : [{}]",resultList);
        return resultList;
    }

    /**
     * 记录加班
     * @param params
     * @return
     */
    public List<Map<String, Object>> recordWorkOverTime(Map<String,Object> params){
       return workOverTimeService.recordWorkOverTime(params);
    }


    /**
     * 请假
     * @param params
     * @return
     */
    public Map<String, Object> recordAskForLeave(Map<String,Object> params){
        //请假项目
        Map<String,Map<String,Object>> askForLeaveItems = (Map<String,Map<String,Object>>)params.get("askForLeaveItems");
        //分析日期
        String analysisDate = Util.null2String(params.get("analysisDate"));
        //排班
        List<Map<String, Object>> scheduleResult = (List<Map<String,Object>>)params.get("scheduleResult");
        //请假记录
        List<Map<String, Object>> askForLeaveList = (List<Map<String,Object>>)params.get("askForLeaveList");
        //异常记录
        List<Map<String,Object>> abnormalClockInList = (List<Map<String,Object>>)params.get("abnormalClockInList");
        //请假抵消异常
        List<Map<String,Object>> offsetAskForLeaveAnomaly = Lists.newArrayList();

        Map<String, Object> map = Maps.newHashMap();
        List<Map<String, Object>> resultList = Lists.newArrayList();

        for (int i=0;i<askForLeaveList.size();i++){
            Map<String, Object> resultMap = Maps.newHashMap();
            resultList.add(resultMap);
            resultMap.put("item",askForLeaveList.get(i).get("jqlx"));
            String kssj = askForLeaveList.get(i).get("ksrq") + " "+askForLeaveList.get(i).get("kssj");
            String jssj = askForLeaveList.get(i).get("jsrq")+ " "+askForLeaveList.get(i).get("jssj");
            //半天请假
            String btj = Util.null2String(askForLeaveList.get(i).get("btj"));
            //请假时长
            String qjsc = Util.null2String(askForLeaveList.get(i).get("qjsc"));
            //请假项目
            Map<String,Object> askForLeaveItem = askForLeaveItems.get(askForLeaveList.get(i).get("jqlx"));
            //自动移除时间区间内的非工作时长
            String zdycbcndfgzsd = Util.null2String(askForLeaveItem.get("zdycbcndfgzsd"));
            //同一天可抵消多个异常
            String tybcndbjlhbjs = Util.null2String(askForLeaveItem.get("tybcndbjlhbjs"));
            //作用时段
            String zysd = Util.null2String(askForLeaveItem.get("zysd"));
            //核算量
            double hsl = Double.valueOf(Util.null2String(askForLeaveItem.get("hsl")));
            //核算单位
            String hsdw = Util.null2String(askForLeaveItem.get("hsdw"));

            Map<String,Object> param = Maps.newHashMap();
            param.put("abnormalClockInList",abnormalClockInList);
            param.put("zysd",zysd);
            param.put("scheduleResult",scheduleResult);
            param.put("analysisDate",analysisDate);
            double itemduration = 0;
            if ("".equals(Util.null2String(askForLeaveList.get(i).get("kssj"))) || "".equals(Util.null2String(askForLeaveList.get(i).get("jssj")))){
                //弹性请假,半天请假
                if (CheckBoxEnum.CHECKED.getKey().equals(btj)){
                    //半天请假

                    askForLeaveService.askForLeaveByHalfDay(param);
                }else if (!"".equals(qjsc)){
                    //时长请假
                    itemduration = Utils.getItemduration(hsl,hsdw,Double.valueOf(Double.valueOf(qjsc)*60).intValue(),AccountingUnitEnum.MINUTES);

                    resultMap.put("itemduration",itemduration);
                    param.put("qjsc",qjsc);
                    param.put("tybcndbjlhbjs",tybcndbjlhbjs);
                    if (abnormalClockInList.size()>0){
                        Map<String,Object> map1 = askForLeaveService.askForLeaveByDurationTime(param);
                        abnormalClockInList =(List<Map<String,Object>>)map1.get("abnormalClockInList");
                        offsetAskForLeaveAnomaly.addAll((List<Map<String,Object>>)map1.get("offsetAskForLeaveAnomaly"));
                    }
                }
            }else {
                //按照开始时间，结束时间请假
                int timeMinutes = DateUtil.getBetWeenMinutes(kssj,jssj);
                if (CheckBoxEnum.CHECKED.getKey().equals(zdycbcndfgzsd)){
                    timeMinutes = Utils.removeRestTime(kssj,jssj,scheduleResult,analysisDate);
                }
                log.info("recordAskForLeave timeMinutes ：[{}] ,hsl:{},hsdw",timeMinutes,hsl,hsdw);
                itemduration = Utils.getItemduration(hsl,hsdw,timeMinutes,AccountingUnitEnum.MINUTES);
                resultMap.put("itemduration",itemduration);
                param.put("kssj",kssj);
                param.put("jssj",jssj);
                if (abnormalClockInList.size()>0){
                    Map<String,Object> map1 = askForLeaveService.askForLeaveByTime(param);
                    abnormalClockInList = (List<Map<String,Object>>)map1.get("abnormalClockInList");
                    offsetAskForLeaveAnomaly.addAll((List<Map<String,Object>>)map1.get("offsetAskForLeaveAnomaly"));
                }
            }
        }
        map.put("resultList",resultList);
        map.put("abnormalClockInList",abnormalClockInList);
        map.put("offsetAskForLeaveAnomaly",offsetAskForLeaveAnomaly);
        return map;
    }

    /**
     * 外出
     * @param params
     * @return
     */
    public Map<String, Object> recordEvection(Map<String,Object> params){

        //外出项目
        Map<String,Map<String,Object>> evectionItems = (Map<String,Map<String,Object>>)params.get("evectionItems");
        //排班
        List<Map<String, Object>> scheduleResult = (List<Map<String,Object>>)params.get("scheduleResult");
        //分析日期
        String analysisDate = Util.null2String(params.get("analysisDate"));
        //出差记录
        List<Map<String, Object>> evectionList = (List<Map<String,Object>>)params.get("evectionList");
        //异常记录
        List<Map<String,Object>> abnormalClockInList = (List<Map<String,Object>>)params.get("abnormalClockInList");
        //外出抵消异常
        List<Map<String,Object>> offsetEvectionAnomaly = Lists.newArrayList();

        Map<String, Object> map = Maps.newHashMap();
        List<Map<String, Object>> resultList = Lists.newArrayList();

        for (int i=0;i<evectionList.size();i++){
            Map<String, Object> resultMap = Maps.newHashMap();
            resultList.add(resultMap);
            resultMap.put("item",evectionList.get(i).get("cclx"));
            String kssj = evectionList.get(i).get("ksrq") + " "+evectionList.get(i).get("kssj");
            String jssj = evectionList.get(i).get("jsrq")+ " "+evectionList.get(i).get("jssj");
            //半天请假
            String btj = Util.null2String(evectionList.get(i).get("btcc"));
            //请假时长
            String qjsc = Util.null2String(evectionList.get(i).get("ccsc"));
            //请假项目
            Map<String,Object> evectionItem = evectionItems.get(evectionList.get(i).get("cclx"));
            //自动移除时间区间内的非工作时长
            String zdycbcndfgzsd = Util.null2String(evectionItem.get("zdycbcndfgzsd"));
            //同一天可抵消多个异常
            String tybcndbjlhbjs = Util.null2String(evectionItem.get("tybcndbjlhbjs"));
            //核算量
            double hsl = Double.valueOf(Util.null2String(evectionItem.get("hsl")));
            //核算单位
            String hsdw = Util.null2String(evectionItem.get("hsdw"));
            //作用时间段
            String zysd = Util.null2String(evectionItem.get("zysd"));

            Map<String,Object> param = Maps.newHashMap();
            param.put("abnormalClockInList",abnormalClockInList);
            param.put("zysd",zysd);
            param.put("scheduleResult",scheduleResult);
            param.put("analysisDate",analysisDate);
            double itemduration = 0;
            if ("".equals(Util.null2String(evectionList.get(i).get("kssj"))) || "".equals(Util.null2String(evectionList.get(i).get("jssj")))){
                //弹性请假,半天出差
                if (CheckBoxEnum.CHECKED.getKey().equals(btj)){
                    //半天出差
                    evectionService.evectionByHalfDay(param);
                }else if (!"".equals(qjsc)){
                    //时长出差
                    itemduration = Utils.getItemduration(hsl,hsdw,Double.valueOf(Double.valueOf(qjsc)*60).intValue(),AccountingUnitEnum.MINUTES);

                    resultMap.put("itemduration",itemduration);
                    param.put("ccsc",qjsc);
                    param.put("tybcndbjlhbjs",tybcndbjlhbjs);
                    if (abnormalClockInList.size()>0){
                        Map<String,Object> map1 =evectionService.evectionByDurationTime(param);
                        abnormalClockInList = (List<Map<String,Object>>)map1.get("abnormalClockInList");
                        offsetEvectionAnomaly.addAll((List<Map<String,Object>>)map1.get("offsetEvectionAnomaly"));
                    }
                }
            }else {
                //按照开始时间，结束时间出差
                int timeMinutes = DateUtil.getBetWeenMinutes(kssj,jssj);
                if (CheckBoxEnum.CHECKED.getKey().equals(zdycbcndfgzsd)){
                    timeMinutes = Utils.removeRestTime(kssj,jssj,scheduleResult,analysisDate);
                }
                log.info("recordEvection timeMinutes ：[{}] ,hsl:{},hsdw",timeMinutes,hsl,hsdw);
                itemduration = Utils.getItemduration(hsl,hsdw,timeMinutes,AccountingUnitEnum.MINUTES);
                resultMap.put("itemduration",itemduration);
                param.put("kssj",kssj);
                param.put("jssj",jssj);
                if (abnormalClockInList.size()>0){
                    Map<String,Object> map1 = evectionService.evectionByTime(param);
                    abnormalClockInList = (List<Map<String,Object>>)map1.get("abnormalClockInList");
                    offsetEvectionAnomaly.addAll((List<Map<String,Object>>)map1.get("offsetEvectionAnomaly"));
                }
            }
        }
        map.put("resultList",resultList);
        map.put("abnormalClockInList",abnormalClockInList);
        map.put("offsetEvectionAnomaly",offsetEvectionAnomaly);
        return map;
    }

    /**
     * 正常上下班,填写
     * @param params
     * @return
     */
    public List<Map<String,Object>> recordNormal(Map<String,Object> params){
        //排班
        List<Map<String, Object>> scheduleResult = (List<Map<String,Object>>)params.get("scheduleResult");
        //分析日期
        String analysisDate = Util.null2String(params.get("analysisDate"));
        //人员
        String userId = Util.null2String(params.get("userId"));
        //日期类型
        String rqlx = Util.null2String(scheduleResult.get(0).get("rqlx"));

        List<Map<String, Object>> resultList = Lists.newArrayList();

        Map<String,Object> normalParams = Maps.newHashMap();

//        normalParams.put("userId",userId);
//        normalParams.put("date",analysisDate);
//        normalParams.put("classInfo",scheduleResult);
//        normalParams.put("modeId",params.get("modeId"));
        if (DateTypeEnum.WORK_DAY.getKey().equals(rqlx) || DateTypeEnum.CHANGECLASS.getKey().equals(rqlx)){
            //工作日
            normalParams.put("item",SystemItemEnum.WORK_DAY.getKey());
        }else if (DateTypeEnum.HOLIDAY.getKey().equals(rqlx)){
            //节假日
            normalParams.put("item",SystemItemEnum.HOLIDAY.getKey());
        }else if (DateTypeEnum.PUBLIC_RESTDAY.getKey().equals(rqlx) ||
                DateTypeEnum.EXCHANGE_LEAVEDAY.getKey().equals(rqlx)){
            //休息日
            normalParams.put("item",SystemItemEnum.REST_DAY.getKey());
        }
        resultList.add(normalParams);
        //commandExecutor.execute(new UpdateAttendanceResultsCmd(normalParams));

        return resultList;
    }
    /**
     * 没有排班
     * @param params
     * @return
     */
    public boolean recordNoClass(Map<String,Object> params){
        //分析日期
        String analysisDate = Util.null2String(params.get("analysisDate"));
        //人员
        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");

        log.info("userId : {} ,analysisDate: {} have no class",userId,analysisDate);

        Map<String,Object> recordParam = Maps.newHashMap();
        recordParam.put("userId",userId);
        recordParam.put("analysisDate",analysisDate);
        recordParam.put("recordData",Lists.newArrayList());
        String rqlx = CommonUtil.getRqlx(userId,analysisDate);
        recordParam.put("rqlx",rqlx);

        recordParam.put("classInfo",Lists.newArrayList());
        recordParam.put("recordDataTime",Maps.newHashMap());
        recordParam.put("attendanceDuration",0);
        recordParam.put("formmodeIdMap",Utils.getFormmodeIdMap());
        List<Map<String, Object>> recordDataList = Lists.newArrayList();
        recordDataList.add(new HashMap(){{
            put("item",SystemItemEnum.NO_SCHEDULING.getKey());
            put("itemduration","NULL");
        }});
        if (allowanceMap.get("ifnotWork") != null){
            //次日免班
            recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
            utilService.recordItem(recordParam);
            return false;
        }
        if (rqlx.equals(DateTypeEnum.WORK_DAY.getKey()) || rqlx.equals(DateTypeEnum.CHANGECLASS.getKey())){
            recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey());
        }else {
            recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
            recordParam.put("sfxx",CheckBoxEnum.CHECKED.getKey());
        }


        if (workHourItems != null && workHourItems.size() >0 ){
            //核算工时的日期类型
            String hsgsdrqlx = Util.null2String(workHourItems.get(0).get("hsgsdrqlx"));

            rqlx = Utils.getDateType(analysisDate,Util.null2String(workHourItems.get(0).get("qyrl")));
            params.put("workHourItem",workHourItems.get(0));
            if (CommonUtil.ifContainStr(hsgsdrqlx,rqlx,",")){
                //走综合工时
                comprehensiveWorkingHourService.excuteByWorkHour(params);
            }else {
                //没有排班
                recordParam.put("recordData",recordDataList);
                utilService.recordItem(recordParam);
            }
        }else {
            //没有排班
            recordParam.put("recordData",recordDataList);
            utilService.recordItem(recordParam);
        }


        return false;
    }


    /**
     * 津贴处理
     * @param params
     * @return
     */
    public Map<String,Object> allowanceHandle(Map<String,Object> params){
        return allowanceService.allowanceHandle(params);
    }

    /**
     * 津贴处理
     * @param params
     * @return
     */
    public Map<String,Object> removeAbnormal(Map<String,Object> params){
        return allowanceService.removeAbnormal(params);
    }

    /**
     * 根据班次获得请假记录以及请假排班
     * @param params
     * @return
     */
    public Map<String,Object> getAskForLeave(Map<String,Object> params){
        return askForLeaveService.getAskForLeave(params);
    }
    /**
     * 根据班次获得出差记录以及出差排班
     * @param params
     * @return
     */
    public Map<String,Object> getEvection(Map<String,Object> params){
        return evectionService.getEvection(params);
    }


    /**
     * 休息班次，直接算成成休息
     */
    public void recordRest(Map<String,Object> recordParam){
        recordParam.put("recordData",Lists.newArrayList());
        recordParam.put("recordDataTime",Maps.newHashMap());
        recordParam.put("attendanceDuration",0);
        recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
        recordParam.put("sfxx",CheckBoxEnum.CHECKED.getKey());
        utilService.recordItem(recordParam);
    }

}
