Zimo преди 1 седмица
родител
ревизия
c38d112db4

+ 40 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/controller/admin/TodoController.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.server.controller.admin;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.server.controller.admin.vo.IotOaPersonRespVO;
+import cn.iocoder.yudao.server.dal.mysql.PmsMapper;
+import cn.iocoder.yudao.server.service.PortalOaFlow;
+import com.google.common.collect.ImmutableMap;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Tag(name = "管理后台 - 待办接口")
+@RestController
+@RequestMapping("/portal/todo")
+@Validated
+public class TodoController {
+    @Resource
+    private PortalOaFlow portalOaFlow;
+    @Resource
+    private PmsMapper pmsMapper;
+
+    @GetMapping("/oa")
+    public CommonResult<ImmutableMap> oaTodo(String workcode) throws Exception {
+        List<IotOaPersonRespVO> iotOaPersonRespVOS = pmsMapper.selectOaPersonByCode(workcode);
+        if (CollUtil.isEmpty(iotOaPersonRespVOS)) {
+            throw new ServiceException(new ErrorCode(1,"不存在OA用户"));
+        }
+        ImmutableMap<String, Object> oaTodo = portalOaFlow.getOaTodo(iotOaPersonRespVOS.get(0).getOaId());
+        return CommonResult.success(oaTodo);
+    }
+
+}

+ 3 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/controller/admin/vo/FlowPageReqVO.java

@@ -29,6 +29,9 @@ public class FlowPageReqVO extends PageParam {
     @Schema(description = "状态(0正常 1停用)", example = "1")
     private Integer status;
 
+    @Schema(description = "类型")
+    private String type;
+
     @Schema(description = "备注", example = "你说的对")
     private String remark;
 

+ 3 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/controller/admin/vo/FlowRespVO.java

@@ -35,6 +35,9 @@ public class FlowRespVO {
     @ExcelProperty("状态(0正常 1停用)")
     private Integer status;
 
+    @Schema(description = "类型")
+    private String type;
+
     @Schema(description = "排序")
     private Integer sort;
 

+ 3 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/controller/admin/vo/FlowSaveReqVO.java

@@ -32,6 +32,9 @@ public class FlowSaveReqVO {
     @Schema(description = "排序")
     private Integer sort;
 
+    @Schema(description = "类型")
+    private String type;
+
     @Schema(description = "图标")
     private String icon;
 

+ 95 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/controller/admin/vo/IotOaPersonRespVO.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.server.controller.admin.vo;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - oa人员 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotOaPersonRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "10139")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "公司开始日期")
+    @ExcelProperty("公司开始日期")
+    private String companystartdate;
+
+    @Schema(description = "所属分部1")
+    @ExcelProperty("所属分部1")
+    private String subcompanyid1;
+
+    @Schema(description = "所属分部名称", example = "张三")
+    @ExcelProperty("所属分部名称")
+    private String subcompanyname;
+
+    @Schema(description = "工作序列", example = "王五")
+    @ExcelProperty("工作序列")
+    private String jobgroupname;
+
+    @Schema(description = "无", example = "11411")
+    @ExcelProperty("无")
+    private String belongtoid;
+
+    @Schema(description = "所属集团编码")
+    @ExcelProperty("所属集团编码")
+    private String subcompanycode;
+
+    @Schema(description = "oaid", example = "32027")
+    @ExcelProperty("oaid")
+    private String oaId;
+
+    @Schema(description = "姓名", example = "王五")
+    @ExcelProperty("姓名")
+    private String lastname;
+
+    @Schema(description = "合同结束日期")
+    @ExcelProperty("合同结束日期")
+    private String enddate;
+
+    @Schema(description = "所属部门名称", example = "芋艿")
+    @ExcelProperty("所属部门名称")
+    private String departmentname;
+
+    @Schema(description = "状态", example = "2")
+    @ExcelProperty("状态")
+    private String status;
+
+    @Schema(description = "工作职务", example = "王五")
+    @ExcelProperty("工作职务")
+    private String jobtitlename;
+
+    @Schema(description = "部门编码")
+    @ExcelProperty("部门编码")
+    private String departmentcode;
+
+    @Schema(description = "工号")
+    @ExcelProperty("工号")
+    private String workcode;
+
+    @Schema(description = "性别")
+    @ExcelProperty("性别")
+    private String sex;
+
+    @Schema(description = "部门id", example = "12290")
+    @ExcelProperty("部门id")
+    private String departmentid;
+
+    @Schema(description = "手机号")
+    @ExcelProperty("手机号")
+    private String mobile;
+
+    @Schema(description = "工作地点", example = "22757")
+    @ExcelProperty("工作地点")
+    private String locationid;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 1 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/dal/dataobject/FlowDO.java

@@ -37,6 +37,7 @@ public class FlowDO extends BaseDO {
     private String flowUrl;
     private String indexUrl;
     private Integer sort;
+    private String type;
     /**
      * 状态(0正常 1停用)
      */

+ 28 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/dal/dataobject/TDDeviceDO.java

@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.server.dal.dataobject;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+import java.sql.Timestamp;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className TDDeviceDO
+ * @description
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TDDeviceDO extends BaseDO {
+
+    private String deviceName;
+    private Timestamp ts;
+    private Timestamp ts1;
+    private String identity;
+    private String logValue;
+
+}

+ 29 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/dal/mysql/PmsMapper.java

@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.server.dal.mysql;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.server.controller.admin.vo.IotOaPersonRespVO;
+import cn.iocoder.yudao.server.dal.dataobject.TDDeviceDO;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className TDDeviceMapper
+ * @description
+ */
+@Mapper
+public interface PmsMapper extends BaseMapperX<TDDeviceDO> {
+    @Select("SELECT * FROM rq_iot_oa_person WHERE workcode ='${workcode}'")
+    @DS("pms")
+    @TenantIgnore
+    List<IotOaPersonRespVO> selectOaPersonByCode(@Param("workcode") String workcode);
+
+
+}

+ 80 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/rest/CrmRest.java

@@ -0,0 +1,80 @@
+package cn.iocoder.yudao.server.rest;
+
+import cn.iocoder.yudao.module.system.oa.SslSkippingRestTemplate;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.ImmutableMap;
+import lombok.Data;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.atomic.AtomicReference;
+
+@Component
+public class CrmRest {
+    private static final String CLIENT_ID = "baca57533e1909447a6f1918cad00bc2";
+    private static final String CLIENT_SECRET = "d38fcf6dcb0f754cece55862b1ae77b3";
+    private static final String REDIRECT_URI = "https://api-tencent.xiaoshouyi.com/";
+
+    /**
+     * 刷新token
+     * @param refreshToken
+     * @return
+     */
+    public ImmutableMap<String, String> refreshToken(String refreshToken) {
+        HttpHeaders headers = new HttpHeaders();
+        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(headers);
+        RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
+
+        String result = restTemplate.postForObject("https://login.xiaoshouyi.com/auc/oauth2/token?grant_type=refresh_token&client_id="
+                +CLIENT_ID+"&client_secret="+CLIENT_SECRET+"&refresh_token="+refreshToken, requestEntity, String.class);
+        JSONObject jsonObject = JSON.parseObject(result);
+        String accessToken = String.valueOf(jsonObject.get("access_token"));
+        String refreshToken1 = String.valueOf(jsonObject.get("refresh_token"));
+        return ImmutableMap.of("access",accessToken,"refresh",refreshToken1);
+    }
+
+    /**
+     * 查询用户信息,为了获取userid
+     *
+     * @param token
+     * @return
+     */
+    public String querySqlUser(String token, String workcode) {
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Authorization", token);
+        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(headers);
+        RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
+        ResponseEntity<String> exchange = restTemplate.exchange("https://api-tencent.xiaoshouyi.com/rest/data/v2/query?q=select id,name,unionId,phone,personalEmail from userselect id,name,unionId,phone,personalEmail from user",
+                HttpMethod.GET, requestEntity, String.class);
+        String body = exchange.getBody();
+        List<CrmUser> crmUsers = JSON.parseArray(body, CrmUser.class);
+        AtomicReference<String> userId = new AtomicReference<>("");
+        if (crmUsers != null) {
+            crmUsers.stream().filter(e -> e.getUnionId().equals(workcode)).findAny().ifPresent(f ->{
+                userId.set(f.getId());
+            });
+        }
+        return userId.get();
+    }
+
+
+
+
+    @Data
+    static class CrmUser{
+        private String id;
+        private String name;
+        private String unionId;
+        private String phone;
+        private String personalEmail;
+    }
+}

+ 5 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/service/PmsService.java

@@ -0,0 +1,5 @@
+package cn.iocoder.yudao.server.service;
+
+public interface PmsService {
+    String getOaId(String workCode);
+}

+ 11 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/service/PmsServiceImpl.java

@@ -0,0 +1,11 @@
+package cn.iocoder.yudao.server.service;
+
+import com.baomidou.dynamic.datasource.annotation.Slave;
+
+public class PmsServiceImpl implements PmsService{
+    @Override
+    @Slave
+    public String getOaId(String workCode) {
+        return "";
+    }
+}

+ 198 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/service/PortalOaFlow.java

@@ -0,0 +1,198 @@
+package cn.iocoder.yudao.server.service;
+
+import cn.iocoder.yudao.module.system.oa.E9ApiTokenUtil;
+import cn.iocoder.yudao.module.system.oa.SslSkippingRestTemplate;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.ImmutableMap;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Component;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Component
+public class PortalOaFlow {
+    @Value("${oa.appid}")
+    private String appid;
+    @Value("${oa.cpk}")
+    private String cpk;
+    @Value("${oa.register}")
+    private String registerUrl;
+    @Value("${oa.gettoken}")
+    private String tokenUrl;
+    @Value("${oa.companyUrl}")
+    private String companyUrl;
+    @Value("${oa.departmentUrl}")
+    private String departmentUrl;
+    @Value("${oa.userUrl}")
+    private String userUrl;
+    @Value("${oa.workflowId}")
+    private String workflowId;
+    @Value("${oa.requestName}")
+    private String requestName;
+    @Value("${oa.outMaintain}")
+    private String outMaintainUrl;
+
+    private static String spk = "";
+    private static String secret = "";
+
+
+
+    public void register() throws Exception{
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("appid", appid);
+        headers.add("cpk", cpk);
+
+        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(headers);
+        RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
+
+        String result = restTemplate.postForObject(registerUrl, requestEntity, String.class);
+        JSONObject jsonObject = JSON.parseObject(result);
+        spk = String.valueOf(jsonObject.get("spk"));
+        secret = String.valueOf(jsonObject.get("secret"));
+        System.out.println("result register:" + result);
+
+    }
+
+    public String getToken() throws Exception{
+        if (StringUtils.isBlank(spk) || StringUtils.isBlank(secret)) {
+            register();
+        }
+        String secretEn = E9ApiTokenUtil.encryptString(spk, secret);
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("appid", appid);
+        headers.add("secret", secretEn);
+
+        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(headers);
+        RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
+
+        String result = restTemplate.postForObject(tokenUrl, requestEntity, String.class);
+        JSONObject jsonObject = JSON.parseObject(result);
+        String token = String.valueOf(jsonObject.get("token"));
+        System.out.println("result token:" + result);
+        return token;
+    }
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    public ImmutableMap<String, Object> getOaTodo(String oaId) throws Exception {
+        String token = getToken();
+
+        HttpHeaders headersOut = new HttpHeaders();
+        headersOut.add("token", token);
+        headersOut.add("appid", appid);
+        String person = E9ApiTokenUtil.encryptString(spk, oaId);
+        headersOut.add("userid", person);
+        headersOut.setContentType(MediaType.APPLICATION_JSON);
+        Map<String, Object> params = new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
+        map.put("root", ImmutableMap.of("createrid", oaId));
+        params.put("conditions", map);
+        params.put("pageSize", 20);
+        params.put("pageNo", 1);
+        System.out.println(JSON.toJSONString(params));
+        HttpEntity<Map<String, Object>> requestEntityOut = new HttpEntity<>(params, headersOut);
+        //待办数量
+        String out = restTemplate.postForObject("https://yfoa.keruioil.com/api/workflow/paService/getDoingWorkflowRequestCount", requestEntityOut, String.class);
+        //待办明细
+        map.put("root", ImmutableMap.of("craterid", oaId));
+        params.put("conditions", map);
+        HttpEntity<Map<String, Object>> requestEntityOut1 = new HttpEntity<>(params, headersOut);
+        String todoList = restTemplate.postForObject("https://yfoa.keruioil.com/api/workflow/paService/getDoingWorkflowRequestList", requestEntityOut1, String.class);
+        List<JSONObject> jsonObjects = JSON.parseArray(todoList, JSONObject.class);
+        ImmutableMap<String, Object> todo = ImmutableMap.of("todoCount", out,"todoList", jsonObjects);
+        return todo;
+    }
+
+//    public void createOutRepairFlow(IotMaintainDO iotMaintainDO) throws Exception {
+//        String token = getToken();
+//        HttpHeaders headersOut = new HttpHeaders();
+//        headersOut.add("token", token);
+//        headersOut.add("appid", appid);
+//        String person = E9ApiTokenUtil.encryptString(spk, iotMaintainDO.getApplyPersonId());
+//        headersOut.add("userid", person);
+//        headersOut.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+//
+//        OutRepairFlow flow = new OutRepairFlow().setFieldName("xmjl").setFieldValue(iotMaintainDO.getProjectManager());
+//        OutRepairFlow flow1 = new OutRepairFlow().setFieldName("sqr").setFieldValue(iotMaintainDO.getApplyPersonId());
+//        List<IotOaPersonDO> dos = iotOaPersonMapper.selectList("oa_id", iotMaintainDO.getApplyPersonId());
+//        if (CollUtil.isEmpty(dos)) {
+//            throw new ServiceException(new ErrorCode(111, "不存在oa部门"));
+//        }
+//        OutRepairFlow flow2 = new OutRepairFlow().setFieldName("sqbm").setFieldValue(dos.get(0).getDepartmentid());
+//        OutRepairFlow flow3 = new OutRepairFlow().setFieldName("sqrq").setFieldValue(DateUtil.format(new Date(), DatePattern.NORM_DATE_PATTERN));
+//        OutRepairFlow flow4 = new OutRepairFlow().setFieldName("clxh").setFieldValue(iotMaintainDO.getDeviceName());
+//        OutRepairFlow flow5 = new OutRepairFlow().setFieldName("cph").setFieldValue(iotMaintainDO.getDeviceName());
+//        OutRepairFlow flow6 = new OutRepairFlow().setFieldName("wxyy").setFieldValue(iotMaintainDO.getMaintainDescription());
+//        OutRepairFlow flow7 = new OutRepairFlow().setFieldName("ygjey").setFieldValue(String.valueOf(iotMaintainDO.getMaintainFee()));
+//        OutRepairFlow flow8 = new OutRepairFlow().setFieldName("wxdd").setFieldValue(Objects.isNull(iotMaintainDO.getAddress())?"": iotMaintainDO.getAddress());
+//        OutRepairFlow flow9 = new OutRepairFlow().setFieldName("ggxh").setFieldValue(String.valueOf(iotMaintainDO.getModel()));
+//        OutRepairFlow flow10 = new OutRepairFlow().setFieldName("qyrq").setFieldValue(StringUtils.substring(iotMaintainDO.getEnableDate(), 0,10));
+//        OutRepairFlow flow11 = new OutRepairFlow().setFieldName("wxlb").setFieldValue(String.valueOf(iotMaintainDO.getMaintainClassify()));
+//        OutRepairFlow flow12 = new OutRepairFlow().setFieldName("yzglxs").setFieldValue(Objects.isNull(iotMaintainDO.getKmHour())?"": iotMaintainDO.getKmHour());
+//        OutRepairFlow flow13 = new OutRepairFlow().setFieldName("wxcj").setFieldValue(String.valueOf(iotMaintainDO.getSupplier()));
+//        OutRepairFlow flow14 = new OutRepairFlow().setFieldName("gzms").setFieldValue(String.valueOf(iotMaintainDO.getDescription()));
+//        OutRepairFlow flow15 = new OutRepairFlow().setFieldName("wxxm").setFieldValue(String.valueOf(iotMaintainDO.getMaintainItem()));
+//        List<String> strings = JSON.parseArray(iotMaintainDO.getOutFile(), String.class);
+//        List<ImmutableMap> files = new ArrayList<>();
+//        strings.forEach(e ->{
+//            String fileName = FileUtils.getFileNameByUrlParse(e);
+//            String s1 = FileUtils.encodePathSegment(fileName);
+//            String s = StringUtils.substringBeforeLast(e, "/");
+//            files.add(ImmutableMap.of("filePath", s+"/"+s1,"fileName", fileName));
+//        });
+//
+//        OutRepairFlow flow16 = new OutRepairFlow().setFieldName("fjsc").setFieldValue(JSON.toJSONString(files));
+//        OutRepairFlow flow17 = new OutRepairFlow().setFieldName("sfdy").setFieldValue("1");
+//        ImmutableList<OutRepairFlow> outRepairFlows = ImmutableList.of(flow16,flow12, flow3, flow4, flow5, flow6, flow7, flow8, flow9, flow10, flow11, flow2, flow, flow14, flow1, flow15, flow13,flow17);
+//
+//
+//
+//        // 创建表单数据
+//        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
+//        params.add("workflowId", workflowId);
+//        params.add("requestName", requestName);
+//        params.add("mainData", JSON.toJSONString(outRepairFlows));
+//        Map<String, String> other = new HashMap<>();
+//        other.put("isnextflow", "1");
+//        params.add("otherParams", JSON.toJSONString(other));
+//        System.out.println("------------"+JSON.toJSONString(params));
+//        System.out.println(headersOut);
+//
+//        // 3. 组合请求头和请求体
+//        HttpEntity<MultiValueMap<String, Object>> requestEntityOut = new HttpEntity<>(params, headersOut);
+////        RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
+//        String out = restTemplate.postForObject(outMaintainUrl, requestEntityOut, String.class);
+//        JSONObject outInfo = JSON.parseObject(out);
+//        //请求成功
+//        if (Objects.isNull(outInfo) || !"success".equalsIgnoreCase(String.valueOf(outInfo.get("code")))) {
+//            throw new ServiceException(new ErrorCode(777, String.valueOf(outInfo.get("msg"))));
+//        }
+//        JSONObject jsonObject = JSON.parseObject(outInfo.get("data").toString());
+//        String requestid = String.valueOf(jsonObject.get("requestid"));
+//        iotMaintainDO.setRequestId(requestid);
+//        iotMaintainMapper.updateById(iotMaintainDO);
+//
+//    }
+//
+//    @Data
+//    @Builder
+//    @NoArgsConstructor
+//    @AllArgsConstructor
+//    public static class OutRepairFlow {
+//        private String fieldName;
+//        private String fieldValue;
+//    }
+
+}

+ 3 - 3
yudao-server/src/main/resources/application-dev.yaml

@@ -50,10 +50,10 @@ spring:
           url: jdbc:mysql://172.21.0.248:3306/ruoyi-mini?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
           username: root
           password: .N_Mdq!BR1W4
-        slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
+        pms: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
           lazy: true # 开启懒加载,保证启动速度
-          url: jdbc:mysql://172.21.0.248:3306/ruoyi-mini?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
-          username: root
+          url: jdbc:mysql://172.21.20.20:3306/rqiot-test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
+          username: ruiqi
           password: .N_Mdq!BR1W4
 
   # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优