增加按照月份和部门自定义同步

东方骏驰
Chengliang 1 year ago
parent 0a9c52769d
commit bca7c6eb0e

@ -39,7 +39,12 @@
double xxrjbbdx = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(xm+"|restDayOvertime_nonleave"))),0);
double jjrjbbdx = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(xm+"|holidayOvertime_nonleave"))),0);
double dkzgs = Util.getDoubleValue(Util.null2String(getWorkHours(fromDate,toDate,xm)),0);
double zgs = psjbbdx+xxrjbbdx+jjrjbbdx+dkzgs;
//获取出差时长
double ccxs = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(xm+"|businessLeave"))),0);
double zgs = psjbbdx+xxrjbbdx+jjrjbbdx+dkzgs+ccxs;
KqMonthDataPO kqMonthDataPO = KqMonthDataPO.builder()
.resourceId(xm)
@ -51,6 +56,7 @@
.jjrjbbdx(jjrjbbdx)
.dkzgs(dkzgs)
.zgs(zgs)
.ccxs(ccxs)
.build();
System.out.println("KqMonthReportSynByUser==>"+JSON.toJSONString(kqMonthDataPO));
saveData(kqMonthDataPO,kqy);
@ -134,13 +140,14 @@
Double xxrjbbdx = kqMonthDataPO.getXxrjbbdx();
Double jjrjbbdx = kqMonthDataPO.getJjrjbbdx();
Double zgs = kqMonthDataPO.getZgs();
Double ccxs = kqMonthDataPO.getCcxs();
boolean exist = isExist(month,kqMonthDataPO.getResourceId());
if(exist){
//更新
String updateSql = " update uf_ydgs set dkzgs=?, psjbbdx=?, xxrjbbdx=?, jjrjbbdx=?, zgs=?, zt=? where xm=? and kqy=? ";
rs.executeUpdate(updateSql,new Object[]{dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,xm,month});
String updateSql = " update uf_ydgs set dkzgs=?, psjbbdx=?, xxrjbbdx=?, jjrjbbdx=?, zgs=?, zt=?, ccxs=? where xm=? and kqy=? ";
rs.executeUpdate(updateSql,new Object[]{dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,ccxs,xm,month});
}else{
//插入
@ -148,10 +155,10 @@
String modedatacreatedate = TimeUtil.getCurrentDateString();
String modedatacreatetime = TimeUtil.getOnlyCurrentTimeString();
String insertSql = " insert into uf_ydgs(xm,bm,gw,kqy,dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,"+
String insertSql = " insert into uf_ydgs(xm,bm,gw,kqy,dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,ccxs,"+
"formmodeid,modedatacreater,modedatacreatedate,modedatacreatetime,modeuuid) " +
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
rs.executeUpdate(insertSql,new Object[]{xm,bm,gw,month,dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,
rs.executeUpdate(insertSql,new Object[]{xm,bm,gw,month,dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,ccxs,
formmodeid,modedatacreater,modedatacreatedate,modedatacreatetime,modeuuid});
rs.executeQuery("select id from uf_ydgs where modeuuid=?",modeuuid);

@ -0,0 +1,26 @@
package com.engine.kqsolution.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2024/5/22 3:05 PM
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CustomSignDataParam {
private String departments;
private String month;
}

@ -1,5 +1,6 @@
package com.engine.kqsolution.service;
import com.engine.kqsolution.entity.CustomSignDataParam;
import com.engine.kqsolution.entity.SignDataParams;
import java.util.Map;
@ -20,4 +21,13 @@ public interface SignDataSummaryService {
* @return: java.util.Map<java.lang.String,java.lang.Object>
*/
Map<String,Object> recordSignData(SignDataParams signDataParams);
/**
* @Description:
* @Author: liang.cheng
* @Date: 2024/5/22 3:25 PM
* @param: [customSignDataParam]
* @return: java.util.Map<java.lang.String,java.lang.Object>
*/
Map<String,Object> customSignData(CustomSignDataParam customSignDataParam);
}

@ -3,6 +3,7 @@ package com.engine.kqsolution.service.impl;
import cn.hutool.core.thread.ThreadUtil;
import com.engine.core.impl.Service;
import com.engine.kqsolution.entity.CustomSignDataParam;
import com.engine.kqsolution.entity.SignDataPO;
import com.engine.kqsolution.entity.SignDataParams;
import com.engine.kqsolution.service.SignDataSummaryService;
@ -37,14 +38,96 @@ public class SignDataSummaryServiceImpl extends Service implements SignDataSumma
public static final DateTimeFormatter MONTH_FORMATTER_PATTERN = DateTimeFormatter.ofPattern("yyyy-MM");
@SneakyThrows
@Override
public Map<String, Object> recordSignData(SignDataParams signDataParams) {
List<SignDataPO> list = buildSignData(signDataParams);
return saveSignData(list,signDataParams);
}
@Override
public Map<String, Object> customSignData(CustomSignDataParam param) {
Map<String,Object> data = new HashMap<>(4);
List<Integer> idList = new ArrayList<>();
//获取部门下人员id
RecordSet rs = new RecordSet();
rs.executeQuery("select id from hrmresource where departmentid in ("+param.getDepartments()+")");
while (rs.next()) {
idList.add(Util.getIntValue(rs.getString("id")));
}
if (CollectionUtils.isEmpty(idList)){
data.put("msg","部门下未存在人员");
return data;
}
LocalDate localDate = LocalDate.parse(param.getMonth()+"-01");
String fromDate = localDate.toString();
String toDate = localDate.withDayOfMonth(localDate.lengthOfMonth()).toString();
String ids = StringUtils.join(idList,",");
rs.executeQuery("select kqdate,resourceid,signindate,signintime,signoutdate,signouttime,signMins from kq_format_detail \n" +
" where kqdate >= ? and kqdate <= ?" +
" and resourceid in in ("+ids+")",fromDate,toDate);
List<SignDataPO> pos = new ArrayList<>();
DecimalFormat decimalFormat = new DecimalFormat("0.00");
while (rs.next()) {
String signInTime = Util.null2String(rs.getString("signintime"));
String signOutTime = Util.null2String(rs.getString("signouttime"));
if (!"".equals(signInTime)){
signInTime = signInTime.substring(0,5);
}
if (!"".equals(signOutTime)){
signOutTime = signOutTime.substring(0,5);
}
Integer signMins = Util.getIntValue(Util.null2String(rs.getString("signMins")),0);
double hours = (double) signMins / 60;
double workHours;
if (hours <= 4.0) {
workHours = hours;
} else {
workHours = Math.floor(hours - 1.0);
}
SignDataPO build = SignDataPO.builder()
.resourceId(Util.getIntValue(rs.getString("resourceid")))
.attendanceDate(Util.null2String(rs.getString("kqdate")))
.signInDate(Util.null2String(rs.getString("signindate")))
.signInTime(signInTime)
.signOutDate(Util.null2String(rs.getString("signoutdate")))
.signOutTime(signOutTime)
.signHours(Double.parseDouble(decimalFormat.format(hours)))
.workHours(Double.parseDouble(decimalFormat.format(workHours)))
.build();
pos.add(build);
}
RecordSetTrans rst = new RecordSetTrans();
if (CollectionUtils.isNotEmpty(pos)) {
try {
rst.setAutoCommit(false);
for (SignDataPO item : pos) {
rst.executeUpdate("update uf_kqgs set qdrq = ?,qdsj = ?,qtrq = ?,qtsj = ?,dkgssc = ?,sjgssc = ? where kqrq = ? and xm=? and zt = 0",item.getSignInDate(),
item.getSignInTime(),item.getSignOutDate(),item.getSignOutTime(),item.getSignHours(),item.getWorkHours(),item.getAttendanceDate(),item.getResourceId());
}
rst.commit();
}catch (Exception e) {
rst.rollback();
}
}
return data;
}
@SneakyThrows
private Map<String, Object> saveSignData(List<SignDataPO> list,SignDataParams signDataParams){
Map<String,Object> data = new HashMap<>(4);
DecimalFormat decimalFormat = new DecimalFormat("0.00");
RecordSetTrans rst = new RecordSetTrans();
RecordSet rs = new RecordSet();
List<SignDataPO> list = buildSignData(signDataParams);
ResourceComInfo rcom = new ResourceComInfo();
int corePoolSize = 5;
int maxPoolSize = 10;
@ -111,7 +194,6 @@ public class SignDataSummaryServiceImpl extends Service implements SignDataSumma
}catch (Exception e) {
rst.rollback();
}
return data;
}
@ -183,6 +265,8 @@ public class SignDataSummaryServiceImpl extends Service implements SignDataSumma
}
/**
* @Description:
* @Author: liang.cheng

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.kqsolution.entity.CustomSignDataParam;
import com.engine.kqsolution.entity.SignDataParams;
import com.engine.kqsolution.service.SignDataSummaryService;
import com.engine.kqsolution.service.impl.SignDataSummaryServiceImpl;
@ -49,4 +50,20 @@ public class SignDataSummaryAction {
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
@POST
@Path("/customSignData")
@Produces(MediaType.TEXT_PLAIN)
public String customSignData(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody CustomSignDataParam customSignDataParam){
Map<String, Object> data = new HashMap<>(8);
try {
User user = HrmUserVarify.getUser(request, response);
data.putAll(getService(user).customSignData(customSignDataParam));
data.put("status", true);
} catch (Exception e) {
data.put("status", false);
data.put("msg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
}

@ -72,11 +72,12 @@ public class KqMonthReportSynJob extends BaseCronJob {
double xxrjbbdx = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(userid+"|restDayOvertime_nonleave"))),0);
double jjrjbbdx = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(userid+"|holidayOvertime_nonleave"))),0);
double dkzgs = Util.getDoubleValue(Util.null2String(signData.get(userid)),0);
double zgs = psjbbdx+xxrjbbdx+jjrjbbdx+dkzgs;
//获取出差时长
double ccxs = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(userid+"|businessLeave"))),0);
double zgs = psjbbdx+xxrjbbdx+jjrjbbdx+dkzgs+ccxs;
KqMonthDataPO kqMonthDataPO = KqMonthDataPO.builder()
.resourceId(userid)
.status(status)
@ -179,7 +180,7 @@ public class KqMonthReportSynJob extends BaseCronJob {
String modedatacreatedate = TimeUtil.getCurrentDateString();
String modedatacreatetime = TimeUtil.getOnlyCurrentTimeString();
String insertSql = " insert into uf_ydgs(xm,bm,gw,kqy,dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,ccxs"+
String insertSql = " insert into uf_ydgs(xm,bm,gw,kqy,dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,ccxs,"+
"formmodeid,modedatacreater,modedatacreatedate,modedatacreatetime,modeuuid) " +
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
rs.executeUpdate(insertSql,new Object[]{xm,bm,gw,month,dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,ccxs,

Loading…
Cancel
Save