package com.engine.attendance.attendanceanalysis.web; import com.engine.attendance.attendanceanalysis.service.UtilService; import com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl; import com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper; import com.engine.attendance.attendanceplan.service.AttendancePlanService; import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl; import com.engine.common.util.*; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import weaver.general.Util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Slf4j public class AttendanceanalysisAction { private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class); private UtilService utilService = ServiceUtil.getService(UtilServiceImpl.class); private AttendanceAnalysisWrapper attendanceAnalysisService = ServiceUtil.getService(AttendanceAnalysisWrapper.class); /** * 排班分析 * @return */ @POST @Path("/attendanceAnalysisByHrmAndDate") @Produces({"text/plain"}) public String getSchedulingData(@Context HttpServletRequest request, @Context HttpServletResponse response) { try { Map paramMap = ParamUtil.request2Map(request); String startDate = Util.null2String(paramMap.get("startDate")); String startBeforeDate = DateUtil.beforeDay(startDate,1); String endDate = Util.null2String(paramMap.get("endDate")); String endAfterDate = DateUtil.AfterDay(endDate,1); String userIds = Util.null2String(paramMap.get("userIds")); String modeId = Util.null2String(paramMap.get("modeId")); int betweenDays = DateUtil.getBetWeenDays(startDate,endDate); String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and userid in ("+userIds+") and signdate >= ? and signdate <= ?"; List> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate); Map>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid")))); for (String userId : userIds.split(",")){ /**获得人员考勤项目*/ Map param = Maps.newHashMap(); param.put("startDate",""); param.put("endDate",""); param.put("resourceId",userId); param.put("modeId","204"); Map dataMap = basicsetService.getAttendanceItemsByPerson(param); List> attendanceItems = (List>)dataMap.get("data"); /** 获取人员班次*/ Map classesParamMap = Maps.newHashMap(); classesParamMap.put("tableName","uf_pbjg"); classesParamMap.put("startDate",startBeforeDate); classesParamMap.put("endDate",endAfterDate); classesParamMap.put("pblx","0"); classesParamMap.put("pbdx",userId); classesParamMap.put("current","1"); classesParamMap.put("pageSize",10); classesParamMap.put("recurrence",1); Map>> schedulingResultsMap = utilService.getSchedulingInFormation(classesParamMap); for (int i=0; i<=betweenDays;i++){ String date = DateUtil.AfterDay(startDate,i); attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulingResultsMap,modeId); } } return null; }catch (Exception e){ log.error("execute fail,catch error: [{}]",e); return ApiReturnTools.error("500","saveApplicableOrganization error"); } } }