|
|
|
@ -1,9 +1,12 @@
|
|
|
|
|
package com.engine.kq.job;
|
|
|
|
|
|
|
|
|
|
import com.engine.kq.biz.KQReportBiz;
|
|
|
|
|
import com.engine.kq.biz.KQTimesArrayComInfo;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import weaver.conn.RecordSet;
|
|
|
|
|
import weaver.general.TimeUtil;
|
|
|
|
|
import weaver.general.Util;
|
|
|
|
|
import weaver.hrm.User;
|
|
|
|
|
import weaver.interfaces.schedule.BaseCronJob;
|
|
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
@ -30,7 +33,8 @@ public class SynClockInTimeJob extends BaseCronJob {
|
|
|
|
|
try{
|
|
|
|
|
RecordSet rs1 = new RecordSet();
|
|
|
|
|
//只查询 来源 是 导入的
|
|
|
|
|
rs.executeQuery("select * from uf_jbtz where ly=1 and ksrq>=? and jsrq<=?",lastdate,currentdate);
|
|
|
|
|
// rs.executeQuery("select * from uf_jbtz where ly=1 and ksrq>=? and jsrq<=?",lastdate,currentdate);
|
|
|
|
|
rs.executeQuery("select * from uf_jbtz where ksrq>=? and jsrq<=?",lastdate,currentdate);
|
|
|
|
|
while(rs.next()){
|
|
|
|
|
String mainid = Util.null2String(rs.getString("id"));
|
|
|
|
|
String userid = Util.null2String(rs.getString("jbr"));
|
|
|
|
@ -43,11 +47,22 @@ public class SynClockInTimeJob extends BaseCronJob {
|
|
|
|
|
String starttime = ksrq+" "+kssj+":00";
|
|
|
|
|
String endtime = jsrq+" "+jssj+":00";
|
|
|
|
|
|
|
|
|
|
User user = new User(Integer.parseInt(userid));
|
|
|
|
|
|
|
|
|
|
String beforetwohours_starttime = addDateHour(starttime,-2);
|
|
|
|
|
String aftertwohours_endtime = addDateHour(endtime,2);
|
|
|
|
|
|
|
|
|
|
String earlystarttime = getEarlyStartTime(beforetwohours_starttime,starttime,ksrq,userid);
|
|
|
|
|
String afterendtime = getAfterEndTime(endtime,aftertwohours_endtime,jsrq,userid);
|
|
|
|
|
// String earlystarttime = getEarlyStartTime(beforetwohours_starttime,starttime,ksrq,userid);
|
|
|
|
|
// String afterendtime = getAfterEndTime(endtime,aftertwohours_endtime,jsrq,userid);
|
|
|
|
|
|
|
|
|
|
String earlystarttime = getEarlyStartTime(gzrq,userid,user);
|
|
|
|
|
|
|
|
|
|
String afterendtime = "";
|
|
|
|
|
if(checkIsNightSerial(userid,gzrq)){
|
|
|
|
|
afterendtime = getAfterEndTime(gzrq,userid,user);
|
|
|
|
|
}else{
|
|
|
|
|
afterendtime = getAfterEndTime(jsrq,userid,user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
boolean bool = rs1.executeUpdate("update uf_jbtz set zzdksj=?,zwdkrq=? where id=?",earlystarttime,afterendtime,mainid);
|
|
|
|
|
if(bool){
|
|
|
|
@ -69,6 +84,182 @@ public class SynClockInTimeJob extends BaseCronJob {
|
|
|
|
|
rs.writeLog("---------- end to syn overtime work card time ----------");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String getEarlyStartTime(String kqDate,String resourceId,User user){
|
|
|
|
|
String result = "";
|
|
|
|
|
Map<String, Object> data = null;
|
|
|
|
|
Map<String, Object> signStatusInfo = null;
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
try {
|
|
|
|
|
String sql = " select kqdate, resourceid,groupid,serialid,serialnumber,workbegindate,workbegintime, " +
|
|
|
|
|
" workenddate,workendtime,workmins,signindate,signintime,signinid,signoutdate,signouttime,signoutid, " +
|
|
|
|
|
" attendanceMins,belatemins,graveBeLateMins,leaveearlymins,graveLeaveEarlyMins,absenteeismmins," +
|
|
|
|
|
" forgotcheckmins,forgotBeginWorkCheckMins,leaveMins,leaveInfo,evectionMins,outMins,otherinfo " +
|
|
|
|
|
" from kq_format_detail b " +
|
|
|
|
|
" where resourceid = " + resourceId + " and kqdate ='" + kqDate + "' " +
|
|
|
|
|
" order by serialnumber ";
|
|
|
|
|
rs.execute(sql);
|
|
|
|
|
while (rs.next()) {
|
|
|
|
|
String serialid = Util.null2String(rs.getString("serialid"));
|
|
|
|
|
String workbegindate = Util.null2String(rs.getString("workbegindate")).trim();
|
|
|
|
|
String workbegintime = Util.null2String(rs.getString("workbegintime")).trim();
|
|
|
|
|
String signinid = Util.null2String(rs.getString("signinid")).trim();
|
|
|
|
|
String signintime = Util.null2String(rs.getString("signintime")).trim();
|
|
|
|
|
String beLateMins = Util.null2String(rs.getString("beLateMins")).trim();
|
|
|
|
|
String graveBeLateMins = Util.null2String(rs.getString("graveBeLateMins")).trim();
|
|
|
|
|
String absenteeismMins = Util.null2String(rs.getString("absenteeismMins")).trim();
|
|
|
|
|
String forgotBeginWorkCheckMins = Util.null2String(rs.getString("forgotBeginWorkCheckMins")).trim();
|
|
|
|
|
int leaveMins = rs.getInt("leaveMins");
|
|
|
|
|
String leaveInfo = Util.null2String(rs.getString("leaveInfo"));
|
|
|
|
|
int evectionMins = rs.getInt("evectionMins");
|
|
|
|
|
int outMins = rs.getInt("outMins");
|
|
|
|
|
if (serialid.length() > 0) {
|
|
|
|
|
if (workbegintime.length() > 0) {
|
|
|
|
|
signStatusInfo = new HashMap();
|
|
|
|
|
signStatusInfo.put("workdate", workbegindate);
|
|
|
|
|
signStatusInfo.put("worktime", workbegintime);
|
|
|
|
|
signStatusInfo.put("signtime", signintime);
|
|
|
|
|
signStatusInfo.put("beLateMins", beLateMins);
|
|
|
|
|
signStatusInfo.put("forgotBeginWorkCheckMins", forgotBeginWorkCheckMins);
|
|
|
|
|
signStatusInfo.put("graveBeLateMins", graveBeLateMins);
|
|
|
|
|
signStatusInfo.put("absenteeismMins", absenteeismMins);
|
|
|
|
|
signStatusInfo.put("leaveMins", leaveMins);
|
|
|
|
|
signStatusInfo.put("leaveInfo", leaveInfo);
|
|
|
|
|
signStatusInfo.put("evectionMins", evectionMins);
|
|
|
|
|
signStatusInfo.put("outMins", outMins);
|
|
|
|
|
data = new HashMap<>();
|
|
|
|
|
data.put("workTime", workbegintime);
|
|
|
|
|
data.put("signTime", signintime.length() == 0 ? "" : signintime);
|
|
|
|
|
data.put("signStatus", KQReportBiz.getSignStatus(signStatusInfo, user, "on"));
|
|
|
|
|
Map<String, Object> signDetailInfo = getSignDetailInfo(signinid);
|
|
|
|
|
data.put("addr", Util.null2String(signDetailInfo.get("addr")));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
signStatusInfo = new HashMap();
|
|
|
|
|
signStatusInfo.put("leaveMins", leaveMins);
|
|
|
|
|
signStatusInfo.put("leaveInfo", leaveInfo);
|
|
|
|
|
signStatusInfo.put("evectionMins", evectionMins);
|
|
|
|
|
signStatusInfo.put("outMins", outMins);
|
|
|
|
|
if (signinid.length() > 0) {
|
|
|
|
|
data = new HashMap<>();
|
|
|
|
|
data.put("signStatus", KQReportBiz.getSignStatus(signStatusInfo, user, ""));
|
|
|
|
|
data.put("signTime", signintime.length() == 0 ? "" : signintime);
|
|
|
|
|
Map<String, Object> signDetailInfo = getSignDetailInfo(signinid);
|
|
|
|
|
data.put("addr", Util.null2String(signDetailInfo.get("addr")));
|
|
|
|
|
} else {
|
|
|
|
|
data = new HashMap<>();
|
|
|
|
|
data.put("signStatus", KQReportBiz.getSignStatus(signStatusInfo, user, ""));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(data.containsKey("signTime")){
|
|
|
|
|
String signTime = data.get("signTime").toString();
|
|
|
|
|
if(signTime != null && !"".equals(signTime)){
|
|
|
|
|
result = kqDate + " " + signTime;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}catch (Exception e) {
|
|
|
|
|
rs.writeLog(e);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String getAfterEndTime(String kqDate,String resourceId,User user){
|
|
|
|
|
String result = "";
|
|
|
|
|
KQTimesArrayComInfo kqTimesArrayComInfo = new KQTimesArrayComInfo();
|
|
|
|
|
Map<String, Object> data = null;
|
|
|
|
|
Map<String, Object> signStatusInfo = null;
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
try {
|
|
|
|
|
String sql = " select kqdate, resourceid,groupid,serialid,serialnumber,workbegindate,workbegintime, " +
|
|
|
|
|
" workenddate,workendtime,workmins,signindate,signintime,signinid,signoutdate,signouttime,signoutid, " +
|
|
|
|
|
" attendanceMins,belatemins,graveBeLateMins,leaveearlymins,graveLeaveEarlyMins,absenteeismmins," +
|
|
|
|
|
" forgotcheckmins,forgotBeginWorkCheckMins,leaveMins,leaveInfo,evectionMins,outMins,otherinfo " +
|
|
|
|
|
" from kq_format_detail b " +
|
|
|
|
|
" where resourceid = " + resourceId + " and kqdate ='" + kqDate + "' " +
|
|
|
|
|
" order by serialnumber ";
|
|
|
|
|
rs.execute(sql);
|
|
|
|
|
while (rs.next()) {
|
|
|
|
|
String serialid = Util.null2String(rs.getString("serialid"));
|
|
|
|
|
String workenddate = Util.null2String(rs.getString("workenddate")).trim();
|
|
|
|
|
String workendtime = Util.null2String(rs.getString("workendtime")).trim();
|
|
|
|
|
String signoutid = Util.null2String(rs.getString("signoutid")).trim();
|
|
|
|
|
String signouttime = Util.null2String(rs.getString("signouttime")).trim();
|
|
|
|
|
String leaveEarlyMins = Util.null2String(rs.getString("leaveEarlyMins")).trim();
|
|
|
|
|
String graveLeaveEarlyMins = Util.null2String(rs.getString("graveLeaveEarlyMins")).trim();
|
|
|
|
|
String absenteeismMins = Util.null2String(rs.getString("absenteeismMins")).trim();
|
|
|
|
|
String forgotCheckMins = Util.null2String(rs.getString("forgotCheckMins")).trim();
|
|
|
|
|
int leaveMins = rs.getInt("leaveMins");
|
|
|
|
|
String leaveInfo = Util.null2String(rs.getString("leaveInfo"));
|
|
|
|
|
int evectionMins = rs.getInt("evectionMins");
|
|
|
|
|
int outMins = rs.getInt("outMins");
|
|
|
|
|
if (serialid.length() > 0) {
|
|
|
|
|
if (workendtime.length() > 0) {
|
|
|
|
|
signStatusInfo = new HashMap();
|
|
|
|
|
signStatusInfo.put("workdate", workenddate);
|
|
|
|
|
signStatusInfo.put("worktime", kqTimesArrayComInfo.turn48to24Time(workendtime));
|
|
|
|
|
signStatusInfo.put("signtime", signouttime);
|
|
|
|
|
signStatusInfo.put("leaveEarlyMins", leaveEarlyMins);
|
|
|
|
|
signStatusInfo.put("graveLeaveEarlyMins", graveLeaveEarlyMins);
|
|
|
|
|
signStatusInfo.put("forgotCheckMins", forgotCheckMins);
|
|
|
|
|
signStatusInfo.put("absenteeismMins", absenteeismMins);
|
|
|
|
|
signStatusInfo.put("leaveMins", leaveMins);
|
|
|
|
|
signStatusInfo.put("leaveInfo", leaveInfo);
|
|
|
|
|
signStatusInfo.put("evectionMins", evectionMins);
|
|
|
|
|
signStatusInfo.put("outMins", outMins);
|
|
|
|
|
data = new HashMap<>();
|
|
|
|
|
data.put("workTime", kqTimesArrayComInfo.turn48to24Time(workendtime));
|
|
|
|
|
data.put("signTime", signouttime.length() == 0 ? "" : signouttime);
|
|
|
|
|
data.put("signStatus", KQReportBiz.getSignStatus(signStatusInfo, user, "off"));
|
|
|
|
|
Map<String, Object> signDetailInfo = getSignDetailInfo(signoutid);
|
|
|
|
|
data.put("addr", Util.null2String(signDetailInfo.get("addr")));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
signStatusInfo = new HashMap();
|
|
|
|
|
signStatusInfo.put("leaveMins", leaveMins);
|
|
|
|
|
signStatusInfo.put("leaveInfo", leaveInfo);
|
|
|
|
|
signStatusInfo.put("evectionMins", evectionMins);
|
|
|
|
|
signStatusInfo.put("outMins", outMins);
|
|
|
|
|
if (signoutid.length() > 0) {
|
|
|
|
|
data = new HashMap<>();
|
|
|
|
|
data.put("signStatus", KQReportBiz.getSignStatus(signStatusInfo, user, ""));
|
|
|
|
|
data.put("signTime", signouttime.length() == 0 ? "" : signouttime);
|
|
|
|
|
Map<String, Object> signDetailInfo = getSignDetailInfo(signoutid);
|
|
|
|
|
data.put("addr", Util.null2String(signDetailInfo.get("addr")));
|
|
|
|
|
} else {
|
|
|
|
|
data = new HashMap<>();
|
|
|
|
|
data.put("signStatus", KQReportBiz.getSignStatus(signStatusInfo, user, ""));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(data.containsKey("signTime")){
|
|
|
|
|
String signTime = data.get("signTime").toString();
|
|
|
|
|
if(signTime != null && !"".equals(signTime)){
|
|
|
|
|
result = kqDate + " " + signTime;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}catch (Exception e) {
|
|
|
|
|
rs.writeLog(e);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static Map<String,Object> getSignDetailInfo(String id){
|
|
|
|
|
Map<String,Object> resultMap = new HashMap<>();
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
String sql = "";
|
|
|
|
|
try{
|
|
|
|
|
sql = " select addr from hrmschedulesign where id = ? ";
|
|
|
|
|
rs.executeQuery(sql,id);
|
|
|
|
|
if(rs.next()){
|
|
|
|
|
resultMap.put("addr",Util.null2String(rs.getString("addr")));
|
|
|
|
|
}
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
rs.writeLog(e);
|
|
|
|
|
}
|
|
|
|
|
return resultMap;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取 最早开始日期时间
|
|
|
|
|
* @param beforetwohours_starttime
|
|
|
|
@ -78,7 +269,7 @@ public class SynClockInTimeJob extends BaseCronJob {
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public static String getEarlyStartTime(String beforetwohours_starttime,String starttime,String ksrq,String userid){
|
|
|
|
|
String result = starttime;
|
|
|
|
|
String result = "";
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
List<Date> list = new ArrayList<>();
|
|
|
|
@ -99,10 +290,10 @@ public class SynClockInTimeJob extends BaseCronJob {
|
|
|
|
|
String signTime = Util.null2String(rs.getString("signTime"));
|
|
|
|
|
|
|
|
|
|
String signdatetime = signDate + " " + signTime;
|
|
|
|
|
boolean bool = belongCalendar(signdatetime, beforetwohours_starttime, starttime);
|
|
|
|
|
if (bool) {
|
|
|
|
|
list.add(format.parse(signdatetime));
|
|
|
|
|
}
|
|
|
|
|
// boolean bool = belongCalendar(signdatetime, beforetwohours_starttime, starttime);
|
|
|
|
|
// if (bool) {
|
|
|
|
|
list.add(format.parse(signdatetime));
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
if(list.size()>0){
|
|
|
|
|
if(list.size()>1){
|
|
|
|
@ -127,7 +318,7 @@ public class SynClockInTimeJob extends BaseCronJob {
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public static String getAfterEndTime(String endtime,String aftertwohours_endtime,String jsrq,String userid){
|
|
|
|
|
String result = endtime;
|
|
|
|
|
String result = "";
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
List<Date> list = new ArrayList<>();
|
|
|
|
@ -148,10 +339,10 @@ public class SynClockInTimeJob extends BaseCronJob {
|
|
|
|
|
String signTime = Util.null2String(rs.getString("signTime"));
|
|
|
|
|
|
|
|
|
|
String signdatetime = signDate + " " + signTime;
|
|
|
|
|
boolean bool = belongCalendar(signdatetime, endtime, aftertwohours_endtime);
|
|
|
|
|
if (bool) {
|
|
|
|
|
list.add(format.parse(signdatetime));
|
|
|
|
|
}
|
|
|
|
|
// boolean bool = belongCalendar(signdatetime, endtime, aftertwohours_endtime);
|
|
|
|
|
// if (bool) {
|
|
|
|
|
list.add(format.parse(signdatetime));
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
if(list.size()>0){
|
|
|
|
|
if(list.size()>1){
|
|
|
|
@ -254,4 +445,24 @@ public class SynClockInTimeJob extends BaseCronJob {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 判断 班次是否是 跨夜 班次
|
|
|
|
|
* @param userid
|
|
|
|
|
* @param date
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public static boolean checkIsNightSerial(String userid,String date){
|
|
|
|
|
boolean bool = false;
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
String night_serialids = rs.getPropValue("nbjh_ygdjblc","night_serialids");
|
|
|
|
|
rs.executeQuery("select * from kq_format_detail where resourceid = ? and kqdate = ? ",userid,date);
|
|
|
|
|
while(rs.next()){
|
|
|
|
|
String serialid = Util.null2String(rs.getString("serialid"));
|
|
|
|
|
if((","+night_serialids+",").contains((","+serialid+","))){
|
|
|
|
|
bool = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return bool;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|