Browse Source

钉钉考勤统计查询

fancy 5 years ago
parent
commit
c19e701fcf

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

@@ -154,6 +154,27 @@ public class DingdingAttendanceFactory extends AbstractFactory {
         return em.createQuery(query).getResultList();
     }
 
+    /**
+     * 人员统计数据
+     * @param unit
+     * @param year
+     * @param month
+     * @return
+     * @throws Exception
+     */
+    public List<StatisticDingdingPersonForMonth> findPersonStatisticWithUnit(String unit, String year, String month) throws Exception {
+        EntityManager em = this.entityManagerContainer().get(StatisticDingdingPersonForMonth.class);
+        CriteriaBuilder cb = em.getCriteriaBuilder();
+        CriteriaQuery<StatisticDingdingPersonForMonth> query = cb.createQuery(StatisticDingdingPersonForMonth.class);
+        Root<StatisticDingdingPersonForMonth> root = query.from(StatisticDingdingPersonForMonth.class);
+        Predicate p = cb.equal(root.get(StatisticDingdingPersonForMonth_.o2Unit), unit);
+        p = cb.and(p, cb.equal(root.get(StatisticDingdingPersonForMonth_.statisticYear), year));
+        p = cb.and(p, cb.equal(root.get(StatisticDingdingPersonForMonth_.statisticMonth), month));
+
+        query.select(root).where(p);
+        return em.createQuery(query).getResultList();
+    }
+
 
     /**
      * 部门统计数据

+ 4 - 4
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/dingdingstatistic/ActionPersonStatisticWithUnit.java

@@ -16,17 +16,17 @@ import java.util.List;
  * Created by fancyLou on 2020-04-07.
  * Copyright © 2020 O2. All rights reserved.
  */
-public class ActionPersonStatistic extends BaseAction {
+public class ActionPersonStatisticWithUnit extends BaseAction {
 
 
-    ActionResult<List<Wo>> execute(String person, String year, String month) throws Exception {
+    ActionResult<List<Wo>> execute(String unit, String year, String month) throws Exception {
         ActionResult<List<Wo>> result = new ActionResult<>();
-        if (StringUtils.isEmpty(person) || StringUtils.isEmpty(year) || StringUtils.isEmpty(month)) {
+        if (StringUtils.isEmpty(unit) || StringUtils.isEmpty(year) || StringUtils.isEmpty(month)) {
             throw new EmptyArgsException();
         }
         try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
             Business business = new Business(emc);
-            List<StatisticDingdingPersonForMonth> list = business.dingdingAttendanceFactory().findPersonStatistic(person, year, month);
+            List<StatisticDingdingPersonForMonth> list = business.dingdingAttendanceFactory().findPersonStatisticWithUnit(unit, year, month);
             result.setData(Wo.copier.copy(list));
         }
         return result;

+ 20 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/dingdingstatistic/DingdingAttendanceStatisticAction.java

@@ -67,6 +67,26 @@ public class DingdingAttendanceStatisticAction extends StandardJaxrsAction {
         asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
     }
 
+    @JaxrsMethodDescribe(value = "根据部门查询人员月份统计", action = ActionPersonStatisticWithUnit.class)
+    @GET
+    @Path("person/unit/{unit}/{year}/{month}")
+    @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+    @Consumes(MediaType.APPLICATION_JSON)
+    public void personMonthWithUnit(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+                            @JaxrsParameterDescribe("部门") @PathParam("unit") String unit,
+                            @JaxrsParameterDescribe("年份: yyyy") @PathParam("year") String year,
+                            @JaxrsParameterDescribe("月份: MM") @PathParam("month") String month) {
+        ActionResult<List<ActionPersonStatisticWithUnit.Wo>> result = new ActionResult<>();
+        EffectivePerson effectivePerson = this.effectivePerson(request);
+        try {
+            result = new ActionPersonStatisticWithUnit().execute(unit, year, month);
+        }catch (Exception e) {
+            logger.error(e, effectivePerson, request, null);
+            result.error(e);
+        }
+        asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+    }
+
     @JaxrsMethodDescribe(value = "部门月份统计查询", action = ActionUnitStatistic.class)
     @GET
     @Path("unit/{unit}/{year}/{month}")