From 0a9c52769d9772cca35b52a06d4d8b6ecb1488e8 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Tue, 21 May 2024 15:17:35 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=B0=83=E6=95=B4=E5=AE=9E=E9=99=85?= =?UTF-8?q?=E5=B7=A5=E6=97=B6=E6=97=B6=E9=95=BF=202=E3=80=81=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E4=B8=BA=E9=94=81=E5=AE=9A=E6=97=B6=EF=BC=8C=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E5=90=8C=E6=AD=A5=E5=8F=8A=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=9B=B4=E6=96=B0=E5=9D=87=E4=B8=8D=E6=94=B9=E5=8F=98?= =?UTF-8?q?=E5=8E=9F=E6=9D=A5=E7=9A=84=E6=95=B0=E6=8D=AE=203=E3=80=81?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=87=BA=E5=B7=AE=E6=97=B6=E9=95=BF=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SignDataSummaryServiceImpl.java | 30 +++++++++++++------ src/test/MainTest.java | 17 +++++++++++ .../interfaces/dfjc/entity/KqMonthDataPO.java | 3 ++ .../dfjc/job/KqMonthReportSynJob.java | 18 +++++++---- 4 files changed, 54 insertions(+), 14 deletions(-) diff --git a/src/com/engine/kqsolution/service/impl/SignDataSummaryServiceImpl.java b/src/com/engine/kqsolution/service/impl/SignDataSummaryServiceImpl.java index c0e7774..78d235d 100644 --- a/src/com/engine/kqsolution/service/impl/SignDataSummaryServiceImpl.java +++ b/src/com/engine/kqsolution/service/impl/SignDataSummaryServiceImpl.java @@ -23,6 +23,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; +import java.util.stream.Collectors; /** * @Author liang.cheng @@ -42,6 +43,7 @@ public class SignDataSummaryServiceImpl extends Service implements SignDataSumma Map data = new HashMap<>(4); DecimalFormat decimalFormat = new DecimalFormat("0.00"); RecordSetTrans rst = new RecordSetTrans(); + RecordSet rs = new RecordSet(); List list = buildSignData(signDataParams); ResourceComInfo rcom = new ResourceComInfo(); int corePoolSize = 5; @@ -56,13 +58,11 @@ public class SignDataSummaryServiceImpl extends Service implements SignDataSumma String resourceId = String.valueOf(signDataPo.getResourceId()); Integer signMins = Util.getIntValue(signDataPo.getSignMins(),0); double hours = (double) signMins / 60; - double workHours = 0; - if(hours>=4 && hours<8){ - workHours = 4; - }else if(hours>=8 && hours<11){ - workHours = 8; - }else if(hours>=11){ - workHours = 11; + double workHours; + if (hours <= 4.0) { + workHours = hours; + } else { + workHours = Math.floor(hours - 1.0); } signDataPo.setCompany(Integer.parseInt(rcom.getSubCompanyID(resourceId))); signDataPo.setDepartment(Integer.parseInt(rcom.getDepartmentID(resourceId))); @@ -81,12 +81,24 @@ public class SignDataSummaryServiceImpl extends Service implements SignDataSumma rst.setAutoCommit(false); if (CollectionUtils.isNotEmpty(signDataParams.getIds())) { for (SignDataPO item : list) { - rst.executeUpdate("update uf_kqgs set qdrq = ?,qdsj = ?,qtrq = ?,qtsj = ?,dkgssc = ?,sjgssc = ? where id = ?",item.getSignInDate(), + rst.executeUpdate("update uf_kqgs set qdrq = ?,qdsj = ?,qtrq = ?,qtsj = ?,dkgssc = ?,sjgssc = ? where id = ? and zt = 0",item.getSignInDate(), item.getSignInTime(),item.getSignOutDate(),item.getSignOutTime(),item.getSignHours(),item.getWorkHours(),item.getId()); } }else { //同一考勤日期执行多次 - rst.executeUpdate("delete from uf_kqgs where kqrq = ?",signDataParams.getAttendanceDate()); + rst.executeUpdate("delete from uf_kqgs where kqrq = ? and zt = 0",signDataParams.getAttendanceDate()); + + //获取锁定状态数据 + List idList = new ArrayList<>(); + rs.executeQuery(" select xm from uf_kqgs where kqrq = ?",signDataParams.getAttendanceDate()); + while (rs.next()) { + idList.add(Util.getIntValue(rs.getString("xm"))); + } + + list = list.stream() + .filter(p -> !idList.contains(p.getResourceId())) + .collect(Collectors.toList()); + for (SignDataPO item : list) { rst.executeUpdate("insert into uf_kqgs(formmodeid,xm,kqy,kqrq,zt,fb,bm,gw,qdrq,qdsj,qtrq,qtsj,dkgssc,sjgssc) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)",signDataParams.getFormModeId(),item.getResourceId(), item.getAttendanceMonth(),item.getAttendanceDate(),item.getStatus(),item.getCompany(),item.getDepartment(), diff --git a/src/test/MainTest.java b/src/test/MainTest.java index 2bfc0b3..a050eef 100644 --- a/src/test/MainTest.java +++ b/src/test/MainTest.java @@ -9,6 +9,23 @@ package test; public class MainTest { public static void main(String[] args) { + double punchInHours = 11.87; // 打卡工时时长为 11.87 + double actualWorkHours = calculateActualWorkHours(punchInHours); + System.out.println("实际工时时长为:" + actualWorkHours + "小时"); + double punchInHours2 = 3.57; // 打卡工时时长为 3.5 + double actualWorkHours2 = calculateActualWorkHours(punchInHours2); + System.out.println("实际工时时长为:" + actualWorkHours2 + "小时"); + } + + public static double calculateActualWorkHours(double punchInHours) { + double adjustedHours; + if (punchInHours <= 4.0) { + adjustedHours = punchInHours; + } else { + adjustedHours = Math.floor(punchInHours - 1.0); + } + + return adjustedHours; } } diff --git a/src/weaver/interfaces/dfjc/entity/KqMonthDataPO.java b/src/weaver/interfaces/dfjc/entity/KqMonthDataPO.java index 1a63594..0df0793 100644 --- a/src/weaver/interfaces/dfjc/entity/KqMonthDataPO.java +++ b/src/weaver/interfaces/dfjc/entity/KqMonthDataPO.java @@ -34,6 +34,9 @@ public class KqMonthDataPO { private Double zgs; + private Double ccxs; + + } diff --git a/src/weaver/interfaces/dfjc/job/KqMonthReportSynJob.java b/src/weaver/interfaces/dfjc/job/KqMonthReportSynJob.java index 14e07f1..92c662d 100644 --- a/src/weaver/interfaces/dfjc/job/KqMonthReportSynJob.java +++ b/src/weaver/interfaces/dfjc/job/KqMonthReportSynJob.java @@ -55,23 +55,28 @@ public class KqMonthReportSynJob extends BaseCronJob { Map signData = getSignData(fromDate,toDate); RecordSet rs = new RecordSet(); - String sql = " select a.id,a.departmentid,a.jobtitle,a.status from hrmresource a,kq_format_total b " + + String sql = " select a.id,a.departmentid,a.jobtitle,a.status, from hrmresource a,kq_format_total b " + " where a.id= b.resourceid and b.kqdate >=? and b.kqdate <=? " + " and a.subcompanyid1 =6 " + " group by a.id,a.departmentid,a.jobtitle,a.status "; rs.executeQuery(sql,fromDate,toDate); + while(rs.next()){ String userid = Util.null2String(rs.getString("id")); String departmentid = Util.null2String(rs.getString("departmentid")); String jobtitle = Util.null2String(rs.getString("jobtitle")); String status = Util.null2String(rs.getString("status")); + double psjbbdx = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(userid+"|workingDayOvertime_nonleave"))),0); 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); + KqMonthDataPO kqMonthDataPO = KqMonthDataPO.builder() .resourceId(userid) .status(status) @@ -82,6 +87,7 @@ public class KqMonthReportSynJob extends BaseCronJob { .jjrjbbdx(jjrjbbdx) .dkzgs(dkzgs) .zgs(zgs) + .ccxs(ccxs) .build(); log.writeLog("KqMonthReportSynJob==>"+JSON.toJSONString(kqMonthDataPO)); @@ -157,13 +163,15 @@ public class KqMonthReportSynJob extends BaseCronJob { 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{ //插入 @@ -171,10 +179,10 @@ 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,"+ + 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);