考勤上线后问题处理

dev-chenwnj
chenwei 1 year ago
parent 7cb5afa79d
commit ae383628d5

@ -137,7 +137,7 @@ public class KQFormatData extends BaseBean {
" resourceid,kqdate,groupid,serialid,serialnumber,workbegindate,workbegintime,workenddate,workendtime,workmins," +
" signindate,signintime,signinid,signoutdate,signouttime,signoutid,signMins," +
" attendanceMins,belatemins,graveBeLateMins,leaveearlymins,graveLeaveEarlyMins,absenteeismmins,forgotcheckMins," +
" leaveMins,leaveinfo,evectionMins,outMins,forgotbeginworkcheckmins,otherinfo"+(definedField.length()>0?","+definedField+"":"")+") " +
" leaveMins,leaveinfo,evectionMins,outMins,forgotbeginworkcheckmins,otherinfo,zeropoint"+(definedField.length()>0?","+definedField+"":"")+") " +
" values(?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?,?,?,?"+(definedField.length()>0?","+definedParam+"":"")+")";
for (int i = 0; i < lsParam.size(); i++) {
List<Object> param = lsParam.get(i);
@ -148,7 +148,7 @@ public class KQFormatData extends BaseBean {
sql = " insert into kq_format_total(resourceid,kqdate,subcompanyid,departmentid,jobtitle,groupid,serialid,workdays,workmins," +
" attendancedays,attendancemins,signdays,signmins,belate,belatemins,gravebelate,gravebelatemins,leaveeearly,leaveearlymins,graveleaveearly," +
" graveleaveearlymins,absenteeism,absenteeismmins,forgotcheck,forgotcheckmins," +
" leaveMins,evectionMins,outMins,forgotbeginworkcheck,forgotbeginworkcheckmins"+(definedField.length()>0?","+definedField+"":"")+") " +
" leaveMins,evectionMins,outMins,forgotbeginworkcheck,forgotbeginworkcheckmins,zeropoint"+(definedField.length()>0?","+definedField+"":"")+") " +
" select a.resourceid,kqdate,b.subcompanyid1,b.departmentid,b.jobtitle,groupid,serialid," +
" case when sum(workmins)>0 then 1 end as workdays, sum(workmins) as workmins," +
" cast(sum(attendanceMins)AS decimal(10, 2))/sum(workmins) as attendancedays, sum(attendanceMins) as attendanceMins," +
@ -160,7 +160,7 @@ public class KQFormatData extends BaseBean {
" sum(case when absenteeismmins> 0 then 1 else 0 end) as absenteeism,sum(absenteeismmins) as absenteeismmins," +
" sum(case when forgotcheckmins> 0 then 1 else 0 end) as forgotcheck,sum(forgotcheckmins) as forgotcheckmins,sum(leaveMins) as leaveMins," +
" sum(evectionMins) as evectionMins,sum(outMins) as outMins, " +
" sum(case when forgotbeginworkcheckmins> 0 then 1 else 0 end) as forgotbeginworkcheck,sum(forgotbeginworkcheckmins) as forgotbeginworkcheckmins " +
" sum(case when forgotbeginworkcheckmins> 0 then 1 else 0 end) as forgotbeginworkcheck,sum(forgotbeginworkcheckmins) as forgotbeginworkcheckmins,zeropoint " +
(definedField.length()>0?","+definedParamSum+"":"")+
" from kq_format_detail a, hrmresource b" +
" where a.resourceid = b.id and resourceid = ? and kqdate=?" +
@ -806,6 +806,63 @@ public class KQFormatData extends BaseBean {
String groupid = Util.null2String(workTime.getGroupId());
String serialid = Util.null2String(workTime.getSerialId());
/*考勤二开--零点补助start*/
String zeroPointSub = "0";
RecordSet rs = new RecordSet();
Map<String, Object> groupMap = new HashMap<>();
String acqSql = "select kqgroup, grouptype from uf_ZeroPointSubSft";
rs.executeQuery(acqSql);
while (rs.next()) {
String kqgroup = Util.null2String(rs.getString("kqgroup"));
String grouptype = Util.null2String(rs.getString("grouptype"));
if (StringUtils.isNotBlank(kqgroup) && StringUtils.isNotBlank(grouptype)) {
groupMap.put(grouptype, kqgroup);
}
}
for (int j = 0; lsCheckInfo != null && j < lsCheckInfo.size(); j++) {
Map<String, Object> checkInfo = (Map<String, Object>) lsCheckInfo.get(j);
if ("2".equals(checkInfo.get("signType"))) {//签退
String signDate = Util.null2String(checkInfo.get("signDate"));
String signTime = Util.null2String(checkInfo.get("signTime"));
if (groupMap != null && groupMap.size() > 0) {
for (String grouptype : groupMap.keySet()) {
if ("0".equals(grouptype)) {//责任制--23点
String kqgroups = Util.null2String(groupMap.get(grouptype));
List<String> groupList = Collections.singletonList(kqgroups);
if(groupList.contains(groupid)) {
//23:00
if (signTime.length() == 5) {
signTime = signTime + ":00";
}
String subsidyTime = kqDate + " 23:00:00";
String outTime = signDate + " " + signTime;
if (outTime.compareTo(subsidyTime) > 0 ) {
zeroPointSub = "1";
}
}
}
if ("1".equals(grouptype)) {//排班制--00点
String kqgroups = Util.null2String(groupMap.get(grouptype));
List<String> groupList = Collections.singletonList(kqgroups);
if(groupList.contains(groupid)) {
//00:00
if (signTime.length() == 5) {
signTime = signTime + ":00";
}
String subsidyTime = kqDate + " 00:00:00";
String outTime = signDate + " " + signTime;
if (outTime.compareTo(subsidyTime) > 0 ) {
zeroPointSub = "1";
}
}
}
}
}
}
}
/*考勤二开--零点补助end*/
params.add(userId);
params.add(kqDate);
params.add(groupid.length() == 0 ? null : groupid);
@ -839,6 +896,10 @@ public class KQFormatData extends BaseBean {
params.add(forgotBeginWorkCheckMins);
params.add(JSONObject.toJSONString(otherinfo));
/*考勤二开--零点补助start*/
params.add(zeroPointSub);
/*考勤二开--零点补助end*/
bb.writeLog("params: " + params);
Map<String,Object> definedFieldInfo = new KQFormatBiz().getDefinedField();

@ -338,8 +338,8 @@ public class PunchOutButtonCmd extends AbstractCommonCommand<Map<String, Object>
}
}
String punchSql = "insert into HrmScheduleSign(userId,userType,signType,signDate,signTime,clientAddress,isInCom,timeZone,belongdate,signfrom,longitude,latitude,addr,deviceInfo) "+
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
String punchSql = "insert into HrmScheduleSign(userId,userType,signType,signDate,signTime,clientAddress,isInCom,timeZone,belongdate,signfrom,longitude,latitude,addr,deviceInfo,isdev) "+
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
boolean isok = rs.executeUpdate(punchSql,userId,userType,signType,signDate,signTime,clientAddress,isInCom,
timeZone,belongdate,signfrom,longitude,latitude,address,deviceInfo);
bb.writeLog("isok: " + isok);
@ -399,6 +399,7 @@ public class PunchOutButtonCmd extends AbstractCommonCommand<Map<String, Object>
signInfo.put("latitude", latitude);
signInfo.put("address", address);
signInfo.put("deviceInfo", deviceInfo);
signInfo.put("isdev", "1");
signInfo.put("belongdateIsNull", belongdateIsNull);
String signInfoString = signInfo.toString();
@ -413,7 +414,7 @@ public class PunchOutButtonCmd extends AbstractCommonCommand<Map<String, Object>
boolean b = rs.executeUpdate(syncSql, id, signInfoString, outSignTypeModeId, modedatacreater, modedatacreatertype, modedatacreatedate, modedatacreatetime, abnUuid);
if (b) {
String billid = "-1";
String acqModeIdSql = "select id from uf_AbnAttToComLeave where MODEUUID = ?";
String acqModeIdSql = "select id from uf_outsigntype where MODEUUID = ?";
rs.executeQuery(acqModeIdSql, abnUuid);
while (rs.next()) {
billid = Util.null2String(rs.getString("id"));

@ -71,10 +71,10 @@ public class OutSignSyncAction implements Action {
String deviceInfo = Util.null2String(in.get("deviceInfo"));
String belongdateIsNull = Util.null2String(in.get("belongdateIsNull"));
String punchSql = "insert into HrmScheduleSign(userId,userType,signType,signDate,signTime,clientAddress,isInCom,timeZone,belongdate,signfrom,longitude,latitude,addr,deviceInfo) "+
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
String punchSql = "insert into HrmScheduleSign(userId,userType,signType,signDate,signTime,clientAddress,isInCom,timeZone,belongdate,signfrom,longitude,latitude,addr,deviceInfo,isdev) "+
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
boolean isok = rs.executeUpdate(punchSql,resourceid,userType,signType,signDate,signTime,clientAddress,isInCom,
timeZone,belongdate,signfrom,longitude,latitude,address,deviceInfo);
timeZone,belongdate,signfrom,longitude,latitude,address,deviceInfo,"1");
bb.writeLog("isok: " + isok);
//同步更新考勤数据到考勤报表
if("true".equals(belongdateIsNull)){

@ -92,7 +92,7 @@ public class AddOvertimeSignJob extends BaseCronJob {
KQOvertimeRulesBiz kb = new KQOvertimeRulesBiz();
int changeType = kb.getChangeType(resourceId, fromDate);
bb.writeLog("changeType: " + changeType);
if (changeType == 2) {
if (changeType != -1) {
Map<String, Object> temp = new HashMap<>();
temp.put("resourceId", resourceId);
temp.put("fromDate", fromDate);
@ -145,10 +145,15 @@ public class AddOvertimeSignJob extends BaseCronJob {
if (number > 0) {
//插入0点打卡
String addSignSql = "insert into hrmschedulesign (userId,userType,signType,signDate,signTime,isInCom,signfrom,timeZone,belongDate) " +
String addSign1Sql = "insert into hrmschedulesign (userId,userType,signType,signDate,signTime,isInCom,signfrom,timeZone,belongDate) " +
" values (?,?,?,?,?,?,?,?,?)";
boolean b = rs.executeUpdate(addSignSql, resourceId, "1", "2", toDate, "00:00:00", "1", "e9pc", "GMT+8", toDate);
bb.writeLog("插入0点打卡: " + b);
boolean b1 = rs.executeUpdate(addSign1Sql, resourceId, "1", "2", fromDate, "23:59:59", "1", "e9pc", "GMT+8", date);
bb.writeLog("插入23点59分打卡: " + b1);
//插入0点打卡
String addSign2Sql = "insert into hrmschedulesign (userId,userType,signType,signDate,signTime,isInCom,signfrom,timeZone,belongDate) " +
" values (?,?,?,?,?,?,?,?,?)";
boolean b2 = rs.executeUpdate(addSign2Sql, resourceId, "1", "2", toDate, "00:00:00", "1", "e9pc", "GMT+8", date);
bb.writeLog("插入0点打卡: " + b2);
} else {
bb.writeLog("没有在指定时间范围内打下班卡无法插入0点卡");
}

Loading…
Cancel
Save