From 5dfbc4af25ab4f5e8d75f99c6e889b5004a49ef0 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 18 八月 2023 19:22:25 +0800
Subject: [PATCH] 大屏统计

---
 server/src/main/java/doumeemes/service/ext/StatisticsService.java                       |   35 +-
 server/src/main/java/doumeemes/dao/business/model/Plans.java                            |    4 
 server/src/main/java/doumeemes/dao/ext/WorkPlansExtMapper.java                          |    4 
 server/src/main/java/doumeemes/dao/ext/RouteProcedureExtMapper.java                     |    2 
 server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java                    |    4 
 server/src/main/java/doumeemes/dao/ext/PlansExtMapper.java                              |    6 
 server/src/main/java/doumeemes/dao/ext/dto/QueryPlansExtDTO.java                        |    2 
 server/src/main/java/doumeemes/api/ext/StatisticsController.java                        |   59 ++++
 server/src/main/java/doumeemes/dao/business/dto/statistics/ProcedureProcessModel.java   |   37 +++
 server/src/main/java/doumeemes/dao/ext/dto/QueryRouteProcedureExtDTO.java               |    2 
 server/src/main/resources/mappers/WorkorderRecordExtMapper.xml                          |   39 +++
 server/src/main/java/doumeemes/dao/business/dto/statistics/Unqualified7DayModel.java    |    6 
 server/src/main/resources/mappers/PlansExtMapper.xml                                    |   39 +++
 server/src/main/java/doumeemes/dao/business/dto/statistics/UnqualifiedCateModel.java    |   23 ++
 server/src/main/java/doumeemes/dao/business/dto/statistics/RecordLogModel.java          |   30 ++
 server/src/main/java/doumeemes/dao/business/dto/statistics/WorkPlansPageModel.java      |   41 +++
 server/src/main/java/doumeemes/service/ext/impl/StatisticsServiceImpl.java              |  198 ++++++++++++++++-
 server/src/main/resources/mappers/RouteProcedureExtMapper.xml                           |   10 
 server/src/main/java/doumeemes/dao/business/dto/statistics/WorkPlansProcedureModel.java |   25 ++
 server/src/main/java/doumeemes/dao/business/model/Workorder.java                        |    2 
 server/src/main/java/doumeemes/dao/ext/vo/RouteProcedureExtListVO.java                  |   11 +
 server/src/main/java/doumeemes/dao/business/dto/statistics/CheckRecordModel.java        |   24 ++
 server/src/main/java/doumeemes/dao/business/dto/statistics/ProcedurePlansPageModel.java |   38 +++
 server/src/main/resources/mappers/WorkPlansExtMapper.xml                                |   16 +
 24 files changed, 606 insertions(+), 51 deletions(-)

diff --git a/server/src/main/java/doumeemes/api/ext/StatisticsController.java b/server/src/main/java/doumeemes/api/ext/StatisticsController.java
index b12b15a..4a9c7a8 100644
--- a/server/src/main/java/doumeemes/api/ext/StatisticsController.java
+++ b/server/src/main/java/doumeemes/api/ext/StatisticsController.java
@@ -2,14 +2,18 @@
 
 import doumeemes.api.BaseController;
 import doumeemes.core.model.ApiResponse;
-import doumeemes.dao.business.dto.statistics.StatisticsPlanDataModel;
-import doumeemes.dao.business.dto.statistics.Unqualified7DayModel;
-import doumeemes.dao.business.dto.statistics.UserProduceTopModel;
+import doumeemes.core.model.PageData;
+import doumeemes.core.model.PageWrap;
+import doumeemes.dao.business.dto.statistics.*;
+import doumeemes.dao.ext.dto.*;
+import doumeemes.dao.ext.vo.DeviceCheckExtListVO;
+import doumeemes.dao.ext.vo.PlansExtListVO;
 import doumeemes.service.ext.StatisticsService;
 import doumeemes.service.ext.WorkorderExtService;
 import doumeemes.service.ext.WorkorderRecordExtService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -28,21 +32,60 @@
     @Autowired
     private StatisticsService statisticsService;
 
-    @ApiOperation("鏁版嵁缁熻锛屾墽琛屼腑銆佸欢鏈熻鍒掓暟銆佷粖鏃ョ敓浜т汉鏁般�佷粖鏃ョ敓浜ц澶囨暟銆佷粖鏃ヤ笉鑹搧")
+    @ApiOperation("鏁版嵁缁熻-鎴愬搧璁″垝锛屾墽琛屼腑銆佸欢鏈熻鍒掓暟銆佷粖鏃ョ敓浜т汉鏁般�佷粖鏃ョ敓浜ц澶囨暟銆佷粖鏃ヤ笉鑹搧")
     @GetMapping("/getPlanData/{companyId}/{departId}")
     public ApiResponse<StatisticsPlanDataModel> getPlansData(@PathVariable Integer companyId, @PathVariable Integer departId) {
         return ApiResponse.success(statisticsService.getPlansData(companyId,departId));
     }
+    @ApiOperation("鏁版嵁缁熻-宸ュ簭璁″垝锛屾墽琛屼腑銆佸欢鏈熻鍒掓暟銆佷粖鏃ョ敓浜т汉鏁般�佷粖鏃ョ敓浜ц澶囨暟銆佷粖鏃ヤ笉鑹搧")
+    @GetMapping("/getProcedurePlanData/{companyId}/{departId}")
+    public ApiResponse<StatisticsPlanDataModel> getProcedurePlanData(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam Integer procedureId) {
+        return ApiResponse.success(statisticsService.getProcedurePlanData(companyId,departId,procedureId));
+    }
 
     @ApiOperation("鍛樺伐浜у搧缁熻TOP10")
     @GetMapping("/userProduceTop/{companyId}/{departId}")
-    public ApiResponse<List<UserProduceTopModel>> getUserProducceTop(@PathVariable Integer companyId, @PathVariable Integer departId) {
-        return ApiResponse.success(statisticsService.getUserProduceTopData(companyId,departId));
+    public ApiResponse<List<UserProduceTopModel>> getUserProducceTop(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam Integer procedureId) {
+        return ApiResponse.success(statisticsService.getUserProduceTopData(companyId,departId,procedureId));
     }
     @ApiOperation("杩�7澶╀笉鑹搧鍒嗗竷-涓嶈壇鍝佹暟閲忕粺璁�")
     @GetMapping("/getUnqualified7DayData/{companyId}/{departId}")
-    public ApiResponse<List<Unqualified7DayModel>> getUnqualified7DayData(@PathVariable Integer companyId, @PathVariable Integer departId) {
-        return ApiResponse.success(statisticsService.getUnqualified7DayData(companyId,departId));
+    public ApiResponse<List<Unqualified7DayModel>> getUnqualified7DayData(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam Integer procedureId) {
+        return ApiResponse.success(statisticsService.getUnqualified7DayData(companyId,departId,procedureId));
+    }
+    @ApiOperation("杩�7澶╀笉鑹搧鍒嗗竷-涓嶈壇鍝佹暟閲�-鎸変笉鑹」缁熻")
+    @GetMapping("/getUnqualifiedCateData/{companyId}/{departId}")
+    public ApiResponse<List<UnqualifiedCateModel>> getUnqualifiedCateData(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam Integer procedureId) {
+        return ApiResponse.success(statisticsService.getUnqualifiedCateData(companyId,departId,procedureId));
+    }
+    @ApiOperation("鎶ュ伐鏃ュ織鍒嗛〉鏌ヨ")
+    @PostMapping("/getRecordLogPage/{companyId}/{departId}")
+    public ApiResponse<PageData<RecordLogModel>> getRecordLogPage(@PathVariable Integer companyId, @PathVariable Integer departId
+            , @RequestBody PageWrap<QueryWorkorderRecordExtDTO> pageWrap) {
+        return ApiResponse.success(statisticsService.getRecordLogPage(companyId,departId,pageWrap));
+    }
+
+    @ApiOperation("宸℃璁板綍鍒嗛〉鏌ヨ")
+    @PostMapping("/getDeviceCheckPage/{companyId}/{departId}")
+    public ApiResponse<PageData<DeviceCheckExtListVO>> getDeviceCheckPage (@PathVariable Integer companyId, @PathVariable Integer departId
+            ,@RequestBody PageWrap<QueryDeviceCheckExtDTO> pageWrap) {
+        return ApiResponse.success(statisticsService.getDeviceCheckPage(companyId,departId,pageWrap));
+    }
+
+    @ApiOperation("宸ュ簭璁″垝杩涘害鏌ヨ")
+    @GetMapping("/getProcedurePlansList/{companyId}/{departId}")
+    public ApiResponse<List<ProcedurePlansPageModel>> getProcedurePlansList (@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam Integer procedureId) {
+        return ApiResponse.success(statisticsService.getProcedurePlansPage(companyId,departId,procedureId));
+    }
+    @ApiOperation("鎴愬搧璁″垝杩涘害鏌ヨ")
+    @GetMapping("/getWorkPlansList/{companyId}/{departId}")
+    public ApiResponse<List<WorkPlansPageModel>> getWorkPlansList (@PathVariable Integer companyId, @PathVariable Integer departId   ) {
+        return ApiResponse.success(statisticsService.getWorkPlansList(companyId,departId));
+    }
+    @ApiOperation("鎴愬搧璁″垝-宸ュ簭杩涘害鏌ヨ")
+    @GetMapping("/getProcedureProcessList/{companyId}/{departId}")
+    public ApiResponse<List<ProcedureProcessModel>> getProcedureProcessList (@PathVariable Integer companyId, @PathVariable Integer departId   ) {
+        return ApiResponse.success(statisticsService.getProcedureProcessList(companyId,departId));
     }
 
 
diff --git a/server/src/main/java/doumeemes/dao/business/dto/statistics/CheckRecordModel.java b/server/src/main/java/doumeemes/dao/business/dto/statistics/CheckRecordModel.java
new file mode 100644
index 0000000..e9ec800
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/business/dto/statistics/CheckRecordModel.java
@@ -0,0 +1,24 @@
+package doumeemes.dao.business.dto.statistics;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel("澶у睆鏁版嵁鐪嬫澘- 璁惧宸℃")
+/**
+ *  婊氬姩灞曠ず鏈�鏂�20鏉¤澶囧贰妫�璁板綍锛屾寜鐓ф椂闂村�掑簭鎺掑垪锛�
+ */
+public class CheckRecordModel {
+    @ApiModelProperty(value = "宸℃鏃堕棿")
+    private Date createTime;
+    @ApiModelProperty(value = "鍛樺伐濮撳悕")
+    private String userName;
+    @ApiModelProperty(value = "璁惧鍚嶇О")
+    private String materialCode;
+    @ApiModelProperty(value = "宸℃缁撴灉 0鍚堟牸 1涓嶈壇",example = "1")
+    private Integer doneType;
+}
diff --git a/server/src/main/java/doumeemes/dao/business/dto/statistics/ProcedurePlansPageModel.java b/server/src/main/java/doumeemes/dao/business/dto/statistics/ProcedurePlansPageModel.java
new file mode 100644
index 0000000..d20ad64
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/business/dto/statistics/ProcedurePlansPageModel.java
@@ -0,0 +1,38 @@
+package doumeemes.dao.business.dto.statistics;
+
+import doumeemes.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel("澶у睆鏁版嵁鐪嬫澘- 銆佸伐搴忚鍒掕繘搴︼細锛堜笉鍒嗛〉锛屽睍绀烘墍鏈夋暟鎹級")
+/**
+ *  浠ュ綋鍓嶅伐搴忕淮搴﹀睍绀哄伐搴忚鍒掔殑鎯呭喌锛�
+ * 缁熻鑼冨洿锛氥�愬凡鍙戝竷銆戙�併�愬凡鍒嗛厤銆戞垨鑰� [銆愬凡瀹屽伐銆戜笖褰撳ぉ鏈夋姤宸ヨ褰曠殑宸ュ簭璁″垝]锛�
+ * 灞曠ず鐗╂枡鍚嶇О銆佺紪鐮併�佽鍒掓暟閲忋�佸畬鎴愮殑鑹搧鏁般�佷笉鑹搧鏁般�佹湭瀹屽伐鏁�=璁″垝鏁�-鑹搧鏁�-涓嶈壇鍝佹暟銆佷笉鑹巼=涓嶈壇鍝佹暟/鎬诲畬宸ユ暟*100%锛�
+ * 鎸夌収鍒涘缓鏃堕棿姝e簭灞曠ず锛�
+ */
+public class ProcedurePlansPageModel {
+
+    @ApiModelProperty(value = "宸ュ簭鍚嶇О", example = "1")
+    private String procedureName;
+    @ApiModelProperty(value = "宸ュ簭缂栫爜", example = "1")
+    private Integer procedureId;
+    @ApiModelProperty(value = "涓嶈壇鍝佺巼", example = "1")
+    private BigDecimal unqualifiedRate;
+    @ApiModelProperty(value = "涓嶈壇鍝佹暟", example = "1")
+    private BigDecimal unqualifiedNum;
+    @ApiModelProperty(value = "鑹搧鏁�", example = "1")
+    private BigDecimal qualifiedNum;
+    @ApiModelProperty(value = "鏈畬宸ユ暟閲�", example = "1")
+    private BigDecimal undoneNum;
+    @ApiModelProperty(value = "璁″垝鐢熶骇鏁伴噺", example = "1")
+    private BigDecimal num;
+    @ApiModelProperty(value = "璁″垝涓暟", example = "1")
+    private Integer planCount;
+
+}
diff --git a/server/src/main/java/doumeemes/dao/business/dto/statistics/ProcedureProcessModel.java b/server/src/main/java/doumeemes/dao/business/dto/statistics/ProcedureProcessModel.java
new file mode 100644
index 0000000..898f228
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/business/dto/statistics/ProcedureProcessModel.java
@@ -0,0 +1,37 @@
+package doumeemes.dao.business.dto.statistics;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel("澶у睆鏁版嵁鐪嬫澘- 鎴愬搧璁″垝杩涘害-宸ュ簭鍒楄〃 ")
+/**
+ *  缁熻鑼冨洿涓恒�愬凡鎶ュ伐銆戠姸鎬佺殑宸ュ崟鐨勬姤宸ユ暟閲忥紱
+ * 鍒楄〃灞曠ず鐘舵�佷负銆愭墽琛屼腑銆戞垨鑰呫�愬凡瀹屾垚銆戜笖褰撳ぉ鏈夋姤宸ヨ褰曠殑鎴愬搧璁″垝锛屾寜鐓у垱寤烘椂闂存搴忓睍绀猴紱
+ * 鍚勫伐搴忓畬鎴愭儏鍐碉細鎸夌収宸ヨ壓璺嚎涓嬬殑宸ュ簭椤哄簭灞曠ず锛屽苟灞曠ず褰撳墠宸ュ簭鐨勫畬鎴愭儏鍐碉紱瀹屾垚鎯呭喌=鑹搧鏁�/璁″垝鏁帮紱鐐瑰嚮宸ュ簭鍚嶇О璺宠浆鍒板伐搴忓ぇ灞�
+ * 鏈�鍚庝竴鍒楃殑鑹搧鏁�/瀹屽伐鏁帮細涓哄綋鍓嶄骇鍝佹渶鍚庝竴閬撳伐搴忕殑鑹搧鏁�/瀹屽伐鏁帮紱
+ */
+public class ProcedureProcessModel {
+    @ApiModelProperty(value = "涓嶈壇鍝佹暟", example = "1")
+    private BigDecimal unqualifiedNum;
+    @ApiModelProperty(value = "鑹搧鏁�", example = "1")
+    private BigDecimal qualifiedNum;
+    @ApiModelProperty(value = "鏈畬宸ユ暟閲�", example = "1")
+    private BigDecimal undoneNum;
+    @ApiModelProperty(value = "璁″垝鏁伴噺", example = "1")
+    private BigDecimal num;
+    @ApiModelProperty(value = "涓嶈壇鍝佺巼%", example = "1")
+    private BigDecimal  unqualifiedRate;
+    @ApiModelProperty(value = "鐗╂枡缂栫爜")
+    private String materialCode;
+    @ApiModelProperty(value = "宸ュ簭鍚嶇О")
+    private String procedureName;
+
+    @ApiModelProperty(value = "鐘舵�� 0宸茬敓鎴愩��1宸插彂甯冦��2宸叉挙鍥炪��3宸插彇娑堛��4宸插垎閰嶃��5宸叉殏鍋溿��6宸插畬宸ャ��7宸插叆搴撱��8宸插叧闂�", example = "1")
+    private Integer status;
+
+
+}
diff --git a/server/src/main/java/doumeemes/dao/business/dto/statistics/RecordLogModel.java b/server/src/main/java/doumeemes/dao/business/dto/statistics/RecordLogModel.java
new file mode 100644
index 0000000..57e7e26
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/business/dto/statistics/RecordLogModel.java
@@ -0,0 +1,30 @@
+package doumeemes.dao.business.dto.statistics;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel("澶у睆鏁版嵁鐪嬫澘- 鎶ュ伐鏃ュ織")
+/**
+ *  婊氬姩灞曠ず鍛樺伐鏈�鏂�20鏉℃姤宸ユ暟鎹紱缁熻鑼冨洿涓哄伐鍗曠姸鎬佷负銆愬凡鎶ュ伐銆戯紱
+ */
+public class RecordLogModel {
+    @ApiModelProperty(value = "涓嶈壇鍝佹暟", example = "1")
+    private BigDecimal unqualifiedNum;
+    @ApiModelProperty(value = "鑹搧鏁�", example = "1")
+    private BigDecimal qualifiedNum;
+    @ApiModelProperty(value = "鎶ュ伐鏃堕棿")
+    private Date createTime;
+    @ApiModelProperty(value = "涓嶈壇鍝佺巼%")
+    private BigDecimal  unqualifiedRate;
+    @ApiModelProperty(value = "鍛樺伐濮撳悕")
+    private String userName;
+    @ApiModelProperty(value = "鐗╂枡缂栫爜")
+    private String materialCode;
+    @ApiModelProperty(value = "鐗╂枡鍚嶇О")
+    private String materialName;
+}
diff --git a/server/src/main/java/doumeemes/dao/business/dto/statistics/Unqualified7DayModel.java b/server/src/main/java/doumeemes/dao/business/dto/statistics/Unqualified7DayModel.java
index 21051f6..751647b 100644
--- a/server/src/main/java/doumeemes/dao/business/dto/statistics/Unqualified7DayModel.java
+++ b/server/src/main/java/doumeemes/dao/business/dto/statistics/Unqualified7DayModel.java
@@ -8,10 +8,10 @@
 import java.util.Date;
 
 @Data
-@ApiModel("澶у睆鏁版嵁鐪嬫澘-鍛樺伐浜у搧缁熻TOP10")
+@ApiModel("澶у睆鏁版嵁鐪嬫澘-杩�7澶╀笉鑹搧鍒嗗竷 涓嶈壇鍝佹暟閲忕粺璁�")
 /**
- *  缁熻鑼冨洿涓哄綋鏃ワ紱宸ュ崟鐘舵�佷负銆愬凡鎶ュ伐銆戯紱
- * 鏍规嵁鍛樺伐鎶ュ伐鑹搧鏁扮粺璁℃帓搴忥紱
+ * 鎸夌収褰撳ぉ鏃堕棿寰�鍓嶇粺璁�7澶╃殑鏁版嵁锛屽寘鍚綋澶╋紱
+ * 缁熻姣忓ぉ鎶ュ伐鐨勪笉鑹搧鏁帮紙宸ュ崟涓哄凡鎶ュ伐鐘舵�侊級锛�
  */
 public class Unqualified7DayModel {
     @ApiModelProperty(value = "涓嶈壇鍝佹暟", example = "1")
diff --git a/server/src/main/java/doumeemes/dao/business/dto/statistics/UnqualifiedCateModel.java b/server/src/main/java/doumeemes/dao/business/dto/statistics/UnqualifiedCateModel.java
new file mode 100644
index 0000000..f69b153
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/business/dto/statistics/UnqualifiedCateModel.java
@@ -0,0 +1,23 @@
+package doumeemes.dao.business.dto.statistics;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel("澶у睆鏁版嵁鐪嬫澘- 杩�7澶╀笉鑹搧鍒嗗竷 涓嶈壇椤瑰垎甯�")
+/**
+ * 鎸夌収褰撳ぉ鏃堕棿寰�鍓嶇粺璁�7澶╃殑鏁版嵁锛屽寘鍚綋澶╋紱
+ * 缁熻姣忓ぉ鎶ュ伐鐨勪笉鑹」鐨勪笉鑹搧鏁伴噺锛堝伐鍗曚负宸叉姤宸ョ姸鎬侊級锛�
+ * 鎸夌収涓嶈壇椤圭粺璁″睍绀哄悇涓笉鑹」涓嬩笉鑹搧鐨勬暟閲忥紱
+ * 灞曠ず鎺掑悕鍓�6鐨勪笉鑹」鐨勫垎甯冩儏鍐碉紱
+ */
+public class UnqualifiedCateModel {
+    @ApiModelProperty(value = "涓嶈壇鍝佹暟", example = "1")
+    private BigDecimal unqualifiedNum;
+    @ApiModelProperty(value = "涓嶈壇椤�")
+    private String  categoryName;
+}
diff --git a/server/src/main/java/doumeemes/dao/business/dto/statistics/WorkPlansPageModel.java b/server/src/main/java/doumeemes/dao/business/dto/statistics/WorkPlansPageModel.java
new file mode 100644
index 0000000..4aa64e2
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/business/dto/statistics/WorkPlansPageModel.java
@@ -0,0 +1,41 @@
+package doumeemes.dao.business.dto.statistics;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel("澶у睆鏁版嵁鐪嬫澘- 鎴愬搧璁″垝杩涘害锛氾紙涓嶅垎椤碉紝灞曠ず鎵�鏈夋暟鎹級")
+/**
+ *  缁熻鑼冨洿涓恒�愬凡鎶ュ伐銆戠姸鎬佺殑宸ュ崟鐨勬姤宸ユ暟閲忥紱
+ * 鍒楄〃灞曠ず鐘舵�佷负銆愭墽琛屼腑銆戞垨鑰呫�愬凡瀹屾垚銆戜笖褰撳ぉ鏈夋姤宸ヨ褰曠殑鎴愬搧璁″垝锛屾寜鐓у垱寤烘椂闂存搴忓睍绀猴紱
+ * 鍚勫伐搴忓畬鎴愭儏鍐碉細鎸夌収宸ヨ壓璺嚎涓嬬殑宸ュ簭椤哄簭灞曠ず锛屽苟灞曠ず褰撳墠宸ュ簭鐨勫畬鎴愭儏鍐碉紱瀹屾垚鎯呭喌=鑹搧鏁�/璁″垝鏁帮紱鐐瑰嚮宸ュ簭鍚嶇О璺宠浆鍒板伐搴忓ぇ灞�
+ * 鏈�鍚庝竴鍒楃殑鑹搧鏁�/瀹屽伐鏁帮細涓哄綋鍓嶄骇鍝佹渶鍚庝竴閬撳伐搴忕殑鑹搧鏁�/瀹屽伐鏁帮紱
+ */
+public class WorkPlansPageModel {
+    @ApiModelProperty(value = "鑹搧鏁�", example = "1")
+    private BigDecimal qualifiedNum;
+    @ApiModelProperty(value = "瀹屽伐鏁伴噺", example = "1")
+    private BigDecimal doneNum;
+    @ApiModelProperty(value = "璁″垝鏁伴噺", example = "1")
+    private BigDecimal num;
+    @ApiModelProperty(value = "璁″垝缂栫爜", example = "1")
+    private String  code;
+    @ApiModelProperty(value = "鐗╂枡缂栫爜")
+    private String materialCode;
+    @ApiModelProperty(value = "鐗╂枡鍚嶇О")
+    private String materialName;
+    @ApiModelProperty(value = "鐗╂祦缂栫爜", example = "1")
+    private Integer materialId;
+    @ApiModelProperty(value = "璁″垝缂栫爜", example = "1")
+    private Integer id;
+    @ApiModelProperty(value = "宸ヨ壓璺嚎缂栫爜", example = "1")
+    private Integer routeId;
+    @ApiModelProperty(value = "鐘舵�� 0宸茬敓鎴愩��1宸插彂甯冦��2宸叉挙鍥炪��3宸插彇娑堛��4宸插垎閰嶃��5宸叉殏鍋溿��6宸插畬宸ャ��7宸插叆搴撱��8宸插叧闂�", example = "1")
+    private Integer status;
+    @ApiModelProperty(value = "宸ュ簭闆嗗悎", example = "1")
+    private List<WorkPlansProcedureModel> procedureList;
+}
diff --git a/server/src/main/java/doumeemes/dao/business/dto/statistics/WorkPlansProcedureModel.java b/server/src/main/java/doumeemes/dao/business/dto/statistics/WorkPlansProcedureModel.java
new file mode 100644
index 0000000..291d107
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/business/dto/statistics/WorkPlansProcedureModel.java
@@ -0,0 +1,25 @@
+package doumeemes.dao.business.dto.statistics;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel("澶у睆鏁版嵁鐪嬫澘- 鎴愬搧璁″垝杩涘害-宸ュ簭杩涘害璇︽儏")
+/**
+ *  缁熻鑼冨洿涓恒�愬凡鎶ュ伐銆戠姸鎬佺殑宸ュ崟鐨勬姤宸ユ暟閲忥紱
+ * 鍒楄〃灞曠ず鐘舵�佷负銆愭墽琛屼腑銆戞垨鑰呫�愬凡瀹屾垚銆戜笖褰撳ぉ鏈夋姤宸ヨ褰曠殑鎴愬搧璁″垝锛屾寜鐓у垱寤烘椂闂存搴忓睍绀猴紱
+ * 鍚勫伐搴忓畬鎴愭儏鍐碉細鎸夌収宸ヨ壓璺嚎涓嬬殑宸ュ簭椤哄簭灞曠ず锛屽苟灞曠ず褰撳墠宸ュ簭鐨勫畬鎴愭儏鍐碉紱瀹屾垚鎯呭喌=鑹搧鏁�/璁″垝鏁帮紱鐐瑰嚮宸ュ簭鍚嶇О璺宠浆鍒板伐搴忓ぇ灞�
+ * 鏈�鍚庝竴鍒楃殑鑹搧鏁�/瀹屽伐鏁帮細涓哄綋鍓嶄骇鍝佹渶鍚庝竴閬撳伐搴忕殑鑹搧鏁�/瀹屽伐鏁帮紱
+ */
+public class WorkPlansProcedureModel {
+    @ApiModelProperty(value = "宸ュ簭鍚嶇О", example = "1")
+    private String procedureName;
+    @ApiModelProperty(value = "瀹屽伐鐜�", example = "1")
+    private BigDecimal rate;
+    @ApiModelProperty(value = "宸ュ簭缂栫爜", example = "1")
+    private Integer procedureId;
+
+}
diff --git a/server/src/main/java/doumeemes/dao/business/model/Plans.java b/server/src/main/java/doumeemes/dao/business/model/Plans.java
index 05b1fc1..1dcb62a 100644
--- a/server/src/main/java/doumeemes/dao/business/model/Plans.java
+++ b/server/src/main/java/doumeemes/dao/business/model/Plans.java
@@ -134,22 +134,18 @@
     @ApiModelProperty(value = "瀵煎叆鎵瑰彿锛堝叧鑱攑lan_import琛�)", example = "1")
     @ExcelColumn(name="瀵煎叆鎵瑰彿锛堝叧鑱攑lan_import琛�)")
     private Integer importId;
-
     @ApiModelProperty(value = "璁″垝鍛樼紪鐮侊紙涓巗ystem_user琛ㄥ叧鑱旓級", example = "1")
     @ExcelColumn(name="璁″垝鍛樼紪鐮侊紙涓巗ystem_user琛ㄥ叧鑱旓級")
     private Integer userId;
-
     @ApiModelProperty(value = "鐘舵�� 0宸茬敓鎴愩��1宸插彂甯冦��2宸叉挙鍥炪��3宸插彇娑堛��4宸插垎閰嶃��5宸叉殏鍋溿��6宸插畬宸ャ��7宸插叆搴撱��8宸插叧闂�", example = "1")
     @ExcelColumn(name="鐘舵�� 0宸茬敓鎴愩��1宸插彂甯冦��2宸叉挙鍥炪��3宸插彇娑堛��4宸插垎閰嶃��5宸叉殏鍋溿��6宸插畬宸ャ��7宸插叆搴撱��8宸插叧闂�")
     private Integer status;
     @ApiModelProperty(value = "璁″垝绫诲瀷 0姝e父1寮傚父2杩斿伐", example = "1")
     @ExcelColumn(name="璁″垝绫诲瀷 0姝e父1寮傚父2杩斿伐")
     private Integer type;
-
     @ApiModelProperty(value = "宸叉姤宸ユ暟閲�", example = "1",hidden = true)
     @TableField(exist = false)
     private Integer baogongNum;
-
     @ApiModelProperty(value = "璁″垝鍙戝竷鏃堕棿")
     @ExcelColumn(name="璁″垝鍙戝竷鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd")
diff --git a/server/src/main/java/doumeemes/dao/business/model/Workorder.java b/server/src/main/java/doumeemes/dao/business/model/Workorder.java
index 47a525a..2bbb7ae 100644
--- a/server/src/main/java/doumeemes/dao/business/model/Workorder.java
+++ b/server/src/main/java/doumeemes/dao/business/model/Workorder.java
@@ -144,7 +144,7 @@
     private Integer checkUserId;
 
     @ApiModelProperty(value = "宸ュ崟鐘舵�� 0宸插垱寤恒��1宸插鏂欍��2宸插畬宸ャ��3宸叉楠屻��4宸叉姤宸ャ��5宸插叆搴撱��6宸插彇娑堛��7鐢熶骇涓�", example = "1")
-    @ExcelColumn(name="宸ュ崟鐘舵�� 0宸插垱寤恒��1宸插鏂欍��2宸插畬宸ャ��3宸叉楠屻��4宸叉姤宸ャ��5宸插叆搴撱��6宸插彇娑堛��7鐢熶骇涓�")
+    @ExcelColumn(name="宸ュ崟鐘舵�� 0宸插垱寤恒��1宸插鏂欍��2宸插畬宸ャ��3宸叉楠屻��4宸叉姤宸ャ��5宸插叆搴� 銆�6宸插彇娑堛��7鐢熶骇涓�")
     private Integer status;
     @ApiModelProperty(value = "鏄惁鏆傚仠 0鏈殏鍋� 1宸叉殏鍋�", example = "1")
     @ExcelColumn(name="鏄惁鏆傚仠 0鏈殏鍋� 1宸叉殏鍋�")
diff --git a/server/src/main/java/doumeemes/dao/ext/PlansExtMapper.java b/server/src/main/java/doumeemes/dao/ext/PlansExtMapper.java
index 47ca1b4..52e02b5 100644
--- a/server/src/main/java/doumeemes/dao/ext/PlansExtMapper.java
+++ b/server/src/main/java/doumeemes/dao/ext/PlansExtMapper.java
@@ -1,5 +1,8 @@
 package doumeemes.dao.ext;
 
+import doumeemes.dao.business.dto.statistics.ProcedurePlansPageModel;
+import doumeemes.dao.business.dto.statistics.ProcedureProcessModel;
+import doumeemes.dao.business.dto.statistics.StatisticsPlanDataModel;
 import doumeemes.dao.business.model.Plans;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import doumeemes.dao.ext.dto.QueryWOutboundExtDTO;
@@ -16,6 +19,8 @@
      * @date 2022/04/20 11:01
      */
     List<PlansExtListVO> selectList(QueryPlansExtDTO dto);
+    List<ProcedureProcessModel> selectProcedureProcessList(QueryPlansExtDTO dto);
+    List<ProcedurePlansPageModel> selectStatisticsList(QueryPlansExtDTO dto);
     int selectCount(QueryPlansExtDTO dto);
 
     void insertBatch(List<Plans> plansList);
@@ -24,4 +29,5 @@
 
     Integer selectCountToday(QueryPlansExtDTO w);
 
+    StatisticsPlanDataModel getPlansStaticticsData(QueryPlansExtDTO param);
 }
diff --git a/server/src/main/java/doumeemes/dao/ext/RouteProcedureExtMapper.java b/server/src/main/java/doumeemes/dao/ext/RouteProcedureExtMapper.java
index 2e923bd..3e5d6bf 100644
--- a/server/src/main/java/doumeemes/dao/ext/RouteProcedureExtMapper.java
+++ b/server/src/main/java/doumeemes/dao/ext/RouteProcedureExtMapper.java
@@ -21,4 +21,6 @@
 
 
     List<RouteProcedureExtListVO> selectListByNext(QueryRouteProcedureExtDTO dto);
+
+    List<RouteProcedureExtListVO> selectStatisticsList(QueryRouteProcedureExtDTO r);
 }
diff --git a/server/src/main/java/doumeemes/dao/ext/WorkPlansExtMapper.java b/server/src/main/java/doumeemes/dao/ext/WorkPlansExtMapper.java
index a3b2bd4..3556376 100644
--- a/server/src/main/java/doumeemes/dao/ext/WorkPlansExtMapper.java
+++ b/server/src/main/java/doumeemes/dao/ext/WorkPlansExtMapper.java
@@ -4,7 +4,9 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
+import doumeemes.dao.business.dto.statistics.ProcedurePlansPageModel;
 import doumeemes.dao.business.dto.statistics.StatisticsPlanDataModel;
+import doumeemes.dao.business.dto.statistics.WorkPlansPageModel;
 import doumeemes.dao.business.model.WorkPlans;
 import doumeemes.dao.business.vo.WorkPlansVO;
 import doumeemes.dao.ext.dto.QueryWorkPlansDTO;
@@ -32,6 +34,8 @@
 
     StatisticsPlanDataModel getPlansStaticticsData(QueryWorkPlansDTO workPlans);
 
+    List<WorkPlansPageModel> selectStatisticsList(QueryWorkPlansExtDTO param);
+
 //    @Select(" SELECT" +
 //            " `a`.*, mmodel.CODE as materialCode, mmodel.NAME as materialName , fmodel.NAME as factoryName,usermodel.REALNAME as userName , usermodel.mobile as userMobile " +
 //            " FROM `work_plans` `a`" +
diff --git a/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java b/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java
index b6f0d4e..dfc5dc3 100644
--- a/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java
+++ b/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java
@@ -1,6 +1,8 @@
 package doumeemes.dao.ext;
 
+import doumeemes.dao.business.dto.statistics.RecordLogModel;
 import doumeemes.dao.business.dto.statistics.Unqualified7DayModel;
+import doumeemes.dao.business.dto.statistics.UnqualifiedCateModel;
 import doumeemes.dao.business.dto.statistics.UserProduceTopModel;
 import doumeemes.dao.business.model.WorkorderRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -42,4 +44,6 @@
 
     List<UserProduceTopModel> getUserProduceTopData(QueryWorkorderRecordExtDTO param);
     List<Unqualified7DayModel> getUnqualified7DayData(QueryWorkorderRecordExtDTO param);
+    List<UnqualifiedCateModel> getUnqualifiedCateData(QueryWorkorderRecordExtDTO param);
+    List<RecordLogModel> getRecordLog(QueryWorkorderRecordExtDTO param);
 }
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QueryPlansExtDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QueryPlansExtDTO.java
index 7a2e907..f8a4370 100644
--- a/server/src/main/java/doumeemes/dao/ext/dto/QueryPlansExtDTO.java
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QueryPlansExtDTO.java
@@ -428,6 +428,8 @@
 
     @ApiModelProperty(value = "绯荤粺鐢ㄦ埛淇℃伅琛ㄧ敤鎴风被鍨� 0骞冲彴鐢ㄦ埛 1浼佷笟鐢ㄦ埛", example = "1")
     private Integer usermodelType;
+    @ApiModelProperty(value = "鏌ヨ鏍囪瘑 0澶у睆鏌ヨ", example = "1")
+    private Integer queryType;
 
     @ApiModelProperty(value = "宸ュ簭缂栫爜闆嗗悎", example = "1",hidden = true)
     private List<Integer> procedureIds;
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QueryRouteProcedureExtDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QueryRouteProcedureExtDTO.java
index 63d3a3c..10023d3 100644
--- a/server/src/main/java/doumeemes/dao/ext/dto/QueryRouteProcedureExtDTO.java
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QueryRouteProcedureExtDTO.java
@@ -197,5 +197,7 @@
 
     @ApiModelProperty(value = "宸ュ簭淇℃伅琛ㄨ澶囨敹闆嗗眰娆� 0璁惧 1缁�", example = "1")
     private Integer pmodelLevel;
+    @ApiModelProperty(value = "鎴愬搧璁″垝缂栫爜", example = "1")
+    private Integer workPlanId;
 
 }
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/RouteProcedureExtListVO.java b/server/src/main/java/doumeemes/dao/ext/vo/RouteProcedureExtListVO.java
index 4ced5f4..763373b 100644
--- a/server/src/main/java/doumeemes/dao/ext/vo/RouteProcedureExtListVO.java
+++ b/server/src/main/java/doumeemes/dao/ext/vo/RouteProcedureExtListVO.java
@@ -8,6 +8,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.math.BigDecimal;
 import java.util.Date;
 
 import java.io.Serializable;
@@ -68,6 +70,15 @@
     @ApiModelProperty(value = "宸ュ簭鏁伴噺", example = "1")
     @ExcelColumn(name="宸ュ簭鏁伴噺")
     private Integer procedureNum;
+    @ApiModelProperty(value = "宸ュ簭鍚嶇О", example = "1")
+    @ExcelColumn(name="宸ュ簭鍚嶇О")
+    private String procedureName;
+    @ApiModelProperty(value = "鎴愬搧璁″垝宸ュ簭瀹屽伐鏁伴噺", example = "1")
+    private BigDecimal doneNum;
+    @ApiModelProperty(value = "鎴愬搧璁″垝宸ュ簭璁″垝鏁伴噺", example = "1")
+    private BigDecimal planNum;
+    @ApiModelProperty(value = "鎴愬搧璁″垝宸ュ簭瀹屾垚鑹搧鏁�", example = "1")
+    private BigDecimal qualifiedNum;
 
     @ApiModelProperty(value = "鐘舵��0.鏃犳晥 1.鏈夋晥", example = "1")
     @ExcelColumn(name="鐘舵��0.鏃犳晥 1.鏈夋晥")
diff --git a/server/src/main/java/doumeemes/service/ext/StatisticsService.java b/server/src/main/java/doumeemes/service/ext/StatisticsService.java
index 69571bb..5df3ad2 100644
--- a/server/src/main/java/doumeemes/service/ext/StatisticsService.java
+++ b/server/src/main/java/doumeemes/service/ext/StatisticsService.java
@@ -1,20 +1,12 @@
 package doumeemes.service.ext;
 
-import doumeemes.core.model.ApiResponse;
-import doumeemes.core.model.LoginUserInfo;
 import doumeemes.core.model.PageData;
 import doumeemes.core.model.PageWrap;
-import doumeemes.dao.business.dto.statistics.StatisticsPlanDataModel;
-import doumeemes.dao.business.dto.statistics.Unqualified7DayModel;
-import doumeemes.dao.business.dto.statistics.UserProduceTopModel;
-import doumeemes.dao.business.model.Workorder;
-import doumeemes.dao.ext.bean.FinishedInBean;
-import doumeemes.dao.ext.bean.FinishedInNewBean;
-import doumeemes.dao.ext.dto.QueryWorkorderExtDTO;
-import doumeemes.dao.ext.vo.PlansExtListH5VO;
-import doumeemes.dao.ext.vo.WorkorderExtListCountVO;
-import doumeemes.dao.ext.vo.WorkorderExtListVO;
-import doumeemes.dao.ext.vo.WorkorderListModelVO;
+import doumeemes.dao.business.dto.statistics.*;
+import doumeemes.dao.ext.dto.QueryDeviceCheckExtDTO;
+import doumeemes.dao.ext.dto.QueryPlansExtDTO;
+import doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO;
+import doumeemes.dao.ext.vo.*;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -30,6 +22,19 @@
 
     StatisticsPlanDataModel getPlansData(Integer companyId, Integer departId);
 
-    List<UserProduceTopModel> getUserProduceTopData(Integer companyId, Integer departId);
-    List<Unqualified7DayModel> getUnqualified7DayData(Integer companyId, Integer departId);
+    List<UserProduceTopModel> getUserProduceTopData(Integer companyId, Integer departId, Integer procedureId);
+    List<Unqualified7DayModel> getUnqualified7DayData(Integer companyId, Integer departId, Integer procedureId);
+    List<UnqualifiedCateModel> getUnqualifiedCateData(Integer companyId, Integer departId, Integer procedureId);
+
+    PageData<RecordLogModel> getRecordLogPage(Integer companyId, Integer departId, PageWrap<QueryWorkorderRecordExtDTO> pageWrap);
+
+    PageData<DeviceCheckExtListVO> getDeviceCheckPage(Integer companyId, Integer departId,PageWrap<QueryDeviceCheckExtDTO> pageWrap);
+
+    StatisticsPlanDataModel getProcedurePlanData(Integer companyId, Integer departId, Integer procedureId);
+
+    List<ProcedurePlansPageModel> getProcedurePlansPage(Integer companyId, Integer departId, Integer procedureId);
+
+    List<WorkPlansPageModel> getWorkPlansList(Integer companyId, Integer departId);
+
+    List<ProcedureProcessModel> getProcedureProcessList(Integer companyId, Integer departId);
 }
diff --git a/server/src/main/java/doumeemes/service/ext/impl/StatisticsServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/StatisticsServiceImpl.java
index 23f8481..eb026ef 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/StatisticsServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/StatisticsServiceImpl.java
@@ -14,28 +14,19 @@
 import doumeemes.dao.business.WOutboundMapper;
 import doumeemes.dao.business.WTransferMapper;
 import doumeemes.dao.business.WorkorderMapper;
-import doumeemes.dao.business.dto.statistics.StatisticsPlanDataModel;
-import doumeemes.dao.business.dto.statistics.Unqualified7DayModel;
-import doumeemes.dao.business.dto.statistics.UserProduceTopModel;
+import doumeemes.dao.business.dto.statistics.*;
 import doumeemes.dao.business.model.*;
 import doumeemes.dao.ext.*;
-import doumeemes.dao.ext.dto.QueryBarcodeParamExtDTO;
-import doumeemes.dao.ext.dto.QueryCompanyExtDTO;
-import doumeemes.dao.ext.dto.QueryWorkPlansDTO;
-import doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO;
-import doumeemes.dao.ext.vo.BarcodeParamContent;
-import doumeemes.dao.ext.vo.BarcodeParamExtListVO;
-import doumeemes.dao.ext.vo.CompanyExtListVO;
-import doumeemes.dao.ext.vo.DepartmentExtListVO;
-import doumeemes.service.ext.BarcodeParamExtService;
-import doumeemes.service.ext.DepartmentExtService;
-import doumeemes.service.ext.StatisticsService;
+import doumeemes.dao.ext.dto.*;
+import doumeemes.dao.ext.vo.*;
+import doumeemes.service.ext.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -54,9 +45,17 @@
     @Autowired
     private WorkPlansExtMapper workPlansExtMapper;
     @Autowired
+    private RouteProcedureExtMapper routeProcedureExtMapper;
+    @Autowired
+    private PlansExtMapper plansExtMapper;
+    @Autowired
     private WorkorderRecordExtMapper workorderRecordExtMapper;
     @Autowired
     private DepartmentExtService departmentExtService;
+    @Autowired
+    private DeviceCheckExtService deviceCheckExtService;
+    @Autowired
+    private PlansExtService plansExtService;
 
     @Override
     public StatisticsPlanDataModel getPlansData(Integer companyId, Integer departId) {
@@ -69,7 +68,7 @@
         workPlans.setDepartId(departId);
         //鏌ヨ缁熻缁撴灉
         StatisticsPlanDataModel model = workPlansExtMapper.getPlansStaticticsData(workPlans);
-        model.setUnqualifiedNum(new BigDecimal(0));
+        model.setUnqualifiedRate(new BigDecimal(0));
         if(model.getDoneNUm() !=null && model.getDoneNUm().compareTo(new BigDecimal(0)) != 0){
             //涓嶈壇鍝佺巼
             model.setUnqualifiedRate(model.getUnqualifiedNum().divide(model.getDoneNUm(),4).multiply(new BigDecimal(100)));
@@ -77,13 +76,33 @@
         return  model;
     }
     @Override
-    public List<UserProduceTopModel> getUserProduceTopData(Integer companyId, Integer departId) {
+    public StatisticsPlanDataModel getProcedurePlanData(Integer companyId, Integer departId, Integer procedureId){
+        DepartmentExtListVO department =   departmentExtService.getModelById(companyId,departId);
+        if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝浼佷笟鎴栬�呴儴闂ㄤ俊鎭笉鍚堟硶锛屽鏈夌枒闂紝璇疯仈绯荤郴缁熺鐞嗗憳");
+        }
+        QueryPlansExtDTO param = new QueryPlansExtDTO();
+        param.setRootDepartId(department.getRootId());
+        param.setDepartId(departId);
+        param.setProcedureId(procedureId);
+        //鏌ヨ缁熻缁撴灉
+        StatisticsPlanDataModel model = plansExtMapper.getPlansStaticticsData(param);
+        model.setUnqualifiedRate(new BigDecimal(0));
+        if(model.getDoneNUm() !=null && model.getDoneNUm().compareTo(new BigDecimal(0)) != 0){
+            //涓嶈壇鍝佺巼
+            model.setUnqualifiedRate(model.getUnqualifiedNum().divide(model.getDoneNUm(),4).multiply(new BigDecimal(100)));
+        }
+        return  model;
+    }
+    @Override
+    public List<UserProduceTopModel> getUserProduceTopData(Integer companyId, Integer departId, Integer procedureId) {
         DepartmentExtListVO department =   departmentExtService.getModelById(companyId,departId);
         if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
             throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝浼佷笟鎴栬�呴儴闂ㄤ俊鎭笉鍚堟硶锛屽鏈夌枒闂紝璇疯仈绯荤郴缁熺鐞嗗憳");
         }
         QueryWorkorderRecordExtDTO param = new QueryWorkorderRecordExtDTO();
         param.setRootDepartId(department.getRootId());
+        param.setProcedureId(procedureId);
         param.setDepartId(departId);
         //鏌ヨ缁熻缁撴灉
         List<UserProduceTopModel> model = workorderRecordExtMapper.getUserProduceTopData(param);
@@ -91,7 +110,30 @@
         return  model;
     }
     @Override
-    public List<Unqualified7DayModel> getUnqualified7DayData(Integer companyId, Integer departId) {
+    public List<ProcedureProcessModel> getProcedureProcessList(Integer companyId, Integer departId) {
+        DepartmentExtListVO department =   departmentExtService.getModelById(companyId,departId);
+        if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝浼佷笟鎴栬�呴儴闂ㄤ俊鎭笉鍚堟硶锛屽鏈夌枒闂紝璇疯仈绯荤郴缁熺鐞嗗憳");
+        }
+        QueryPlansExtDTO param = new QueryPlansExtDTO();
+        param.setRootDepartId(department.getRootId());
+        param.setDepartId(departId);
+        //鏌ヨ缁熻缁撴灉
+        List<ProcedureProcessModel> result = plansExtMapper.selectProcedureProcessList(param);
+        if(result !=null){
+            for(ProcedureProcessModel model : result){
+                //鏈畬鎴愭暟
+                BigDecimal doneNum =Constants.formatBigdecimal(model.getUnqualifiedNum())
+                        .add(Constants.formatBigdecimal(model.getQualifiedNum()));
+                model.setUndoneNum(Constants.formatBigdecimal(model.getNum()).subtract(doneNum);
+                //涓嶈壇鍝佺巼
+                model.set
+            }
+        }
+        return  result;
+    }
+    @Override
+    public List<Unqualified7DayModel> getUnqualified7DayData(Integer companyId, Integer departId, Integer procedureId) {
         DepartmentExtListVO department =   departmentExtService.getModelById(companyId,departId);
         if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
             throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝浼佷笟鎴栬�呴儴闂ㄤ俊鎭笉鍚堟硶锛屽鏈夌枒闂紝璇疯仈绯荤郴缁熺鐞嗗憳");
@@ -99,6 +141,7 @@
         QueryWorkorderRecordExtDTO param = new QueryWorkorderRecordExtDTO();
         param.setRootDepartId(department.getRootId());
         param.setDepartId(departId);
+        param.setProcedureId(procedureId);
         //鏌ヨ缁熻缁撴灉
         List<Unqualified7DayModel> model = workorderRecordExtMapper.getUnqualified7DayData(param);
         List<Unqualified7DayModel> result = new ArrayList<>();
@@ -114,8 +157,129 @@
             result.add(m);
         }
 
+        return  result;
+    }
+    @Override
+    public List<UnqualifiedCateModel> getUnqualifiedCateData(Integer companyId, Integer departId, Integer procedureId) {
+        DepartmentExtListVO department =   departmentExtService.getModelById(companyId,departId);
+        if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝浼佷笟鎴栬�呴儴闂ㄤ俊鎭笉鍚堟硶锛屽鏈夌枒闂紝璇疯仈绯荤郴缁熺鐞嗗憳");
+        }
+        QueryWorkorderRecordExtDTO param = new QueryWorkorderRecordExtDTO();
+        param.setRootDepartId(department.getRootId());
+        param.setDepartId(departId);
+        param.setProcedureId(procedureId);
+        //鏌ヨ缁熻缁撴灉
+        List<UnqualifiedCateModel> model = workorderRecordExtMapper.getUnqualifiedCateData(param);
+
         return  model;
     }
+    @Override
+    public PageData<RecordLogModel> getRecordLogPage(Integer companyId, Integer departId, PageWrap<QueryWorkorderRecordExtDTO> pageWrap){
+        DepartmentExtListVO department =   departmentExtService.getModelById(companyId,departId);
+        if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝浼佷笟鎴栬�呴儴闂ㄤ俊鎭笉鍚堟硶锛屽鏈夌枒闂紝璇疯仈绯荤郴缁熺鐞嗗憳");
+        }
+        //鍙兘鏌ョ湅褰撳墠鏍圭粍缁囩殑鏁版嵁
+        pageWrap.getModel().setRootDepartId(department.getRootId());
+        pageWrap.getModel().setDepartId(departId);
+        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
+        List<RecordLogModel> result = workorderRecordExtMapper.getRecordLog(pageWrap.getModel());
+        if(result!=null){
+            for(RecordLogModel model : result){
+                model.setUnqualifiedNum(new BigDecimal(0));
+                BigDecimal doneNum = Constants.formatBigdecimal(model.getUnqualifiedNum()).add(Constants.formatBigdecimal(model.getQualifiedNum()));
+                if(model.getUnqualifiedNum() !=null && doneNum.compareTo(new BigDecimal(0)) != 0){
+                    //涓嶈壇鍝佺巼
+                    model.setUnqualifiedRate(model.getUnqualifiedNum().divide(doneNum,4).multiply(new BigDecimal(100)));
+                }
+            }
+        }
+        return PageData.from(new PageInfo<>(result));
+    }
+    @Override
+    public   PageData<DeviceCheckExtListVO> getDeviceCheckPage(Integer companyId, Integer departId,PageWrap<QueryDeviceCheckExtDTO> pageWrap){
+        DepartmentExtListVO department =   departmentExtService.getModelById(companyId,departId);
+        if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝浼佷笟鎴栬�呴儴闂ㄤ俊鎭笉鍚堟硶锛屽鏈夌枒闂紝璇疯仈绯荤郴缁熺鐞嗗憳");
+        }
+        //鍙兘鏌ョ湅褰撳墠鏍圭粍缁囩殑鏁版嵁
+        pageWrap.getModel().setRootDepartId(department.getRootId());
+        pageWrap.getModel().setComDepartId(departId);
+        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
+        return deviceCheckExtService.findPage(pageWrap);
+    }
+    @Override
+    public    List<ProcedurePlansPageModel> getProcedurePlansPage(Integer companyId, Integer departId,Integer procedureId){
+        DepartmentExtListVO department =   departmentExtService.getModelById(companyId,departId);
+        if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝浼佷笟鎴栬�呴儴闂ㄤ俊鎭笉鍚堟硶锛屽鏈夌枒闂紝璇疯仈绯荤郴缁熺鐞嗗憳");
+        }
+        if(procedureId == null){
+           throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"宸ュ簭缂栫爜涓嶈兘涓虹┖锛�");
+        }
+        QueryPlansExtDTO param = new QueryPlansExtDTO();
+        param.setRootDepartId(department.getRootId());
+        param.setDepartId(departId);
+        param.setProcedureId(procedureId);
+
+        List<ProcedurePlansPageModel> result = plansExtMapper.selectStatisticsList(param);
+
+        if(result != null){
+            for(ProcedurePlansPageModel model :result){
+                model.setUnqualifiedRate(new BigDecimal(0));
+                BigDecimal doneNum = Constants.formatBigdecimal(model.getQualifiedNum()).add(Constants.formatBigdecimal(model.getUnqualifiedNum()));
+                if(model.getUnqualifiedNum() !=null && doneNum.compareTo(new BigDecimal(0)) != 0){
+                    //涓嶈壇鍝佺巼
+                    model.setUnqualifiedRate(model.getUnqualifiedNum().divide(doneNum,4).multiply(new BigDecimal(100)));
+                    model.setUndoneNum(Constants.formatBigdecimal(model.getNum()).subtract(doneNum));
+                }
+            }
+        }
+        return result;
+    }
+    @Override
+    public   List<WorkPlansPageModel> getWorkPlansList(Integer companyId, Integer departId){
+        DepartmentExtListVO department =   departmentExtService.getModelById(companyId,departId);
+        if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝浼佷笟鎴栬�呴儴闂ㄤ俊鎭笉鍚堟硶锛屽鏈夌枒闂紝璇疯仈绯荤郴缁熺鐞嗗憳");
+        }
+        QueryWorkPlansExtDTO param = new QueryWorkPlansExtDTO();
+        param.setRootDepartId(department.getRootId());
+        param.setDepartId(departId);
+        List<WorkPlansPageModel> result = workPlansExtMapper.selectStatisticsList(param);
+        if(result != null){
+            for(WorkPlansPageModel model :result){
+                if(model.getRouteId() ==null){
+                    continue;
+                }
+                //鏌ヨ宸ュ簭闆嗗悎鍜屽畬鎴愭儏鍐�
+                QueryRouteProcedureExtDTO r = new QueryRouteProcedureExtDTO();
+                r.setRouteId(model.getRouteId());
+                r.setDeleted(Constants.ZERO);
+                List<RouteProcedureExtListVO> list = routeProcedureExtMapper.selectStatisticsList(r);
+                List<WorkPlansProcedureModel> rList = new ArrayList<>();
+                if(list != null){
+                    for(RouteProcedureExtListVO t : list){
+                        WorkPlansProcedureModel tt = new WorkPlansProcedureModel();
+                        tt.setProcedureName(t.getProcedureName());
+                        tt.setProcedureId(t.getProcedureId());
+                        tt.setRate(new BigDecimal(0));
+                        if(  Constants.formatBigdecimal(t.getPlanNum()).compareTo(new BigDecimal(0)) >0){
+                            //瀹屾垚鐜�
+                            tt.setRate(Constants.formatBigdecimal(t.getDoneNum()).divide(t.getPlanNum(),4).subtract(new BigDecimal(100)));
+                        }
+                        rList.add(tt);
+                        //鏈�鍚庝竴鍒楃殑鑹搧鏁�/瀹屽伐鏁帮細涓哄綋鍓嶄骇鍝佹渶鍚庝竴閬撳伐搴忕殑鑹搧鏁�/瀹屽伐鏁�
+                        model.setNum(t.getPlanNum());
+                        model.setQualifiedNum(t.getDoneNum());
+                    }
+                }
+                model.setProcedureList(rList);
+            }
+        }
+        return result;
+    }
 
     private Unqualified7DayModel getReusltModelByDate(Date td, List<Unqualified7DayModel> model ) {
         if(model !=null){
diff --git a/server/src/main/resources/mappers/PlansExtMapper.xml b/server/src/main/resources/mappers/PlansExtMapper.xml
index b139223..df7ce24 100644
--- a/server/src/main/resources/mappers/PlansExtMapper.xml
+++ b/server/src/main/resources/mappers/PlansExtMapper.xml
@@ -287,8 +287,34 @@
     and to_days(`a`.`CREATE_TIME`)=to_days(now())
   </where>
   </select>
+  <select id="selectProcedureProcessList" parameterType="doumeemes.dao.ext.dto.QueryPlansExtDTO" resultType="doumeemes.dao.business.dto.statistics.ProcedureProcessModel">
+    select a.PROCEDURE_ID as procedureId,
+    b.name as procedureName,
+    sum(a.num) as num,
+    count(DISTINCT(a.id)) as planCount,
+    (select sum(d.QUALIFIED_NUM) from workorder_record d where d.DELETED=0 and d.PLAN_ID=a.id and d.TYPE=1) as qualifiedNum ,
+    (select sum(d.UNQUALIFIED_NUM) from workorder_record d where d.DELETED=0 and d.PLAN_ID=a.id and d.TYPE=1) as unqualifiedNum
+    from plans a
+    left join procedures b on a.PROCEDURE_ID =b.ID
+    where ( a.`STATUS` in (1,4) or a.`STATUS`=6 and EXISTS(select e.id from workorder_record e where e.PLAN_ID = a.id and TO_DAYS(now())=TO_DAYS(e.CREATE_TIME)))
+    and a.ROOT_DEPART_ID=#{rootDepartId} and a.DEPART_ID=#{departId}
+    and b.DELETED=0 and a.ROOT_DEPART_ID=132
+    GROUP BY a.PROCEDURE_ID
+    order by b.SORTNUM
+  </select>
+  <select id="selectStatisticsList" parameterType="doumeemes.dao.ext.dto.QueryPlansExtDTO" resultType="doumeemes.dao.business.dto.statistics.ProcedurePlansPageModel">
+    select a.status,a.NUM,m.name as categoryName,m.code as materialCode
+    ,(select sum(b.UNQUALIFIED_NUM) from workorder_record b where b.type=1 and b.DELETED=0 and b.PLAN_ID=a.id) as unqualifiedNum
+    ,(select sum(b.QUALIFIED_NUM) from workorder_record b where b.type=1 and b.DELETED=0 and b.PLAN_ID=a.id) as qualifiedNum
+    FROM `plans` `a`
+    LEFT JOIN `material_distribute` c ON a.MATERIAL_ID=c.ID
+    LEFT JOIN `material` m ON c.MATERIAL_ID=m.ID
+    where (a.status in (1,4) or (a.status=6 and EXISTS(select b.id from workorder_record b where b.type=1 and b.DELETED=0 and b.PLAN_ID=a.id) ))
+    and a.deleted=0 and a.ROOT_DEPART_ID=#{rootDepartId} and a.DEPART_ID=#{departId}
+    order by a.CREATE_TIME
+  </select>
   <select id="selectList" parameterType="doumeemes.dao.ext.dto.QueryPlansExtDTO" resultMap="PlansExtListVO">
-    SELECT
+  SELECT
       `a`.*,
       `dmodel`.`ID` AS DMODEL_ID,
       `dmodel`.`NAME` AS DMODEL_NAME,
@@ -1328,4 +1354,15 @@
            )
     </foreach>
   </insert>
+  <select id="getPlansStaticticsData" parameterType="doumeemes.dao.ext.dto.QueryPlansExtDTO" resultType="doumeemes.dao.business.dto.statistics.StatisticsPlanDataModel">
+    SELECT count(a.id) as ingNum,
+    (select count(b.id)  FROM `plans` b where b.DELETED = 0 and b.PROCEDURE_ID=#{procedureId}  AND b.ROOT_DEPART_ID = #{rootDepartId} AND b.DEPART_ID = #{departId}  AND  (b.`STATUS` in (1,4) and  now() > b.plan_Date  )) as delayNum,
+    (select count(distinct(b.CREATE_USER))  FROM `workorder_record` b left join workorder c on b.workorder_id =c.id where b.PROCEDURE_ID=#{procedureId}  AND b.DELETED = 0 AND b.ROOT_DEPART_ID = #{rootDepartId} AND b.DEPART_ID = #{departId}  AND c.status in (0,1,2,3,4,7)) as prouserNum,
+    (select count(distinct(b.PRO_DEVICE_ID))  FROM `workorder_record` b left join workorder c on b.workorder_id =c.id where b.PROCEDURE_ID=#{procedureId}  AND b.DELETED = 0 AND b.ROOT_DEPART_ID = #{rootDepartId} AND b.DEPART_ID = #{departId}  AND c.status in (0,1,2,3,4,7)) as deviceNum,
+    (select sum(ifnull(b.UNQUALIFIED_NUM,0))  FROM `workorder_record` b left join workorder c on b.workorder_id =c.id where b.PROCEDURE_ID=#{procedureId}  AND b.DELETED = 0 AND b.ROOT_DEPART_ID = #{rootDepartId} AND b.DEPART_ID = #{departId}  AND c.status=4) as unqualifiedNum,
+    (select sum(ifnull(b.NUM,0))  FROM `workorder_record` b left join workorder c on b.workorder_id =c.id where b.PROCEDURE_ID=#{procedureId}  AND b.DELETED = 0 AND b.ROOT_DEPART_ID = #{rootDepartId} AND b.DEPART_ID = #{departId}  AND c.status=4) as doneNum
+    FROM `plans` `a`
+    where
+    a.DELETED = 0 AND a.ROOT_DEPART_ID = #{rootDepartId} AND a.DEPART_ID = #{departId} and a.PROCEDURE_ID=#{procedureId} AND a.`STATUS` in (1,4)
+  </select>
 </mapper>
diff --git a/server/src/main/resources/mappers/RouteProcedureExtMapper.xml b/server/src/main/resources/mappers/RouteProcedureExtMapper.xml
index 19ed6fe..550a884 100644
--- a/server/src/main/resources/mappers/RouteProcedureExtMapper.xml
+++ b/server/src/main/resources/mappers/RouteProcedureExtMapper.xml
@@ -453,4 +453,14 @@
     </where>
     order by  `a`.`SORTNUM` asc
   </select>
+  <select id="selectStatisticsList" parameterType="doumeemes.dao.ext.dto.QueryRouteProcedureExtDTO" resultMap="RouteProcedureExtListVO">
+    SELECT a.*,p.`NAME` AS procedureName
+    ,(select sum(b.num) from workorder_record b left join workorder d on b.workorder_id=d.id left join plans c on b.plan_id=c.id where d.status=4 and b.type=1 and b.deleted=0 and c.deleted=0  and b.procedure_id=p.id and c.work_plans_id=#{workPlanId}) as doneNum
+    ,(select sum(b.qualified_num) from workorder_record b  left join workorder d on b.workorder_id=d.id  left join plans c on b.plan_id=c.id where d.status=4 and b.type=1 and b.deleted=0 and c.deleted=0  and b.procedure_id=p.id and c.work_plans_id=#{workPlanId}) as qualifiedNum
+    ,(select sum(b.num) from plans b where b.deleted=0 and b.work_plans_id=#{workPlanId} and b.procedure_id=p.id) as plansNum
+    FROM `route_procedure` `a`
+    LEFT JOIN `procedures` `p` ON a.PROCEDURE_ID=p.ID
+    where a.ROUTE_ID = #{routeId}
+    order by  `a`.`SORTNUM` asc
+  </select>
 </mapper>
diff --git a/server/src/main/resources/mappers/WorkPlansExtMapper.xml b/server/src/main/resources/mappers/WorkPlansExtMapper.xml
index 9c06fd4..9667411 100644
--- a/server/src/main/resources/mappers/WorkPlansExtMapper.xml
+++ b/server/src/main/resources/mappers/WorkPlansExtMapper.xml
@@ -175,12 +175,26 @@
     (select count(b.id)  FROM `work_plans` b where b.DELETED = 0 AND b.ROOT_DEPART_ID = #{rootDepartId} AND b.DEPART_ID = #{departId}  AND  (b.`STATUS` = 1 and  now() > b.plan_Date  )) as delayNum,
     (select count(distinct(b.CREATE_USER))  FROM `workorder_record` b left join workorder c on b.workorder_id =c.id where b.DELETED = 0 AND b.ROOT_DEPART_ID = #{rootDepartId} AND b.DEPART_ID = #{departId}  AND c.status in (0,1,2,3,4,7)) as prouserNum,
     (select count(distinct(b.PRO_DEVICE_ID))  FROM `workorder_record` b left join workorder c on b.workorder_id =c.id where b.DELETED = 0 AND b.ROOT_DEPART_ID = #{rootDepartId} AND b.DEPART_ID = #{departId}  AND c.status in (0,1,2,3,4,7)) as deviceNum,
-    (select sum(ifnull(b.UNQUALIFIED_NUM,0))  FROM `workorder_record` b left join workorder c on b.workorder_id =c.id where b.DELETED = 0 AND b.ROOT_DEPART_ID = #{rootDepartId} AND b.DEPART_ID = #{departId}  AND c.status=4) as unqualifiedRate,
+    (select sum(ifnull(b.UNQUALIFIED_NUM,0))  FROM `workorder_record` b left join workorder c on b.workorder_id =c.id where b.DELETED = 0 AND b.ROOT_DEPART_ID = #{rootDepartId} AND b.DEPART_ID = #{departId}  AND c.status=4) as unqualifiedNum,
     (select sum(ifnull(b.NUM,0))  FROM `workorder_record` b left join workorder c on b.workorder_id =c.id where b.DELETED = 0 AND b.ROOT_DEPART_ID = #{rootDepartId} AND b.DEPART_ID = #{departId}  AND c.status=4) as doneNum
      FROM `work_plans` `a`
     where
         a.DELETED = 0 AND a.ROOT_DEPART_ID = #{rootDepartId} AND a.DEPART_ID = #{departId}  AND a.`STATUS` = 1
   </select>
+  <select id="selectStatisticsList" parameterType="doumeemes.dao.ext.dto.QueryWorkPlansDTO" resultType="doumeemes.dao.business.dto.statistics.WorkPlansPageModel">
+    select a.status,a.code,a.id,a.NUM,m.id as materialId,m.name as categoryName,m.code as materialCode
+   <!-- ,(select sum(b.num) from workorder_record b left join plans c on b.PLAN_ID=c.id where b.type=1 and b.DELETED=0 and c.WORK_PLANS_ID=a.id) as doneNum
+    ,(select sum(b.QUALIFIED_NUM) from workorder_record b left join plans c on b.PLAN_ID=c.id where b.type=1 and b.DELETED=0 and c.WORK_PLANS_ID=a.id) as qualifiedNum
+    -->,(select b.route_id from bom b where b.MATERIAL_ID=c.id and b.ROOT_DEPART_ID=a.ROOT_DEPART_ID) as routeId
+
+    FROM `work_plans` `a`
+    LEFT JOIN `material_distribute` c ON a.MATERIAL_ID=c.ID
+    LEFT JOIN `material` m ON c.MATERIAL_ID=m.ID
+    where ( a.status = or (a.status=6 and EXISTS(select b.id from workorder_record b left join plans c on b.PLAN_ID=c.id where b.type=1 and b.DELETED=0 and c.WORK_PLANS_ID=a.id) ))
+    and  a.deleted=0 and a.ROOT_DEPART_ID=#{rootDepartId} and a.DEPART_ID=#{departId}
+    order by a.CREATE_TIME
+
+  </select>
 
 
   <select id="getWorkPlansVODetail" parameterType="doumeemes.dao.ext.dto.QueryWorkPlansDTO" resultMap="WorkPlansVO">
diff --git a/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml b/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
index 3090d9b..1af2515 100644
--- a/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
+++ b/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
@@ -469,7 +469,7 @@
   <select id="salaryStatistic" parameterType="doumeemes.dao.ext.dto.QuerySalaryStatisticDTO" resultType="doumeemes.dao.ext.vo.SalaryStatisticsListVO">
     select `CREATE_USER` as userId ,sum(CASE  WHEN salary_type=0 THEN salary ELSE 0 END ) as jijianSalary
     ,sum(CASE  WHEN salary_type=0 THEN  0 ELSE salary  END ) as jishiSalary
-    ,count(id) as num
+    ,count(distinct(a.workorder_id)) as num
     ,sum(salary) as totalSalary
     from `workorder_record`
     where `DELETED` =0 and `SALARY` >0
@@ -495,6 +495,9 @@
     left join company_user b on b.DELETED=0 and b.user_id=a.CREATE_USER
     left join workorder c on a.WORKORDER_ID=c.id
     where a.deleted=0 and a.ROOT_DEPART_ID=#{rootDepartId} and a.DEPART_ID=#{departId} and s.status=4
+    <if test="procedureId != null">
+      AND  a.`PROCEDURE_ID` = #{procedureId}
+    </if>
     GROUP BY a.CREATE_USER
     ORDER By doneNum desc
     limit 10
@@ -506,7 +509,41 @@
     left join workorder c on a.WORKORDER_ID=c.id
     where  a.ROOT_DEPART_ID=#{rootDepartId} and a.DEPART_ID=#{departId}  and c.`STATUS`=4
     and 7 > (TO_DAYS(now()) - TO_DAYS(a.CREATE_TIME) )
+    <if test="procedureId != null">
+      AND  a.`PROCEDURE_ID` = #{procedureId}
+    </if>
     GROUP BY TO_DAYS(a.CREATE_TIME )
+  </select>
+  <select id="getUnqualifiedCateData" parameterType="doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO"
+          resultType="doumeemes.dao.business.dto.statistics.UnqualifiedCateModel">
+    SELECT sum(b.UNQUALIFIED_NUM) as unqualifiedNum,d.`NAME` as categoryName
+    from unqualified_record b
+    left join workorder_record a on b.RECORD_ID=a.id
+    left join workorder c on a.WORKORDER_ID=c.id
+    left join category d on b.CATEGORY_ID=d.id
+    where a.ROOT_DEPART_ID=#{rootDepartId} and a.DEPART_ID=#{departId}  and c.`STATUS`=4 and a.deleted=0
+    and 7>TO_DAYS(now()) - TO_DAYS(a.CREATE_TIME )
+    <if test="procedureId != null">
+      AND  a.`PROCEDURE_ID` = #{procedureId}
+    </if>
+    GROUP BY TO_DAYS(d.ID )
+    order by unqualifiedNum desc
+    limit 6
+  </select>
+  <select id="getRecordLog" parameterType="doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO"
+          resultType="doumeemes.dao.business.dto.statistics.RecordLogModel">
+    select a.CREATE_TIME as createTime,a.UNQUALIFIED_NUM as unqualifiedNum,a.QUALIFIED_NUM as qualifiedNum,
+    d.name as userName,c.name as materialName,c.code as materialCode
+    from workorder_record a
+    left join material_distribute b on a.MATERIAL_ID=b.ID
+    left join material c on b.MATERIAL_ID=c.ID
+    left join company_user d on d.DELETED=0 and d.user_id=a.CREATE_USER
+    left JOIN workorder  e on e.id=a.WORKORDER_ID
+    where a.DELETED = 0 AND a.ROOT_DEPART_ID=#{rootDepartId} and a.DEPART_ID=#{departId}  AND e.`STATUS` = 4
+    <if test="procedureId != null">
+      AND  a.`PROCEDURE_ID` = #{procedureId}
+    </if>
+    ORDER BY a.CREATE_TIME desc
 
   </select>
   <select id="selectListNew" parameterType="doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO" resultMap="WorkorderRecordExtListVO">

--
Gitblit v1.9.3