liusheng
2023-05-25 bed24ea3fdeee959b85b699a82d53c5112adb219
代码提交
已添加19个文件
已修改6个文件
1958 ■■■■■ 文件已修改
ruoyi-admin/pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseUserInfoController.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/DingTalkController.java 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/EquipmentinfoController.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IntelligenceCenterController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/WeChatController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-druid.yml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/BaseUserInfo.java 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/Equipmentinfo.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/ReportReqVo.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/BaseUserInfoMapper.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/EquipmentinfoMapper.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/IBaseUserInfoService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/IEquipmentinfoService.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseUserInfoServiceImpl.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EquipmentinfoServiceImpl.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/BaseUserInfoMapper.xml 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/EquipmentinfoMapper.xml 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/DingTalkReqVo.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/DingTalkService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IntelligenceCenterService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/DingTalkServiceImpl.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/IntelligenceCenterServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/pom.xml
@@ -80,7 +80,6 @@
            <artifactId>core</artifactId>
            <version>2.0</version>
        </dependency>
    </dependencies>
    <build>
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);
    }
}
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();
        // è§£æžä¸ºJSONObject
        JSONObject jsonObject = JSONObject.parseObject(body);
        // æå–出JSONArray
        JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("result").getJSONArray("userid_list"));
        // å°†JSONArray转为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("工工工a ");
            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);
    }
}
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;
/**
 * ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘Controller
 *
 * @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.获取处理部门,调用钉钉接口,将上报问题发出
        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);
    }
}
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 ä¸­çš„æ¯ä¸ªé”®å€¼å¯¹
            }
        }
    }
}
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;
    /**
     * èŽ·å–æ¨¡æ¿ä¿¡æ¯
ruoyi-admin/src/main/resources/application-druid.yml
@@ -55,5 +55,12 @@
        wall:
          config:
            multi-statement-allow: true
  appid : wxf50c5c72265188eb
  appSecret : 7ab0a81392a96b157efa1df00f9cd939
  #微信公众号的密钥
appid: wx1c5243d2337753f4
appSecret: 84a2186a0d175e88345267c716516cd3
#钉钉的密钥
dingAppid: dingn8iip5ubj7clrrsv
dingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD
ruoyi-common/pom.xml
@@ -159,6 +159,7 @@
            <artifactId>alibaba-dingtalk-service-sdk</artifactId>
            <version>2.0.0</version>
        </dependency>
    </dependencies>
</project>
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 @@
        // æŒ‰æ–°çš„cronExpression表达式构建一个新的trigger
        CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup))
                .withSchedule(cronScheduleBuilder).build();
        //下面这里可以控制执行次数“withRepeatCount(1),0代码执行一次,1代表执行两次...”,withIntervalInSeconds(10)代表多少秒后执行;这里没有写任务执行完成后,删除任务,后面需要再补上
//        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());
        }
        // æš‚停任务
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;
}
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;
    /** çŠ¶æ€id */
    @Excel(name = "状态id")
    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();
    }
}
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;
}
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);
}
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;
/**
 * ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘Mapper接口
 *
 * @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);
}
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);
}
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;
/**
 * ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘Service接口
 *
 * @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);
}
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();
    }
}
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;
/**
 * ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘Service业务层处理
 *
 * @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);
    }
}
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>
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>
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;
}
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;
/**
 * å®£æ•™åˆ†ç±»Service接口
 *
 * @author smartor
 * @date 2023-03-04
 */
public interface DingTalkService {
    /**
     * å‘送钉钉消息
     *
     * @param dingTalkReqVo
     */
    public Boolean sendNotification(DingTalkReqVo dingTalkReqVo);
}
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);
}
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();
        // è§£æžä¸ºJSONObject
        JSONObject jsonObject = JSONObject.parseObject(body);
        // æå–出JSONArray
        JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("result").getJSONArray("userid_list"));
        // å°†JSONArray转为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();
    }
}
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;
    }
}