Ver Fonte

Merge branch 'master' into test

lijin há 1 ano atrás
pai
commit
c00e76f163

+ 19 - 0
device-api-cloud/src/main/java/com/xy/feign/DevicePartFeign.java

@@ -0,0 +1,19 @@
+package com.xy.feign;
+
+import com.xy.service.DevicePartService;
+import com.xy.FeignInterceptor;
+import com.xy.consts.ServiceConsts;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * <p>
+ * 设备配件表 feign
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-02-02
+ */
+@FeignClient(value = ServiceConsts.SERVICE_NAME, configuration = FeignInterceptor.class)
+public interface DevicePartFeign extends DevicePartService {
+
+}

+ 48 - 0
device-api-service/src/main/java/com/xy/entity/DevicePart.java

@@ -0,0 +1,48 @@
+package com.xy.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 设备配件表
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-02-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "DevicePart对象", description = "设备配件表")
+public class DevicePart implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId
+    private Long id;
+
+    @ApiModelProperty(value = "设备id")
+    private Long deviceId;
+
+    @ApiModelProperty(value = "编码")
+    private String code;
+
+    @ApiModelProperty(value = "值")
+    private String value;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    private LocalDateTime updateTime;
+
+
+}

+ 16 - 0
device-api-service/src/main/java/com/xy/mapper/DevicePartMapper.java

@@ -0,0 +1,16 @@
+package com.xy.mapper;
+
+import com.xy.entity.DevicePart;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 设备配件表 Mapper 接口
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-02-02
+ */
+public interface DevicePartMapper extends BaseMapper<DevicePart> {
+
+}

+ 15 - 0
device-api-service/src/main/java/com/xy/mapper/mapper/DevicePartMapper.xml

@@ -0,0 +1,15 @@
+<?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.xy.mapper.DevicePartMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.xy.entity.DevicePart">
+        <id column="id" property="id" />
+        <result column="device_id" property="deviceId" />
+        <result column="code" property="code" />
+        <result column="value" property="value" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 23 - 2
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.collections.list.JArrayList;
 import com.xy.collections.list.JList;
+import com.xy.collections.map.JHashMap;
 import com.xy.collections.map.JMap;
 import com.xy.config.DeviceThreadPoolConfig;
 import com.xy.consts.DictConsts;
@@ -115,6 +116,8 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
 
     private final MercUserBindDeviceService mercUserBindDeviceService;
 
+    private final DevicePartServiceImpl devicePartService;
+
 
     @Override
     @ApiOperation("设备列表-管理员")
@@ -596,7 +599,7 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
     public R update(@RequestBody @Validated DeviceInfoDto.Update update) {
         DeviceInfo deviceInfo = getById(update.getDeviceId());
         //判断是否更新了点位
-        if(Emptys.check(update.getPlaceId()) && !Objects.equals(deviceInfo.getPlaceId(),update.getPlaceId())){
+        if (Emptys.check(update.getPlaceId()) && !Objects.equals(deviceInfo.getPlaceId(), update.getPlaceId())) {
             //把设备绑定给点位管理员
             MercUserBindDeviceDto.BindByDeviceUpdate bindByPlaceIdDTto = new MercUserBindDeviceDto.BindByDeviceUpdate();
             bindByPlaceIdDTto.setDeviceId(update.getDeviceId())
@@ -1735,7 +1738,25 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
 
     public PageBean<DeviceInfoDto.Vo2> queryPage(DeviceInfoDto.Page page) {
         IPage<DeviceInfoQueryPage> iPage = baseMapper.queryPage(toIPage(page.getPage()), page);
-        return toPageBean(DeviceInfoDto.Vo2.class, iPage);
+        PageBean<DeviceInfoDto.Vo2> pageBean = toPageBean(DeviceInfoDto.Vo2.class, iPage);
+        List<DeviceInfoDto.Vo2> records = pageBean.getRecords();
+        JMap<Long, List<DevicePart>> cover;
+        if (Emptys.check(records)) {
+            List<DevicePart> deviceParts = devicePartService.list(new LambdaQueryWrapper<DevicePart>()
+                    .in(DevicePart::getDeviceId, new JArrayList<>(records).getProperty(DeviceInfoDto.Vo2::getDeviceId))
+                    .orderByDesc(DevicePart::getCode)
+            );
+            if (Emptys.check(deviceParts)) {
+                cover = new JArrayList<>(deviceParts).toMap(DevicePart::getDeviceId).group();
+                records.forEach(vo2 -> {
+                    List<DevicePart> devicePartss = cover.get(vo2.getDeviceId());
+                    if (Emptys.check(devicePartss)) {
+                        vo2.setDeviceParts(copy(DevicePartDto.Vo.class, deviceParts));
+                    }
+                });
+            }
+        }
+        return pageBean;
     }
 
     private <T> void check(T value, T value2, String msg) {

+ 77 - 0
device-api-service/src/main/java/com/xy/service/DevicePartServiceImpl.java

@@ -0,0 +1,77 @@
+package com.xy.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yitter.idgen.YitIdHelper;
+import com.xy.dto.DevicePartDto;
+import com.xy.entity.DevicePart;
+import com.xy.mapper.DevicePartMapper;
+import com.xy.utils.Emptys;
+import com.xy.utils.MybatisPlusQuery;
+import com.xy.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static com.xy.utils.Beans.copy;
+
+
+/**
+ * <p>
+ * 设备配件表 服务实现类
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-02-02
+ */
+@Service
+@AllArgsConstructor
+@Api(tags = "设备配件表")
+public class DevicePartServiceImpl extends ServiceImpl<DevicePartMapper, DevicePart> implements DevicePartService {
+
+    @ApiOperation("集合查询")
+    @PostMapping("list")
+    public R<List<DevicePartDto.Vo>> list(@RequestBody DevicePartDto.SelectList selectList) {
+        LambdaQueryWrapper<DevicePart> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList, DevicePart.class).build();
+        List<DevicePart> list = list(lambdaQueryWrapper);
+        return R.ok(copy(DevicePartDto.Vo.class, list));
+    }
+
+    @ApiOperation("添加或修改")
+    @PostMapping("saveOrUpdate")
+    public R saveOrUpdate(@RequestBody List<DevicePartDto.SaveOrUpdate> saveOrUpdates) {
+        LocalDateTime now = LocalDateTime.now();
+        //循环处理
+        saveOrUpdates.forEach(saveOrUpdate -> {
+            DevicePart devicePart = getOne(new LambdaQueryWrapper<DevicePart>()
+                    .eq(DevicePart::getDeviceId, saveOrUpdate.getDeviceId())
+                    .eq(DevicePart::getCode, saveOrUpdate.getCode())
+            );
+            //删除
+            if (saveOrUpdate.getIsRemove() && devicePart != null) {
+                removeById(devicePart.getId());
+                return;
+            }
+            //新增
+            if (devicePart == null) {
+                DevicePart info = copy(DevicePart.class, saveOrUpdate)
+                        .setId(YitIdHelper.nextId())
+                        .setUpdateTime(now)
+                        .setCreateTime(now);
+                save(info);
+                return;
+            }
+            //修改
+            if (Emptys.check(saveOrUpdate.getValue())) {
+                updateById(devicePart.setValue(saveOrUpdate.getValue()));
+            }
+        });
+        return R.ok();
+    }
+}

+ 8 - 5
device-api-service/src/main/java/com/xy/service/MqttUserServiceImpl.java

@@ -4,11 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.annotation.LogOperate;
 import com.xy.device.EnumEnvParams;
+import com.xy.dto.DevicePartDto;
 import com.xy.dto.MqttUserDto;
-import com.xy.entity.DeviceInfo;
-import com.xy.entity.DeviceSysinfo;
-import com.xy.entity.MqttUser;
-import com.xy.entity.SysDictRedis;
+import com.xy.entity.*;
 import com.xy.enums.LogEnum;
 import com.xy.mapper.MqttUserMapper;
 import com.xy.utils.Emptys;
@@ -24,6 +22,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.util.List;
 import java.util.Map;
 
 import static com.xy.utils.Beans.copy;
@@ -47,6 +46,8 @@ public class MqttUserServiceImpl extends ServiceImpl<MqttUserMapper, MqttUser> i
 
     private DeviceSysinfoServiceImpl deviceSysinfoService;
 
+    private DevicePartServiceImpl devicePartService;
+
     @PostMapping("obj")
     @ApiOperation("对象查询")
     @LogOperate(logType = LogEnum.LogType.V2, optType = LogEnum.OptType.V3, logContent = "mqtt认证查询")
@@ -57,6 +58,7 @@ public class MqttUserServiceImpl extends ServiceImpl<MqttUserMapper, MqttUser> i
         }
         DeviceInfo deviceInfo = deviceInfoService.getById(mqttUser.getDeviceId());
         DeviceSysinfo deviceSysinfo = deviceSysinfoService.getById(mqttUser.getDeviceId());
+        List<DevicePart> deviceParts = devicePartService.list(new LambdaQueryWrapper<DevicePart>().eq(DevicePart::getDeviceId, deviceInfo.getDeviceId()));
         Map<String, SysDictRedis> map = SysDictUtils.get(EnumEnvParams.Code.CODE.getCode());
         SysDictRedis mqttUrl = map.get(EnumEnvParams.MQTT_URL.getCode());
         SysDictRedis serverUrl = map.get(EnumEnvParams.SERVER_URL.getCode());
@@ -64,7 +66,8 @@ public class MqttUserServiceImpl extends ServiceImpl<MqttUserMapper, MqttUser> i
                 .setAlgorithmId(deviceInfo.getAlgorithmId())
                 .setDeviceType(deviceInfo.getDeviceType())
                 .setScreenType(deviceSysinfo.getScreenType())
-                .setDeviceModel(deviceSysinfo.getDeviceModel());
+                .setDeviceModel(deviceSysinfo.getDeviceModel())
+                .setDeviceParts(copy(DevicePartDto.Vo.class, deviceParts));
         objVo.setServerTime(System.currentTimeMillis());
         objVo.setIpAddress(mqttUrl.getValue());
         objVo.setServerUrl(serverUrl.getValue());

+ 1 - 1
device-api-service/src/main/java/com/xy/ztest/Test.java

@@ -7,7 +7,7 @@ public class Test {
     public static void main(String[] args) {
         MybatisGenerator2.Generator.builder()
                 .author("lijin")
-                .commPath("F:/idea-project/xy/xy-device")
+                .commPath("E:/idea项目/xy/xy-device")
                 .dtoModule("device-api")
                 .dtoPackage("com.xy")
                 .serviceModule("device-api")

+ 2 - 1
device-api/src/main/java/com/xy/dto/DeviceInfoDto.java

@@ -726,7 +726,8 @@ public class DeviceInfoDto {
         @ApiModelProperty("今日销售额")
         private Integer daySalesPrice;
 
-
+        @ApiModelProperty("配件集合")
+        private List<DevicePartDto.Vo> deviceParts;
     }
 
     @Data

+ 70 - 0
device-api/src/main/java/com/xy/dto/DevicePartDto.java

@@ -0,0 +1,70 @@
+package com.xy.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 设备配件表
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-02-02
+ */
+public class DevicePartDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class SelectList extends Vo {
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class SaveOrUpdate extends Vo {
+
+        @NotNull(message = "deviceId不能为空")
+        @ApiModelProperty(value = "设备id", required = true)
+        private Long deviceId;
+
+        @NotBlank(message = "code不能为空")
+        @ApiModelProperty(value = "编码", required = true)
+        private String code;
+
+        @ApiModelProperty(value = "是否删除")
+        private Boolean isRemove = false;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Vo {
+
+        private Long id;
+
+        @ApiModelProperty(value = "设备id")
+        private Long deviceId;
+
+        @ApiModelProperty(value = "编码")
+        private String code;
+
+        @ApiModelProperty(value = "值 扩展用,如配件版本等")
+        private String value;
+
+        @ApiModelProperty(value = "创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime createTime;
+
+        @ApiModelProperty(value = "更新时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime updateTime;
+
+
+    }
+
+}

+ 4 - 0
device-api/src/main/java/com/xy/dto/MqttUserDto.java

@@ -7,6 +7,7 @@ import lombok.experimental.Accessors;
 
 import javax.validation.constraints.NotBlank;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * <p>
@@ -89,5 +90,8 @@ public class MqttUserDto {
 
         @ApiModelProperty("设备型号")
         private String deviceModel;
+
+        @ApiModelProperty("配件集合")
+        private List<DevicePartDto.Vo> deviceParts;
     }
 }

+ 16 - 0
device-api/src/main/java/com/xy/service/DevicePartService.java

@@ -0,0 +1,16 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+
+/**
+ * <p>
+ * 设备配件表 服务类
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-02-02
+ */
+@RestMappingController("/device-part")
+public interface DevicePartService {
+
+}