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.
weaver-hostar/src/com/engine/hostar/service/impl/KqDevServiceImpl.java

272 lines
11 KiB
Java

package com.engine.hostar.service.impl;
import cn.hutool.core.date.DateUtil;
import com.engine.core.impl.Service;
import com.engine.hostar.service.KqDevService;
import com.engine.hostar.util.HostarUtil;
2 years ago
import com.engine.kq.biz.KQHolidaySetBiz;
import com.engine.kq.biz.KQOvertimeRulesBiz;
import com.engine.kq.biz.KQWorkTime;
import org.apache.commons.lang.StringUtils;
2 years ago
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
2 years ago
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* @author chenwnj
* @date 2023/12/11
* @description
**/
public class KqDevServiceImpl extends Service implements KqDevService {
BaseBean bb = new BaseBean();
@Override
public Map<String, Object> getKqType(Map<String, Object> params) {
bb.writeLog("---getKqType start---");
Map<String, Object> result = new HashMap<>();
String resourceId = Util.null2String(params.get("resourceId"));
bb.writeLog("resourceId: " + resourceId);
String kqDate = Util.null2String(params.get("kqDate"));
bb.writeLog("kqDate: " + kqDate);
if ( StringUtils.isBlank(resourceId)) {
result.put("code",500);
result.put("msg","请先选择人员");
return result;
}
if ( StringUtils.isBlank(kqDate)) {
result.put("code",500);
result.put("msg","请先选择日期");
return result;
}
2 years ago
int changeType = -1;
try {
2 years ago
//1-节假日、2-工作日、3-休息日、-1-数据异常,无效数据
changeType = KQOvertimeRulesBiz.getChangeType(resourceId, kqDate);
bb.writeLog("changeType: " + changeType);
} catch (Exception e) {
bb.writeLog("getKqType Exception: " + e);
}
if (changeType == -1) {
result.put("code", 500);
result.put("msg", "日期判断异常,请联系管理员");
return result;
} else {
result.put("code", 200);
result.put("data", changeType);
return result;
}
}
@Override
2 years ago
public Map<String, Object> getEndWorkDate(Map<String, Object> params) {
bb.writeLog("---checkApplyDate start---");
Map<String, Object> result = new HashMap<>();
String resourceId = Util.null2String(params.get("resourceId"));//申请人
bb.writeLog("resourceId: " + resourceId);
String kqDate = Util.null2String(params.get("kqDate"));//申请日期
bb.writeLog("kqDate: " + kqDate);
String offsetStr = Util.null2String(params.get("offset"));//允许的偏移量
bb.writeLog("offsetStr: " + offsetStr);
if ( StringUtils.isBlank(resourceId)) {
result.put("code",500);
result.put("msg","请先选择人员");
return result;
}
if ( StringUtils.isBlank(kqDate)) {
result.put("code",500);
result.put("msg","请先选择申请日期");
return result;
}
if ( StringUtils.isBlank(offsetStr)) {
result.put("code",500);
result.put("msg","请先设置偏移量");
return result;
}
Integer offset = Util.getIntValue(offsetStr);
bb.writeLog("offset: " + offset);
2 years ago
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate start = LocalDate.parse(kqDate, formatter);
2 years ago
if (offset > 0 ) {
for (int i = 0 ; i < offset ; ) {
start = start.plusDays(1);
boolean holiday = KQHolidaySetBiz.isHoliday(resourceId, start.format(formatter), true);
if ( !holiday) {
i++;
}
}
} else if (offset < 0 ) {
for (int i = 0 ; i > offset ; ) {
start = start.minusDays(1);
boolean holiday = KQHolidaySetBiz.isHoliday(resourceId, start.format(formatter), true);
if ( !holiday) {
i--;
}
}
}
String endDate = start.format(formatter);
result.put("code",200);
result.put("msg","请求成功");
result.put("data",endDate);
return result;
}
@Override
public Map<String, Object> signDelete(Map<String, Object> params) {
bb.writeLog("---signDelete start---");
Map<String, Object> result = new HashMap<>();
2 years ago
try {
String dataid = Util.null2String(params.get("id"));//申请人
bb.writeLog("dataid: " + dataid);
if ( StringUtils.isBlank(dataid)) {
result.put("code",500);
2 years ago
result.put("msg","请先选择要删除的数据");
return result;
}
2 years ago
//将需要删除的打卡数据记录到日志表后再执行删除
RecordSet rs = new RecordSet();
List<String> deleteParams = new ArrayList<>();
List<List> logParams = new ArrayList<>();
String signDelLogModeId = bb.getPropValue("project_hostar", "signDelLogModeId");
bb.writeLog("signDelLogModeId: " + signDelLogModeId);
Integer modedatacreater = user.getUID();
Integer modedatacreatertype = user.getType();
String modedatacreatedate = DateUtil.format(new Date(), "yyyy-MM-dd");
String modedatacreatetime = DateUtil.format(new Date(), "HH:mm:ss");
String acqMaxIdSql = " select max(id) as id from uf_schsigndellog";
String logSignSql = "insert into uf_schsigndellog (userid, usertype, signtype, signdate, signtime, clientaddress, isincom, " +
" signfrom, longitude, latitude, addr, isimport, suuid, timezone, belongdate, memo, deviceinfo, showaddress, " +
" formmodeid, modedatacreater, modedatacreatertype, modedatacreatedate, modedatacreatetime ) " +
" values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
String acqSchSignSql = "select userid, usertype, signtype, signdate, signtime, clientaddress, isincom," +
" signfrom, longitude, latitude, addr, isimport, suuid, timezone, belongdate, memo, " +
" deviceinfo, showaddress from hrmschedulesign where id in (" + dataid + ")";
rs.executeQuery(acqSchSignSql);
while (rs.next()) {
String userid = Util.null2String(rs.getString("userid"));
String usertype = Util.null2String(rs.getString("usertype"));
String signtype = Util.null2String(rs.getString("signtype"));
String signdate = Util.null2String(rs.getString("signdate"));
String signtime = Util.null2String(rs.getString("signtime"));
String clientaddress = Util.null2String(rs.getString("clientaddress"));
String isincom = Util.null2String(rs.getString("isincom"));
String signfrom = Util.null2String(rs.getString("signfrom"));
String longitude = Util.null2String(rs.getString("longitude"));
String latitude = Util.null2String(rs.getString("latitude"));
String addr = Util.null2String(rs.getString("addr"));
String isimport = Util.null2String(rs.getString("isimport"));
String suuid = Util.null2String(rs.getString("suuid"));
String timezone = Util.null2String(rs.getString("timezone"));
String belongdate = Util.null2String(rs.getString("belongdate"));
String memo = Util.null2String(rs.getString("memo"));
String deviceinfo = Util.null2String(rs.getString("deviceinfo"));
String showaddress = Util.null2String(rs.getString("showaddress"));
List logPa = new ArrayList<>();
logPa.add(userid);
logPa.add(usertype);
logPa.add(signtype);
logPa.add(signdate);
logPa.add(signtime);
logPa.add(clientaddress);
logPa.add(isincom);
logPa.add(signfrom);
logPa.add(longitude);
logPa.add(latitude);
logPa.add(addr);
logPa.add(isimport);
logPa.add(suuid);
logPa.add(timezone);
logPa.add(belongdate);
logPa.add(memo);
logPa.add(deviceinfo);
logPa.add(showaddress);
logPa.add(signDelLogModeId);
logPa.add(modedatacreater);
logPa.add(modedatacreatertype);
logPa.add(modedatacreatedate);
logPa.add(modedatacreatetime);
logParams.add(logPa);
}
int maxLogId = -1;
rs.executeQuery(acqMaxIdSql);
while (rs.next()) {
maxLogId = Util.getIntValue(Util.null2String(rs.getString("id")));
}
bb.writeLog("maxLogId: " + maxLogId);
boolean addLogFlag = rs.executeBatchSql(logSignSql, logParams);
bb.writeLog("addLogFlag: " + addLogFlag);
if (addLogFlag) {
List<Integer> billids = new ArrayList<>();
Map<Integer,Integer> billidCreator = new HashMap<>();
String acqBillidsSql = "select id from uf_schsigndellog where id > ?";
rs.executeQuery(acqBillidsSql, maxLogId);
while (rs.next()) {
Integer id = Util.getIntValue(Util.null2String(rs.getString("id")));
billids.add(id);
billidCreator.put(id, 1);
}
bb.writeLog("billids: " + billids);
bb.writeLog("billidCreator: " + billidCreator);
if (billids != null && billids.size() > 0) {
HostarUtil hsutil = new HostarUtil();
hsutil.modePerReconBatch(billidCreator, signDelLogModeId, billids);
}
} else {
result.put("code",500);
2 years ago
result.put("msg","删除失败");
return result;
}
2 years ago
boolean delFlag = rs.executeUpdate("delete from hrmschedulesign where id in (" + dataid + ")");
if (delFlag) {
result.put("code",200);
result.put("msg","删除成功");
return result;
} else {
result.put("code",500);
2 years ago
result.put("msg","删除失败");
return result;
}
2 years ago
}catch (Exception e ) {
bb.writeLog("signDelete Exception: " + e);
}
2 years ago
result.put("code",500);
result.put("msg","删除失败");
return result;
}
2 years ago
}