You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
4.1 KiB
Java

1 year ago
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<String,Object> 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<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
for (String userId : userIds.split(",")){
/**获得人员考勤项目*/
Map<String,Object> param = Maps.newHashMap();
param.put("startDate","");
param.put("endDate","");
param.put("resourceId",userId);
param.put("modeId","204");
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(param);
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data");
/** 获取人员班次*/
Map<String,Object> 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<String,List<Map<String,Object>>> 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");
}
}
}