liuliang
parent
9c728cd1b4
commit
b56b72e12b
Binary file not shown.
@ -0,0 +1,11 @@
|
||||
package com.api.attendance.attendanceAnalysis;
|
||||
|
||||
import com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import javax.ws.rs.Path;
|
||||
|
||||
@Path("/attendance/attendanceAnalysis")
|
||||
@Slf4j
|
||||
public class AttendanceanalysisActionApi extends AttendanceanalysisAction {
|
||||
}
|
@ -0,0 +1,147 @@
|
||||
package com.engine.attendance.attendanceanalysis.cmd;
|
||||
|
||||
import com.engine.attendance.enums.DateTypeEnum;
|
||||
import com.engine.attendance.enums.SystemItemEnum;
|
||||
import com.engine.common.biz.AbstractCommonCommand;
|
||||
import com.engine.common.entity.BizLogContext;
|
||||
import com.engine.common.util.DateUtil;
|
||||
import com.engine.common.util.DbTools;
|
||||
import com.engine.core.interceptor.CommandContext;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
@Slf4j
|
||||
public class recordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
|
||||
|
||||
public recordDataCmd(Map<String, Object> params){
|
||||
this.params=params;
|
||||
}
|
||||
@Override
|
||||
public BizLogContext getLogContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> execute(CommandContext commandContext) {
|
||||
//
|
||||
String userId = Util.null2String(params.get("userId"));
|
||||
//分析日期
|
||||
String analysisDate = Util.null2String(params.get("analysisDate"));
|
||||
//数据集合
|
||||
List<Map<String, Object>> recordDataList = (List<Map<String, Object>>)params.get("recordData");
|
||||
//日期类型
|
||||
String rqlx = Util.null2String(params.get("rqlx"));
|
||||
//班次
|
||||
List<Map<String,Object>> classInfo = (List<Map<String,Object>>)params.get("classInfo");
|
||||
//进出时间
|
||||
Map<String,Object> recordDataTime = (Map<String,Object>)params.get("recordDataTime");
|
||||
|
||||
String formmodeid = Util.null2String(params.get("modeId"));
|
||||
|
||||
String cqzt = Util.null2String(params.get("cqzt"));
|
||||
|
||||
|
||||
|
||||
String dayTYpe ="";
|
||||
if (DateTypeEnum.WORK_DAY.getKey().equals(rqlx) || DateTypeEnum.CHANGECLASS.getKey().equals(rqlx)){
|
||||
//工作日
|
||||
dayTYpe = SystemItemEnum.WORK_DAY.getKey();
|
||||
}else if (DateTypeEnum.HOLIDAY.getKey().equals(rqlx)){
|
||||
//节假日
|
||||
dayTYpe = SystemItemEnum.HOLIDAY.getKey();
|
||||
}else if (DateTypeEnum.PUBLIC_RESTDAY.getKey().equals(rqlx) ||
|
||||
DateTypeEnum.EXCHANGE_LEAVEDAY.getKey().equals(rqlx)){
|
||||
//休息日
|
||||
dayTYpe = SystemItemEnum.REST_DAY.getKey();
|
||||
}
|
||||
|
||||
String sql = "select ygid,rq from uf_jcl_kq_cqjg where ygid=? and rq=?";
|
||||
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,userId,analysisDate);
|
||||
if (dataList.size() >0){
|
||||
sql = "update uf_jcl_kq_cqjg set cqzt="+cqzt+",fxrq='"+DateUtil.getCurrentDate()+"',xm1="+dayTYpe+",";
|
||||
for (int i =0;i<recordDataList.size();i++){
|
||||
String item = Util.null2String(recordDataList.get(i).get("item"));
|
||||
String itemduration = Util.null2String(recordDataList.get(i).get("itemduration"));
|
||||
int index = i+2;
|
||||
sql = sql + "xm"+index+"="+item+",";
|
||||
if (!"".equals(itemduration)){
|
||||
sql = sql + "sc"+index+"="+itemduration+",";
|
||||
}
|
||||
}
|
||||
for (int i=recordDataList.size()+2;i<9;i++){
|
||||
sql = sql +"xm"+i+"=NULL,sc"+i+"=NULL,";
|
||||
}
|
||||
if (recordDataTime != null && recordDataTime.size() >0){
|
||||
for (Map.Entry<String,Object> entry : recordDataTime.entrySet()){
|
||||
sql = sql + entry.getKey()+"="+entry.getValue()+",";
|
||||
}
|
||||
}
|
||||
|
||||
sql = sql.substring(0,sql.length()-1) +" where ygid=? and rq=?";
|
||||
log.info("update sql : {}",sql);
|
||||
DbTools.update(sql,userId,analysisDate);
|
||||
}else {
|
||||
sql = "select subcompanyid1,departmentid,jobtitle from hrmresource where id=?";
|
||||
List<Map<String,Object>> userList = DbTools.getSqlToList(sql,userId);
|
||||
sql = "insert into uf_jcl_kq_cqjg (szjg,ygid,fbid,bm,zw,rq,bc,bcbdxx,cqzt,cqsc,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,";
|
||||
String cloumns = "xm1,";
|
||||
String value = "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,";
|
||||
List<Object> insertDatas = Lists.newArrayList();
|
||||
insertDatas.add(userList.get(0).get("subcompanyid1"));
|
||||
insertDatas.add(userId);
|
||||
insertDatas.add(userList.get(0).get("subcompanyid1"));
|
||||
insertDatas.add(userList.get(0).get("departmentid"));
|
||||
insertDatas.add(userList.get(0).get("jobtitle"));
|
||||
insertDatas.add(analysisDate);
|
||||
insertDatas.add(classInfo.get(0).get("bcxx"));
|
||||
insertDatas.add(classInfo.get(0).get("bcsdxx"));
|
||||
insertDatas.add(cqzt);
|
||||
insertDatas.add(classInfo.get(0).get("edsc"));
|
||||
insertDatas.add(1);
|
||||
insertDatas.add(DateUtil.getCurrentDate());
|
||||
insertDatas.add(formmodeid);
|
||||
insertDatas.add(UUID.randomUUID().toString());
|
||||
insertDatas.add(1);
|
||||
insertDatas.add(0);
|
||||
insertDatas.add(DateUtil.getCurrentDate());
|
||||
insertDatas.add(DateUtil.getCurrentTime().split(" ")[1]);
|
||||
insertDatas.add(dayTYpe);
|
||||
for (int i =0;i<recordDataList.size();i++){
|
||||
int index = i+2;
|
||||
String item = Util.null2String(recordDataList.get(i).get("item"));
|
||||
String itemduration = Util.null2String(recordDataList.get(i).get("itemduration"));
|
||||
|
||||
cloumns = cloumns+"xm"+index+",";
|
||||
value = value +"?,";
|
||||
insertDatas.add(item);
|
||||
if (!"".equals(itemduration)){
|
||||
cloumns = cloumns + "sc"+index+",";
|
||||
value = value +"?,";
|
||||
insertDatas.add(itemduration);
|
||||
}
|
||||
}
|
||||
if (recordDataTime != null && recordDataTime.size() >0){
|
||||
for (Map.Entry<String,Object> entry : recordDataTime.entrySet()){
|
||||
if (!"NULL".equals(entry.getValue())){
|
||||
cloumns = cloumns + entry.getKey()+",";
|
||||
value = value + "?,";
|
||||
insertDatas.add(entry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
cloumns = cloumns.substring(0,cloumns.length()-1);
|
||||
value = value.substring(0,value.length()-1);
|
||||
sql = sql +cloumns +") values ("+value+")";
|
||||
log.info("insert sql : {}",sql);
|
||||
log.info("insert data : {}",insertDatas);
|
||||
DbTools.update(sql,insertDatas.toArray());
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,83 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,36 @@
|
||||
import com.engine.attendance.attendanceanalysis.service.impl.AskForLeaveServiceImpl;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TestAskForLeaveByDurationTime {
|
||||
public static void main(String[] args) {
|
||||
Map<String,Object> params = Maps.newHashMap();
|
||||
params.put("tybcndbjlhbjs","1");
|
||||
params.put("qjsc","2.0");
|
||||
List<Map<String,Object>> abnormalClockInList = Lists.newArrayList();
|
||||
params.put("abnormalClockInList",abnormalClockInList);
|
||||
abnormalClockInList.add(new HashMap(){{
|
||||
put("item","7");
|
||||
put("itemduration","1");
|
||||
put("pointTime","2023-11-15 13:00");
|
||||
}});
|
||||
abnormalClockInList.add(new HashMap(){{
|
||||
put("item","11");
|
||||
put("itemduration","13.0");
|
||||
put("betweenMinutes","16");
|
||||
put("pointTime","2023-11-15 18:30");
|
||||
}});
|
||||
abnormalClockInList.add(new HashMap(){{
|
||||
put("item","102");
|
||||
put("itemduration","15.0");
|
||||
put("betweenMinutes","60");
|
||||
put("pointTime","2023-11-15 09:00");
|
||||
}});
|
||||
AskForLeaveServiceImpl askForLeaveService = new AskForLeaveServiceImpl();
|
||||
System.out.println(askForLeaveService.askForLeaveByDurationTime(params));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue