From 3467fa64f4be6efc9b742913419e7c3a501c541b Mon Sep 17 00:00:00 2001
From: ZQN <364596817@qq.com>
Date: 星期四, 20 六月 2024 16:52:21 +0800
Subject: [PATCH] 云片短信对接,审批流程优化

---
 project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceOrderVo.java                     |   11 
 project-system/src/main/java/com/project/system/service/ISysDictDataService.java                    |   20 
 project-common/src/main/java/com/project/common/sms/YPSmsApi.java                                   |   37 +
 project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceComplaintLogQueryBo.java |   13 
 project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java              |    2 
 project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceOrderBo.java              |   13 
 project-enforce/src/main/java/com/project/enforce/service/IEnforceOrderService.java                 |   16 
 project-system/src/main/java/com/project/system/service/impl/SysDeptServiceImpl.java                |   37 +
 project-report/src/main/java/com/project/report/service/IReportService.java                         |   39 +
 project-system/src/main/resources/mapper/system/SysUserMapper.xml                                   |    4 
 project-system/src/main/java/com/project/system/service/ISysDeptService.java                        |    8 
 project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java                |    4 
 project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceComplaintLogVo.java              |   16 
 project-report/src/main/resources/mapper/report/ReportMapper.xml                                    |  126 +++++
 project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerServiceImpl.java                |  106 ++++
 project-admin/src/main/java/com/project/admin/controller/enforce/EnforcePeerController.java         |  100 ++++
 project-common/src/main/java/com/project/common/enums/OrderPre.java                                 |    6 
 project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java         |  127 ++++-
 project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceOrderQueryBo.java        |    9 
 project-enforce/src/main/java/com/project/enforce/domain/EnforceComplaintLog.java                   |   12 
 project-enforce/src/main/java/com/project/enforce/mapper/EnforceOrderMapper.java                    |    3 
 project-enforce/src/main/java/com/project/enforce/service/IEnforcePeerService.java                  |   53 ++
 project-enforce/src/main/java/com/project/enforce/service/impl/YPSmsService.java                    |   65 ++
 project-system/src/main/java/com/project/system/mapper/SysUserMapper.java                           |   12 
 project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerMapper.java                     |   13 
 project-admin/src/main/java/com/project/admin/controller/report/ReportController.java               |   37 +
 project-enforce/src/main/java/com/project/enforce/domain/EnforcePeer.java                           |   68 ++
 project-enforce/src/main/java/com/project/enforce/service/impl/CheckServiceImpl.java                |   19 
 project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforcePeerQueryBo.java         |   56 ++
 project-enforce/src/main/java/com/project/enforce/domain/EnforceOrder.java                          |    8 
 project-report/src/main/java/com/project/report/mapper/ReportMapper.java                            |   30 +
 project-system/src/main/java/com/project/system/mapper/SysDictDataMapper.java                       |    3 
 project-enforce/src/main/java/com/project/enforce/domain/vo/EnforcePeerVo.java                      |   45 +
 project-report/src/main/java/com/project/report/service/impl/ReportServiceImpl.java                 |  132 ++++
 project-admin/src/main/java/com/project/admin/controller/enforce/EnforceOrderController.java        |   17 
 project-enforce/src/main/resources/mapper/enforce/EnforcePeerMapper.xml                             |   21 
 project-admin/src/main/java/com/project/admin/controller/system/SysProfileController.java           |    5 
 project-enforce/src/main/resources/mapper/enforce/EnforceOrderMapper.xml                            |   39 -
 project-system/src/main/java/com/project/system/service/ISysUserService.java                        |    9 
 project-system/src/main/java/com/project/system/service/impl/SysDictDataServiceImpl.java            |    5 
 project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforcePeerBo.java               |   50 ++
 project-report/src/main/java/com/project/report/domain/bo/query/ReportQueryBo.java                  |   29 +
 project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceComplaintLogBo.java       |    9 
 43 files changed, 1,259 insertions(+), 175 deletions(-)

diff --git a/project-admin/src/main/java/com/project/admin/controller/enforce/EnforceOrderController.java b/project-admin/src/main/java/com/project/admin/controller/enforce/EnforceOrderController.java
index f02c617..8458e58 100644
--- a/project-admin/src/main/java/com/project/admin/controller/enforce/EnforceOrderController.java
+++ b/project-admin/src/main/java/com/project/admin/controller/enforce/EnforceOrderController.java
@@ -33,6 +33,14 @@
 
     private final IEnforceOrderService iEnforceOrderService;
 
+    @ApiOperation("鎵ф硶鍗曞垪琛�")
+    @GetMapping("/list")
+    public TableDataInfo list(EnforceOrderQueryBo bo)
+    {
+        startPage();
+        List<EnforceOrderVo> list = iEnforceOrderService.queryList(bo);
+        return getDataTable(list);
+    }
 
     @ApiOperation("淇℃伅鍏紡鍒楄〃")
     @GetMapping("/showList")
@@ -40,15 +48,6 @@
     {
         startPage();
         List<EnforceOrderVo> list = iEnforceOrderService.showList();
-        return getDataTable(list);
-    }
-
-    @ApiOperation("鎵ф硶鍗曞垪琛�")
-    @GetMapping("/list")
-    public TableDataInfo list(EnforceOrderQueryBo bo)
-    {
-        startPage();
-        List<EnforceOrderVo> list = iEnforceOrderService.queryList(bo);
         return getDataTable(list);
     }
 
diff --git a/project-admin/src/main/java/com/project/admin/controller/enforce/EnforcePeerController.java b/project-admin/src/main/java/com/project/admin/controller/enforce/EnforcePeerController.java
new file mode 100644
index 0000000..1ae8a80
--- /dev/null
+++ b/project-admin/src/main/java/com/project/admin/controller/enforce/EnforcePeerController.java
@@ -0,0 +1,100 @@
+package com.project.admin.controller.enforce;
+
+import com.project.common.annotation.Log;
+import com.project.common.annotation.RepeatSubmit;
+import com.project.common.core.controller.BaseController;
+import com.project.common.core.domain.AjaxResult;
+import com.project.common.core.page.TableDataInfo;
+import com.project.common.enums.BusinessType;
+import com.project.common.utils.poi.ExcelUtil;
+import com.project.enforce.domain.bo.editBo.EnforcePeerBo;
+import com.project.enforce.domain.bo.queryBo.EnforcePeerQueryBo;
+import com.project.enforce.domain.vo.EnforcePeerVo;
+import com.project.enforce.service.IEnforcePeerService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 鎵ф硶鍗曞悓琛屼汉Controller
+ *
+ * @author manton
+ */
+@Api(value = "鎵ф硶闃熷憳鎺у埗鍣�", tags = {"鎵ф硶鍗曢槦鍛樼鐞�"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/enforce/peer")
+public class EnforcePeerController extends BaseController {
+
+    private final IEnforcePeerService iEnforcePeerService;
+
+
+    @ApiOperation("鏌ヨ鎵ф硶鍗曢槦鍛樺垪琛�")
+    @GetMapping("/list")
+    public TableDataInfo list(EnforcePeerQueryBo bo)
+    {
+        startPage();
+        List<EnforcePeerVo> list = iEnforcePeerService.queryList(bo);
+        return getDataTable(list);
+    }
+
+
+
+    @ApiOperation("瀵煎嚭鎵ф硶鍗曢槦鍛樺垪琛�")
+    //@PreAuthorize("@ss.hasPermi('enforce:peer:export')")
+    @Log(title = "鎵ф硶鍗曞悓琛屼汉", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    @RepeatSubmit
+    public AjaxResult export(EnforcePeerQueryBo bo)
+    {
+        List<EnforcePeerVo> list = iEnforcePeerService.queryList(bo);
+        ExcelUtil<EnforcePeerVo> util = new ExcelUtil<EnforcePeerVo>(EnforcePeerVo.class);
+        return util.exportExcel(list, "鎵ф硶鍗曞悓琛屼汉");
+    }
+
+
+    @ApiOperation("鑾峰彇鎵ф硶鍗曢槦鍛樿缁嗕俊鎭�")
+    @GetMapping("/{id}")
+    public AjaxResult getInfo(@PathVariable("id" ) Long id)
+    {
+        return AjaxResult.success(iEnforcePeerService.queryById(id));
+    }
+
+
+    @ApiOperation("鏂板鎵ф硶鍗曢槦鍛�")
+    //@PreAuthorize("@ss.hasPermi('enforce:peer:add')")
+    @Log(title = "鎵ф硶鍗曢槦鍛�", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @RepeatSubmit
+    public AjaxResult add(@RequestBody EnforcePeerBo bo)
+    {
+        return toAjax(iEnforcePeerService.insertByBo(bo) ? 1 : 0);
+    }
+
+
+    @ApiOperation("淇敼鎵ф硶鍗曢槦鍛�")
+    //@PreAuthorize("@ss.hasPermi('enforce:peer:edit')")
+    @Log(title = "鎵ф硶鍗曢槦鍛�", businessType = BusinessType.UPDATE)
+    @PostMapping("/upd")
+    @RepeatSubmit
+    public AjaxResult upd(@RequestBody EnforcePeerBo bo)
+    {
+        return toAjax(iEnforcePeerService.updateByBo(bo) ? 1 : 0);
+    }
+
+
+    @ApiOperation("鍒犻櫎鎵ф硶鍗曢槦鍛�")
+    //@PreAuthorize("@ss.hasPermi('enforce:peer:remove')")
+    @Log(title = "鎵ф硶鍗曢槦鍛�" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @RepeatSubmit
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(iEnforcePeerService.deleteByIds(Arrays.asList(ids)) ? 1 : 0);
+    }
+}
diff --git a/project-admin/src/main/java/com/project/admin/controller/report/ReportController.java b/project-admin/src/main/java/com/project/admin/controller/report/ReportController.java
index 323b4c7..6082639 100644
--- a/project-admin/src/main/java/com/project/admin/controller/report/ReportController.java
+++ b/project-admin/src/main/java/com/project/admin/controller/report/ReportController.java
@@ -2,6 +2,7 @@
 
 import com.project.common.core.controller.BaseController;
 import com.project.common.core.domain.AjaxResult;
+import com.project.report.domain.bo.query.ReportQueryBo;
 import com.project.report.service.IReportService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -32,17 +33,45 @@
 
     @ApiOperation("鎵ф硶娆℃暟鏈堝害鍒嗗竷")
     @GetMapping("/getMonthCount")
-    public AjaxResult getMonthCount(Long deptId)
+    public AjaxResult getMonthCount(ReportQueryBo bo)
     {
-        return AjaxResult.success(reportService.getMonthCount(deptId));
+        return AjaxResult.success(reportService.getMonthCount(bo));
     }
 
 
     @ApiOperation("鎵ф硶娆℃暟閮ㄩ棬鍒嗗竷")
     @GetMapping("/getDeptCount")
-    public AjaxResult getDeptCount(String yearMonth)
+    public AjaxResult getDeptCount(ReportQueryBo bo)
     {
-        return AjaxResult.success(reportService.getDeptCount(yearMonth));
+        return AjaxResult.success(reportService.getDeptCount(bo));
+    }
+
+    @ApiOperation("浼佷笟琚墽娉曟鏁板垎甯�")
+    @GetMapping("/getCompanyCount")
+    public AjaxResult getCompanyCount(ReportQueryBo bo)
+    {
+        return AjaxResult.success(reportService.getCompanyCount(bo));
+    }
+
+    @ApiOperation("鎵ф硶绫诲瀷鍗犳瘮")
+    @GetMapping("/getEnforceTypeCount")
+    public AjaxResult getEnforceTypeCount(ReportQueryBo bo)
+    {
+        return AjaxResult.success(reportService.getEnforceTypeCount(bo));
+    }
+
+    @ApiOperation("鎶曡瘔鐘舵�佸崰姣�")
+    @GetMapping("/getComplaintStatusCount")
+    public AjaxResult getComplaintStatusCount(ReportQueryBo bo)
+    {
+        return AjaxResult.success(reportService.getComplaintStatusCount(bo));
+    }
+
+    @ApiOperation("鎶曡瘔绫诲瀷鍗犳瘮")
+    @GetMapping("/getComplaintTypeCount")
+    public AjaxResult getComplaintTypeCount(ReportQueryBo bo)
+    {
+        return AjaxResult.success(reportService.getComplaintTypeCount(bo));
     }
 
 }
diff --git a/project-admin/src/main/java/com/project/admin/controller/system/SysProfileController.java b/project-admin/src/main/java/com/project/admin/controller/system/SysProfileController.java
index 65cb3e9..7dacc7f 100644
--- a/project-admin/src/main/java/com/project/admin/controller/system/SysProfileController.java
+++ b/project-admin/src/main/java/com/project/admin/controller/system/SysProfileController.java
@@ -1,6 +1,8 @@
 package com.project.admin.controller.system;
 
 import com.project.common.config.ProjectConfig;
+import com.project.common.core.domain.entity.SysDept;
+import com.project.system.service.ISysDeptService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -35,6 +37,7 @@
 public class SysProfileController extends BaseController
 {
     private final ISysUserService userService;
+    private final ISysDeptService deptService;
     private final TokenService tokenService;
 
 
@@ -45,6 +48,8 @@
     public AjaxResult profile()
     {
         SysUser user = userService.getById(getUserId());
+        SysDept sysDept = deptService.selectDeptById(user.getDeptId());
+        user.setDept(sysDept);
         AjaxResult ajax = AjaxResult.success(user);
         ajax.put("roleGroup", userService.selectUserRoleGroup(user.getUserName()));
         ajax.put("postGroup", userService.selectUserPostGroup(user.getUserName()));
diff --git a/project-common/src/main/java/com/project/common/enums/OrderPre.java b/project-common/src/main/java/com/project/common/enums/OrderPre.java
index b8ec924..683b7f2 100644
--- a/project-common/src/main/java/com/project/common/enums/OrderPre.java
+++ b/project-common/src/main/java/com/project/common/enums/OrderPre.java
@@ -10,11 +10,7 @@
  */
 public enum OrderPre {
 
-    CZDD("鍏呭�煎崟", 1),
-    XSDD("閿�鍞崟", 2),
-    ID("ID", 3),
-    TKDD("閫�娆惧崟", 4),
-    TXDD("鎻愮幇鍗�", 5)
+    ZFD("鎵ф硶鍗�", 1)
     ;
 
 
diff --git a/project-common/src/main/java/com/project/common/sms/YPSmsApi.java b/project-common/src/main/java/com/project/common/sms/YPSmsApi.java
index ef68dea..b3d1067 100644
--- a/project-common/src/main/java/com/project/common/sms/YPSmsApi.java
+++ b/project-common/src/main/java/com/project/common/sms/YPSmsApi.java
@@ -25,9 +25,14 @@
 public class YPSmsApi {
 
     /**
-     * 璇锋眰鍦板潃
+     * 鏅鸿兘鍖归厤妯℃澘鍙戦�佸湴鍧�
      */
-    private static final String YP_SMS_URI = "http://yunpian.com/v1/sms/send.json";
+    private static final String YP_SMS_URI = "https://sms.yunpian.com/v2/sms/single_send.json";
+
+    /**
+     * 妯℃澘鍙戦�佸湴鍧�
+     */
+    private static final String YP_SMS_TMP_URI = "https://sms.yunpian.com/v2/sms/tpl_single_send.json";
 
     /**
      * KEY
@@ -40,25 +45,31 @@
     private static final String SIGN = "銆愰噾鏄庢簮銆�";
 
     /**
+     * 鎵ф硶鍗曠敵璇锋ā鏉�
+     */
+    public static final String APPLY_TMP = "{} 鎻愪氦浜嗘柊鐨勭敵璇峰崟锛岃鎮ㄥ強鏃跺鎵癸紒";
+
+    /**
+     * 鎵ф硶鍗曞鏍稿悗妯℃澘
+     */
+    public static final String CHECK_TMP = "鎮ㄦ彁浜ょ殑鐢宠鍗曞凡琚鎵逛汉 {}, 璇锋偍鍙婃椂鏌ョ湅锛�";
+
+    /**
+     * 浼佷笟閫氱煡妯℃澘
+     */
+    public static final String COMPANY_TMP = "{} 鍗曚綅棰勮灏嗕簬 {} 鍒拌吹鍗曚綅杩涜妫�鏌ワ紝璇锋彁鍓嶇煡鏅擄紒";
+
+    /**
      * 楠岃瘉鐮佹ā鏉�
      */
-    public static final String VERIFY_CODE_TEMPLATE = "鎮ㄧ殑楠岃瘉鐮佹槸{}";
+    public static final String CODE_TMP = "鎮ㄧ殑楠岃瘉鐮佹槸{}";
 
-    /**
-     * 瀹℃壒閫氱煡妯℃澘
-     */
-    public static final String CHECK_NOTICE_TEMPLATE = SIGN + "{}鎻愪氦浜嗘墽娉曠敵璇峰崟锛岃鎮ㄥ強鏃跺鎵癸紒";
-
-    /**
-     * 瀹℃壒閫氳繃妯℃澘
-     */
-    public static final String CHECK_PASS_TEMPLATE = SIGN + "鎮ㄦ彁浜ょ殑鎵ф硶鐢宠鍗曞凡瀹℃壒閫氳繃锛岃鎮ㄥ強鏃舵煡鐪嬶紒";
 
 
 
 
     /**
-     * 鍙戦�佺煭淇�
+     * 绠�鍗曞彂閫佺煭淇�
      * @param mobile 銆�鎺ュ彈鐨勬墜鏈哄彿
      * @param msg   銆�鐭俊鍐呭
      */
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/EnforceComplaintLog.java b/project-enforce/src/main/java/com/project/enforce/domain/EnforceComplaintLog.java
index b3a10ca..68b1881 100644
--- a/project-enforce/src/main/java/com/project/enforce/domain/EnforceComplaintLog.java
+++ b/project-enforce/src/main/java/com/project/enforce/domain/EnforceComplaintLog.java
@@ -9,6 +9,9 @@
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
+
+import java.util.Date;
+
 /**
  * 鎶曡瘔璁板綍瀵硅薄 enforce_complaint_log
  *
@@ -73,6 +76,15 @@
     @ApiModelProperty("鎶曡瘔绫诲瀷")
     private String complaintType;
 
+    @ApiModelProperty("鎶曡瘔鏃堕棿")
+    private Date complaintTime;
+
+    @ApiModelProperty("鍝嶅簲鏃堕棿")
+    private Date inTime;
+
+    @ApiModelProperty("澶勭悊缁撴灉鏃堕棿")
+    private Date resultTime;
+
 
     @ApiModelProperty("鎶曡瘔鍐呭")
     private String complaintReason;
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/EnforceOrder.java b/project-enforce/src/main/java/com/project/enforce/domain/EnforceOrder.java
index cebd7b4..1fc4dea 100644
--- a/project-enforce/src/main/java/com/project/enforce/domain/EnforceOrder.java
+++ b/project-enforce/src/main/java/com/project/enforce/domain/EnforceOrder.java
@@ -100,6 +100,9 @@
     @ApiModelProperty("璁″垝鎵ф硶鏃堕棿")
     private Date planTime;
 
+    @ApiModelProperty("鎵爜鍏ュ満鏃堕棿")
+    private Date inTime;
+
 
     @ApiModelProperty("鎵ф硶闃熷憳浜烘暟")
     private Integer userNum;
@@ -113,7 +116,7 @@
     private String warnReason;
 
 
-    @ApiModelProperty("璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2寰呮墽琛岋紝3宸叉墽琛岋紝4宸茶瘎浠�")
+    @ApiModelProperty("璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2宸插鎵瑰緟鎵ц锛�3宸叉墽琛屽緟涓婃姤锛�4宸蹭笂鎶�")
     private Integer orderStatus;
 
 
@@ -136,6 +139,9 @@
     @ApiModelProperty("褰撳墠瀹℃壒灞傜骇:")
     private Integer checkLevel;
 
+    @ApiModelProperty("褰撳墠瀹℃壒浜篿ds")
+    private String checkIds;
+
 
     @ApiModelProperty("鎵ц浜篿d")
     private Long executeId;
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/EnforcePeer.java b/project-enforce/src/main/java/com/project/enforce/domain/EnforcePeer.java
new file mode 100644
index 0000000..8aa79b9
--- /dev/null
+++ b/project-enforce/src/main/java/com/project/enforce/domain/EnforcePeer.java
@@ -0,0 +1,68 @@
+package com.project.enforce.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 鎵ф硶鍗曞悓琛屼汉瀵硅薄 enforce_peer
+ *
+ * @author manton
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("enforce_peer")
+@ApiModel("鎵ф硶鍗曞悓琛屼汉瀹炰綋瀵硅薄")
+public class EnforcePeer implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+
+    @TableId(value = "id")
+    @ApiModelProperty("ID")
+    private Long id;
+
+
+    @ApiModelProperty("鎵ф硶鍗昳d")
+    private Long orderId;
+
+
+    @ApiModelProperty("鍚岃浜虹被鍨嬶細1鐢宠鑰咃紝2鍚岃浜�")
+    private Integer peerType;
+
+
+    @ApiModelProperty("鍚岃浜篿d")
+    private Long peerId;
+
+
+    @ApiModelProperty("鍚岃浜�")
+    private String peerUser;
+
+
+    @ApiModelProperty("鍚岃浜虹數璇�")
+    private String peerPhone;
+
+
+    @ApiModelProperty("鍚岃浜哄崟浣�")
+    private Long peerDeptId;
+
+
+    @ApiModelProperty("鍚岃浜哄崟浣�")
+    private String peerDeptName;
+
+
+    /**
+     * 閫昏緫鍒犻櫎鐘舵��
+     */
+    @TableLogic(value = "0",delval = "1")
+    private Integer delFlag;
+
+}
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceComplaintLogBo.java b/project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceComplaintLogBo.java
index 41ec2e8..dcaf252 100644
--- a/project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceComplaintLogBo.java
+++ b/project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceComplaintLogBo.java
@@ -67,6 +67,15 @@
     @ApiModelProperty("鎶曡瘔绫诲瀷")
     private String complaintType;
 
+    @ApiModelProperty("鎶曡瘔鏃堕棿")
+    private Date complaintTime;
+
+    @ApiModelProperty("鍝嶅簲鏃堕棿")
+    private Date inTime;
+
+    @ApiModelProperty("澶勭悊缁撴灉鏃堕棿")
+    private Date resultTime;
+
     /** 鎶曡瘔鍐呭 */
     @ApiModelProperty("鎶曡瘔鍐呭")
     private String complaintReason;
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceOrderBo.java b/project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceOrderBo.java
index a2cebdc..2febe57 100644
--- a/project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceOrderBo.java
+++ b/project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceOrderBo.java
@@ -1,12 +1,14 @@
 package com.project.enforce.domain.bo.editBo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.project.enforce.domain.EnforcePeer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 鎵ф硶鍗曠紪杈戝璞� enforce_order
@@ -95,9 +97,15 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date planTime;
 
+    @ApiModelProperty("鎵爜鍏ュ満鏃堕棿")
+    private Date inTime;
+
     /** 鎵ф硶闃熷憳浜烘暟 */
     @ApiModelProperty("鎵ф硶闃熷憳浜烘暟")
     private Integer userNum;
+
+    @ApiModelProperty("鍚岃浜烘暟缁�")
+    private List<EnforcePeer>  peers;
 
     /** 棰勮鐘舵�侊細0姝e父锛�1棰勮 */
     @ApiModelProperty("棰勮鐘舵�侊細0姝e父锛�1棰勮")
@@ -108,7 +116,7 @@
     private String warnReason;
 
     /** 璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2寰呮墽琛岋紝3宸叉墽琛岋紝4宸茶瘎浠� */
-    @ApiModelProperty("璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2寰呮墽琛岋紝3宸叉墽琛岋紝4宸茶瘎浠�")
+    @ApiModelProperty("璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2宸插鎵瑰緟鎵ц锛�3宸叉墽琛屽緟涓婃姤锛�4宸蹭笂鎶�")
     private Integer orderStatus;
 
     /** 瀹℃壒浜哄崟浣� */
@@ -131,6 +139,9 @@
     @ApiModelProperty("褰撳墠瀹℃壒灞傜骇:")
     private Integer checkLevel;
 
+    @ApiModelProperty("褰撳墠瀹℃壒浜篿ds")
+    private String checkIds;
+
     /** 鎵ц浜篿d */
     @ApiModelProperty("鎵ц浜篿d")
     private Long executeId;
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforcePeerBo.java b/project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforcePeerBo.java
new file mode 100644
index 0000000..5973fbe
--- /dev/null
+++ b/project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforcePeerBo.java
@@ -0,0 +1,50 @@
+package com.project.enforce.domain.bo.editBo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 鎵ф硶鍗曞悓琛屼汉缂栬緫瀵硅薄 enforce_peer
+ *
+ * @author manton
+ */
+
+@Data
+@ApiModel("鎵ф硶鍗曞悓琛屼汉鎿嶄綔瀵硅薄")
+public class EnforcePeerBo {
+
+
+    /** ID */
+    @ApiModelProperty("ID")
+    private Long id;
+
+    /** 鎵ф硶鍗昳d */
+    @ApiModelProperty("鎵ф硶鍗昳d")
+    private Long orderId;
+
+    /** 鍚岃浜虹被鍨嬶細1鐢宠鑰咃紝2鍚岃浜� */
+    @ApiModelProperty("鍚岃浜虹被鍨嬶細1鐢宠鑰咃紝2鍚岃浜�")
+    private Integer peerType;
+
+    /** 鍚岃浜篿d */
+    @ApiModelProperty("鍚岃浜篿d")
+    private Long peerId;
+
+    /** 鍚岃浜� */
+    @ApiModelProperty("鍚岃浜�")
+    private String peerUser;
+
+    /** 鍚岃浜虹數璇� */
+    @ApiModelProperty("鍚岃浜虹數璇�")
+    private String peerPhone;
+
+    /** 鍚岃浜哄崟浣� */
+    @ApiModelProperty("鍚岃浜哄崟浣�")
+    private Long peerDeptId;
+
+    /** 鍚岃浜哄崟浣� */
+    @ApiModelProperty("鍚岃浜哄崟浣�")
+    private String peerDeptName;
+}
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceComplaintLogQueryBo.java b/project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceComplaintLogQueryBo.java
index 0955138..b87178e 100644
--- a/project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceComplaintLogQueryBo.java
+++ b/project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceComplaintLogQueryBo.java
@@ -6,6 +6,8 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.Date;
+
 
 /**
  * 鎶曡瘔璁板綍鍒嗛〉鏌ヨ瀵硅薄 enforce_complaint_log
@@ -64,6 +66,17 @@
 	/** 鎶曡瘔绫诲瀷 */
 	@ApiModelProperty("鎶曡瘔绫诲瀷")
 	private String complaintType;
+
+	@ApiModelProperty("鎶曡瘔鏃堕棿")
+	private Date complaintTime;
+
+	@ApiModelProperty("鍝嶅簲鏃堕棿")
+	private Date inTime;
+
+	@ApiModelProperty("澶勭悊缁撴灉鏃堕棿")
+	private Date resultTime;
+
+
 	/** 鎶曡瘔鍐呭 */
 	@ApiModelProperty("鎶曡瘔鍐呭")
 	private String complaintReason;
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceOrderQueryBo.java b/project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceOrderQueryBo.java
index 662a385..7c9414f 100644
--- a/project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceOrderQueryBo.java
+++ b/project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceOrderQueryBo.java
@@ -93,6 +93,9 @@
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private Date planTime;
 
+	@ApiModelProperty("鎵爜鍏ュ満鏃堕棿")
+	private Date inTime;
+
 	/** 鎵ф硶闃熷憳浜烘暟 */
 	@ApiModelProperty("鎵ф硶闃熷憳浜烘暟")
 	private Integer userNum;
@@ -103,7 +106,7 @@
 	@ApiModelProperty("棰勮鍘熷洜")
 	private String warnReason;
 	/** 璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2寰呮墽琛岋紝3宸叉墽琛岋紝4宸茶瘎浠� */
-	@ApiModelProperty("璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2寰呮墽琛岋紝3宸叉墽琛岋紝4宸茶瘎浠�")
+	@ApiModelProperty("璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2宸插鎵瑰緟鎵ц锛�3宸叉墽琛屽緟涓婃姤锛�4宸蹭笂鎶�")
 	private Integer orderStatus;
 	/** 瀹℃壒浜哄崟浣� */
 	@ApiModelProperty("瀹℃壒浜哄崟浣�")
@@ -120,6 +123,10 @@
 	/** 褰撳墠瀹℃壒灞傜骇: */
 	@ApiModelProperty("褰撳墠瀹℃壒灞傜骇:")
 	private Integer checkLevel;
+
+	@ApiModelProperty("褰撳墠瀹℃壒浜篿ds")
+	private String checkIds;
+
 	/** 鎵ц浜篿d */
 	@ApiModelProperty("鎵ц浜篿d")
 	private Long executeId;
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforcePeerQueryBo.java b/project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforcePeerQueryBo.java
new file mode 100644
index 0000000..e579411
--- /dev/null
+++ b/project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforcePeerQueryBo.java
@@ -0,0 +1,56 @@
+package com.project.enforce.domain.bo.queryBo;
+
+import com.project.common.core.domain.BaseQuery;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+ * 鎵ф硶鍗曞悓琛屼汉鍒嗛〉鏌ヨ瀵硅薄 enforce_peer
+ *
+ * @author manton
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel("鎵ф硶鍗曞悓琛屼汉鍒嗛〉鏌ヨ瀵硅薄")
+public class EnforcePeerQueryBo extends BaseQuery{
+
+	/** 鍒嗛〉澶у皬 */
+	@ApiModelProperty("鍒嗛〉澶у皬")
+	private Integer pageSize;
+	/** 褰撳墠椤垫暟 */
+	@ApiModelProperty("褰撳墠椤垫暟")
+	private Integer pageNum;
+	/** 鎺掑簭鍒� */
+	@ApiModelProperty("鎺掑簭鍒�")
+	private String orderByColumn;
+	/** 鎺掑簭鐨勬柟鍚慸esc鎴栬�卆sc */
+	@ApiModelProperty(value = "鎺掑簭鐨勬柟鍚�", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 鎵ф硶鍗昳d */
+	@ApiModelProperty("鎵ф硶鍗昳d")
+	private Long orderId;
+	/** 鍚岃浜虹被鍨嬶細1鐢宠鑰咃紝2鍚岃浜� */
+	@ApiModelProperty("鍚岃浜虹被鍨嬶細1鐢宠鑰咃紝2鍚岃浜�")
+	private Integer peerType;
+	/** 鍚岃浜篿d */
+	@ApiModelProperty("鍚岃浜篿d")
+	private Long peerId;
+	/** 鍚岃浜� */
+	@ApiModelProperty("鍚岃浜�")
+	private String peerUser;
+	/** 鍚岃浜虹數璇� */
+	@ApiModelProperty("鍚岃浜虹數璇�")
+	private String peerPhone;
+	/** 鍚岃浜哄崟浣� */
+	@ApiModelProperty("鍚岃浜哄崟浣�")
+	private Long peerDeptId;
+	/** 鍚岃浜哄崟浣� */
+	@ApiModelProperty("鍚岃浜哄崟浣�")
+	private String peerDeptName;
+
+}
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceComplaintLogVo.java b/project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceComplaintLogVo.java
index 82ccebb..52fe0b6 100644
--- a/project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceComplaintLogVo.java
+++ b/project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceComplaintLogVo.java
@@ -1,9 +1,12 @@
 package com.project.enforce.domain.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.project.common.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import java.util.Date;
 
 
 /**
@@ -53,6 +56,19 @@
 	@Excel(name = "鎶曡瘔绫诲瀷")
 	@ApiModelProperty("鎶曡瘔绫诲瀷")
 	private String complaintType;
+
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty("鎶曡瘔鏃堕棿")
+	private Date complaintTime;
+
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty("鍝嶅簲鏃堕棿")
+	private Date inTime;
+
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty("澶勭悊缁撴灉鏃堕棿")
+	private Date resultTime;
+
 	@Excel(name = "鎶曡瘔鍐呭")
 	@ApiModelProperty("鎶曡瘔鍐呭")
 	private String complaintReason;
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceOrderVo.java b/project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceOrderVo.java
index 6145a70..ab80c57 100644
--- a/project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceOrderVo.java
+++ b/project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceOrderVo.java
@@ -84,6 +84,9 @@
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private Date planTime;
 
+	@ApiModelProperty("鎵爜鍏ュ満鏃堕棿")
+	private Date inTime;
+
 	@Excel(name = "鎵ф硶闃熷憳浜烘暟")
 	@ApiModelProperty("鎵ф硶闃熷憳浜烘暟")
 	private Integer userNum;
@@ -93,8 +96,8 @@
 	@Excel(name = "棰勮鍘熷洜")
 	@ApiModelProperty("棰勮鍘熷洜")
 	private String warnReason;
-	@Excel(name = "璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2寰呮墽琛岋紝3宸叉墽琛岋紝4宸茶瘎浠�")
-	@ApiModelProperty("璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2寰呮墽琛岋紝3宸叉墽琛岋紝4宸茶瘎浠�")
+	@Excel(name = "璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2宸插鎵瑰緟鎵ц锛�3宸叉墽琛屽緟涓婃姤锛�4宸蹭笂鎶�")
+	@ApiModelProperty("璁㈠崟鐘舵�侊細-1鎾ゅ洖锛�0寰呮彁浜わ紝1宸叉彁浜わ紝2宸插鎵瑰緟鎵ц锛�3宸叉墽琛屽緟涓婃姤锛�4宸蹭笂鎶�")
 	private Integer orderStatus;
 	@Excel(name = "瀹℃壒浜哄崟浣�")
 	@ApiModelProperty("瀹℃壒浜哄崟浣�")
@@ -111,6 +114,10 @@
 	@Excel(name = "褰撳墠瀹℃壒灞傜骇:")
 	@ApiModelProperty("褰撳墠瀹℃壒灞傜骇:")
 	private Integer checkLevel;
+
+	@ApiModelProperty("褰撳墠瀹℃壒浜篿ds")
+	private String checkIds;
+
 	@Excel(name = "鎵ц浜篿d")
 	@ApiModelProperty("鎵ц浜篿d")
 	private Long executeId;
diff --git a/project-enforce/src/main/java/com/project/enforce/domain/vo/EnforcePeerVo.java b/project-enforce/src/main/java/com/project/enforce/domain/vo/EnforcePeerVo.java
new file mode 100644
index 0000000..722ed8a
--- /dev/null
+++ b/project-enforce/src/main/java/com/project/enforce/domain/vo/EnforcePeerVo.java
@@ -0,0 +1,45 @@
+package com.project.enforce.domain.vo;
+
+import com.project.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 鎵ф硶鍗曞悓琛屼汉瑙嗗浘瀵硅薄 mall_package
+ *
+ * @author manton
+ */
+@Data
+@ApiModel("鎵ф硶鍗曞悓琛屼汉瑙嗗浘瀵硅薄")
+public class EnforcePeerVo {
+	private static final long serialVersionUID = 1L;
+
+	/** ID */
+	@ApiModelProperty("ID")
+	private Long id;
+
+	@Excel(name = "鎵ф硶鍗昳d")
+	@ApiModelProperty("鎵ф硶鍗昳d")
+	private Long orderId;
+	@Excel(name = "鍚岃浜虹被鍨嬶細1鐢宠鑰咃紝2鍚岃浜�")
+	@ApiModelProperty("鍚岃浜虹被鍨嬶細1鐢宠鑰咃紝2鍚岃浜�")
+	private Integer peerType;
+	@Excel(name = "鍚岃浜篿d")
+	@ApiModelProperty("鍚岃浜篿d")
+	private Long peerId;
+	@Excel(name = "鍚岃浜�")
+	@ApiModelProperty("鍚岃浜�")
+	private String peerUser;
+	@Excel(name = "鍚岃浜虹數璇�")
+	@ApiModelProperty("鍚岃浜虹數璇�")
+	private String peerPhone;
+	@Excel(name = "鍚岃浜哄崟浣�")
+	@ApiModelProperty("鍚岃浜哄崟浣�")
+	private Long peerDeptId;
+	@Excel(name = "鍚岃浜哄崟浣�")
+	@ApiModelProperty("鍚岃浜哄崟浣�")
+	private String peerDeptName;
+
+}
diff --git a/project-enforce/src/main/java/com/project/enforce/mapper/EnforceOrderMapper.java b/project-enforce/src/main/java/com/project/enforce/mapper/EnforceOrderMapper.java
index 4c291ba..e3c2a9b 100644
--- a/project-enforce/src/main/java/com/project/enforce/mapper/EnforceOrderMapper.java
+++ b/project-enforce/src/main/java/com/project/enforce/mapper/EnforceOrderMapper.java
@@ -1,7 +1,6 @@
 package com.project.enforce.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.project.common.vo.KeyVal;
 import com.project.enforce.domain.EnforceOrder;
 import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo;
 import com.project.enforce.domain.vo.EnforceOrderVo;
@@ -18,7 +17,5 @@
 
     List<EnforceOrderVo> selectCheckList(EnforceOrderQueryBo bo);
 
-    List<KeyVal> getMonthCount(Long deptId);
 
-    List<KeyVal> getDeptCount(String yearMonth);
 }
diff --git a/project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerMapper.java b/project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerMapper.java
new file mode 100644
index 0000000..a6dd957
--- /dev/null
+++ b/project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerMapper.java
@@ -0,0 +1,13 @@
+package com.project.enforce.mapper;
+
+import com.project.enforce.domain.EnforcePeer;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 鎵ф硶鍗曞悓琛屼汉Mapper鎺ュ彛
+ *
+ * @author manton
+ */
+public interface EnforcePeerMapper extends BaseMapper<EnforcePeer> {
+
+}
diff --git a/project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerServiceImpl.java b/project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerServiceImpl.java
new file mode 100644
index 0000000..3b357ab
--- /dev/null
+++ b/project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerServiceImpl.java
@@ -0,0 +1,106 @@
+package com.project.enforce.mapper;
+
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.project.common.utils.StringUtils;
+import com.project.enforce.domain.EnforcePeer;
+import com.project.enforce.domain.bo.editBo.EnforcePeerBo;
+import com.project.enforce.domain.bo.queryBo.EnforcePeerQueryBo;
+import com.project.enforce.domain.vo.EnforcePeerVo;
+import com.project.enforce.service.IEnforcePeerService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 鎵ф硶鍗曞悓琛屼汉Service涓氬姟灞傚鐞�
+ *
+ * @author manton
+ */
+@Service
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+public class EnforcePeerServiceImpl extends ServiceImpl<EnforcePeerMapper, EnforcePeer> implements IEnforcePeerService {
+
+
+
+    @Override//鍒楄〃鏌ヨ
+    public List<EnforcePeerVo> queryList(EnforcePeerQueryBo bo)
+    {
+        QueryWrapper<EnforcePeer> qw = getQw(bo);
+        List<EnforcePeer> list = this.list(qw);
+        return Convert.toList(EnforcePeerVo.class , list);
+    }
+
+    @Override//id鏌ヨ
+    public EnforcePeerVo queryById(Long id)
+    {
+        EnforcePeer db = this.baseMapper.selectById(id);
+        return Convert.convert(EnforcePeerVo.class , db);
+    }
+
+
+    @Override//娣诲姞
+    @Transactional
+    public Boolean insertByBo(EnforcePeerBo bo)
+    {
+        EnforcePeer add = Convert.convert(EnforcePeer.class, bo);
+        validEntityBeforeSave(add);
+        return this.save(add);
+    }
+
+    @Override//淇敼
+    @Transactional
+    public Boolean updateByBo(EnforcePeerBo bo)
+    {
+        EnforcePeer update = Convert.convert(EnforcePeer.class, bo);
+        validEntityBeforeSave(update);
+        return this.updateById(update);
+    }
+
+    @Override//鍒犻櫎
+    @Transactional
+    public Boolean deleteByIds(Collection<Long> ids)
+    {
+
+        //鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+
+        return this.removeByIds(ids);
+    }
+
+
+//-------------------------------------------------------------------------------------
+
+    //淇濆瓨鍓嶆牎楠�
+    private void validEntityBeforeSave(EnforcePeer entity)
+    {
+        //鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    //鑾峰彇鏌ヨ鍙傛暟
+    private QueryWrapper<EnforcePeer> getQw(EnforcePeerQueryBo bo)
+    {
+        QueryWrapper<EnforcePeer> qw = Wrappers.query();
+
+            qw.eq(bo.getOrderId()!=null, "order_id", bo.getOrderId());
+            qw.eq(bo.getPeerType() != null, "peer_type", bo.getPeerType());
+            qw.eq(bo.getPeerId() != null, "peer_id", bo.getPeerId());
+            qw.eq(StringUtils.isNotEmpty(bo.getPeerUser()), "peer_user", bo.getPeerUser());
+            qw.eq(StringUtils.isNotEmpty(bo.getPeerPhone()), "peer_phone", bo.getPeerPhone());
+            qw.eq(bo.getPeerDeptId() != null, "peer_dept_id", bo.getPeerDeptId());
+            qw.like(StringUtils.isNotEmpty(bo.getPeerDeptName()), "peer_dept_name", bo.getPeerDeptName());
+        if (StringUtils.isNotEmpty(bo.getIsAsc()) && StringUtils.isNotEmpty(bo.getOrderByColumn())){
+            if ("acs".equals(bo.getIsAsc())) {
+                qw.orderByAsc(bo.getOrderByColumn());
+            } else if ("desc".equals(bo.getIsAsc())) {
+                qw.orderByDesc(bo.getOrderByColumn());
+            }
+        }
+        return qw;
+    }
+}
diff --git a/project-enforce/src/main/java/com/project/enforce/service/IEnforceOrderService.java b/project-enforce/src/main/java/com/project/enforce/service/IEnforceOrderService.java
index 6a0c78e..e980db3 100644
--- a/project-enforce/src/main/java/com/project/enforce/service/IEnforceOrderService.java
+++ b/project-enforce/src/main/java/com/project/enforce/service/IEnforceOrderService.java
@@ -1,7 +1,6 @@
 package com.project.enforce.service;
 
 import com.project.common.mybatis.IBaseService;
-import com.project.common.vo.KeyVal;
 import com.project.enforce.domain.EnforceOrder;
 import com.project.enforce.domain.bo.editBo.EnforceOrderBo;
 import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo;
@@ -63,17 +62,12 @@
 
 
 	/**
-	 * 鎵ф硶娆℃暟鏈堝害鍒嗗竷
-	 * @param deptId	鏈烘瀯id
-	 * @return	鏈堝害鍒嗗竷
+	 * 鑾峰彇涓嬩竴绾у鎵逛汉鐢佃瘽
+	 * @param checkLevel 褰撳墠瀹℃壒绾у埆
+	 * @param applyDeptId 鐢宠閮ㄩ棬id
+	 * @return	瀹℃壒浜篿ds
 	 */
-	List<KeyVal> getMonthCount(Long deptId);
+	List<String> getCheckPhones(Integer checkLevel, Long applyDeptId);
 
 
-	/**
-	 * 鎵ф硶娆℃暟閮ㄩ棬鍒嗗竷
-	 * @param yearMonth	骞存湀
-	 * @return	閮ㄩ棬鍒嗗竷
-	 */
-	List<KeyVal> getDeptCount(String yearMonth);
 }
diff --git a/project-enforce/src/main/java/com/project/enforce/service/IEnforcePeerService.java b/project-enforce/src/main/java/com/project/enforce/service/IEnforcePeerService.java
new file mode 100644
index 0000000..1d53d2a
--- /dev/null
+++ b/project-enforce/src/main/java/com/project/enforce/service/IEnforcePeerService.java
@@ -0,0 +1,53 @@
+package com.project.enforce.service;
+
+import com.project.enforce.domain.EnforcePeer;
+import com.project.enforce.domain.vo.EnforcePeerVo;
+import com.project.enforce.domain.bo.editBo.EnforcePeerBo;
+import com.project.enforce.domain.bo.queryBo.EnforcePeerQueryBo;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.project.common.mybatis.IBaseService;
+import cn.hutool.core.convert.Convert;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 鎵ф硶鍗曞悓琛屼汉Service鎺ュ彛
+ *
+ * @author manton
+ */
+public interface IEnforcePeerService extends IBaseService<EnforcePeer> {
+
+    /**
+	 * 鏌ヨ鍒楄〃
+	 */
+    List<EnforcePeerVo> queryList(EnforcePeerQueryBo bo);
+
+    /**
+	 * 鏌ヨ鍗曚釜
+	 * @return  EnforcePeerVo
+	 */
+	EnforcePeerVo queryById(Long id);
+
+
+	/**
+	 * 鏍规嵁鏂板涓氬姟瀵硅薄鎻掑叆鎵ф硶鍗曞悓琛屼汉
+	 * @param bo 鎵ф硶鍗曞悓琛屼汉鏂板涓氬姟瀵硅薄
+	 * @return  true鎴愬姛 false澶辫触
+	 */
+	Boolean insertByBo(EnforcePeerBo bo);
+
+	/**
+	 * 鏍规嵁缂栬緫涓氬姟瀵硅薄淇敼鎵ф硶鍗曞悓琛屼汉
+	 * @param bo 鎵ф硶鍗曞悓琛屼汉缂栬緫涓氬姟瀵硅薄
+	 * @return  true鎴愬姛 false澶辫触
+	 */
+	Boolean updateByBo(EnforcePeerBo bo);
+
+	/**
+	 * 鏍¢獙骞跺垹闄ゆ暟鎹�
+	 * @param ids 涓婚敭闆嗗悎
+	 * @return  true鎴愬姛 false澶辫触
+	 */
+	Boolean deleteByIds(Collection<Long> ids);
+}
diff --git a/project-enforce/src/main/java/com/project/enforce/service/impl/CheckServiceImpl.java b/project-enforce/src/main/java/com/project/enforce/service/impl/CheckServiceImpl.java
index 29fa7fe..c6b20d5 100644
--- a/project-enforce/src/main/java/com/project/enforce/service/impl/CheckServiceImpl.java
+++ b/project-enforce/src/main/java/com/project/enforce/service/impl/CheckServiceImpl.java
@@ -14,7 +14,6 @@
 import com.project.system.domain.bo.editBo.CheckBo;
 import com.project.system.domain.bo.editBo.SysCompanyBo;
 import com.project.system.service.ISysCompanyService;
-import com.project.system.service.ISysUserService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -37,7 +36,7 @@
     private final ISysCompanyService companyService;
     private final IEnforceOrderService orderService;
     private final IEnforceCheckLogService checkLogService;
-    private final ISysUserService userService;
+    private final YPSmsService smsService;
 
     @Override
     @Transactional
@@ -71,16 +70,24 @@
                 addCheckLog(order, bo);
                 if (bo.getCheckStatus()==-1){
                     order.setCheckStatus(-1);
+                    //瀹℃壒鎷掔粷锛岀粰鐢宠浜哄彂閫佺煭淇★紝濡傛灉閫氱煡浼佷笟涔熺粰浼佷笟鍙戦�佺煭淇�
+                    smsService.sendCheckMsg(order.getApplyPhone(), order.getCheckStatus());
                 } else {
-                    String roleKey = "check_enforce_" + (order.getCheckLevel() + 1);
-                    List<Long> ids = userService.getNumByRoleKey(roleKey, order.getCheckDeptId());
-                    if (StringUtils.isNotEmpty(ids)){
+                    List<String> phones = orderService.getCheckPhones(order.getCheckLevel(), order.getApplyDeptId());
+                    if (StringUtils.isNotEmpty(phones)){
                         order.setCheckStatus(1);
+                        //缁欎笅涓�绾у鎵逛汉鍙戦�佺煭淇�
+                        smsService.sendApplyMsg(phones, order.getApplyUser());
                     } else {
                         order.setCheckStatus(2);
                         order.setOrderStatus(2);
+                        //瀹℃壒閫氳繃锛岀粰鐢宠浜哄彂閫佺煭淇★紝濡傛灉閫氱煡浼佷笟涔熺粰浼佷笟鍙戦�佺煭淇�
+                        smsService.sendCheckMsg(order.getApplyPhone(), order.getCheckStatus());
+                        if (order.getIsNoticeCompany()==1){
+                            smsService.sendCompanyMsg(order.getCompanyPhone(), order.getApplyDeptName(), order.getPlanTime());
+                        }
                     }
-                    //瀹℃壒鐧昏鍔�1
+                    //瀹℃壒绛夌骇鍔�1
                     order.setCheckLevel(order.getCheckLevel()+1);
                 }
                 order.setCheckReason(bo.getCheckReason());
diff --git a/project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java b/project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java
index db43b7e..fce5771 100644
--- a/project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java
+++ b/project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java
@@ -5,28 +5,30 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.project.common.annotation.DataScope;
-import com.project.common.constant.CheckLevelCodeConstants;
-import com.project.common.core.domain.entity.SysRole;
 import com.project.common.core.domain.entity.SysUser;
-import com.project.common.exception.base.BaseException;
+import com.project.common.enums.OrderPre;
+import com.project.common.sms.YPSmsApi;
 import com.project.common.utils.SecurityUtils;
 import com.project.common.utils.StringUtils;
-import com.project.common.vo.KeyVal;
 import com.project.enforce.domain.EnforceOrder;
+import com.project.enforce.domain.EnforcePeer;
 import com.project.enforce.domain.bo.editBo.EnforceOrderBo;
 import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo;
 import com.project.enforce.domain.vo.EnforceOrderVo;
 import com.project.enforce.mapper.EnforceOrderMapper;
 import com.project.enforce.service.IEnforceOrderService;
+import com.project.enforce.service.IEnforcePeerService;
 import com.project.system.service.ISysDeptService;
+import com.project.system.service.ISysOrderNoService;
+import com.project.system.service.ISysUserService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Collection;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 鎵ф硶鍗昐ervice涓氬姟灞傚鐞�
@@ -37,9 +39,10 @@
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 public class EnforceOrderServiceImpl extends ServiceImpl<EnforceOrderMapper, EnforceOrder> implements IEnforceOrderService {
 
+    private final ISysUserService userService;
     private final ISysDeptService deptService;
-    private final EnforceOrderMapper orderMapper;
-
+    private final ISysOrderNoService orderNoService;
+    private final IEnforcePeerService peerService;
 
     @Override//鍒楄〃鏌ヨ
     @DataScope(deptAlias = "apply_dept_id", userAlias = "apply_user_id")
@@ -55,22 +58,8 @@
     public List<EnforceOrderVo> queryCheckList(EnforceOrderQueryBo bo)
     {
         SysUser loginUser = SecurityUtils.getLoginUser().getUser();
-        if (bo.getIsCheckQuery()!=null && bo.getIsCheckQuery()==1){
-            List<String> roleKeys = loginUser.getRoles().stream().map(SysRole::getRoleKey).collect(Collectors.toList());
-            if (roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_ONE) && roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_TWO)){
-                bo.setCheckLevel(null);
-            } else if (roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_ONE)){
-                bo.setCheckLevel(0);
-            } else if (roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_TWO)) {
-                bo.setCheckLevel(1);
-            } else {
-                throw new BaseException("鎮ㄦ病鏈夊鎵规潈闄愶紝璇烽噸璇曪紒");
-            }
-        }
-
-        bo.setCheckDeptId(deptService.getCheckDeptIdByLoginDeptId(loginUser.getDeptId()));
+        bo.setCheckIds(loginUser.getPhonenumber());
         bo.setApplyDeptIds(deptService.getApplyDeptIdsByLoginUserId(loginUser.getUserId()));
-
         return this.baseMapper.selectCheckList(bo);
     }
 
@@ -94,8 +83,33 @@
     public Boolean insertByBo(EnforceOrderBo bo)
     {
         EnforceOrder add = Convert.convert(EnforceOrder.class, bo);
+        add.setCheckLevel(0);
         validEntityBeforeSave(add);
-        return this.save(add);
+        List<String> phones = getCheckPhones(add.getCheckLevel(), add.getApplyDeptId());
+        if (StringUtils.isNotEmpty(phones)){
+            String checkPhones = StringUtils.join(phones, ",");
+            add.setCheckIds(checkPhones);
+        }
+        this.save(add);
+        bo.getPeers().add(new EnforcePeer()
+                .setPeerType(1)
+                .setPeerId(add.getApplyId())
+                .setPeerUser(add.getApplyUser())
+                .setPeerPhone(add.getApplyPhone())
+                .setPeerDeptId(add.getApplyDeptId())
+                .setPeerDeptName(add.getApplyDeptName())
+        );
+        //澶勭悊鎵ф硶浜哄憳淇℃伅
+        for (EnforcePeer peer : bo.getPeers())
+        {
+            peer.setOrderId(add.getOrderId());
+            peer.setPeerDeptName(deptService.getDeptAllName(peer.getPeerDeptId()));
+        }
+        boolean savePeers = peerService.saveOrUpdateBatch(bo.getPeers());
+        if (savePeers && StringUtils.isNotEmpty(phones)) {
+            sendApplyMsg(phones, add.getApplyUser());
+        }
+        return savePeers;
     }
 
     @Override//淇敼
@@ -117,26 +131,48 @@
         return this.removeByIds(ids);
     }
 
-    @Override//鏈堝害鍒嗗竷
-    public List<KeyVal> getMonthCount(Long deptId) {
-        return orderMapper.getMonthCount(deptId);
-    }
-
-    @Override//閮ㄩ棬鍒嗗竷
-    public List<KeyVal> getDeptCount(String yearMonth)
+    @Override
+    public List<String> getCheckPhones(Integer checkLevel, Long applyDeptId)
     {
-        return orderMapper.getDeptCount(yearMonth);
+        return getCheckPhones(checkLevel, applyDeptId, 0);
     }
 
 
 //-------------------------------------------------------------------------------------
 
+
+    /**
+     * 鍙戦�佸鎵圭煭淇�
+     * @param phones    鎵嬫満鍙�
+     * @param applyUser 鐢宠浜�
+     */
+    @Async
+    public void sendApplyMsg(List<String> phones, String applyUser)
+    {
+        String applyMsg = StringUtils.format(StringUtils.format(YPSmsApi.APPLY_TMP, applyUser));
+        phones.forEach(phone->{
+            YPSmsApi.sendSms(phone, applyMsg) ;
+        });
+    }
+
     //淇濆瓨鍓嶆牎楠�
     private void validEntityBeforeSave(EnforceOrder entity)
     {
         if (entity.getOrderId()==null){
+            String orderNo = orderNoService.getOrderNo(OrderPre.ZFD.getIndex());
+            entity.setOrderNo(orderNo);
             entity.setCheckDeptId(deptService.getCheckDeptIdByLoginDeptId(entity.getApplyDeptId()));
         }
+        if (StringUtils.isEmpty(entity.getApplyDeptName())){
+            entity.setApplyDeptName(deptService.getDeptAllName(entity.getApplyDeptId()));
+        }
+        if (StringUtils.isEmpty(entity.getExecuteDeptName())){
+            entity.setExecuteDeptName(deptService.getDeptAllName(entity.getExecuteDeptId()));
+        }
+        if (StringUtils.isEmpty(entity.getCheckDeptName())){
+            entity.setCheckDeptName(deptService.getDeptAllName(entity.getCheckDeptId()));
+        }
+
     }
 
     //鑾峰彇鏌ヨ鍙傛暟
@@ -162,6 +198,7 @@
         qw.like(StringUtils.isNotEmpty(bo.getApplyDeptName()), "apply_dept_name", bo.getApplyDeptName());
         qw.eq(bo.getApplyTime() != null, "apply_time", bo.getApplyTime());
         qw.eq(bo.getPlanTime() != null, "plan_time", bo.getPlanTime());
+        qw.eq(bo.getInTime() != null, "in_time", bo.getInTime());
         qw.eq(bo.getUserNum() != null, "user_num", bo.getUserNum());
         qw.eq(bo.getWarnStatus() != null, "warn_status", bo.getWarnStatus());
         qw.eq(StringUtils.isNotEmpty(bo.getWarnReason()), "warn_reason", bo.getWarnReason());
@@ -194,4 +231,32 @@
         }
         return qw;
     }
+
+
+    /**
+     * 鑾峰彇瀹℃壒浜篿d
+     * @param checkLevel  瀹℃壒绾у埆锛氶粯璁�0
+     * @param deptId  鐢宠閮ㄩ棬id
+     */
+    private List<String> getCheckPhones(Integer checkLevel, Long deptId, int current)
+    {
+        if (checkLevel==3){
+            if (current==1){
+                return null;
+            }
+            checkLevel = 0;
+            deptId = deptService.getById(deptId).getParentId();
+            current++;
+            getCheckPhones(checkLevel, deptId, current);
+        }
+        checkLevel++;
+        String checkKey = "check_enforce_";
+        List<String> phones = userService.getPhonesByRoleKey(checkKey + checkLevel, deptId);
+        if (StringUtils.isNotEmpty(phones)){
+            return phones;
+        }
+        return getCheckPhones(checkLevel, deptId, current);
+    }
+
+
 }
diff --git a/project-enforce/src/main/java/com/project/enforce/service/impl/YPSmsService.java b/project-enforce/src/main/java/com/project/enforce/service/impl/YPSmsService.java
new file mode 100644
index 0000000..ae27e73
--- /dev/null
+++ b/project-enforce/src/main/java/com/project/enforce/service/impl/YPSmsService.java
@@ -0,0 +1,65 @@
+package com.project.enforce.service.impl;
+
+import com.project.common.sms.YPSmsApi;
+import com.project.common.utils.DateUtils;
+import com.project.common.utils.StringUtils;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鍔熻兘鎻忚堪锛�
+ *
+ * @author ZQN
+ * @version 1.0
+ */
+
+@Service
+public class YPSmsService
+{
+    /**
+     * 鐢宠鍙戦�佸鎵圭煭淇�
+     * @param phones    鎵嬫満鍙�
+     * @param applyUser 鐢宠浜�
+     */
+    @Async
+    public void sendApplyMsg(List<String> phones, String applyUser)
+    {
+        String applyMsg = StringUtils.format(StringUtils.format(YPSmsApi.APPLY_TMP, applyUser));
+        phones.forEach(phone->{
+            YPSmsApi.sendSms(phone, applyMsg) ;
+        });
+    }
+
+    /**
+     * 瀹℃壒鍚庡彂閫佺粨鏋滅煭淇�
+     * @param phone    鎵嬫満鍙�
+     * @param checkStatus    鐘舵�侊細-1鎷掔粷锛�2閫氳繃
+     */
+    @Async
+    public void sendCheckMsg(String phone, Integer checkStatus)
+    {
+        String result = "鎷掔粷";
+        if (checkStatus>0){
+            result = "瀹℃壒閫氳繃";
+        }
+        String applyMsg = StringUtils.format(StringUtils.format(YPSmsApi.CHECK_TMP, result));
+        YPSmsApi.sendSms(phone, applyMsg) ;
+    }
+
+    /**
+     * 閫氱煡浼佷笟寮�鍚彂閫佷紒涓氱煭淇�
+     * @param phone    鎵嬫満鍙�
+     * @param applyDeptName   鎵ф硶閮ㄩ棬
+     * @param planTime    鏃堕棿
+     */
+    @Async
+    public void sendCompanyMsg(String phone, String applyDeptName, Date planTime)
+    {
+        String date = DateUtils.getFormatDatedd(planTime);
+        String applyMsg = StringUtils.format(StringUtils.format(YPSmsApi.COMPANY_TMP, applyDeptName, date));
+        YPSmsApi.sendSms(phone, applyMsg) ;
+    }
+}
diff --git a/project-enforce/src/main/resources/mapper/enforce/EnforceOrderMapper.xml b/project-enforce/src/main/resources/mapper/enforce/EnforceOrderMapper.xml
index ce87128..ab4be13 100644
--- a/project-enforce/src/main/resources/mapper/enforce/EnforceOrderMapper.xml
+++ b/project-enforce/src/main/resources/mapper/enforce/EnforceOrderMapper.xml
@@ -24,6 +24,7 @@
         <result property="applyDeptName"    column="apply_dept_name"    />
         <result property="applyTime"    column="apply_time"    />
         <result property="planTime"    column="plan_time"    />
+        <result property="inTime"    column="in_time"    />
         <result property="userNum"    column="user_num"    />
         <result property="warnStatus"    column="warn_status"    />
         <result property="warnReason"    column="warn_reason"    />
@@ -72,19 +73,12 @@
             <if test="companyName != null and companyName != ''">
                 AND company_name like concat('%', #{companyName}, '%')
             </if>
-
             <if test="orderStatus != null and orderStatus != ''">
                 AND order_status = #{orderStatus}
             </if>
-
-            <if test="checkDeptId != null ">
-                AND check_dept_id = #{checkDeptId}
+            <if test="checkIds != null and checkIds != '' ">
+                AND check_ids like concat('%', #{checkIds}, '%')
             </if>
-
-            <if test="checkLevel != null ">
-                AND check_level = #{checkLevel}
-            </if>
-
             <if test="applyDeptIds != null ">
                 AND apply_dept_id in
                 <foreach collection="applyDeptIds" item="applyDeptId" open="(" separator="," close=")">
@@ -94,32 +88,5 @@
         </where>
     </select>
 
-    <select id="getMonthCount"
-            parameterType="Long"
-            resultType="com.project.common.vo.KeyVal">
-        select
-            MONTH(apply_time) AS k,
-            IFNULL(count(order_id),0) as v
-        from enforce_order
-        where 1=1
-        <if test="deptId != null ">
-            AND apply_dept_id = #{deptId}
-        </if>
-        GROUP BY k
-    </select>
-
-    <select id="getDeptCount"
-            parameterType="String"
-            resultType="com.project.common.vo.KeyVal">
-        select
-        MONTH(check_dept_id) AS k,
-        IFNULL(count(order_id),0) as v
-        from enforce_order
-        where 1=1
-        <if test="yearMonth!=null and yearMonth!=''">
-            AND apply_time like concat('%', #{yearMonth}, '%')
-        </if>
-        GROUP BY k
-    </select>
 
 </mapper>
diff --git a/project-enforce/src/main/resources/mapper/enforce/EnforcePeerMapper.xml b/project-enforce/src/main/resources/mapper/enforce/EnforcePeerMapper.xml
new file mode 100644
index 0000000..892179f
--- /dev/null
+++ b/project-enforce/src/main/resources/mapper/enforce/EnforcePeerMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.project.enforce.mapper.EnforcePeerMapper">
+    
+    <resultMap type="EnforcePeer" id="EnforcePeerResult">
+        <result property="id"    column="id"    />
+        <result property="orderId"    column="order_id"    />
+        <result property="peerType"    column="peer_type"    />
+        <result property="peerId"    column="peer_id"    />
+        <result property="peerUser"    column="peer_user"    />
+        <result property="peerPhone"    column="peer_phone"    />
+        <result property="peerDeptId"    column="peer_dept_id"    />
+        <result property="peerDeptName"    column="peer_dept_name"    />
+        <result property="delFlag"    column="del_flag"    />
+    </resultMap>
+
+
+
+</mapper>
\ No newline at end of file
diff --git a/project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java b/project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java
index d0faebe..8cb0c51 100644
--- a/project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java
+++ b/project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java
@@ -142,7 +142,7 @@
     }
 
     private boolean sendYp(String phone, String code ){
-        String result = YPSmsApi.sendSms(phone, StringUtils.format(YPSmsApi.VERIFY_CODE_TEMPLATE, code, Constants.PHONE_EXPIRATION));
+        String result = YPSmsApi.sendSms(phone, StringUtils.format(YPSmsApi.CODE_TMP, code, Constants.PHONE_EXPIRATION));
         if (result.contains("\"code\":0,\"msg\":\"OK\"")){
             log.info("鍙戦�佹垚鍔� ->楠岃瘉鐮侊細"+code);
             return true;
diff --git a/project-report/src/main/java/com/project/report/domain/bo/query/ReportQueryBo.java b/project-report/src/main/java/com/project/report/domain/bo/query/ReportQueryBo.java
new file mode 100644
index 0000000..3981e79
--- /dev/null
+++ b/project-report/src/main/java/com/project/report/domain/bo/query/ReportQueryBo.java
@@ -0,0 +1,29 @@
+package com.project.report.domain.bo.query;
+
+import com.project.common.core.domain.BaseQuery;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 鍔熻兘鎻忚堪锛�
+ *
+ * @author ZQN
+ * @version 1.0
+ */
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ReportQueryBo extends BaseQuery
+{
+
+    @ApiModelProperty("閮ㄩ棬id")
+    private Long deptId;
+
+    @ApiModelProperty("鎶曡瘔澶勭悊鐘舵�侊細0鏈鐞嗭紝1宸插鐞�")
+    private Integer doComplaint;
+
+
+
+
+}
diff --git a/project-report/src/main/java/com/project/report/mapper/ReportMapper.java b/project-report/src/main/java/com/project/report/mapper/ReportMapper.java
new file mode 100644
index 0000000..76e1307
--- /dev/null
+++ b/project-report/src/main/java/com/project/report/mapper/ReportMapper.java
@@ -0,0 +1,30 @@
+package com.project.report.mapper;
+
+import com.project.common.vo.KeyVal;
+import com.project.report.domain.bo.query.ReportQueryBo;
+
+import java.util.List;
+
+/**
+ * 鍔熻兘鎻忚堪锛�
+ *
+ * @author ZQN
+ * @version 1.0
+ */
+
+
+public interface ReportMapper
+{
+
+    List<KeyVal> getMonthCount(ReportQueryBo bo);
+
+    List<KeyVal> getDeptCount(ReportQueryBo bo);
+
+    List<KeyVal> getCompanyCount(ReportQueryBo bo);
+
+    List<KeyVal> getEnforceTypeCount(ReportQueryBo bo);
+
+    List<KeyVal> getComplaintStatusCount(ReportQueryBo bo);
+
+    List<KeyVal> getComplaintTypeCount(ReportQueryBo bo);
+}
diff --git a/project-report/src/main/java/com/project/report/service/IReportService.java b/project-report/src/main/java/com/project/report/service/IReportService.java
index 0f5d6eb..0a89986 100644
--- a/project-report/src/main/java/com/project/report/service/IReportService.java
+++ b/project-report/src/main/java/com/project/report/service/IReportService.java
@@ -1,6 +1,7 @@
 package com.project.report.service;
 
 import com.project.common.vo.KeyVal;
+import com.project.report.domain.bo.query.ReportQueryBo;
 
 import java.util.List;
 import java.util.Map;
@@ -22,15 +23,45 @@
 
     /**
      * 鎵ф硶娆℃暟鏈堝害鍒嗗竷
-     * @param deptId    閮ㄩ棬id
+     * @param bo    閮ㄩ棬id
      * @return  鎵ф硶娆℃暟
      */
-    List<KeyVal> getMonthCount(Long deptId);
+    List<KeyVal> getMonthCount(ReportQueryBo bo);
 
     /**
      * 鎵ф硶娆℃暟閮ㄩ棬鍒嗗竷
-     * @param yearMonth    骞存湀
+     * @param bo    骞存湀
      * @return  鎵ф硶娆℃暟
      */
-    List<KeyVal> getDeptCount(String yearMonth);
+    List<KeyVal> getDeptCount(ReportQueryBo bo);
+
+    /**
+     * 浼佷笟琚墽娉曟鏁板垎甯�
+     * @param bo    骞存湀
+     * @return  浼佷笟琚墽娉曟鏁�
+     */
+    List<KeyVal> getCompanyCount(ReportQueryBo bo);
+
+
+    /**
+     * 鎵ф硶绫诲瀷鍗犳瘮
+     * @param bo    骞存湀
+     * @return  鎵ф硶绫诲瀷
+     */
+    List<KeyVal>  getEnforceTypeCount(ReportQueryBo bo);
+
+
+    /**
+     * 鎶曡瘔鐘舵�佸崰姣�
+     * @param bo    骞存湀
+     * @return  鎶曡瘔鐘舵��
+     */
+    List<KeyVal>  getComplaintStatusCount(ReportQueryBo bo);
+
+    /**
+     * 鎵ф硶绫诲瀷鍗犳瘮
+     * @param bo    骞存湀
+     * @return  鎵ф硶绫诲瀷鍗犳瘮
+     */
+    List<KeyVal>  getComplaintTypeCount(ReportQueryBo bo);
 }
diff --git a/project-report/src/main/java/com/project/report/service/impl/ReportServiceImpl.java b/project-report/src/main/java/com/project/report/service/impl/ReportServiceImpl.java
index b3df464..b02da7c 100644
--- a/project-report/src/main/java/com/project/report/service/impl/ReportServiceImpl.java
+++ b/project-report/src/main/java/com/project/report/service/impl/ReportServiceImpl.java
@@ -1,22 +1,26 @@
 package com.project.report.service.impl;
 
 import com.project.common.core.domain.entity.SysDept;
+import com.project.common.core.domain.entity.SysDictData;
 import com.project.common.core.domain.entity.SysUser;
 import com.project.common.vo.KeyVal;
 import com.project.enforce.domain.EnforceOrder;
 import com.project.enforce.service.IEnforceComplaintLogService;
 import com.project.enforce.service.IEnforceOrderService;
+import com.project.report.domain.bo.query.ReportQueryBo;
+import com.project.report.mapper.ReportMapper;
 import com.project.report.service.IReportService;
 import com.project.system.domain.SysCompany;
 import com.project.system.domain.SysDoc;
-import com.project.system.service.ISysCompanyService;
-import com.project.system.service.ISysDeptService;
-import com.project.system.service.ISysDocService;
-import com.project.system.service.ISysUserService;
+import com.project.system.service.*;
 import lombok.RequiredArgsConstructor;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -34,41 +38,124 @@
     private final ISysDeptService deptService;
     private final ISysUserService userService;
     private final ISysDocService docService;
+    private final ISysDictDataService dictDataService;
     private final IEnforceOrderService orderService;
     private final IEnforceComplaintLogService complaintLogService;
+    private final ReportMapper reportMapper;
+
 
     private final String[] months = {"1","2","3","4","5","6","7","8","9","10","11","12"};
+    private final String[] complaintStatus = {"-1","0","1","2"};
 
     @Override//姹囨��
     public Map<String, Object> getTotalInfo()
     {
-
         int companyNum = companyService.count(companyService.lq().eq(SysCompany::getCompanyStatus, 0));
         int enforceCompanyNum = orderService.count(orderService.lq().groupBy(EnforceOrder::getCompanyId));
         int enforceDeptNum = deptService.count(deptService.lq().eq(SysDept::getParentId,100));
         int enforceUserNum = userService.count(userService.lq().ne(SysUser::getUserType,"02"));
         int enforceOrderNum = orderService.count();
+        int enforceOrderCheckedNum = orderService.count(orderService.lq().eq(EnforceOrder::getOrderStatus,2));
+        int enforceOrderCompleteNum = orderService.count(orderService.lq().eq(EnforceOrder::getOrderStatus,4));
         int complaintNum = complaintLogService.count();
         int docNum = docService.count(docService.lq().eq(SysDoc::getDocStatus,0));
-
         Map<String, Object> result = new HashMap<>(7);
         result.put("companyNum", companyNum);
         result.put("enforceCompanyNum", enforceCompanyNum);
         result.put("enforceDeptNum", enforceDeptNum);
         result.put("enforceUserNum", enforceUserNum);
         result.put("enforceOrderNum", enforceOrderNum);
+        result.put("enforceOrderCheckedNum", enforceOrderCheckedNum);
+        result.put("enforceOrderCompleteNum", enforceOrderCompleteNum);
         result.put("complaintNum", complaintNum);
         result.put("docNum", docNum);
         return result;
     }
 
     @Override//鎵ф硶鍗曚綅鎵ф硶娆℃暟鏈堝害鍒嗗竷
-    public List<KeyVal> getMonthCount(Long deptId)
+    public List<KeyVal> getMonthCount(ReportQueryBo bo)
     {
-        List<KeyVal> list = orderService.getMonthCount(deptId);
-        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK,KeyVal::getV));
+        List<KeyVal> list = reportMapper.getMonthCount(bo);
+        return getKeyVal(list, months);
+    }
 
-        return Arrays.stream(months).map(e -> {
+    @Override//鎵ф硶鍗曚綅鎵ф硶娆℃暟閮ㄩ棬鍒嗗竷
+    public List<KeyVal> getDeptCount(ReportQueryBo bo)
+    {
+        List<KeyVal> list = reportMapper.getDeptCount(bo);
+        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK,KeyVal::getV));
+        List<SysDept> deptList = deptService.list(deptService.lq().eq(SysDept::getParentId, 100));
+        return deptList.stream().map(e -> {
+            KeyVal keyVal;
+            if (resultMap.get(e.getDeptId().toString()) == null) {
+                keyVal = new KeyVal(e.getDeptName(), 0);
+            } else {
+                keyVal = new KeyVal(e.getDeptName(), resultMap.get(e.getDeptId().toString()));
+            }
+            return keyVal;
+        }).collect(Collectors.toList());
+    }
+
+    @Override//浼佷笟琚墽娉曟鏁板垎甯�
+    public List<KeyVal> getCompanyCount(ReportQueryBo bo)
+    {
+        List<KeyVal> list = reportMapper.getCompanyCount(bo);
+        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK, KeyVal::getV));
+
+        List<SysCompany> companies = companyService.list(companyService.lq().eq(SysCompany::getCompanyStatus, 0));
+
+        return companies.stream().map(e -> {
+            KeyVal keyVal;
+            if (resultMap.get(e.getCompanyId().toString()) == null) {
+                keyVal = new KeyVal(e.getCompanyName(), 0);
+            } else {
+                keyVal = new KeyVal(e.getCompanyName(), resultMap.get(e.getCompanyId().toString()));
+            }
+            return keyVal;
+        }).collect(Collectors.toList());
+    }
+
+    @Override//鎵ф硶绫诲瀷
+    public List<KeyVal> getEnforceTypeCount(ReportQueryBo bo)
+    {
+        List<KeyVal> list = reportMapper.getEnforceTypeCount(bo);
+        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK, KeyVal::getV));
+        List<SysDictData> dictDataList = dictDataService.list(dictDataService.lq().eq(SysDictData::getDictType,"enforce_type"));
+        return getKeyVal(resultMap, dictDataList);
+    }
+
+
+    @Override//鎶曡瘔澶勭悊鐘舵��
+    public List<KeyVal> getComplaintStatusCount(ReportQueryBo bo)
+    {
+        List<KeyVal> list = reportMapper.getComplaintStatusCount(bo);
+        return getKeyVal(list, complaintStatus);
+    }
+
+
+    @Override//鎶曡瘔绫诲瀷
+    public List<KeyVal> getComplaintTypeCount(ReportQueryBo bo)
+    {
+        List<KeyVal> list = reportMapper.getComplaintTypeCount(bo);
+        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK, KeyVal::getV));
+        List<SysDictData> dictDataList = dictDataService.list(dictDataService.lq().eq(SysDictData::getDictType,"complaint_type"));
+        return getKeyVal(resultMap, dictDataList);
+    }
+
+
+//-----------------------------------------------------------------------------
+
+    /**
+     * 閫氳繃鏁扮粍鑾峰彇杩斿洖鏁版嵁
+     * @param list  缁撴灉
+     * @param array   鏁扮粍
+     * @return  缁撴灉
+     */
+    @NotNull
+    private List<KeyVal> getKeyVal(List<KeyVal> list, String[] array)
+    {
+        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK,KeyVal::getV));
+        return Arrays.stream(array).map(e -> {
             KeyVal keyVal;
             if (resultMap.get(e) == null) {
                 keyVal = new KeyVal(e, 0);
@@ -79,20 +166,21 @@
         }).collect(Collectors.toList());
     }
 
-    @Override//鎵ф硶鍗曚綅鎵ф硶娆℃暟閮ㄩ棬鍒嗗竷
-    public List<KeyVal> getDeptCount(String yearMonth)
+    /**
+     * 閫氳繃瀛楀吀鑾峰彇杩斿洖鏁版嵁
+     * @param resultMap  缁撴灉
+     * @param dictDataList   瀛楀吀
+     * @return  缁撴灉
+     */
+    @NotNull
+    private List<KeyVal> getKeyVal(Map<String, Object> resultMap, List<SysDictData> dictDataList)
     {
-        List<KeyVal> list = orderService.getDeptCount(yearMonth);
-        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK,KeyVal::getV));
-
-        List<SysDept> depts = deptService.list(deptService.lq().eq(SysDept::getParentId, 100));
-
-        return depts.stream().map(e -> {
+        return dictDataList.stream().map(e -> {
             KeyVal keyVal;
-            if (resultMap.get(e.getDeptId().toString()) == null) {
-                keyVal = new KeyVal(e.getDeptName(), 0);
+            if (resultMap.get(e.getDictValue()) == null) {
+                keyVal = new KeyVal(e.getDictLabel(), 0);
             } else {
-                keyVal = new KeyVal(e.getDeptName(), resultMap.get(e.getDeptId().toString()));
+                keyVal = new KeyVal(e.getDictLabel(), resultMap.get(e.getDictValue()));
             }
             return keyVal;
         }).collect(Collectors.toList());
diff --git a/project-report/src/main/resources/mapper/report/ReportMapper.xml b/project-report/src/main/resources/mapper/report/ReportMapper.xml
new file mode 100644
index 0000000..2032c8d
--- /dev/null
+++ b/project-report/src/main/resources/mapper/report/ReportMapper.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.project.report.mapper.ReportMapper">
+
+    <!--    鎵ф硶娆℃暟鏈堝害鍒嗗竷-->
+    <select id="getMonthCount"
+            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
+            resultType="com.project.common.vo.KeyVal">
+        select
+            MONTH(apply_time) AS k,
+            IFNULL(count(order_id),0) as v
+        from enforce_order
+        where 1=1
+        <if test="deptId != null ">
+            AND apply_dept_id = #{deptId}
+        </if>
+        <if test="beginTime!=null and beginTime!=''">
+            AND apply_time &gt;= #{beginTime}
+        </if>
+        <if test="endTime!=null and endTime!=''">
+            AND apply_time &lt;= #{endTime}
+        </if>
+        GROUP BY k
+    </select>
+
+    <!--    鎵ф硶娆℃暟閮ㄩ棬鍒嗗竷-->
+    <select id="getDeptCount"
+            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
+            resultType="com.project.common.vo.KeyVal">
+        select
+        check_dept_id AS k,
+        IFNULL(count(order_id),0) as v
+        from enforce_order
+        where 1=1
+        <if test="beginTime!=null and beginTime!=''">
+            AND apply_time &gt;= #{beginTime}
+        </if>
+        <if test="endTime!=null and endTime!=''">
+            AND apply_time &lt;= #{endTime}
+        </if>
+        GROUP BY k
+    </select>
+
+    <!--    琚墽娉曟鏁颁紒涓氬垎甯�-->
+    <select id="getCompanyCount"
+            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
+            resultType="com.project.common.vo.KeyVal">
+        select
+        company_id AS k,
+        IFNULL(count(order_id),0) as v
+        from enforce_order
+        where 1=1
+        <if test="beginTime!=null and beginTime!=''">
+            AND apply_time &gt;= #{beginTime}
+        </if>
+        <if test="endTime!=null and endTime!=''">
+            AND apply_time &lt;= #{endTime}
+        </if>
+        GROUP BY k order by v desc
+    </select>
+
+    <!--    鎵ф硶绫诲瀷鍒嗗竷-->
+    <select id="getEnforceTypeCount"
+            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
+            resultType="com.project.common.vo.KeyVal">
+        select
+        enforce_type AS k,
+        IFNULL(count(order_id),0) as v
+        from enforce_order
+        where 1=1
+        <if test="beginTime!=null and beginTime!=''">
+            AND apply_time &gt;= #{beginTime}
+        </if>
+        <if test="endTime!=null and endTime!=''">
+            AND apply_time &lt;= #{endTime}
+        </if>
+        GROUP BY k
+    </select>
+
+    <!--    鎶曡瘔澶勭悊鐘舵��-->
+    <select id="getComplaintStatusCount"
+            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
+            resultType="com.project.common.vo.KeyVal">
+        select
+        complaint_status AS k,
+        IFNULL(count(id),0) as v
+        from enforce_complaint_log
+        where 1=1
+        <if test="beginTime!=null and beginTime!=''">
+            AND apply_time &gt;= #{beginTime}
+        </if>
+        <if test="endTime!=null and endTime!=''">
+            AND apply_time &lt;= #{endTime}
+        </if>
+        GROUP BY k
+    </select>
+
+    <!--    鎵ф硶绫诲瀷鍒嗗竷-->
+    <select id="getComplaintTypeCount"
+            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
+            resultType="com.project.common.vo.KeyVal">
+        select
+        complaint_type AS k,
+        IFNULL(count(id),0) as v
+        from enforce_complaint_log
+        where 1=1
+        <if test="beginTime!=null and beginTime!=''">
+            AND apply_time &gt;= #{beginTime}
+        </if>
+        <if test="endTime!=null and endTime!=''">
+            AND apply_time &lt;= #{endTime}
+        </if>
+        <if test="doComplaint!=null ">
+            <if test="doComplaint == 0 ">
+                AND complaint_status = 0
+            </if>
+            <if test="doComplaint == 1 ">
+                AND complaint_status != 0
+            </if>
+        </if>
+        GROUP BY k
+    </select>
+
+</mapper>
diff --git a/project-system/src/main/java/com/project/system/mapper/SysDictDataMapper.java b/project-system/src/main/java/com/project/system/mapper/SysDictDataMapper.java
index dc02d75..9789738 100644
--- a/project-system/src/main/java/com/project/system/mapper/SysDictDataMapper.java
+++ b/project-system/src/main/java/com/project/system/mapper/SysDictDataMapper.java
@@ -1,5 +1,6 @@
 package com.project.system.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.project.common.core.domain.entity.SysDictData;
 import org.apache.ibatis.annotations.Param;
 
@@ -10,7 +11,7 @@
  *
  * @author project
  */
-public interface SysDictDataMapper
+public interface SysDictDataMapper extends BaseMapper<SysDictData>
 {
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
diff --git a/project-system/src/main/java/com/project/system/mapper/SysUserMapper.java b/project-system/src/main/java/com/project/system/mapper/SysUserMapper.java
index 75c3d29..eae3dbc 100644
--- a/project-system/src/main/java/com/project/system/mapper/SysUserMapper.java
+++ b/project-system/src/main/java/com/project/system/mapper/SysUserMapper.java
@@ -1,10 +1,10 @@
 package com.project.system.mapper;
 
-import java.util.List;
-
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
 import com.project.common.core.domain.entity.SysUser;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 鐢ㄦ埛琛� 鏁版嵁灞�
@@ -136,10 +136,10 @@
 
 
     /**
-     * 鏌ヨ瑙掕壊鏍囪瘑瀵瑰簲浜烘暟
+     * 鑾峰彇瑙掕壊鏍囪瘑浜烘墜鏈哄彿
      * @param roleKey   鏍囪瘑
      * @param deptId   閮ㄩ棬id
-     * @return  浜烘暟
+     * @return  phoneList
      */
-    List<Long> getNumByRoleKey(@Param("roleKey") String roleKey,@Param("deptId") Long deptId);
+    List<String> getPhonesByRoleKey(@Param("roleKey") String roleKey,@Param("deptId") Long deptId);
 }
diff --git a/project-system/src/main/java/com/project/system/service/ISysDeptService.java b/project-system/src/main/java/com/project/system/service/ISysDeptService.java
index bd16bdf..72de54a 100644
--- a/project-system/src/main/java/com/project/system/service/ISysDeptService.java
+++ b/project-system/src/main/java/com/project/system/service/ISysDeptService.java
@@ -138,4 +138,12 @@
      * @return  绠¤緰鏈烘瀯ids
      */
     List<Long> getApplyDeptIdsByLoginUserId(Long userId);
+
+    /**
+     * 鑾峰彇鍗曚綅鍏ㄥ悕
+     * @param deptId    閮ㄩ棬id
+     * @return  鍏ㄥ悕
+     */
+    String getDeptAllName(Long deptId);
+
 }
diff --git a/project-system/src/main/java/com/project/system/service/ISysDictDataService.java b/project-system/src/main/java/com/project/system/service/ISysDictDataService.java
index 5cc4bf7..19a1730 100644
--- a/project-system/src/main/java/com/project/system/service/ISysDictDataService.java
+++ b/project-system/src/main/java/com/project/system/service/ISysDictDataService.java
@@ -1,18 +1,20 @@
 package com.project.system.service;
 
-import java.util.List;
 import com.project.common.core.domain.entity.SysDictData;
+import com.project.common.mybatis.IBaseService;
+
+import java.util.List;
 
 /**
  * 瀛楀吀 涓氬姟灞�
- * 
+ *
  * @author project
  */
-public interface ISysDictDataService
+public interface ISysDictDataService extends IBaseService<SysDictData>
 {
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
-     * 
+     *
      * @param dictData 瀛楀吀鏁版嵁淇℃伅
      * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
      */
@@ -20,7 +22,7 @@
 
     /**
      * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭�
-     * 
+     *
      * @param dictType 瀛楀吀绫诲瀷
      * @param dictValue 瀛楀吀閿��
      * @return 瀛楀吀鏍囩
@@ -38,7 +40,7 @@
 
     /**
      * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅
-     * 
+     *
      * @param dictCode 瀛楀吀鏁版嵁ID
      * @return 瀛楀吀鏁版嵁
      */
@@ -46,14 +48,14 @@
 
     /**
      * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅
-     * 
+     *
      * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID
      */
     public void deleteDictDataByIds(Long[] dictCodes);
 
     /**
      * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅
-     * 
+     *
      * @param dictData 瀛楀吀鏁版嵁淇℃伅
      * @return 缁撴灉
      */
@@ -61,7 +63,7 @@
 
     /**
      * 淇敼淇濆瓨瀛楀吀鏁版嵁淇℃伅
-     * 
+     *
      * @param dictData 瀛楀吀鏁版嵁淇℃伅
      * @return 缁撴灉
      */
diff --git a/project-system/src/main/java/com/project/system/service/ISysUserService.java b/project-system/src/main/java/com/project/system/service/ISysUserService.java
index 6151278..7908b0a 100644
--- a/project-system/src/main/java/com/project/system/service/ISysUserService.java
+++ b/project-system/src/main/java/com/project/system/service/ISysUserService.java
@@ -1,8 +1,9 @@
 package com.project.system.service;
 
-import java.util.List;
 import com.project.common.core.domain.entity.SysUser;
 import com.project.common.mybatis.IBaseService;
+
+import java.util.List;
 
 /**
  * 鐢ㄦ埛 涓氬姟灞�
@@ -214,9 +215,9 @@
     public int deleteUserByDeptId(Long deptId);
 
     /**
-     * 鑾峰彇瑙掕壊鏍囪瘑浜烘暟
+     * 鑾峰彇瑙掕壊鏍囪瘑浜烘墜鏈哄彿
      * @param roleKey   瑙掕壊鏍囪瘑
-     * @return 浜烘暟
+     * @return idList
      */
-    List<Long> getNumByRoleKey(String roleKey, Long deptId);
+    List<String> getPhonesByRoleKey(String roleKey, Long deptId);
 }
diff --git a/project-system/src/main/java/com/project/system/service/impl/SysDeptServiceImpl.java b/project-system/src/main/java/com/project/system/service/impl/SysDeptServiceImpl.java
index 9d3b4be..a582612 100644
--- a/project-system/src/main/java/com/project/system/service/impl/SysDeptServiceImpl.java
+++ b/project-system/src/main/java/com/project/system/service/impl/SysDeptServiceImpl.java
@@ -1,5 +1,7 @@
 package com.project.system.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.project.common.annotation.DataScope;
 import com.project.common.constant.UserConstants;
@@ -19,6 +21,7 @@
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -320,6 +323,18 @@
         return deptMapper.getApplyDeptIdsByLoginUserId(userId);
     }
 
+    @Override
+    public String getDeptAllName(Long deptId)
+    {
+        List<String> names = new ArrayList<>();
+        names = getAncestorsNames(deptId, names);
+        if (CollectionUtil.isEmpty(names)){
+            return "";
+        }
+        Collections.reverse(names);
+        return StrUtil.join("-", names);
+    }
+
     /**
      * 閫掑綊鍒楄〃
      */
@@ -362,4 +377,26 @@
     {
         return getChildList(list, t).size() > 0;
     }
+
+
+    /**
+     * 鑾峰彇绁栫睄names鍒楄〃
+     *
+     * @param deptId 褰撳墠閮ㄩ棬id
+     * @param names  绁栫睄id鍒楄〃
+     * @return  names鍒楄〃
+     */
+    public List<String> getAncestorsNames(long deptId, List<String> names) {
+        SysDept dept = this.getById(deptId);
+        if (dept == null) {
+            return new ArrayList<>();
+        }
+        if (dept.getParentId() != null && dept.getParentId() == 100) {
+            names.add(dept.getDeptName());
+            return names;
+        } else {
+            names.add(dept.getDeptName());
+            return getAncestorsNames(dept.getParentId(), names);
+        }
+    }
 }
diff --git a/project-system/src/main/java/com/project/system/service/impl/SysDictDataServiceImpl.java b/project-system/src/main/java/com/project/system/service/impl/SysDictDataServiceImpl.java
index a1a098e..183ed06 100644
--- a/project-system/src/main/java/com/project/system/service/impl/SysDictDataServiceImpl.java
+++ b/project-system/src/main/java/com/project/system/service/impl/SysDictDataServiceImpl.java
@@ -1,8 +1,11 @@
 package com.project.system.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.project.common.core.domain.entity.SysDept;
 import com.project.common.core.domain.entity.SysDictData;
 import com.project.common.exception.base.BaseException;
 import com.project.common.utils.DictUtils;
+import com.project.system.mapper.SysDeptMapper;
 import com.project.system.mapper.SysDictDataMapper;
 import com.project.system.service.ISysDictDataService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,7 +19,7 @@
  * @author project
  */
 @Service
-public class SysDictDataServiceImpl implements ISysDictDataService
+public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService
 {
     @Autowired
     private SysDictDataMapper dictDataMapper;
diff --git a/project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java b/project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java
index 50ef0de..9e244fe 100644
--- a/project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java
+++ b/project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java
@@ -547,8 +547,8 @@
     }
 
     @Override
-    public List<Long> getNumByRoleKey(String roleKey, Long deptId)
+    public List<String> getPhonesByRoleKey(String roleKey, Long deptId)
     {
-        return userMapper.getNumByRoleKey(roleKey, deptId);
+        return userMapper.getPhonesByRoleKey(roleKey, deptId);
     }
 }
diff --git a/project-system/src/main/resources/mapper/system/SysUserMapper.xml b/project-system/src/main/resources/mapper/system/SysUserMapper.xml
index 70b1c79..7280b60 100644
--- a/project-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/project-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -235,8 +235,8 @@
  	</delete>
 
 
-	<select id="getNumByRoleKey"  resultType="Long">
-		select u.user_id
+	<select id="getPhonesByRoleKey"  resultType="String">
+		select u.phonenumber
 			from sys_user u
 			join sys_user_role ur on u.user_id = ur.user_id
 			join sys_role r on r.role_id=ur.role_id

--
Gitblit v1.9.1