Просмотр исходного кода

由从access文件改为从sqlite读取数据

lamphua 2 месяцев назад
Родитель
Сommit
9fc6046f17

+ 1
- 1
cmc-temperature-back/cmc-monitoring/src/main/java/com/ruoyi/monitoring/controller/CmcTemperatureController.java Просмотреть файл

193
                 .from(CmcTemperature.class)
193
                 .from(CmcTemperature.class)
194
                 .leftJoin(CmcChannel.class)
194
                 .leftJoin(CmcChannel.class)
195
                 .on(CmcChannel::getSensorNo, CmcTemperature::getSensorNo)
195
                 .on(CmcChannel::getSensorNo, CmcTemperature::getSensorNo)
196
-                .where(CmcChannel::getInfo).like(cmcChannel.getInfo())
196
+                .where(CmcChannel::getInfo).likeLeft(cmcChannel.getInfo())
197
                 .and(CmcTemperature::getId).eq(cmcTemperature.getId())
197
                 .and(CmcTemperature::getId).eq(cmcTemperature.getId())
198
                 .and(CmcTemperature::getGroupNo).eq(cmcTemperature.getGroupNo())
198
                 .and(CmcTemperature::getGroupNo).eq(cmcTemperature.getGroupNo())
199
                 .and(CmcTemperature::getSensorNo).eq(cmcTemperature.getSensorNo())
199
                 .and(CmcTemperature::getSensorNo).eq(cmcTemperature.getSensorNo())

+ 1
- 1
cmc-temperature-back/cmc-monitoring/src/main/java/com/ruoyi/monitoring/mapper/CmcChannelMapper.java Просмотреть файл

10
  * 水温监测 数据层
10
  * 水温监测 数据层
11
  * @author cmc
11
  * @author cmc
12
  */
12
  */
13
-@UseDataSource("access")
13
+@UseDataSource("sqlite")
14
 public interface CmcChannelMapper extends BaseMapper<CmcChannel> {
14
 public interface CmcChannelMapper extends BaseMapper<CmcChannel> {
15
 
15
 
16
     /**
16
     /**

+ 6
- 2
cmc-temperature-back/cmc-monitoring/src/main/java/com/ruoyi/monitoring/mapper/CmcTemperatureMapper.java Просмотреть файл

4
 import com.ruoyi.monitoring.domain.CmcTemperature;
4
 import com.ruoyi.monitoring.domain.CmcTemperature;
5
 import com.mybatisflex.annotation.UseDataSource;
5
 import com.mybatisflex.annotation.UseDataSource;
6
 import com.mybatisflex.core.BaseMapper;
6
 import com.mybatisflex.core.BaseMapper;
7
+import org.apache.ibatis.annotations.Param;
7
 
8
 
8
 import java.util.List;
9
 import java.util.List;
9
 
10
 
11
  * 水温监测 数据层
12
  * 水温监测 数据层
12
  * @author cmc
13
  * @author cmc
13
  */
14
  */
14
-@UseDataSource("access")
15
+@UseDataSource("sqlite")
15
 public interface CmcTemperatureMapper extends BaseMapper<CmcTemperature> {
16
 public interface CmcTemperatureMapper extends BaseMapper<CmcTemperature> {
16
 
17
 
17
     /**
18
     /**
19
      * @param cmcTemperature 水温监测信息
20
      * @param cmcTemperature 水温监测信息
20
      * @param cmcChannel 监测点位信息
21
      * @param cmcChannel 监测点位信息
21
      */
22
      */
22
-    List<CmcTemperature> listTemperature(CmcTemperature cmcTemperature, CmcChannel cmcChannel);
23
+    List<CmcTemperature> listTemperature(@Param("cmcTemperature") CmcTemperature cmcTemperature,
24
+                                         @Param("cmcChannel") CmcChannel cmcChannel,
25
+                                         @Param("startTime") String startTime,
26
+                                         @Param("endTime") String endTime);
23
 
27
 
24
 }
28
 }

+ 12
- 4
cmc-temperature-back/cmc-monitoring/src/main/java/com/ruoyi/monitoring/service/impl/CmcTemperatureServiceImpl.java Просмотреть файл

11
 import org.noear.solon.annotation.Component;
11
 import org.noear.solon.annotation.Component;
12
 import org.noear.solon.annotation.Inject;
12
 import org.noear.solon.annotation.Inject;
13
 
13
 
14
+import java.text.SimpleDateFormat;
14
 import java.util.ArrayList;
15
 import java.util.ArrayList;
15
 import java.util.Date;
16
 import java.util.Date;
16
 import java.util.List;
17
 import java.util.List;
38
     public List<CmcTemperature> listTemperature(CmcTemperature cmcTemperature, CmcChannel cmcChannel) {
39
     public List<CmcTemperature> listTemperature(CmcTemperature cmcTemperature, CmcChannel cmcChannel) {
39
         // 使用mapper直接查询,避免循环依赖
40
         // 使用mapper直接查询,避免循环依赖
40
         int channelSize = cmcChannelMapper.listChannel(cmcChannel).size();
41
         int channelSize = cmcChannelMapper.listChannel(cmcChannel).size();
41
-        QueryWrapper qw = getQW(cmcTemperature, cmcChannel);
42
-        List<CmcTemperature> records = cmcTemperatureMapper.selectListByQuery(qw);
42
+//        QueryWrapper qw = getQW(cmcTemperature, cmcChannel);
43
+//        List<CmcTemperature> records = cmcTemperatureMapper.selectListByQuery(qw);
44
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
45
+        String startStr = cmcTemperature.getStartTime() == null ? null : sdf.format(cmcTemperature.getStartTime());
46
+        String endStr = cmcTemperature.getEndTime() == null ? null : sdf.format(cmcTemperature.getEndTime());
47
+        List<CmcTemperature> records = cmcTemperatureMapper.listTemperature(cmcTemperature, cmcChannel, startStr, endStr);
43
         if (records == null || records.isEmpty()) {
48
         if (records == null || records.isEmpty()) {
44
             return new ArrayList<>();
49
             return new ArrayList<>();
45
         }
50
         }
75
             Date fifteenMinutesAgo = new Date(fifteenMinutesAgoMillis);
80
             Date fifteenMinutesAgo = new Date(fifteenMinutesAgoMillis);
76
             temperature.setStartTime(fifteenMinutesAgo);
81
             temperature.setStartTime(fifteenMinutesAgo);
77
             temperature.setEndTime(cmcTemperature.getStartTime());
82
             temperature.setEndTime(cmcTemperature.getStartTime());
78
-            QueryWrapper qw1 = getQW(temperature, cmcChannel);
79
-            List<CmcTemperature> previousData = cmcTemperatureMapper.selectListByQuery(qw1);
83
+//            QueryWrapper qw1 = getQW(temperature, cmcChannel);
84
+//            List<CmcTemperature> previousData = cmcTemperatureMapper.selectListByQuery(qw1);
85
+            String prevStart = temperature.getStartTime() == null ? null : sdf.format(temperature.getStartTime());
86
+            String prevEnd = temperature.getEndTime() == null ? null : sdf.format(temperature.getEndTime());
87
+            List<CmcTemperature> previousData = cmcTemperatureMapper.listTemperature(temperature, cmcChannel, prevStart, prevEnd);
80
 
88
 
81
             if (previousData != null && !previousData.isEmpty()) {
89
             if (previousData != null && !previousData.isEmpty()) {
82
                 // 合并数据,避免重复创建列表
90
                 // 合并数据,避免重复创建列表

+ 1
- 1
cmc-temperature-back/cmc-monitoring/src/main/resources/mapper/temperature/CmcChannelMapper.xml Просмотреть файл

25
         <where>
25
         <where>
26
             <if test="Id != null ">c.ID = #{Id}</if>
26
             <if test="Id != null ">c.ID = #{Id}</if>
27
             <if test="SensorNo != null ">c.Sensor_No = #{SensorNo}</if>
27
             <if test="SensorNo != null ">c.Sensor_No = #{SensorNo}</if>
28
-            <if test="Info != null ">c.Info LIKE concat('%', #{Info}, '%')</if>
28
+            <if test="Info != null ">c.Info LIKE '%' || #{Info} || '%'</if>
29
             <if test="Ver != null ">c.Ver = #{Ver}</if>
29
             <if test="Ver != null ">c.Ver = #{Ver}</if>
30
             <if test="Sn != null ">c.Sn = #{Sn}</if>
30
             <if test="Sn != null ">c.Sn = #{Sn}</if>
31
             <if test="Ca != null ">c.Ca = #{Ca}</if>
31
             <if test="Ca != null ">c.Ca = #{Ca}</if>

+ 16
- 8
cmc-temperature-back/cmc-monitoring/src/main/resources/mapper/temperature/CmcTemperatureMapper.xml Просмотреть файл

11
         <result property="Data"    column="Data"    />
11
         <result property="Data"    column="Data"    />
12
         <result property="Volt"      column="Volt"      />
12
         <result property="Volt"      column="Volt"      />
13
         <result property="CSQ"    column="CSQ"    />
13
         <result property="CSQ"    column="CSQ"    />
14
+        <association property="channel" javaType="com.ruoyi.monitoring.domain.CmcChannel">
15
+            <result property="Info" column="Info" />
16
+        </association>
14
     </resultMap>
17
     </resultMap>
15
 
18
 
16
     <sql id="selectTemperatureVo">
19
     <sql id="selectTemperatureVo">
17
-        SELECT d.ID, d.Group_No, d.Sensor_No, d.DateTime, d.Data, d.Volt, d.CSQ
20
+        SELECT d.ID, d.Group_No, d.Sensor_No, d.DateTime, d.Data, d.Volt, d.CSQ, c.Info
18
         FROM Data d
21
         FROM Data d
22
+        LEFT JOIN Channel c ON c.Sensor_No = d.Sensor_No
19
     </sql>
23
     </sql>
20
 
24
 
21
-    <select id="listTemperature" parameterType="com.ruoyi.monitoring.domain.CmcTemperature" resultMap="CmcTemperatureResult">
25
+    <select id="listTemperature" resultMap="CmcTemperatureResult">
22
         <include refid="selectTemperatureVo"/>
26
         <include refid="selectTemperatureVo"/>
23
         <where>
27
         <where>
24
-            <if test="Id != null ">d.ID = #{Id}</if>
25
-            <if test="GroupNo != null ">d.Group_No = #{GroupNo}</if>
26
-            <if test="SensorNo != null ">d.Sensor_No = #{SensorNo}</if>
27
-            <if test="Data != null ">d.Data = #{Data}</if>
28
-            <if test="Volt != null ">d.Volt = #{Volt}</if>
29
-            <if test="CSQ != null ">d.CSQ = #{CSQ}</if>
28
+            <if test="CmcTemperature != null and CmcTemperature.Id != null">d.ID = #{CmcTemperature.Id}</if>
29
+            <if test="CmcTemperature != null and CmcTemperature.GroupNo != null">AND d.Group_No = #{CmcTemperature.GroupNo}</if>
30
+            <if test="CmcTemperature != null and CmcTemperature.SensorNo != null">AND d.Sensor_No = #{CmcTemperature.SensorNo}</if>
31
+            <if test="CmcTemperature != null and CmcTemperature.Data != null">AND d.Data = #{CmcTemperature.Data}</if>
32
+            <if test="CmcTemperature != null and CmcTemperature.Volt != null">AND d.Volt = #{CmcTemperature.Volt}</if>
33
+            <if test="CmcTemperature != null and CmcTemperature.CSQ != null">AND d.CSQ = #{CmcTemperature.CSQ}</if>
34
+            <if test="startTime != null and startTime != ''">AND d.DateTime &gt;= #{startTime}</if>
35
+            <if test="endTime != null and endTime != ''">AND d.DateTime &lt;= #{endTime}</if>
36
+            <if test="CmcChannel != null and CmcChannel.Info != null and CmcChannel.Info != ''">AND c.Info LIKE '%' || #{CmcChannel.Info} || '%'</if>
30
         </where>
37
         </where>
38
+        ORDER BY d.DateTime ASC, d.Sensor_No ASC
31
     </select>
39
     </select>
32
 
40
 
33
 </mapper>
41
 </mapper>

Двоичные данные
cmc-temperature-back/ruoyi-admin/src/main/resources/static/cmc-temperature.db Просмотреть файл


+ 2
- 2
cmc-temperature-back/ruoyi-common/src/main/java/com/ruoyi/common/constants/UserConstant.java Просмотреть файл

18
      * 密码长度限制
18
      * 密码长度限制
19
      */
19
      */
20
     // 最小
20
     // 最小
21
-    public static final int PASSWORD_MIN_LENGTH = 5;
21
+    public static final int PASSWORD_MIN_LENGTH = 6;
22
     // 最大
22
     // 最大
23
-    public static final int PASSWORD_MAX_LENGTH = 20;
23
+    public static final int PASSWORD_MAX_LENGTH = 12;
24
 
24
 
25
     /**
25
     /**
26
      * 超级管理员
26
      * 超级管理员

+ 1
- 1
cmc-temperature-ui/.env.development Просмотреть файл

9
 
9
 
10
 
10
 
11
 # 页面标题
11
 # 页面标题
12
-VITE_APP_TITLE = 国能青海黄河玛尔挡水电站水温监测系统
12
+VITE_APP_TITLE = 高原水温监测系统
13
 
13
 
14
 # 开发环境前缀
14
 # 开发环境前缀
15
 VITE_APP_BASE_API = '/dev-api'
15
 VITE_APP_BASE_API = '/dev-api'

+ 1
- 1
cmc-temperature-ui/.env.production Просмотреть файл

3
 
3
 
4
 
4
 
5
 # 页面标题
5
 # 页面标题
6
-VITE_APP_TITLE = 国能青海黄河玛尔挡水电站水温监测系统
6
+VITE_APP_TITLE = 高原水温监测系统
7
 
7
 
8
 # 若依管理系统/生产环境
8
 # 若依管理系统/生产环境
9
 VITE_APP_BASE_API = '/prod-api'
9
 VITE_APP_BASE_API = '/prod-api'

+ 1
- 1
cmc-temperature-ui/index.html Просмотреть файл

7
   <meta name="renderer" content="webkit">
7
   <meta name="renderer" content="webkit">
8
   <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
8
   <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
9
   <link rel="icon" href="/src/assets/images/logo/logo.png">
9
   <link rel="icon" href="/src/assets/images/logo/logo.png">
10
-  <title>国能青海黄河玛尔挡水电站水温监测系统</title>
10
+  <title>高原水温监测系统</title>
11
   <!-- [if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif] -->
11
   <!-- [if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif] -->
12
   <style>
12
   <style>
13
     html,
13
     html,

+ 4
- 4
cmc-temperature-ui/src/views/login.vue Просмотреть файл

144
 <style lang='scss' scoped>
144
 <style lang='scss' scoped>
145
 .login {
145
 .login {
146
   display: flex;
146
   display: flex;
147
-  flex-direction: column;
147
+  flex-direction:column;
148
   justify-content: top;
148
   justify-content: top;
149
   align-items: center;
149
   align-items: center;
150
   height: 100%;
150
   height: 100%;
151
-  background-image: url('@/assets/images/loginBg.jpeg');
151
+  background-image: url('@/assets/images/loginBg4.jpeg');
152
   background-size: cover;
152
   background-size: cover;
153
   background-position: center;
153
   background-position: center;
154
   position: relative;
154
   position: relative;
156
 
156
 
157
 .login-header {
157
 .login-header {
158
   text-align: center;
158
   text-align: center;
159
-  left: 70%;
159
+  left: 76%;
160
   top: 8%;
160
   top: 8%;
161
   position: absolute;
161
   position: absolute;
162
   z-index: 2;
162
   z-index: 2;
163
   
163
   
164
   .main-title {
164
   .main-title {
165
-    font-size: 26px;
165
+    font-size: 30px;
166
     font-weight: 700;
166
     font-weight: 700;
167
     color: #ffffff;
167
     color: #ffffff;
168
     margin-bottom: 10px;
168
     margin-bottom: 10px;

+ 2
- 2
cmc-temperature-ui/src/views/system/user/index.vue Просмотреть файл

443
     confirmButtonText: '确定',
443
     confirmButtonText: '确定',
444
     cancelButtonText: '取消',
444
     cancelButtonText: '取消',
445
     closeOnClickModal: false,
445
     closeOnClickModal: false,
446
-    inputPattern: /^.{5,20}$/,
447
-    inputErrorMessage: '登录密码长度必须介于 5 和 20 之间'
446
+    inputPattern: /^.{6,12}$/,
447
+    inputErrorMessage: '登录密码长度必须介于 6 和 12 之间'
448
   }).then(({ value }) => {
448
   }).then(({ value }) => {
449
     resetUserPwd(row.userId, value).then(response => {
449
     resetUserPwd(row.userId, value).then(response => {
450
       proxy.$modal.msgSuccess('修改成功,新密码是:' + value)
450
       proxy.$modal.msgSuccess('修改成功,新密码是:' + value)

+ 16
- 1
cmc-temperature-ui/src/views/system/user/profile/resetPwd.vue Просмотреть файл

1
+<!--
2
+ * @Author: wrh
3
+ * @Date: 2025-08-19 15:15:48
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2025-10-11 12:44:05
6
+-->
1
 <template>
7
 <template>
2
   <el-form ref="pwdRef" :model="user" :rules="rules" label-width="80px">
8
   <el-form ref="pwdRef" :model="user" :rules="rules" label-width="80px">
3
     <el-form-item label="旧密码" prop="oldPassword">
9
     <el-form-item label="旧密码" prop="oldPassword">
36
     callback()
42
     callback()
37
   }
43
   }
38
 }
44
 }
45
+const hasUpperLowerCaseNumber = (rule, value, callback) => {
46
+  const check = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d]+$/;
47
+  if (!check.test(value)) {
48
+    callback(new Error('新密码应为大小写字母及数字组合'))
49
+  } else {
50
+    callback()
51
+  }
52
+}
39
 const rules = ref({
53
 const rules = ref({
40
   oldPassword: [
54
   oldPassword: [
41
     { required: true, message: '旧密码不能为空', trigger: 'blur' }
55
     { required: true, message: '旧密码不能为空', trigger: 'blur' }
42
   ],
56
   ],
43
   newPassword: [
57
   newPassword: [
44
     { required: true, message: '新密码不能为空', trigger: 'blur' },
58
     { required: true, message: '新密码不能为空', trigger: 'blur' },
45
-    { min: 5, max: 20, message: '长度在 5 到 20 个字符', trigger: 'blur' }
59
+    { min: 6, max: 12, message: '长度在 6 到 12 个字符', trigger: 'blur' },
60
+    { required: true, validator: hasUpperLowerCaseNumber, trigger: 'blur'}
46
   ],
61
   ],
47
   confirmPassword: [
62
   confirmPassword: [
48
     { required: true, message: '确认密码不能为空', trigger: 'blur' },
63
     { required: true, message: '确认密码不能为空', trigger: 'blur' },

Загрузка…
Отмена
Сохранить