Forráskód Böngészése

feat:"添加时控开关标志"

soobin 3 hete
szülő
commit
2e460209ee

+ 1 - 1
src/main/java/com/szwl/controller/AlarmClockController.java

@@ -75,8 +75,8 @@ public class AlarmClockController {
             query.eq(AlarmClock::getWeek, alarmClock.getWeek());
             AlarmClock one = alarmClockService.getOne(query);
             if (one != null) {
+                BeanUtils.copyProperties(alarmClock, one, "id", "createDate", "modifyDate", "clientId");
                 alarmClock.setModifyDate(new Date());
-                BeanUtils.copyProperties(alarmClock, one);
                 alarmClockService.updateById(one);
             } else {
                 alarmClock.setCreateDate(new Date());

+ 40 - 0
src/main/java/com/szwl/controller/ApiInterfaceController.java

@@ -46,6 +46,9 @@ public class ApiInterfaceController {
     @Autowired
     TAlarmRecordService alarmRecordService;
 
+    @Autowired
+    TEquipmentDescService equipmentDescService;
+
     @ApiOperation("查询设备信息列表")
     @PostMapping("/getMachineList")
     public ResponseModel<?> getMachineList(@RequestHeader(value = "x-api-key") String apiKey, @RequestBody InterfaceParam interfaceParam) {
@@ -231,6 +234,43 @@ public class ApiInterfaceController {
         return R.ok();
     }
 
+    @ApiOperation("查询机器当前状态")
+    @PostMapping("/getMachineStatus")
+    public ResponseModel<?> getMachineStatus(@RequestHeader("x-api-key") String apiKey, @RequestBody InterfaceParam interfaceParam) {
+        // 校验apiKey是否为空
+        if (StringUtils.isEmpty(apiKey)) {
+            return R.fail(ResponseCodesEnum.A0001, "apiKey is null");
+        }
+        // 校验参数是否为空
+        String username = interfaceParam.getUsername();
+        String clientId = interfaceParam.getClientId();
+        if (StringUtils.isEmpty(username)) {
+            return R.fail(ResponseCodesEnum.A0001, "username is null");
+        }
+        if (StringUtils.isEmpty(clientId)) {
+            return R.fail(ResponseCodesEnum.A0001, "clientId is null");
+        }
+        // 校验apiKey是否正确
+        LambdaQueryWrapper<TAdmin> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TAdmin::getUsername, username);
+        wrapper.eq(TAdmin::getApiKey, apiKey);
+        TAdmin admin = adminService.getOne(wrapper);
+        if (admin == null) {
+            return R.fail(ResponseCodesEnum.A0001, "Invalid apiKey or username is not exist");
+        }
+        // 校验clientId是否正确
+        LambdaQueryWrapper<TEquipment> equipmentWrapper = new LambdaQueryWrapper<>();
+        equipmentWrapper.eq(TEquipment::getClientId, clientId);
+        equipmentWrapper.eq(TEquipment::getAdminId, admin.getId());
+        TEquipment equipment = equipmentService.getOne(equipmentWrapper);
+        if(equipment == null) {
+            return R.fail(ResponseCodesEnum.A0001, "clientId is not exist");
+        }
+        TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
+        String status = equipmentDesc.getStatus();
+        return R.ok(status);
+    }
+
     public void remoteResult(String productName, TEquipment equipment, Long adminId) {
         StringBuilder number = new StringBuilder();
         Random random = new Random();

+ 75 - 0
src/main/java/com/szwl/handle/response/AlarmClockProcessor.java

@@ -0,0 +1,75 @@
+package com.szwl.handle.response;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.szwl.constant.OperationType;
+import com.szwl.model.entity.AlarmClock;
+import com.szwl.model.entity.MessageLog;
+import com.szwl.model.entity.TEquipment;
+import com.szwl.model.entity.TParameters;
+import com.szwl.service.AlarmClockService;
+import com.szwl.service.TEquipmentService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class AlarmClockProcessor implements ResponseProcessor {
+
+    @Autowired
+    private TEquipmentService tEquipmentService;
+
+    @Autowired
+    private AlarmClockService alarmClockService;
+
+    @Override
+    public void process(MessageLog messageLog) {
+        Integer statusCode = messageLog.getStatusCode();
+        if (statusCode == 200) {
+            String clientId = messageLog.getClientId();
+            String responseContent = messageLog.getResponseContent();
+            LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
+            query.eq(TEquipment::getClientId, clientId);
+            TEquipment tEquipment = tEquipmentService.getOne(query);
+            if (tEquipment != null) {
+
+                try {
+                    // 转换为对象
+                    ObjectMapper objectMapper = new ObjectMapper();
+                    List<AlarmClock> alarmClocks = objectMapper.readValue(responseContent, new TypeReference<List<AlarmClock>>() {
+                    });
+                    for (AlarmClock alarmClock : alarmClocks) {
+                        LambdaQueryWrapper<AlarmClock> queryWrapper = Wrappers.lambdaQuery();
+                        queryWrapper.eq(AlarmClock::getClientId, clientId);
+                        queryWrapper.eq(AlarmClock::getType, alarmClock.getType());
+                        queryWrapper.eq(AlarmClock::getWeek, alarmClock.getWeek());
+                        AlarmClock one = alarmClockService.getOne(queryWrapper);
+                        if (one != null) {
+                            BeanUtils.copyProperties(alarmClock, one, "id", "createDate", "modifyDate", "clientId");
+                            alarmClock.setModifyDate(new Date());
+                            alarmClockService.updateById(one);
+                        } else {
+                            alarmClock.setCreateDate(new Date());
+                            alarmClock.setModifyDate(new Date());
+                            alarmClock.setClientId(clientId);
+                            alarmClockService.save(alarmClock);
+                        }
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+
+    }
+
+    @Override
+    public String getSupportedOperationType() {
+        return OperationType.ALARM_CLOCK.getCode();
+    }
+}

+ 1 - 0
src/main/java/com/szwl/handle/response/HeartProcessor.java

@@ -105,6 +105,7 @@ public class HeartProcessor implements ResponseProcessor {
                 equipment.setManagerId(heartParam.getManagerId());
                 equipment.setNetWorkingMode(heartParam.getNetWorkingMode());
                 equipment.setVolume(heartParam.getVolume());
+                equipment.setIsTimeControl(heartParam.getIsTimeControl());
                 equipmentService.updateById(equipment);
                 // 更新数据
                 TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 2 - 1
src/main/java/com/szwl/mapper/xml/TEquipmentMapper.xml


+ 4 - 1
src/main/java/com/szwl/model/entity/TEquipment.java

@@ -15,7 +15,7 @@ import lombok.EqualsAndHashCode;
  * </p>
  *
  * @author wuhs
- * @since 2023-10-25
+ * @since 2025-09-13
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -207,5 +207,8 @@ public class TEquipment implements Serializable {
     @ApiModelProperty(value = "是否海外机器,0:国内,1:海外")
     private Boolean isAbroad;
 
+    @ApiModelProperty(value = "是否有时控开关,0:没有,1:有")
+    private Boolean isTimeControl;
+
 
 }

+ 3 - 0
src/main/java/com/szwl/model/jsonParm/HeartParam.java

@@ -97,4 +97,7 @@ public class HeartParam {
 
     @JsonProperty("apkVersion")
     private String apkVersion;
+
+    @JsonProperty("isTimeControl")
+    private Boolean isTimeControl;
 }

+ 2 - 2
src/test/java/com/szwl/AutoGeneratorTests.java

@@ -39,7 +39,7 @@ class AutoGeneratorTests {
 		//配置数据源
 		DataSourceConfig dataSourceConfig = new DataSourceConfig();
 		dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver")
-				.setUrl("jdbc:mysql://rm-wz995mu26a1479kz0so.mysql.rds.aliyuncs.com:3306/szwl-test")
+				.setUrl("jdbc:mysql://rm-wz995mu26a1479kz0so.mysql.rds.aliyuncs.com:3306/szwl")
 				.setUsername("root").setPassword("sunzee@020");
 
 		//策略配置
@@ -47,7 +47,7 @@ class AutoGeneratorTests {
 		strategyConfig
 //				.setCapitalMode(true)//设置全局大写命名
 				.setInclude(new String[]{
-						"t_admin"
+						"t_equipment"
 				})//只会生成该表
 				.setEntityLombokModel(true)//实体类生成之后自动添加lombok注解
 				.setNaming(NamingStrategy.underline_to_camel)//数据库表映射到实体的命名策略