Просмотр исходного кода

钉钉考勤打卡统计对象

fancy 5 лет назад
Родитель
Сommit
46f5debe2f

+ 2 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/DingdingPersonStatisticQueue.java

@@ -73,6 +73,8 @@ public class DingdingPersonStatisticQueue extends AbstractQueue<Date> {
                     personForMonth.setOnDutyTimes(onduty);
                     personForMonth.setOffDutyTimes(business.dingdingAttendanceFactory().dingdingPersonForMonthDutyTimesCount(year, month,
                             person.getDistinguishedName(), AttendanceDingtalkDetail.OffDuty));
+                    personForMonth.setResultNormal(business.dingdingAttendanceFactory().dingdingPersonForMonthTimeResultCount(year, month,
+                            person.getDistinguishedName(), AttendanceDingtalkDetail.TIMERESULT_NORMAL));
                     personForMonth.setLateTimes(business.dingdingAttendanceFactory().dingdingPersonForMonthTimeResultCount(year, month,
                             person.getDistinguishedName(), AttendanceDingtalkDetail.TIMERESULT_Late));
                     personForMonth.setLeaveEarlyTimes(business.dingdingAttendanceFactory().dingdingPersonForMonthTimeResultCount(year, month,

+ 4 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/DingdingUnitStatisticQueue.java

@@ -69,6 +69,8 @@ public class DingdingUnitStatisticQueue extends AbstractQueue<Date> {
                 unitForDay.setOnDutyTimes(on);
                 unitForDay.setOffDutyTimes(business.dingdingAttendanceFactory().
                         dingdingUnitForDayDutyTimesCount(dateString, unit, AttendanceDingtalkDetail.OffDuty));
+                unitForDay.setResultNormal(business.dingdingAttendanceFactory().dingdingUnitForDayTimeResultCount(dateString, unit,
+                        AttendanceDingtalkDetail.TIMERESULT_NORMAL));
                 unitForDay.setLateTimes(business.dingdingAttendanceFactory().dingdingUnitForDayTimeResultCount(dateString, unit,
                         AttendanceDingtalkDetail.TIMERESULT_Late));
                 unitForDay.setLeaveEarlyTimes(business.dingdingAttendanceFactory().dingdingUnitForDayTimeResultCount(dateString, unit,
@@ -108,6 +110,7 @@ public class DingdingUnitStatisticQueue extends AbstractQueue<Date> {
             Long workDay = business.dingdingAttendanceFactory().sumWorkDayUnitForDayWithMonth(year, month, unit);
             Long onduty = business.dingdingAttendanceFactory().sumOnDutyUnitForDayWithMonth(year, month, unit);
             Long offDuty = business.dingdingAttendanceFactory().sumOffDutyUnitForDayWithMonth(year, month, unit);
+            Long normal = business.dingdingAttendanceFactory().sumNormalUnitForDayWithMonth(year, month, unit);
             Long late = business.dingdingAttendanceFactory().sumLateTimesUnitForDayWithMonth(year, month, unit);
             Long leaveearly = business.dingdingAttendanceFactory().sumLeaveEarlyUnitForDayWithMonth(year, month, unit);
             Long notSign = business.dingdingAttendanceFactory().sumNotSignedUnitForDayWithMonth(year, month, unit);
@@ -128,6 +131,7 @@ public class DingdingUnitStatisticQueue extends AbstractQueue<Date> {
             unitForMonth.setWorkDayCount(workDay);
             unitForMonth.setOnDutyTimes(onduty);
             unitForMonth.setOffDutyTimes(offDuty);
+            unitForMonth.setResultNormal(normal);
             unitForMonth.setLateTimes(late);
             unitForMonth.setLeaveEarlyTimes(leaveearly);
             unitForMonth.setNotSignedCount(notSign);

+ 12 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/factory/DingdingAttendanceFactory.java

@@ -393,6 +393,18 @@ public class DingdingAttendanceFactory extends AbstractFactory {
         query.select(cb.sum(root.get(StatisticDingdingUnitForDay_.offDutyTimes))).where(p);
         return em.createQuery(query).getSingleResult();
     }
+
+    public Long sumNormalUnitForDayWithMonth(String year, String month, String unit) throws Exception {
+        EntityManager em = this.entityManagerContainer().get(StatisticDingdingUnitForDay.class);
+        CriteriaBuilder cb = em.getCriteriaBuilder();
+        CriteriaQuery<Long> query = cb.createQuery(Long.class);
+        Root<StatisticDingdingUnitForDay> root = query.from(StatisticDingdingUnitForDay.class);
+        Predicate p = cb.equal(root.get(StatisticDingdingUnitForDay_.statisticYear), year);
+        p = cb.and(p, cb.equal(root.get(StatisticDingdingUnitForDay_.statisticMonth), month));
+        p = cb.and(p, cb.equal(root.get(StatisticDingdingUnitForDay_.o2Unit), unit));
+        query.select(cb.sum(root.get(StatisticDingdingUnitForDay_.resultNormal))).where(p);
+        return em.createQuery(query).getSingleResult();
+    }
     public Long sumLateTimesUnitForDayWithMonth(String year, String month, String unit) throws Exception {
         EntityManager em = this.entityManagerContainer().get(StatisticDingdingUnitForDay.class);
         CriteriaBuilder cb = em.getCriteriaBuilder();

+ 12 - 0
o2server/x_attendance_core_entity/src/main/java/com/x/attendance/entity/StatisticDingdingPersonForMonth.java

@@ -83,6 +83,10 @@ public class StatisticDingdingPersonForMonth extends SliceJpaObject {
 	@Column(name = "xoffDutyTimes")
 	private Long offDutyTimes;
 
+	@FieldDescribe("正常签到次数")
+	@Column(name = "xresultNormal")
+	private Long resultNormal;
+
 	@FieldDescribe("迟到次数")
 	@Column(name = "xlateTimes")
 	private Long lateTimes;
@@ -104,6 +108,14 @@ public class StatisticDingdingPersonForMonth extends SliceJpaObject {
 	private Long notSignedCount;
 
 
+	public Long getResultNormal() {
+		return resultNormal;
+	}
+
+	public void setResultNormal(Long resultNormal) {
+		this.resultNormal = resultNormal;
+	}
+
 	public String getO2User() {
 		return o2User;
 	}

+ 13 - 0
o2server/x_attendance_core_entity/src/main/java/com/x/attendance/entity/StatisticDingdingUnitForDay.java

@@ -83,6 +83,11 @@ public class StatisticDingdingUnitForDay extends SliceJpaObject {
 	@Column(name = "xoffDutyTimes")
 	private Long offDutyTimes;
 
+
+	@FieldDescribe("正常签到次数")
+	@Column(name = "xresultNormal")
+	private Long resultNormal;
+
 	@FieldDescribe("迟到人数")
 	@Column(name = "xlateTimes")
 	private Long lateTimes;
@@ -104,6 +109,14 @@ public class StatisticDingdingUnitForDay extends SliceJpaObject {
 	private Long notSignedCount;
 
 
+	public Long getResultNormal() {
+		return resultNormal;
+	}
+
+	public void setResultNormal(Long resultNormal) {
+		this.resultNormal = resultNormal;
+	}
+
 	public String getStatisticDate() {
 		return statisticDate;
 	}

+ 11 - 0
o2server/x_attendance_core_entity/src/main/java/com/x/attendance/entity/StatisticDingdingUnitForMonth.java

@@ -79,6 +79,10 @@ public class StatisticDingdingUnitForMonth extends SliceJpaObject {
 	@Column(name = "xoffDutyTimes")
 	private Long offDutyTimes;
 
+	@FieldDescribe("正常签到次数")
+	@Column(name = "xresultNormal")
+	private Long resultNormal;
+
 	@FieldDescribe("迟到人数")
 	@Column(name = "xlateTimes")
 	private Long lateTimes;
@@ -99,6 +103,13 @@ public class StatisticDingdingUnitForMonth extends SliceJpaObject {
 	@Column(name = "xNotSignedCount")
 	private Long notSignedCount;
 
+	public Long getResultNormal() {
+		return resultNormal;
+	}
+
+	public void setResultNormal(Long resultNormal) {
+		this.resultNormal = resultNormal;
+	}
 
 	public String getO2Unit() {
 		return o2Unit;