fancy 5 лет назад
Родитель
Сommit
9c578dcef1

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

@@ -0,0 +1,42 @@
+package com.x.attendance.assemble.control.jaxrs.dingdingstatistic;
+
+import com.x.attendance.assemble.control.Business;
+import com.x.attendance.entity.StatisticDingdingPersonForMonth;
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.entity.JpaObject;
+import com.x.base.core.project.bean.WrapCopier;
+import com.x.base.core.project.bean.WrapCopierFactory;
+import com.x.base.core.project.http.ActionResult;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
+
+/**
+ * Created by fancyLou on 2020-04-07.
+ * Copyright © 2020 O2. All rights reserved.
+ */
+public class ActionPersonStatistic extends BaseAction {
+
+
+    ActionResult<List<Wo>> execute(String person, String year, String month) throws Exception {
+        ActionResult<List<Wo>> result = new ActionResult<>();
+        if (StringUtils.isEmpty(person) || 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);
+            result.setData(Wo.copier.copy(list));
+        }
+        return result;
+    }
+
+
+
+    public static class Wo extends StatisticDingdingPersonForMonth {
+        static final WrapCopier<StatisticDingdingPersonForMonth, Wo> copier = WrapCopierFactory.wo(StatisticDingdingPersonForMonth.class, Wo.class,
+                null, JpaObject.FieldsInvisible);
+
+    }
+}

+ 83 - 0
o2web/source/x_component_Attendance/$PeopleDetail/listItem_dingding_detailStatic.json

@@ -0,0 +1,83 @@
+[
+  {
+    "title": "人员",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "function( d ){ return d.o2User.split('@')[0] }",
+    "name": "o2User",
+    "width": "9%"
+  },
+  {
+    "title": "月份",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "function( data ){ return data.statisticYear + '-' + data.statisticMonth  }",
+    "name": "statisticMonth",
+    "width": "9%"
+  },
+  {
+    "title": "上班打卡次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "onDutyTimes",
+    "name": "onDutyTimes",
+    "width": "9%"
+  },
+  {
+    "title": "下班打卡次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "offDutyTimes",
+    "name": "offDutyTimes",
+    "width": "9%"
+  },
+  {
+    "title": "出勤人天数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "workDayCount",
+    "name": "workDayCount",
+    "width": "9%"
+  },
+  {
+    "title": "迟到次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "lateTimes",
+    "name": "lateTimes",
+    "width": "9%"
+  },
+  {
+    "title": "早退次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "leaveEarlyTimes",
+    "name": "leaveEarlyTimes",
+    "width": "9%"
+  },
+  {
+    "title": "未打卡次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "notSignedCount",
+    "name": "notSignedCount",
+    "width": "9%"
+  },
+  {
+    "title": "严重迟到次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "seriousLateTimes",
+    "name": "seriousLateTimes",
+    "width": "9%"
+  },
+  {
+    "title": "旷工次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "absenteeismTimes",
+    "name": "absenteeismTimes",
+    "width": "9%"
+  }
+   
+]

+ 83 - 0
o2web/source/x_component_Attendance/$UnitDetail/listItem_dingding_detailStatic.json

@@ -0,0 +1,83 @@
+[
+  {
+    "title": "人员",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "function( d ){ return d.o2User.split('@')[0] }",
+    "name": "o2User",
+    "width": "9%"
+  },
+  {
+    "title": "月份",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "function( data ){ return data.statisticYear + '-' + data.statisticMonth  }",
+    "name": "statisticMonth",
+    "width": "9%"
+  },
+  {
+    "title": "上班打卡次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "onDutyTimes",
+    "name": "onDutyTimes",
+    "width": "9%"
+  },
+  {
+    "title": "下班打卡次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "offDutyTimes",
+    "name": "offDutyTimes",
+    "width": "9%"
+  },
+  {
+    "title": "出勤人天数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "workDayCount",
+    "name": "workDayCount",
+    "width": "9%"
+  },
+  {
+    "title": "迟到次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "lateTimes",
+    "name": "lateTimes",
+    "width": "9%"
+  },
+  {
+    "title": "早退次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "leaveEarlyTimes",
+    "name": "leaveEarlyTimes",
+    "width": "9%"
+  },
+  {
+    "title": "未打卡次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "notSignedCount",
+    "name": "notSignedCount",
+    "width": "9%"
+  },
+  {
+    "title": "严重迟到次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "seriousLateTimes",
+    "name": "seriousLateTimes",
+    "width": "9%"
+  },
+  {
+    "title": "旷工次数",
+    "headStyles": "normalThNode",
+    "contentStyles": "normalTdNode",
+    "item": "absenteeismTimes",
+    "name": "absenteeismTimes",
+    "width": "9%"
+  }
+   
+]

+ 9 - 9
o2web/source/x_component_Attendance/PeopleDingdingDetail.js

@@ -306,7 +306,7 @@ MWF.xApplication.Attendance.PeopleDingdingDetail.DetailStaticExplorer = new Clas
         if (this.view) delete this.view;
         this.view = new MWF.xApplication.Attendance.PeopleDingdingDetail.DetailStaticView(this.elementContentNode, this.app, this);
         this.view.filterData = filterData;
-        this.view.listItemUrl = this.path + "listItem_detailStatic.json";
+        this.view.listItemUrl = this.path + "listItem_dingding_detailStatic.json";
         this.view.load();
         this.setContentSize();
     }
@@ -336,7 +336,7 @@ MWF.xApplication.Attendance.PeopleDingdingDetail.View = new Class({
         if (!count) count = 20;
         var id = (this.items.length) ? this.items[this.items.length - 1].data.id : "(0)";
         var filter = this.filterData || {};
-        
+
         var action = o2.Actions.load("x_attendance_assemble_control");
         action.DingdingAttendanceAction.listNextDingdingAttendance(id, count, filter, function (json) {
             if (callback) callback(json);
@@ -387,13 +387,13 @@ MWF.xApplication.Attendance.PeopleDingdingDetail.DetailStaticView = new Class({
 
     _getCurrentPageData: function (callback, count) {
         var filter = this.filterData || {};
-        if (filter.cycleMonth == "") filter.cycleMonth = "(0)";
-        this.actions.listStaticMonthPerson(filter.q_empName, filter.cycleYear, filter.cycleMonth, function (json) {
-            var data = json.data;
-            data.sort(function (a, b) {
-                return parseInt(b.statisticYear + b.statisticMonth) - parseInt(a.statisticYear + a.statisticMonth)
-            });
-            json.data = data;
+        var action = o2.Actions.load("x_attendance_assemble_control");
+        action.DingdingAttendanceStatisticAction.personMonth(filter.q_empName, filter.cycleYear, filter.cycleMonth, function (json) {
+            // var data = json.data;
+            // data.sort(function (a, b) {
+            //     return parseInt(b.statisticYear + b.statisticMonth) - parseInt(a.statisticYear + a.statisticMonth)
+            // });
+            // json.data = data;
             if (callback) callback(json);
         }.bind(this))
     },

+ 5 - 8
o2web/source/x_component_Attendance/UnitDingdingDetail.js

@@ -33,7 +33,7 @@ MWF.xApplication.Attendance.UnitDingdingDetail = new Class({
             this.tabs = new MWF.widget.Tab(this.tabNode, { "style": "attendance" });
             this.tabs.load();
 
-            this.detailPage = this.tabs.addTab(this.detailArea, "部门出勤明细", false);
+            this.detailPage = this.tabs.addTab(this.detailArea, "部门打卡明细", false);
             this.detailPage.contentNodeArea.set("class", "detailPage");
             this.detailPage.addEvent("show", function () {
                 if (!this.detailExplorer) {
@@ -43,7 +43,7 @@ MWF.xApplication.Attendance.UnitDingdingDetail = new Class({
             }.bind(this));
 
 
-            this.detailStaticPage = this.tabs.addTab(this.detailStaticArea, "部门出勤率统计", false);
+            this.detailStaticPage = this.tabs.addTab(this.detailStaticArea, "部门打卡率统计", false);
             this.detailStaticPage.contentNodeArea.set("class", "detailStaticPage");
             this.detailStaticPage.addEvent("show", function () {
                 if (!this.detailStaticExplorer) {
@@ -293,7 +293,7 @@ MWF.xApplication.Attendance.UnitDingdingDetail.DetailStaticExplorer = new Class(
         if (this.view) delete this.view;
         this.view = new MWF.xApplication.Attendance.UnitDingdingDetail.DetailStaticView(this.elementContentNode, this.app, this);
         this.view.filterData = filterData;
-        this.view.listItemUrl = this.path + "listItem_detailStatic.json";
+        this.view.listItemUrl = this.path + "listItem_dingding_detailStatic.json";
         this.view.load();
         this.setContentSize();
     }
@@ -340,13 +340,10 @@ MWF.xApplication.Attendance.UnitDingdingDetail.DetailStaticView = new Class({
 
     _getCurrentPageData: function (callback, count) {
         var filter = this.filterData || {};
-        //if( !filter.cycleMonth || filter.cycleMonth == "" )filter.cycleMonth = "(0)";
-        this.actions.listPersonMonthStaticByUnit(filter.q_unitName, filter.cycleYear, filter.cycleMonth, function (json) {
-
+        var action = o2.Actions.load("x_attendance_assemble_control");
+        action.DingdingAttendanceStatisticAction.personMonthWithUnit(filter.q_unitName, filter.cycleYear, filter.cycleMonth, function (json) {
             if (callback) callback(json);
         }.bind(this));
-
-
     },
     _removeDocument: function (documentData, all) {