From bed24ea3fdeee959b85b699a82d53c5112adb219 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 25 五月 2023 16:57:42 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/domain/DingTalkReqVo.java                                  |   36 +
 ruoyi-system/src/main/java/com/ruoyi/system/domain/BaseUserInfo.java                         |  183 +++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseUserInfoServiceImpl.java        |  104 +++
 smartor/src/main/java/com/smartor/service/IntelligenceCenterService.java                     |   22 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/EquipmentinfoController.java      |  146 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/EquipmentinfoMapper.java                  |   61 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IntelligenceCenterController.java |   44 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/IBaseUserInfoService.java                |   70 ++
 ruoyi-system/src/main/java/com/ruoyi/system/domain/Equipmentinfo.java                        |  210 ++++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/WeChatController.java             |   13 
 ruoyi-system/src/main/java/com/ruoyi/system/service/IEquipmentinfoService.java               |   64 +
 ruoyi-admin/pom.xml                                                                          |    1 
 ruoyi-system/src/main/resources/mapper/system/EquipmentinfoMapper.xml                        |  115 +++
 smartor/src/main/java/com/smartor/service/DingTalkService.java                               |   23 
 smartor/src/main/java/com/smartor/service/impl/DingTalkServiceImpl.java                      |  132 ++++
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java                          |   18 
 ruoyi-common/pom.xml                                                                         |    1 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EquipmentinfoServiceImpl.java       |   87 ++
 ruoyi-system/src/main/resources/mapper/system/BaseUserInfoMapper.xml                         |  191 +++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/BaseUserInfoMapper.java                   |   61 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/DingTalkController.java           |  107 --
 ruoyi-admin/src/main/resources/application-druid.yml                                         |   11 
 smartor/src/main/java/com/smartor/service/impl/IntelligenceCenterServiceImpl.java            |   33 +
 ruoyi-system/src/main/java/com/ruoyi/system/domain/ReportReqVo.java                          |  108 +++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseUserInfoController.java       |  117 +++
 25 files changed, 1,851 insertions(+), 107 deletions(-)

diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 9d19762..dd37057 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -80,7 +80,6 @@
             <artifactId>core</artifactId>
             <version>2.0</version>
         </dependency>
-
     </dependencies>
 
     <build>
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseUserInfoController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseUserInfoController.java
new file mode 100644
index 0000000..19fb6a5
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseUserInfoController.java
@@ -0,0 +1,117 @@
+package com.ruoyi.web.controller.smartor;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.BaseUserInfo;
+import com.ruoyi.system.service.IBaseUserInfoService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 鐢ㄦ埛Controller
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/system/info")
+public class BaseUserInfoController extends BaseController {
+    @Autowired
+    private IBaseUserInfoService baseUserInfoService;
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BaseUserInfo baseUserInfo) {
+        startPage();
+        List<BaseUserInfo> list = baseUserInfoService.selectBaseUserInfoList(baseUserInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭鐢ㄦ埛鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:export')")
+    @Log(title = "鐢ㄦ埛", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BaseUserInfo baseUserInfo) {
+        List<BaseUserInfo> list = baseUserInfoService.selectBaseUserInfoList(baseUserInfo);
+        ExcelUtil<BaseUserInfo> util = new ExcelUtil<BaseUserInfo>(BaseUserInfo.class);
+        util.exportExcel(response, list, "鐢ㄦ埛鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:query')")
+    @GetMapping(value = "/{userid}")
+    public AjaxResult getInfo(@PathVariable("userid") Long userid) {
+        return success(baseUserInfoService.selectBaseUserInfoByUserid(userid));
+    }
+
+    /**
+     * 鏂板鐢ㄦ埛
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:add')")
+    @Log(title = "鐢ㄦ埛", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BaseUserInfo baseUserInfo) {
+        return toAjax(baseUserInfoService.insertBaseUserInfo(baseUserInfo));
+    }
+
+    /**
+     * 淇敼鐢ㄦ埛
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:edit')")
+    @Log(title = "鐢ㄦ埛", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BaseUserInfo baseUserInfo) {
+        return toAjax(baseUserInfoService.updateBaseUserInfo(baseUserInfo));
+    }
+
+    /**
+     * 鍒犻櫎鐢ㄦ埛
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:remove')")
+    @Log(title = "鐢ㄦ埛", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{userids}")
+    public AjaxResult remove(@PathVariable Long[] userids) {
+        return toAjax(baseUserInfoService.deleteBaseUserInfoByUserids(userids));
+    }
+
+    /**
+     * 鑾峰彇浜哄憳鐨勮仈绯绘柟寮�
+     *
+     * @param personNo  浜哄憳缂栧彿
+     * @param noticeWay 閫氱煡鏂瑰紡
+     * @return
+     */
+    @RequestMapping("/reportContent")
+    public AjaxResult getContact(String personCode, String noticeWay) {
+        if (StringUtils.isEmpty(personCode) || StringUtils.isEmpty(noticeWay)) {
+            return error("杈撳叆鏈夎锛岃妫�鏌�");
+        }
+        // 鏍规嵁閫氶�氱煡鏂瑰紡鍘讳汉鍛樹俊鎭〃涓幏鍙栫敤鎴风殑鑱旂郴鏂瑰紡
+        String contact = baseUserInfoService.getContact(personCode, noticeWay);
+        // 鍒欏皢鑱旂郴鏂瑰紡杩斿洖,鏄惁涓虹┖锛岀敱鍓嶇鍘诲垽鏂�
+        return success(contact);
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/DingTalkController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/DingTalkController.java
index 2b5f8a3..118f53b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/DingTalkController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/DingTalkController.java
@@ -11,11 +11,14 @@
 import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
 import com.dingtalk.api.response.OapiUserListidResponse;
 import com.ruoyi.common.core.controller.BaseController;
+import com.smartor.domain.DingTalkReqVo;
+import com.smartor.service.DingTalkService;
 import com.taobao.api.ApiException;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -28,103 +31,27 @@
  */
 @RestController
 @RequestMapping("/smartor/dingtalk")
+@PropertySource(value = {"classpath:application-druid.yml"})
 public class DingTalkController extends BaseController {
 
-    @Value("appid")
-    private String dingAppid = "dingn8iip5ubj7clrrsv";
+    @Value("${dingAppid}")
+    private String dingAppid;
 
-    @Value("appSecret")
-    private String dingAppSecret = "qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD";
+    @Value("${dingAppSecret}")
+    private String dingAppSecret;
+
+    @Autowired
+    private DingTalkService dingTalkService;
 
     /**
      * 鍙戦�侀拤閽夋秷鎭�
      *
-     * @param mobile
-     * @param park
-     * @param alarmCode
-     * @param severityDesc
+     * @param dingTalkReqVo 鍙戦�佸唴瀹�
      * @throws ApiException
      */
-    public void sendNotification(String mobile, String park, String alarmCode, String severityDesc) throws ApiException {
-        // Log.info("鍙戦�侀拤閽夐�氱煡");
-        String accessToken = getAccessToken();
-        if (StringUtils.isBlank(mobile)) {
-            return;
-        }
-        DingTalkClient client3 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/listid");
-
-        OapiUserListidRequest request2 = new OapiUserListidRequest();
-        request2.setDeptId(675909059L); // 璁剧疆瑕佽幏鍙栫殑閮ㄩ棬 ID锛岃繖閲屼互鏍归儴闂ㄤ负渚�
-        // 璁剧疆閮ㄩ棬 ID锛屽鏋滆幏鍙栨墍鏈夊憳宸ユ墜鏈哄彿锛屽彲浠ヨ缃负鏍归儴闂ㄧ殑 ID
-        OapiUserListidResponse response2 = client3.execute(request2, accessToken);
-        String body = response2.getBody();
-        // 瑙f瀽涓篔SONObject
-        JSONObject jsonObject = JSONObject.parseObject(body);
-        // 鎻愬彇鍑篔SONArray
-        JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("result").getJSONArray("userid_list"));
-        // 灏咼SONArray杞负List鍒楄〃
-        String str = JSONObject.toJSONString(jsonArray);
-        List<String> list = JSONObject.parseObject(str, List.class);
-
-        //userid鏁扮粍
-        for (String urid : list) {
-            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
-            OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
-            request.setUseridList(urid);
-            request.setAgentId(1779052814L);
-            request.setToAllUser(false);
-            OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
-            msg.setOa(new OapiMessageCorpconversationAsyncsendV2Request.OA());
-            msg.getOa().setMessageUrl("www.baidu.com");
-            msg.getOa().setPcMessageUrl("www.baidu.com");
-            msg.getOa().setHead(new OapiMessageCorpconversationAsyncsendV2Request.Head());
-            msg.getOa().getHead().setText("text");
-            msg.getOa().getHead().setBgcolor("FFBBBBBB");
-            msg.getOa().setBody(new OapiMessageCorpconversationAsyncsendV2Request.Body());
-            msg.getOa().getBody().setContent("msg淇℃伅");
-            OapiMessageCorpconversationAsyncsendV2Request.Form formPark = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-            formPark.setKey(null);
-            formPark.setValue(null);
-            OapiMessageCorpconversationAsyncsendV2Request.Form formAlarmCode = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-            formAlarmCode.setKey("宸ュ伐宸 ");
-            formAlarmCode.setValue(alarmCode);
-            OapiMessageCorpconversationAsyncsendV2Request.Form formSeverityDesc = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-            formSeverityDesc.setKey("鏋楄瑕佽瑕�");
-            formSeverityDesc.setValue(severityDesc);
-            OapiMessageCorpconversationAsyncsendV2Request.Form formConner = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-            formConner.setKey("鍘呭湪鍦�");
-            ArrayList<OapiMessageCorpconversationAsyncsendV2Request.Form> objects = new ArrayList<>();
-            objects.add(formPark);
-            objects.add(formSeverityDesc);
-            objects.add(formAlarmCode);
-            objects.add(formConner);
-            msg.getOa().getBody().setForm(objects);
-            msg.setMsgtype("oa");
-            request.setMsg(msg);
-            //  log.info("鑾峰彇鍙戦�侀�氱煡娑堟伅浣撳拰鑾峰彇鍙戦�侀�氱煡浜哄畬鎴�");
-            OapiMessageCorpconversationAsyncsendV2Response response = client.execute(request, accessToken);
-            //  log.info("鍙戦�佹秷鎭槸鍚︽垚鍔�"+response.isSuccess());
-            System.out.println(response.isSuccess());
-            //  log.info("娑堟伅浠诲姟ID"+response.getTaskId());
-            System.out.println(response.getTaskId());
-        }
-    }
-
-
-    /**
-     * 鑾峰彇 access_token
-     */
-    private String getAccessToken() throws ApiException {
-        DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
-        OapiGettokenRequest request = new OapiGettokenRequest();
-        //Appkey
-        request.setAppkey(dingAppid);
-        //Appsecret
-        request.setAppsecret(dingAppSecret);
-        /*璇锋眰鏂瑰紡*/
-        request.setHttpMethod("GET");
-        OapiGettokenResponse response = client.execute(request);
-        return response.getAccessToken();
+    @PostMapping("/sendNotification")
+    public void sendNotification(@RequestBody DingTalkReqVo dingTalkReqVo) throws ApiException {
+        dingTalkService.sendNotification(dingTalkReqVo);
     }
 
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/EquipmentinfoController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/EquipmentinfoController.java
new file mode 100644
index 0000000..960482a
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/EquipmentinfoController.java
@@ -0,0 +1,146 @@
+package com.ruoyi.web.controller.smartor;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.domain.ReportReqVo;
+import com.ruoyi.system.service.IBaseUserInfoService;
+import com.smartor.domain.DingTalkReqVo;
+import com.smartor.service.DingTalkService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.Equipmentinfo;
+import com.ruoyi.system.service.IEquipmentinfoService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆慍ontroller
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/system/equipmentinfo")
+public class EquipmentinfoController extends BaseController {
+    @Autowired
+    private IEquipmentinfoService equipmentinfoService;
+    @Autowired
+    private DingTalkService dingTalkService;
+
+
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
+     */
+    @PreAuthorize("@ss.hasPermi('system:equipmentinfo:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(Equipmentinfo equipmentinfo) {
+        startPage();
+        List<Equipmentinfo> list = equipmentinfoService.selectEquipmentinfoList(equipmentinfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
+     */
+    @PreAuthorize("@ss.hasPermi('system:equipmentinfo:export')")
+    @Log(title = "銆愯濉啓鍔熻兘鍚嶇О銆�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Equipmentinfo equipmentinfo) {
+        List<Equipmentinfo> list = equipmentinfoService.selectEquipmentinfoList(equipmentinfo);
+        ExcelUtil<Equipmentinfo> util = new ExcelUtil<Equipmentinfo>(Equipmentinfo.class);
+        util.exportExcel(response, list, "銆愯濉啓鍔熻兘鍚嶇О銆戞暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇銆愯濉啓鍔熻兘鍚嶇О銆戣缁嗕俊鎭�
+     */
+    @PreAuthorize("@ss.hasPermi('system:equipmentinfo:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(equipmentinfoService.selectEquipmentinfoById(id));
+    }
+
+    /**
+     * 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    @PreAuthorize("@ss.hasPermi('system:equipmentinfo:add')")
+    @Log(title = "銆愯濉啓鍔熻兘鍚嶇О銆�", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Equipmentinfo equipmentinfo) {
+        return toAjax(equipmentinfoService.insertEquipmentinfo(equipmentinfo));
+    }
+
+    /**
+     * 淇敼銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    @PreAuthorize("@ss.hasPermi('system:equipmentinfo:edit')")
+    @Log(title = "銆愯濉啓鍔熻兘鍚嶇О銆�", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody Equipmentinfo equipmentinfo) {
+        return toAjax(equipmentinfoService.updateEquipmentinfo(equipmentinfo));
+    }
+
+    /**
+     * 鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    @PreAuthorize("@ss.hasPermi('system:equipmentinfo:remove')")
+    @Log(title = "銆愯濉啓鍔熻兘鍚嶇О銆�", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(equipmentinfoService.deleteEquipmentinfoByIds(ids));
+    }
+
+
+    /**
+     * 闂涓婃姤
+     */
+
+    @RequestMapping("/reportContent")
+    public AjaxResult reportContent(@RequestBody ReportReqVo reportReqVo) {
+        if (StringUtils.isEmpty(reportReqVo.getDealDept()) && StringUtils.isEmpty(reportReqVo.getDealPersionNO())) {
+            return error("澶勭悊浜哄拰澶勭悊閮ㄩ棬涓嶈兘鍚屾椂涓虹┖锛�");
+        }
+        Boolean aBoolean = false;
+        //1.鍒ゆ柇澶勭悊浜虹殑宸ュ彿鏄惁涓虹┖锛屽鏋滀笉涓虹┖锛岃幏鍙栫敤鎴风殑鐨勮仈绯绘柟寮�
+        if (StringUtils.isNotEmpty(reportReqVo.getDealPersionNO())) {
+
+            //2.濡備綍澶勭悊浜轰笉涓虹┖锛屾牴鎹�氱煡鏂瑰紡锛岃皟鐢ㄥ搴旂殑鎺ュ彛锛屽皢涓婃姤闂鍙戝嚭
+            if (reportReqVo.getNoticeWay() == "閽夐拤") {
+                //璋冪敤閽夐拤鎺ュ彛锛岃繘琛屾秷鎭彂閫�
+            } else if (reportReqVo.getNoticeWay() == "寰俊") {
+                //闇�瑕佷紒涓氬井淇★紝鍚庢湡鍐嶅仛
+            } else if (reportReqVo.getNoticeWay() == "鐢佃瘽") {
+                //璋冪敤鐢佃瘽鐨勬帴鍙�
+            }
+        }
+
+        //3.鑾峰彇澶勭悊閮ㄩ棬锛岃皟鐢ㄩ拤閽夋帴鍙o紝灏嗕笂鎶ラ棶棰樺彂鍑�
+        if (StringUtils.isNotEmpty(reportReqVo.getDealDept())) {
+            DingTalkReqVo dingTalkReqVo = new DingTalkReqVo();
+            //璁剧疆鍙戦�佸唴瀹�
+            dingTalkReqVo.setContents(null);
+            dingTalkReqVo.setDeptId(reportReqVo.getDealDeptID());
+            dingTalkReqVo.setUserId(reportReqVo.getDealPersionDingNO());
+            aBoolean = dingTalkService.sendNotification(dingTalkReqVo);
+        }
+
+        // 灏嗗伐浣滄祦鎺ㄨ嚦涓嬩竴鑺傜偣
+
+        //杩斿洖缁撴灉
+        return toAjax(aBoolean);
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IntelligenceCenterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IntelligenceCenterController.java
new file mode 100644
index 0000000..13cd509
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IntelligenceCenterController.java
@@ -0,0 +1,44 @@
+package com.ruoyi.web.controller.smartor;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.SchemeCategory;
+import com.smartor.service.ISchemeCategoryService;
+import com.smartor.service.IntelligenceCenterService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏂规鍒嗙被Controller
+ *
+ * @author ls
+ * @date 2023-05-23
+ */
+@RestController
+@RequestMapping("/intelligence/center")
+public class IntelligenceCenterController extends BaseController {
+    @Autowired
+    private IntelligenceCenterService intelligenceCenterService;
+
+    @PostMapping("/processList")
+    public void processList(@RequestBody List<Map<String, Object>> list) {
+        for (Map<String, Object> map : list) {
+            // 閬嶅巻 list 涓殑姣忎釜 map
+            for (Map.Entry<String, Object> entry : map.entrySet()) {
+                String key = entry.getKey();
+                Object value = entry.getValue();
+                // 澶勭悊 map 涓殑姣忎釜閿�煎
+            }
+        }
+    }
+
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/WeChatController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/WeChatController.java
index 65210b2..991a5ba 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/WeChatController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/WeChatController.java
@@ -13,10 +13,13 @@
 import okhttp3.OkHttpClient;
 import okhttp3.Request;
 import okhttp3.Response;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.PropertySource;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -27,13 +30,15 @@
  */
 @RestController
 @RequestMapping("/smartor/wechat")
+@PropertySource(value = { "classpath:application-druid.yml" })
 public class WeChatController extends BaseController {
 
-    @Value("appid")
-    private String appid = "wx1c5243d2337753f4";
+    @Value("${appid}")
+    private String appid;
 
-    @Value("appSecret")
-    private String appSecret = "84a2186a0d175e88345267c716516cd3";
+    @Value("${appSecret}")
+    private String appSecret;
+
 
     /**
      * 鑾峰彇妯℃澘淇℃伅
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index 5f4187d..d74ce0a 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -55,5 +55,12 @@
         wall:
           config:
             multi-statement-allow: true
-  appid : wxf50c5c72265188eb
-  appSecret : 7ab0a81392a96b157efa1df00f9cd939
\ No newline at end of file
+
+
+  #寰俊鍏紬鍙风殑瀵嗛挜
+appid: wx1c5243d2337753f4
+appSecret: 84a2186a0d175e88345267c716516cd3
+
+#閽夐拤鐨勫瘑閽�
+dingAppid: dingn8iip5ubj7clrrsv
+dingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD
\ No newline at end of file
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index b3237a4..eafd491 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -159,6 +159,7 @@
             <artifactId>alibaba-dingtalk-service-sdk</artifactId>
             <version>2.0.0</version>
         </dependency>
+
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java
index f885d42..99253aa 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java
@@ -1,15 +1,6 @@
 package com.ruoyi.quartz.util;
 
-import org.quartz.CronScheduleBuilder;
-import org.quartz.CronTrigger;
-import org.quartz.Job;
-import org.quartz.JobBuilder;
-import org.quartz.JobDetail;
-import org.quartz.JobKey;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.quartz.TriggerBuilder;
-import org.quartz.TriggerKey;
+import org.quartz.*;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.ScheduleConstants;
 import com.ruoyi.common.exception.job.TaskException;
@@ -72,6 +63,12 @@
         // 鎸夋柊鐨刢ronExpression琛ㄨ揪寮忔瀯寤轰竴涓柊鐨則rigger
         CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup))
                 .withSchedule(cronScheduleBuilder).build();
+        //涓嬮潰杩欓噷鍙互鎺у埗鎵ц娆℃暟鈥渨ithRepeatCount(1)锛�0浠g爜鎵ц涓�娆★紝1浠h〃鎵ц涓ゆ...鈥濓紝withIntervalInSeconds(10)浠h〃澶氬皯绉掑悗鎵ц锛涜繖閲屾病鏈夊啓浠诲姟鎵ц瀹屾垚鍚庯紝鍒犻櫎浠诲姟锛屽悗闈㈤渶瑕佸啀琛ヤ笂
+//        Trigger trigger = TriggerBuilder.newTrigger()
+//                .withIdentity(getTriggerKey(jobId, jobGroup))
+//                .startNow()
+//                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10).withRepeatCount(1))
+//                .build();
 
         // 鏀惧叆鍙傛暟锛岃繍琛屾椂鐨勬柟娉曞彲浠ヨ幏鍙�
         jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);
@@ -88,6 +85,7 @@
         {
             // 鎵ц璋冨害浠诲姟
             scheduler.scheduleJob(jobDetail, trigger);
+            scheduler.deleteJob(jobDetail.getKey());
         }
 
         // 鏆傚仠浠诲姟
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/BaseUserInfo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/BaseUserInfo.java
new file mode 100644
index 0000000..6e595dc
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/BaseUserInfo.java
@@ -0,0 +1,183 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 鐢ㄦ埛瀵硅薄 base_user_info
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@Data
+public class BaseUserInfo extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷ID
+     */
+    private Long userid;
+
+    /**
+     * 鐢ㄦ埛缂栧彿
+     */
+    @Excel(name = " 鐢ㄦ埛缂栧彿 ")
+    private String usercode;
+
+    /**
+     * 璐﹀彿
+     */
+    @Excel(name = " 璐﹀彿 ")
+    private String account;
+
+    /**
+     * 鎵嬫満鍙�
+     */
+    @Excel(name = " 鎵嬫満鍙� ")
+    private String phone;
+
+    @Excel(name = " 閽夐拤鍙� ")
+    private String dingding;
+
+    @Excel(name = " 寰俊鍙� ")
+    private String wechat;
+
+    /**
+     * 瀵嗙爜
+     */
+    @Excel(name = " 瀵嗙爜 ")
+    private String password;
+
+    /**
+     * 瀵嗛挜
+     */
+    @Excel(name = " 瀵嗛挜 ")
+    private String secret;
+
+    /**
+     * 鐪熷疄濮撳悕
+     */
+    @Excel(name = " 鐪熷疄濮撳悕 ")
+    private String realname;
+
+    /**
+     * 鏄电О
+     */
+    @Excel(name = " 鏄电О ")
+    private String nickname;
+
+    /**
+     * 瑙掕壊ID
+     */
+    @Excel(name = " 瑙掕壊ID ")
+    private Long roleid;
+
+    /**
+     * 瑙掕壊鍚嶇О
+     */
+    @Excel(name = " 瑙掕壊鍚嶇О ")
+    private String rolename;
+
+    /**
+     * 绉戝ID锛堝閫夛級
+     */
+    @Excel(name = " 绉戝ID", readConverterExp = "澶�=閫�")
+    private String deptid;
+
+    /**
+     * 绉戝鍚嶇О
+     */
+    @Excel(name = " 绉戝鍚嶇О ")
+    private String deptname;
+
+    /**
+     * 鐥呭尯ID锛堝閫夛級
+     */
+    @Excel(name = " 鐥呭尯ID", readConverterExp = "澶�=閫�")
+    private String wardid;
+
+    /**
+     * 鐥呭尯鍚嶇О
+     */
+    @Excel(name = " 鐥呭尯鍚嶇О ")
+    private String wardname;
+
+    /**
+     * 鐢ㄦ埛绫诲埆;0.鍖荤敓 1.绉戝涓讳换 2.鎶ゅ+ 3.鎶ゅ+闀�
+     */
+    @Excel(name = " 鐢ㄦ埛绫诲埆;0.鍖荤敓 1.绉戝涓讳换 2.鎶ゅ+ 3.鎶ゅ+闀� ")
+    private Long usertype;
+
+    /**
+     * 鐢ㄦ埛绫诲埆鍚嶇О
+     */
+    @Excel(name = " 鐢ㄦ埛绫诲埆鍚嶇О ")
+    private String usertypename;
+
+    /**
+     * 绉戝/鐥呭尯鏉冮檺绫诲瀷;0.鎵�灞炵瀹�/鐥呭尯 1.鍏ㄩ櫌 2.鑷畾涔�
+     */
+    @Excel(name = " 绉戝/鐥呭尯鏉冮檺绫诲瀷;0.鎵�灞炵瀹�/鐥呭尯 1.鍏ㄩ櫌 2.鑷畾涔� ")
+    private Long dwpermission;
+
+    /**
+     * 鏄惁寮�鏀句笅绾ф満鏋勬潈闄�
+     */
+    @Excel(name = " 鏄惁寮�鏀句笅绾ф満鏋勬潈闄� ")
+    private Long isopenlowerorg;
+
+    /**
+     * 鏄惁寮�鏀惧叡浜煡璇嗘潈闄�
+     */
+    @Excel(name = " 鏄惁寮�鏀惧叡浜煡璇嗘潈闄� ")
+    private Long isopenshareknow;
+
+    /**
+     * 鏄惁寮�鏀鹃�氱敤鏁版嵁鏉冮檺
+     */
+    @Excel(name = " 鏄惁寮�鏀鹃�氱敤鏁版嵁鏉冮檺 ")
+    private Long isopengeneraldata;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    private String orgid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date uploadTime;
+
+    /**
+     * 绉戝鏉冮檺
+     */
+    @Excel(name = " 绉戝鏉冮檺 ")
+    private String deptpermission;
+
+    /**
+     * 鐥呭尯鏉冮檺
+     */
+    @Excel(name = " 鐥呭尯鏉冮檺 ")
+    private String wardpermission;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/Equipmentinfo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/Equipmentinfo.java
new file mode 100644
index 0000000..e83463b
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/Equipmentinfo.java
@@ -0,0 +1,210 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆戝璞� equipmentinfo
+ * 
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public class Equipmentinfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭 */
+    private Long id;
+
+    /** 璁惧绫诲埆 */
+    @Excel(name = "璁惧绫诲埆")
+    private Long devtype;
+
+    /** 璁惧鍚嶇О */
+    @Excel(name = "璁惧鍚嶇О")
+    private String equipmentname;
+
+    /** 璁惧鍨嬪彿 */
+    @Excel(name = "璁惧鍨嬪彿")
+    private String modnum;
+
+    /** 鎶曡繍鏃ユ湡 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鎶曡繍鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date touyundate;
+
+    /** 璐叆鏃ユ湡 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "璐叆鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date gourudate;
+
+    /** 鍒堕�犲崟浣� */
+    @Excel(name = "鍒堕�犲崟浣�")
+    private String produce;
+
+    /** 鏁伴噺 */
+    @Excel(name = "鏁伴噺")
+    private Long quantity;
+
+    /** 璁¢噺鍗曚綅 */
+    @Excel(name = "璁¢噺鍗曚綅")
+    private String unit;
+
+    /** 浣跨敤閮ㄩ棬 */
+    @Excel(name = "浣跨敤閮ㄩ棬")
+    private String useDept;
+
+    /** 瀹夎鍦扮偣 */
+    @Excel(name = "瀹夎鍦扮偣")
+    private String storePlace;
+
+    /** 鎶�鏈暟鎹� */
+    @Excel(name = "鎶�鏈暟鎹�")
+    private String technData;
+
+    /** 鐘舵�乮d */
+    @Excel(name = "鐘舵�乮d")
+    private Long statusid;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setDevtype(Long devtype) 
+    {
+        this.devtype = devtype;
+    }
+
+    public Long getDevtype() 
+    {
+        return devtype;
+    }
+    public void setEquipmentname(String equipmentname) 
+    {
+        this.equipmentname = equipmentname;
+    }
+
+    public String getEquipmentname() 
+    {
+        return equipmentname;
+    }
+    public void setModnum(String modnum) 
+    {
+        this.modnum = modnum;
+    }
+
+    public String getModnum() 
+    {
+        return modnum;
+    }
+    public void setTouyundate(Date touyundate) 
+    {
+        this.touyundate = touyundate;
+    }
+
+    public Date getTouyundate() 
+    {
+        return touyundate;
+    }
+    public void setGourudate(Date gourudate) 
+    {
+        this.gourudate = gourudate;
+    }
+
+    public Date getGourudate() 
+    {
+        return gourudate;
+    }
+    public void setProduce(String produce) 
+    {
+        this.produce = produce;
+    }
+
+    public String getProduce() 
+    {
+        return produce;
+    }
+    public void setQuantity(Long quantity) 
+    {
+        this.quantity = quantity;
+    }
+
+    public Long getQuantity() 
+    {
+        return quantity;
+    }
+    public void setUnit(String unit) 
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit() 
+    {
+        return unit;
+    }
+    public void setUseDept(String useDept) 
+    {
+        this.useDept = useDept;
+    }
+
+    public String getUseDept() 
+    {
+        return useDept;
+    }
+    public void setStorePlace(String storePlace) 
+    {
+        this.storePlace = storePlace;
+    }
+
+    public String getStorePlace() 
+    {
+        return storePlace;
+    }
+    public void setTechnData(String technData) 
+    {
+        this.technData = technData;
+    }
+
+    public String getTechnData() 
+    {
+        return technData;
+    }
+    public void setStatusid(Long statusid) 
+    {
+        this.statusid = statusid;
+    }
+
+    public Long getStatusid() 
+    {
+        return statusid;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devtype", getDevtype())
+            .append("equipmentname", getEquipmentname())
+            .append("modnum", getModnum())
+            .append("touyundate", getTouyundate())
+            .append("gourudate", getGourudate())
+            .append("produce", getProduce())
+            .append("quantity", getQuantity())
+            .append("unit", getUnit())
+            .append("useDept", getUseDept())
+            .append("storePlace", getStorePlace())
+            .append("technData", getTechnData())
+            .append("remark", getRemark())
+            .append("statusid", getStatusid())
+            .toString();
+    }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/ReportReqVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ReportReqVo.java
new file mode 100644
index 0000000..336b156
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ReportReqVo.java
@@ -0,0 +1,108 @@
+package com.ruoyi.system.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 闂涓婃姤
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@Data
+public class ReportReqVo extends BaseEntity {
+
+    /**
+     * 涓婚敭
+     */
+    private Long id;
+
+    /**
+     * 涓婃姤浜�
+     */
+    @Excel(name = "涓婃姤浜�")
+    private Long reportPerson;
+
+    /**
+     * 涓婃姤浜虹紪鍙�
+     */
+    @Excel(name = "涓婃姤浜虹紪鍙�")
+    private Long reportPersonCode;
+
+    /**
+     * 璁惧鍚嶇О
+     */
+    @Excel(name = "涓婃姤闂")
+    private String reqContent;
+
+    /**
+     * 鎶曡繍鏃ユ湡
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "涓婃姤鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date reportDate;
+
+    /**
+     * 闂璁惧鍨嬪彿
+     */
+    @Excel(name = "闂璁惧鍨嬪彿")
+    private String produce;
+
+    /**
+     * 涓婃姤閮ㄩ棬
+     */
+    @Excel(name = "涓婃姤閮ㄩ棬")
+    private String reportDep;
+
+    /**
+     * 澶勭悊浜哄鍚�
+     */
+    @Excel(name = "澶勭悊浜哄鍚�")
+    private String dealPersionName;
+
+    /**
+     * 澶勭悊浜哄伐鍙�
+     */
+    @Excel(name = "澶勭悊浜哄伐鍙�")
+    private String dealPersionNO;
+
+    /**
+     * 澶勭悊浜哄伐鍙�
+     */
+    @Excel(name = "澶勭悊浜洪拤閽夊彿")
+    private String dealPersionDingNO;
+
+    /**
+     * 鑱旂郴鏂瑰紡锛堟墜鏈哄彿銆佸井淇″彿...锛�
+     */
+    @Excel(name = "鑱旂郴鏂瑰紡")
+    private String contactWsy;
+
+
+    /**
+     * 澶勭悊浜洪�氱煡鏂瑰紡(鐢佃瘽锛岀煭淇★紝寰俊锛岄拤閽�...)
+     */
+    @Excel(name = "閫氱煡鏂瑰紡")
+    private String noticeWay;
+
+
+    /**
+     * 澶勭悊閮ㄩ棬
+     */
+    @Excel(name = "澶勭悊閮ㄩ棬")
+    private String dealDept;
+
+    /**
+     * 澶勭悊閮ㄩ棬ID
+     */
+    @Excel(name = "澶勭悊閮ㄩ棬ID")
+    private String dealDeptID;
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BaseUserInfoMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BaseUserInfoMapper.java
new file mode 100644
index 0000000..cebbe2c
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BaseUserInfoMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.BaseUserInfo;
+
+/**
+ * 鐢ㄦ埛Mapper鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public interface BaseUserInfoMapper 
+{
+    /**
+     * 鏌ヨ鐢ㄦ埛
+     * 
+     * @param userid 鐢ㄦ埛涓婚敭
+     * @return 鐢ㄦ埛
+     */
+    public BaseUserInfo selectBaseUserInfoByUserid(Long userid);
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鍒楄〃
+     * 
+     * @param baseUserInfo 鐢ㄦ埛
+     * @return 鐢ㄦ埛闆嗗悎
+     */
+    public List<BaseUserInfo> selectBaseUserInfoList(BaseUserInfo baseUserInfo);
+
+    /**
+     * 鏂板鐢ㄦ埛
+     * 
+     * @param baseUserInfo 鐢ㄦ埛
+     * @return 缁撴灉
+     */
+    public int insertBaseUserInfo(BaseUserInfo baseUserInfo);
+
+    /**
+     * 淇敼鐢ㄦ埛
+     * 
+     * @param baseUserInfo 鐢ㄦ埛
+     * @return 缁撴灉
+     */
+    public int updateBaseUserInfo(BaseUserInfo baseUserInfo);
+
+    /**
+     * 鍒犻櫎鐢ㄦ埛
+     * 
+     * @param userid 鐢ㄦ埛涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteBaseUserInfoByUserid(Long userid);
+
+    /**
+     * 鎵归噺鍒犻櫎鐢ㄦ埛
+     * 
+     * @param userids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteBaseUserInfoByUserids(Long[] userids);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/EquipmentinfoMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/EquipmentinfoMapper.java
new file mode 100644
index 0000000..6470a62
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/EquipmentinfoMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.Equipmentinfo;
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆慚apper鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public interface EquipmentinfoMapper 
+{
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆�
+     * 
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    public Equipmentinfo selectEquipmentinfoById(Long id);
+
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
+     * 
+     * @param equipmentinfo 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆戦泦鍚�
+     */
+    public List<Equipmentinfo> selectEquipmentinfoList(Equipmentinfo equipmentinfo);
+
+    /**
+     * 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
+     * 
+     * @param equipmentinfo 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    public int insertEquipmentinfo(Equipmentinfo equipmentinfo);
+
+    /**
+     * 淇敼銆愯濉啓鍔熻兘鍚嶇О銆�
+     * 
+     * @param equipmentinfo 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    public int updateEquipmentinfo(Equipmentinfo equipmentinfo);
+
+    /**
+     * 鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
+     * 
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 缁撴灉
+     */
+    public int deleteEquipmentinfoById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteEquipmentinfoByIds(Long[] ids);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IBaseUserInfoService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IBaseUserInfoService.java
new file mode 100644
index 0000000..7dbbb45
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IBaseUserInfoService.java
@@ -0,0 +1,70 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.BaseUserInfo;
+
+/**
+ * 鐢ㄦ埛Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public interface IBaseUserInfoService
+{
+    /**
+     * 鏌ヨ鐢ㄦ埛
+     *
+     * @param userid 鐢ㄦ埛涓婚敭
+     * @return 鐢ㄦ埛
+     */
+    public BaseUserInfo selectBaseUserInfoByUserid(Long userid);
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鍒楄〃
+     *
+     * @param baseUserInfo 鐢ㄦ埛
+     * @return 鐢ㄦ埛闆嗗悎
+     */
+    public List<BaseUserInfo> selectBaseUserInfoList(BaseUserInfo baseUserInfo);
+
+    /**
+     * 鏂板鐢ㄦ埛
+     *
+     * @param baseUserInfo 鐢ㄦ埛
+     * @return 缁撴灉
+     */
+    public int insertBaseUserInfo(BaseUserInfo baseUserInfo);
+
+    /**
+     * 淇敼鐢ㄦ埛
+     *
+     * @param baseUserInfo 鐢ㄦ埛
+     * @return 缁撴灉
+     */
+    public int updateBaseUserInfo(BaseUserInfo baseUserInfo);
+
+    /**
+     * 鎵归噺鍒犻櫎鐢ㄦ埛
+     *
+     * @param userids 闇�瑕佸垹闄ょ殑鐢ㄦ埛涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteBaseUserInfoByUserids(Long[] userids);
+
+    /**
+     * 鍒犻櫎鐢ㄦ埛淇℃伅
+     *
+     * @param userid 鐢ㄦ埛涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteBaseUserInfoByUserid(Long userid);
+
+    /**
+     * 鏍规嵁鏉′欢鑾峰彇鐢ㄦ埛淇℃伅
+     *
+     * @param personCode
+     * @param noticeWay
+     * @return
+     */
+    public String getContact(String personCode, String noticeWay);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IEquipmentinfoService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IEquipmentinfoService.java
new file mode 100644
index 0000000..aaa8e4d
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IEquipmentinfoService.java
@@ -0,0 +1,64 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.system.domain.Equipmentinfo;
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆慡ervice鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public interface IEquipmentinfoService {
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    public Equipmentinfo selectEquipmentinfoById(Long id);
+
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
+     *
+     * @param equipmentinfo 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆戦泦鍚�
+     */
+    public List<Equipmentinfo> selectEquipmentinfoList(Equipmentinfo equipmentinfo);
+
+    /**
+     * 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param equipmentinfo 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    public int insertEquipmentinfo(Equipmentinfo equipmentinfo);
+
+    /**
+     * 淇敼銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param equipmentinfo 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    public int updateEquipmentinfo(Equipmentinfo equipmentinfo);
+
+    /**
+     * 鎵归噺鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑銆愯濉啓鍔熻兘鍚嶇О銆戜富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteEquipmentinfoByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆戜俊鎭�
+     *
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 缁撴灉
+     */
+    public int deleteEquipmentinfoById(Long id);
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseUserInfoServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseUserInfoServiceImpl.java
new file mode 100644
index 0000000..bd7b828
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseUserInfoServiceImpl.java
@@ -0,0 +1,104 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.BaseUserInfoMapper;
+import com.ruoyi.system.domain.BaseUserInfo;
+import com.ruoyi.system.service.IBaseUserInfoService;
+
+/**
+ * 鐢ㄦ埛Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@Service
+public class BaseUserInfoServiceImpl implements IBaseUserInfoService {
+    @Autowired
+    private BaseUserInfoMapper baseUserInfoMapper;
+
+    /**
+     * 鏌ヨ鐢ㄦ埛
+     *
+     * @param userid 鐢ㄦ埛涓婚敭
+     * @return 鐢ㄦ埛
+     */
+    @Override
+    public BaseUserInfo selectBaseUserInfoByUserid(Long userid) {
+        return baseUserInfoMapper.selectBaseUserInfoByUserid(userid);
+    }
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鍒楄〃
+     *
+     * @param baseUserInfo 鐢ㄦ埛
+     * @return 鐢ㄦ埛
+     */
+    @Override
+    public List<BaseUserInfo> selectBaseUserInfoList(BaseUserInfo baseUserInfo) {
+        return baseUserInfoMapper.selectBaseUserInfoList(baseUserInfo);
+    }
+
+    /**
+     * 鏂板鐢ㄦ埛
+     *
+     * @param baseUserInfo 鐢ㄦ埛
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertBaseUserInfo(BaseUserInfo baseUserInfo) {
+        baseUserInfo.setCreateTime(DateUtils.getNowDate());
+        return baseUserInfoMapper.insertBaseUserInfo(baseUserInfo);
+    }
+
+    /**
+     * 淇敼鐢ㄦ埛
+     *
+     * @param baseUserInfo 鐢ㄦ埛
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateBaseUserInfo(BaseUserInfo baseUserInfo) {
+        baseUserInfo.setUpdateTime(DateUtils.getNowDate());
+        return baseUserInfoMapper.updateBaseUserInfo(baseUserInfo);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鐢ㄦ埛
+     *
+     * @param userids 闇�瑕佸垹闄ょ殑鐢ㄦ埛涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteBaseUserInfoByUserids(Long[] userids) {
+        return baseUserInfoMapper.deleteBaseUserInfoByUserids(userids);
+    }
+
+    /**
+     * 鍒犻櫎鐢ㄦ埛淇℃伅
+     *
+     * @param userid 鐢ㄦ埛涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteBaseUserInfoByUserid(Long userid) {
+        return baseUserInfoMapper.deleteBaseUserInfoByUserid(userid);
+    }
+
+    @Override
+    public String getContact(String personCode, String noticeWay) {
+        BaseUserInfo baseUserInfo = new BaseUserInfo();
+        baseUserInfo.setUsercode(personCode);
+        List<BaseUserInfo> baseUserInfos = baseUserInfoMapper.selectBaseUserInfoList(baseUserInfo);
+        if (noticeWay == "閽夐拤") {
+            return baseUserInfos.get(0).getDingding();
+        } else if (noticeWay == "鎵嬫満") {
+            return baseUserInfos.get(0).getPhone();
+        }
+        //寰俊鍙�
+        return baseUserInfos.get(0).getWechat();
+    }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EquipmentinfoServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EquipmentinfoServiceImpl.java
new file mode 100644
index 0000000..755cce0
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EquipmentinfoServiceImpl.java
@@ -0,0 +1,87 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.EquipmentinfoMapper;
+import com.ruoyi.system.domain.Equipmentinfo;
+import com.ruoyi.system.service.IEquipmentinfoService;
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆慡ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@Service
+public class EquipmentinfoServiceImpl implements IEquipmentinfoService {
+    @Autowired
+    private EquipmentinfoMapper equipmentinfoMapper;
+
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    @Override
+    public Equipmentinfo selectEquipmentinfoById(Long id) {
+        return equipmentinfoMapper.selectEquipmentinfoById(id);
+    }
+
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
+     *
+     * @param equipmentinfo 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    @Override
+    public List<Equipmentinfo> selectEquipmentinfoList(Equipmentinfo equipmentinfo) {
+        return equipmentinfoMapper.selectEquipmentinfoList(equipmentinfo);
+    }
+
+    /**
+     * 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param equipmentinfo 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertEquipmentinfo(Equipmentinfo equipmentinfo) {
+        return equipmentinfoMapper.insertEquipmentinfo(equipmentinfo);
+    }
+
+    /**
+     * 淇敼銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param equipmentinfo 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateEquipmentinfo(Equipmentinfo equipmentinfo) {
+        return equipmentinfoMapper.updateEquipmentinfo(equipmentinfo);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteEquipmentinfoByIds(Long[] ids) {
+        return equipmentinfoMapper.deleteEquipmentinfoByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆戜俊鎭�
+     *
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteEquipmentinfoById(Long id) {
+        return equipmentinfoMapper.deleteEquipmentinfoById(id);
+    }
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/BaseUserInfoMapper.xml b/ruoyi-system/src/main/resources/mapper/system/BaseUserInfoMapper.xml
new file mode 100644
index 0000000..bab1ce8
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/BaseUserInfoMapper.xml
@@ -0,0 +1,191 @@
+<?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.ruoyi.system.mapper.BaseUserInfoMapper">
+
+    <resultMap type="BaseUserInfo" id="BaseUserInfoResult">
+        <result property="userid"    column="userid"    />
+        <result property="usercode"    column="usercode"    />
+        <result property="account"    column="account"    />
+        <result property="phone"    column="phone"    />
+        <result property="password"    column="password"    />
+        <result property="secret"    column="secret"    />
+        <result property="realname"    column="realname"    />
+        <result property="nickname"    column="nickname"    />
+        <result property="roleid"    column="roleid"    />
+        <result property="rolename"    column="rolename"    />
+        <result property="deptid"    column="deptid"    />
+        <result property="deptname"    column="deptname"    />
+        <result property="wardid"    column="wardid"    />
+        <result property="wardname"    column="wardname"    />
+        <result property="usertype"    column="usertype"    />
+        <result property="usertypename"    column="usertypename"    />
+        <result property="dwpermission"    column="dwpermission"    />
+        <result property="isopenlowerorg"    column="isopenlowerorg"    />
+        <result property="isopenshareknow"    column="isopenshareknow"    />
+        <result property="isopengeneraldata"    column="isopengeneraldata"    />
+        <result property="orgid"    column="orgid"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="isupload"    column="isupload"    />
+        <result property="uploadTime"    column="upload_time"    />
+        <result property="deptpermission"    column="deptpermission"    />
+        <result property="wardpermission"    column="wardpermission"    />
+    </resultMap>
+
+    <sql id="selectBaseUserInfoVo">
+        select userid, usercode, account, phone, password, secret, realname, nickname, roleid, rolename, deptid, deptname, wardid, wardname, usertype, usertypename, dwpermission, isopenlowerorg, isopenshareknow, isopengeneraldata, orgid, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, deptpermission, wardpermission from base_user_info
+    </sql>
+
+    <select id="selectBaseUserInfoList" parameterType="BaseUserInfo" resultMap="BaseUserInfoResult">
+        <include refid="selectBaseUserInfoVo"/>
+        <where>
+            <if test="usercode != null  and usercode != ''"> and usercode = #{usercode}</if>
+            <if test="account != null  and account != ''"> and account = #{account}</if>
+            <if test="phone != null  and phone != ''"> and phone = #{phone}</if>
+            <if test="password != null  and password != ''"> and password = #{password}</if>
+            <if test="secret != null  and secret != ''"> and secret = #{secret}</if>
+            <if test="realname != null  and realname != ''"> and realname like concat('%', #{realname}, '%')</if>
+            <if test="nickname != null  and nickname != ''"> and nickname like concat('%', #{nickname}, '%')</if>
+            <if test="roleid != null "> and roleid = #{roleid}</if>
+            <if test="rolename != null  and rolename != ''"> and rolename like concat('%', #{rolename}, '%')</if>
+            <if test="deptid != null  and deptid != ''"> and deptid = #{deptid}</if>
+            <if test="deptname != null  and deptname != ''"> and deptname like concat('%', #{deptname}, '%')</if>
+            <if test="wardid != null  and wardid != ''"> and wardid = #{wardid}</if>
+            <if test="wardname != null  and wardname != ''"> and wardname like concat('%', #{wardname}, '%')</if>
+            <if test="usertype != null "> and usertype = #{usertype}</if>
+            <if test="usertypename != null  and usertypename != ''"> and usertypename like concat('%', #{usertypename}, '%')</if>
+            <if test="dwpermission != null "> and dwpermission = #{dwpermission}</if>
+            <if test="isopenlowerorg != null "> and isopenlowerorg = #{isopenlowerorg}</if>
+            <if test="isopenshareknow != null "> and isopenshareknow = #{isopenshareknow}</if>
+            <if test="isopengeneraldata != null "> and isopengeneraldata = #{isopengeneraldata}</if>
+            <if test="orgid != null  and orgid != ''"> and orgid = #{orgid}</if>
+            <if test="isupload != null "> and isupload = #{isupload}</if>
+            <if test="uploadTime != null "> and upload_time = #{uploadTime}</if>
+            <if test="deptpermission != null  and deptpermission != ''"> and deptpermission = #{deptpermission}</if>
+            <if test="wardpermission != null  and wardpermission != ''"> and wardpermission = #{wardpermission}</if>
+        </where>
+    </select>
+
+    <select id="selectBaseUserInfoByUserid" parameterType="Long" resultMap="BaseUserInfoResult">
+        <include refid="selectBaseUserInfoVo"/>
+        where userid = #{userid}
+    </select>
+
+    <insert id="insertBaseUserInfo" parameterType="BaseUserInfo" useGeneratedKeys="true" keyProperty="userid">
+        insert into base_user_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="usercode != null">usercode,</if>
+            <if test="account != null">account,</if>
+            <if test="phone != null">phone,</if>
+            <if test="password != null">password,</if>
+            <if test="secret != null">secret,</if>
+            <if test="realname != null">realname,</if>
+            <if test="nickname != null">nickname,</if>
+            <if test="roleid != null">roleid,</if>
+            <if test="rolename != null">rolename,</if>
+            <if test="deptid != null">deptid,</if>
+            <if test="deptname != null">deptname,</if>
+            <if test="wardid != null">wardid,</if>
+            <if test="wardname != null">wardname,</if>
+            <if test="usertype != null">usertype,</if>
+            <if test="usertypename != null">usertypename,</if>
+            <if test="dwpermission != null">dwpermission,</if>
+            <if test="isopenlowerorg != null">isopenlowerorg,</if>
+            <if test="isopenshareknow != null">isopenshareknow,</if>
+            <if test="isopengeneraldata != null">isopengeneraldata,</if>
+            <if test="orgid != null">orgid,</if>
+            <if test="delFlag != null and delFlag != ''">del_flag,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="isupload != null">isupload,</if>
+            <if test="uploadTime != null">upload_time,</if>
+            <if test="deptpermission != null">deptpermission,</if>
+            <if test="wardpermission != null">wardpermission,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="usercode != null">#{usercode},</if>
+            <if test="account != null">#{account},</if>
+            <if test="phone != null">#{phone},</if>
+            <if test="password != null">#{password},</if>
+            <if test="secret != null">#{secret},</if>
+            <if test="realname != null">#{realname},</if>
+            <if test="nickname != null">#{nickname},</if>
+            <if test="roleid != null">#{roleid},</if>
+            <if test="rolename != null">#{rolename},</if>
+            <if test="deptid != null">#{deptid},</if>
+            <if test="deptname != null">#{deptname},</if>
+            <if test="wardid != null">#{wardid},</if>
+            <if test="wardname != null">#{wardname},</if>
+            <if test="usertype != null">#{usertype},</if>
+            <if test="usertypename != null">#{usertypename},</if>
+            <if test="dwpermission != null">#{dwpermission},</if>
+            <if test="isopenlowerorg != null">#{isopenlowerorg},</if>
+            <if test="isopenshareknow != null">#{isopenshareknow},</if>
+            <if test="isopengeneraldata != null">#{isopengeneraldata},</if>
+            <if test="orgid != null">#{orgid},</if>
+            <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="isupload != null">#{isupload},</if>
+            <if test="uploadTime != null">#{uploadTime},</if>
+            <if test="deptpermission != null">#{deptpermission},</if>
+            <if test="wardpermission != null">#{wardpermission},</if>
+         </trim>
+    </insert>
+
+    <update id="updateBaseUserInfo" parameterType="BaseUserInfo">
+        update base_user_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="usercode != null">usercode = #{usercode},</if>
+            <if test="account != null">account = #{account},</if>
+            <if test="phone != null">phone = #{phone},</if>
+            <if test="password != null">password = #{password},</if>
+            <if test="secret != null">secret = #{secret},</if>
+            <if test="realname != null">realname = #{realname},</if>
+            <if test="nickname != null">nickname = #{nickname},</if>
+            <if test="roleid != null">roleid = #{roleid},</if>
+            <if test="rolename != null">rolename = #{rolename},</if>
+            <if test="deptid != null">deptid = #{deptid},</if>
+            <if test="deptname != null">deptname = #{deptname},</if>
+            <if test="wardid != null">wardid = #{wardid},</if>
+            <if test="wardname != null">wardname = #{wardname},</if>
+            <if test="usertype != null">usertype = #{usertype},</if>
+            <if test="usertypename != null">usertypename = #{usertypename},</if>
+            <if test="dwpermission != null">dwpermission = #{dwpermission},</if>
+            <if test="isopenlowerorg != null">isopenlowerorg = #{isopenlowerorg},</if>
+            <if test="isopenshareknow != null">isopenshareknow = #{isopenshareknow},</if>
+            <if test="isopengeneraldata != null">isopengeneraldata = #{isopengeneraldata},</if>
+            <if test="orgid != null">orgid = #{orgid},</if>
+            <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="isupload != null">isupload = #{isupload},</if>
+            <if test="uploadTime != null">upload_time = #{uploadTime},</if>
+            <if test="deptpermission != null">deptpermission = #{deptpermission},</if>
+            <if test="wardpermission != null">wardpermission = #{wardpermission},</if>
+        </trim>
+        where userid = #{userid}
+    </update>
+
+    <delete id="deleteBaseUserInfoByUserid" parameterType="Long">
+        delete from base_user_info where userid = #{userid}
+    </delete>
+
+    <delete id="deleteBaseUserInfoByUserids" parameterType="String">
+        delete from base_user_info where userid in
+        <foreach item="userid" collection="array" open="(" separator="," close=")">
+            #{userid}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/EquipmentinfoMapper.xml b/ruoyi-system/src/main/resources/mapper/system/EquipmentinfoMapper.xml
new file mode 100644
index 0000000..1efe6f1
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/EquipmentinfoMapper.xml
@@ -0,0 +1,115 @@
+<?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.ruoyi.system.mapper.EquipmentinfoMapper">
+    
+    <resultMap type="Equipmentinfo" id="EquipmentinfoResult">
+        <result property="id"    column="id"    />
+        <result property="devtype"    column="devtype"    />
+        <result property="equipmentname"    column="equipmentname"    />
+        <result property="modnum"    column="modnum"    />
+        <result property="touyundate"    column="touyundate"    />
+        <result property="gourudate"    column="gourudate"    />
+        <result property="produce"    column="produce"    />
+        <result property="quantity"    column="quantity"    />
+        <result property="unit"    column="unit"    />
+        <result property="useDept"    column="useDept"    />
+        <result property="storePlace"    column="storePlace"    />
+        <result property="technData"    column="technData"    />
+        <result property="remark"    column="remark"    />
+        <result property="statusid"    column="statusid"    />
+    </resultMap>
+
+    <sql id="selectEquipmentinfoVo">
+        select id, devtype, equipmentname, modnum, touyundate, gourudate, produce, quantity, unit, useDept, storePlace, technData, remark, statusid from equipmentinfo
+    </sql>
+
+    <select id="selectEquipmentinfoList" parameterType="Equipmentinfo" resultMap="EquipmentinfoResult">
+        <include refid="selectEquipmentinfoVo"/>
+        <where>  
+            <if test="devtype != null "> and devtype = #{devtype}</if>
+            <if test="equipmentname != null  and equipmentname != ''"> and equipmentname like concat('%', #{equipmentname}, '%')</if>
+            <if test="modnum != null  and modnum != ''"> and modnum = #{modnum}</if>
+            <if test="touyundate != null "> and touyundate = #{touyundate}</if>
+            <if test="gourudate != null "> and gourudate = #{gourudate}</if>
+            <if test="produce != null  and produce != ''"> and produce = #{produce}</if>
+            <if test="quantity != null "> and quantity = #{quantity}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="useDept != null  and useDept != ''"> and useDept = #{useDept}</if>
+            <if test="storePlace != null  and storePlace != ''"> and storePlace = #{storePlace}</if>
+            <if test="technData != null  and technData != ''"> and technData = #{technData}</if>
+            <if test="statusid != null "> and statusid = #{statusid}</if>
+        </where>
+    </select>
+    
+    <select id="selectEquipmentinfoById" parameterType="Long" resultMap="EquipmentinfoResult">
+        <include refid="selectEquipmentinfoVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertEquipmentinfo" parameterType="Equipmentinfo" useGeneratedKeys="true" keyProperty="id">
+        insert into equipmentinfo
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="devtype != null">devtype,</if>
+            <if test="equipmentname != null">equipmentname,</if>
+            <if test="modnum != null">modnum,</if>
+            <if test="touyundate != null">touyundate,</if>
+            <if test="gourudate != null">gourudate,</if>
+            <if test="produce != null">produce,</if>
+            <if test="quantity != null">quantity,</if>
+            <if test="unit != null">unit,</if>
+            <if test="useDept != null">useDept,</if>
+            <if test="storePlace != null">storePlace,</if>
+            <if test="technData != null">technData,</if>
+            <if test="remark != null">remark,</if>
+            <if test="statusid != null">statusid,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="devtype != null">#{devtype},</if>
+            <if test="equipmentname != null">#{equipmentname},</if>
+            <if test="modnum != null">#{modnum},</if>
+            <if test="touyundate != null">#{touyundate},</if>
+            <if test="gourudate != null">#{gourudate},</if>
+            <if test="produce != null">#{produce},</if>
+            <if test="quantity != null">#{quantity},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="useDept != null">#{useDept},</if>
+            <if test="storePlace != null">#{storePlace},</if>
+            <if test="technData != null">#{technData},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="statusid != null">#{statusid},</if>
+         </trim>
+    </insert>
+
+    <update id="updateEquipmentinfo" parameterType="Equipmentinfo">
+        update equipmentinfo
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="devtype != null">devtype = #{devtype},</if>
+            <if test="equipmentname != null">equipmentname = #{equipmentname},</if>
+            <if test="modnum != null">modnum = #{modnum},</if>
+            <if test="touyundate != null">touyundate = #{touyundate},</if>
+            <if test="gourudate != null">gourudate = #{gourudate},</if>
+            <if test="produce != null">produce = #{produce},</if>
+            <if test="quantity != null">quantity = #{quantity},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="useDept != null">useDept = #{useDept},</if>
+            <if test="storePlace != null">storePlace = #{storePlace},</if>
+            <if test="technData != null">technData = #{technData},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="statusid != null">statusid = #{statusid},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteEquipmentinfoById" parameterType="Long">
+        delete from equipmentinfo where id = #{id}
+    </delete>
+
+    <delete id="deleteEquipmentinfoByIds" parameterType="String">
+        delete from equipmentinfo where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/java/com/smartor/domain/DingTalkReqVo.java b/smartor/src/main/java/com/smartor/domain/DingTalkReqVo.java
new file mode 100644
index 0000000..6a925cb
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/DingTalkReqVo.java
@@ -0,0 +1,36 @@
+package com.smartor.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 閽夐拤娑堟伅鍙戦��
+ *
+ * @author ls
+ * @date 2023-05-25
+ */
+@Data
+public class DingTalkReqVo extends BaseEntity {
+
+    /**
+     * 鍙戦�佸唴瀹�
+     */
+    private List<String> contents;
+
+    /**
+     * 鐢ㄦ埛閽夐拤鍙�
+     */
+    private String userId;
+
+    /**
+     * 閮ㄩ棬ID
+     */
+    private String deptId;
+}
diff --git a/smartor/src/main/java/com/smartor/service/DingTalkService.java b/smartor/src/main/java/com/smartor/service/DingTalkService.java
new file mode 100644
index 0000000..00490ee
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/DingTalkService.java
@@ -0,0 +1,23 @@
+package com.smartor.service;
+
+import com.smartor.domain.DingTalkReqVo;
+import com.smartor.domain.HeCategory;
+import com.taobao.api.ApiException;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * 瀹f暀鍒嗙被Service鎺ュ彛
+ *
+ * @author smartor
+ * @date 2023-03-04
+ */
+public interface DingTalkService {
+    /**
+     * 鍙戦�侀拤閽夋秷鎭�
+     *
+     * @param dingTalkReqVo
+     */
+    public Boolean sendNotification(DingTalkReqVo dingTalkReqVo);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IntelligenceCenterService.java b/smartor/src/main/java/com/smartor/service/IntelligenceCenterService.java
new file mode 100644
index 0000000..b6dc747
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IntelligenceCenterService.java
@@ -0,0 +1,22 @@
+package com.smartor.service;
+
+import com.smartor.domain.SchemeCategory;
+
+import java.util.List;
+
+/**
+ * 鏅鸿兘涓績鎺ュ彛
+ *
+ * @author ls
+ * @date 2023-05-23
+ */
+public interface IntelligenceCenterService {
+
+    /**
+     * 鍒犻櫎鏂规鍒嗙被淇℃伅
+     *
+     * @param id 鏂规鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteSchemeCategoryById(Long id);
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/DingTalkServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/DingTalkServiceImpl.java
new file mode 100644
index 0000000..5d7c820
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/DingTalkServiceImpl.java
@@ -0,0 +1,132 @@
+package com.smartor.service.impl;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.dingtalk.api.DefaultDingTalkClient;
+import com.dingtalk.api.DingTalkClient;
+import com.dingtalk.api.request.OapiGettokenRequest;
+import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
+import com.dingtalk.api.request.OapiUserListidRequest;
+import com.dingtalk.api.response.OapiGettokenResponse;
+import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
+import com.dingtalk.api.response.OapiUserListidResponse;
+import com.smartor.domain.DingTalkReqVo;
+import com.smartor.service.DingTalkService;
+import com.smartor.service.IntelligenceCenterService;
+import com.taobao.api.ApiException;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鏅鸿兘涓績
+ *
+ * @author ls
+ * @date 2023-05-23
+ */
+@Service
+public class DingTalkServiceImpl implements DingTalkService {
+
+
+    @Value("${dingAppid}")
+    private String dingAppid;
+
+    @Value("${dingAppSecret}")
+    private String dingAppSecret;
+
+    @Override
+    public Boolean sendNotification(DingTalkReqVo dingTalkReqVo) {
+        Boolean result = false;
+        // Log.info("鍙戦�侀拤閽夐�氱煡");
+        String accessToken = null;
+        try {
+            accessToken = getAccessToken();
+        } catch (ApiException e) {
+            e.printStackTrace();
+        }
+        DingTalkClient client3 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/listid");
+
+        OapiUserListidRequest request2 = new OapiUserListidRequest();
+        request2.setDeptId(675909059L); // 璁剧疆瑕佽幏鍙栫殑閮ㄩ棬 ID锛岃繖閲屼互鏍归儴闂ㄤ负渚�
+        // 璁剧疆閮ㄩ棬 ID锛屽鏋滆幏鍙栨墍鏈夊憳宸ユ墜鏈哄彿锛屽彲浠ヨ缃负鏍归儴闂ㄧ殑 ID
+        OapiUserListidResponse response2 = null;
+        try {
+            response2 = client3.execute(request2, accessToken);
+        } catch (ApiException e) {
+            e.printStackTrace();
+        }
+        String body = response2.getBody();
+        // 瑙f瀽涓篔SONObject
+        JSONObject jsonObject = JSONObject.parseObject(body);
+        // 鎻愬彇鍑篔SONArray
+        JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("result").getJSONArray("userid_list"));
+        // 灏咼SONArray杞负List鍒楄〃
+        String str = JSONObject.toJSONString(jsonArray);
+        List<String> list = JSONObject.parseObject(str, List.class);
+
+        //userid鏁扮粍
+        for (String urid : list) {
+            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
+            OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
+            request.setUseridList(urid);
+            request.setAgentId(1779052814L);
+            request.setToAllUser(false);
+
+            List<String> contents = dingTalkReqVo.getContents();
+            ArrayList<OapiMessageCorpconversationAsyncsendV2Request.Form> objects = new ArrayList<>();
+            for (int i = 0; i < contents.size(); i++) {
+                OapiMessageCorpconversationAsyncsendV2Request.Form formSeverityDesc = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+                formSeverityDesc.setKey("闂" + i);
+                formSeverityDesc.setValue(contents.get(i).toString());
+                objects.add(formSeverityDesc);
+            }
+
+            OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
+            msg.setOa(new OapiMessageCorpconversationAsyncsendV2Request.OA());
+            msg.getOa().setMessageUrl("www.baidu.com");
+            msg.getOa().setPcMessageUrl("www.baidu.com");
+            msg.getOa().setHead(new OapiMessageCorpconversationAsyncsendV2Request.Head());
+            msg.getOa().getHead().setText("寰呭姙浜嬪疁");
+            msg.getOa().getHead().setBgcolor("00409eff");
+            msg.getOa().setBody(new OapiMessageCorpconversationAsyncsendV2Request.Body());
+            msg.getOa().getBody().setTitle("灏婃暚鐨� " + "AAA" + "(椤圭洰缁忕悊)");
+            msg.getOa().getBody().setContent("寰呭鎵�:" + "123" + "鏉�");
+
+            msg.getOa().getBody().setForm(objects);
+            msg.setMsgtype("oa");
+            request.setMsg(msg);
+            //  log.info("鑾峰彇鍙戦�侀�氱煡娑堟伅浣撳拰鑾峰彇鍙戦�侀�氱煡浜哄畬鎴�");
+            OapiMessageCorpconversationAsyncsendV2Response response = null;
+            try {
+                response = client.execute(request, accessToken);
+            } catch (ApiException e) {
+                e.printStackTrace();
+            }
+
+            //  log.info("娑堟伅浠诲姟ID"+response.getTaskId());
+            System.out.println(response.getTaskId());
+
+            result = response.isSuccess();
+        }
+        return result;
+    }
+
+
+    /**
+     * 鑾峰彇 access_token
+     */
+    private String getAccessToken() throws ApiException {
+        DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
+        OapiGettokenRequest request = new OapiGettokenRequest();
+        //Appkey
+        request.setAppkey(dingAppid);
+        //Appsecret
+        request.setAppsecret(dingAppSecret);
+        /*璇锋眰鏂瑰紡*/
+        request.setHttpMethod("GET");
+        OapiGettokenResponse response = client.execute(request);
+        return response.getAccessToken();
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IntelligenceCenterServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IntelligenceCenterServiceImpl.java
new file mode 100644
index 0000000..087d28d
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IntelligenceCenterServiceImpl.java
@@ -0,0 +1,33 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.SchemeCategory;
+import com.smartor.mapper.SchemeCategoryMapper;
+import com.smartor.service.ISchemeCategoryService;
+import com.smartor.service.IntelligenceCenterService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 鏅鸿兘涓績
+ *
+ * @author ls
+ * @date 2023-05-23
+ */
+@Service
+public class IntelligenceCenterServiceImpl implements IntelligenceCenterService {
+
+    /**
+     * 鍒犻櫎鏂规鍒嗙被淇℃伅
+     *
+     * @param id 鏂规鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteSchemeCategoryById(Long id) {
+
+        return 0;
+    }
+}

--
Gitblit v1.9.3