tanbin 1 год назад
Родитель
Сommit
946e61bab5
21 измененных файлов с 664 добавлено и 11 удалено
  1. 19 0
      device-api-cloud/src/main/java/com/xy/feign/DeviceFaultInfoAttachmentsFeign.java
  2. 19 0
      device-api-cloud/src/main/java/com/xy/feign/DeviceFaultInfoFlowFeign.java
  3. 6 0
      device-api-service/src/main/java/com/xy/entity/DeviceFaultInfo.java
  4. 52 0
      device-api-service/src/main/java/com/xy/entity/DeviceFaultInfoAttachments.java
  5. 62 0
      device-api-service/src/main/java/com/xy/entity/DeviceFaultInfoFlow.java
  6. 2 0
      device-api-service/src/main/java/com/xy/entity/DeviceFaultMonitorConfig.java
  7. 16 0
      device-api-service/src/main/java/com/xy/mapper/DeviceFaultInfoAttachmentsMapper.java
  8. 16 0
      device-api-service/src/main/java/com/xy/mapper/DeviceFaultInfoFlowMapper.java
  9. 15 0
      device-api-service/src/main/java/com/xy/mapper/mapper/DeviceFaultInfoAttachmentsMapper.xml
  10. 18 0
      device-api-service/src/main/java/com/xy/mapper/mapper/DeviceFaultInfoFlowMapper.xml
  11. 85 0
      device-api-service/src/main/java/com/xy/service/DeviceFaultInfoAttachmentsServiceImpl.java
  12. 110 0
      device-api-service/src/main/java/com/xy/service/DeviceFaultInfoFlowServiceImpl.java
  13. 29 6
      device-api-service/src/main/java/com/xy/service/DeviceFaultInfoServiceImpl.java
  14. 10 4
      device-api-service/src/main/java/com/xy/service/DeviceMqttConsumerImpl.java
  15. 2 0
      device-api-service/src/main/java/com/xy/service/factory/device/impl/open/OpenDeviceFactoryImpl.java
  16. 75 0
      device-api/src/main/java/com/xy/dto/DeviceFaultInfoAttachmentsDto.java
  17. 5 0
      device-api/src/main/java/com/xy/dto/DeviceFaultInfoDto.java
  18. 87 0
      device-api/src/main/java/com/xy/dto/DeviceFaultInfoFlowDto.java
  19. 4 1
      device-api/src/main/java/com/xy/dto/DeviceFaultMonitorConfigDto.java
  20. 16 0
      device-api/src/main/java/com/xy/service/DeviceFaultInfoAttachmentsService.java
  21. 16 0
      device-api/src/main/java/com/xy/service/DeviceFaultInfoFlowService.java

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

@@ -0,0 +1,19 @@
+package com.xy.feign;
+
+import com.xy.service.DeviceFaultInfoAttachmentsService;
+import com.xy.FeignInterceptor;
+import com.xy.consts.ServiceConsts;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * <p>
+ * 设备故障信息附件 feign
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-01-16
+ */
+@FeignClient(value = ServiceConsts.SERVICE_NAME, configuration = FeignInterceptor.class)
+public interface DeviceFaultInfoAttachmentsFeign extends DeviceFaultInfoAttachmentsService {
+
+}

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

@@ -0,0 +1,19 @@
+package com.xy.feign;
+
+import com.xy.service.DeviceFaultInfoFlowService;
+import com.xy.FeignInterceptor;
+import com.xy.consts.ServiceConsts;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * <p>
+ * 设备故障处理流程 feign
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-01-16
+ */
+@FeignClient(value = ServiceConsts.SERVICE_NAME, configuration = FeignInterceptor.class)
+public interface DeviceFaultInfoFlowFeign extends DeviceFaultInfoFlowService {
+
+}

+ 6 - 0
device-api-service/src/main/java/com/xy/entity/DeviceFaultInfo.java

@@ -36,6 +36,9 @@ public class DeviceFaultInfo implements Serializable {
     @ApiModelProperty(value = "商户ID")
     private Long mercId;
 
+    @ApiModelProperty(value = "监控ID")
+    private Long monitorId;
+
     @ApiModelProperty(value = "设备编号")
     private Long deviceId;
 
@@ -65,5 +68,8 @@ public class DeviceFaultInfo implements Serializable {
     @ApiModelProperty(value = "故障级别-字典:device_fault_level")
     private Integer faultLevel;
 
+    @ApiModelProperty(value = "是否转售后")
+    private Boolean toAfterSale;
+
 
 }

+ 52 - 0
device-api-service/src/main/java/com/xy/entity/DeviceFaultInfoAttachments.java

@@ -0,0 +1,52 @@
+package com.xy.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 设备故障信息附件
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-01-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="DeviceFaultInfoAttachments对象", description="设备故障信息附件")
+public class DeviceFaultInfoAttachments implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "attachments_id", type = IdType.ASSIGN_ID)
+    private Long attachmentsId;
+
+    @ApiModelProperty(value = "附件名称")
+    private String attachmentsName;
+
+    @ApiModelProperty(value = "ID")
+    private Long faultId;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "附件地址(对象存储地址)")
+    private String attachmentsUrl;
+
+
+}

+ 62 - 0
device-api-service/src/main/java/com/xy/entity/DeviceFaultInfoFlow.java

@@ -0,0 +1,62 @@
+package com.xy.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 设备故障处理流程
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-01-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="DeviceFaultInfoFlow对象", description="设备故障处理流程")
+public class DeviceFaultInfoFlow implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "ID")
+    @TableId(value = "flow_id", type = IdType.ASSIGN_ID)
+    private Long flowId;
+
+    @ApiModelProperty(value = "故障ID")
+    private Long faultId;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "操作人ID")
+    private Long operatorId;
+
+    @ApiModelProperty(value = "角色编码")
+    private String operatorRole;
+
+    @ApiModelProperty(value = "角色名称")
+    private String operatorRoleName;
+
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+    @ApiModelProperty(value = "图片,多个逗号分隔")
+    private String images;
+
+
+}

+ 2 - 0
device-api-service/src/main/java/com/xy/entity/DeviceFaultMonitorConfig.java

@@ -59,5 +59,7 @@ public class DeviceFaultMonitorConfig implements Serializable {
     @ApiModelProperty(value = "故障级别-字典:device_fault_level")
     private Integer faultLevel;
 
+    @ApiModelProperty(value = "是否转售后")
+    private Boolean toAfterSale;
 
 }

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

@@ -0,0 +1,16 @@
+package com.xy.mapper;
+
+import com.xy.entity.DeviceFaultInfoAttachments;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 设备故障信息附件 Mapper 接口
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-01-16
+ */
+public interface DeviceFaultInfoAttachmentsMapper extends BaseMapper<DeviceFaultInfoAttachments> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.xy.mapper;
+
+import com.xy.entity.DeviceFaultInfoFlow;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 设备故障处理流程 Mapper 接口
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-01-16
+ */
+public interface DeviceFaultInfoFlowMapper extends BaseMapper<DeviceFaultInfoFlow> {
+
+}

+ 15 - 0
device-api-service/src/main/java/com/xy/mapper/mapper/DeviceFaultInfoAttachmentsMapper.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.DeviceFaultInfoAttachmentsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.xy.entity.DeviceFaultInfoAttachments">
+        <id column="attachments_id" property="attachmentsId" />
+        <result column="attachments_name" property="attachmentsName" />
+        <result column="fault_id" property="faultId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="attachments_url" property="attachmentsUrl" />
+    </resultMap>
+
+</mapper>

+ 18 - 0
device-api-service/src/main/java/com/xy/mapper/mapper/DeviceFaultInfoFlowMapper.xml

@@ -0,0 +1,18 @@
+<?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.DeviceFaultInfoFlowMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.xy.entity.DeviceFaultInfoFlow">
+        <id column="flow_id" property="flowId" />
+        <result column="fault_id" property="faultId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="operator_id" property="operatorId" />
+        <result column="operator_role" property="operatorRole" />
+        <result column="operator_role_name" property="operatorRoleName" />
+        <result column="content" property="content" />
+        <result column="images" property="images" />
+    </resultMap>
+
+</mapper>

+ 85 - 0
device-api-service/src/main/java/com/xy/service/DeviceFaultInfoAttachmentsServiceImpl.java

@@ -0,0 +1,85 @@
+package com.xy.service;
+
+import com.xy.entity.DeviceFaultInfoAttachments;
+import com.xy.mapper.DeviceFaultInfoAttachmentsMapper;
+import com.xy.service.DeviceFaultInfoAttachmentsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+
+import java.util.List;
+import com.xy.utils.R;
+import com.xy.utils.PageBean;
+import com.xy.dto.DeviceFaultInfoAttachmentsDto;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.PostMapping;
+import io.swagger.annotations.ApiOperation;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.xy.utils.MybatisPlusQuery;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.validation.annotation.Validated;
+import com.xy.utils.Emptys;
+
+import static com.xy.utils.Beans.copy;
+import static com.xy.utils.PlusBeans.toIPage;
+import static com.xy.utils.PlusBeans.toPageBean;
+
+
+/**
+* <p>
+* 设备故障信息附件 服务实现类
+* </p>
+*
+* @author 谭斌
+* @since 2024-01-16
+*/
+@Service
+@AllArgsConstructor
+@Api(tags = "设备故障信息附件")
+public class DeviceFaultInfoAttachmentsServiceImpl extends ServiceImpl<DeviceFaultInfoAttachmentsMapper, DeviceFaultInfoAttachments> implements DeviceFaultInfoAttachmentsService {
+
+    @PostMapping("obj")
+    @ApiOperation("对象查询")
+    public R<DeviceFaultInfoAttachmentsDto.Vo> obj(@RequestBody DeviceFaultInfoAttachmentsDto.Vo vo) {
+        DeviceFaultInfoAttachmentsDto.SelectList selectList = copy(DeviceFaultInfoAttachmentsDto.SelectList.class, vo);
+        List<DeviceFaultInfoAttachmentsDto.Vo> list = list(selectList).getData();
+        if(Emptys.check(list)) {
+            return R.ok(list.get(0));
+        }
+        return R.ok();
+    }
+
+    @PostMapping("list")
+    @ApiOperation("集合查询")
+    public R<List<DeviceFaultInfoAttachmentsDto.Vo>> list(@RequestBody DeviceFaultInfoAttachmentsDto.SelectList selectList) {
+        LambdaQueryWrapper<DeviceFaultInfoAttachments> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList, DeviceFaultInfoAttachments.class).build();
+        List<DeviceFaultInfoAttachments> list = list(lambdaQueryWrapper);
+        return R.ok(copy(DeviceFaultInfoAttachmentsDto.Vo.class, list));
+    }
+
+    @PostMapping("page")
+    @ApiOperation("分页查询")
+    public R<PageBean<DeviceFaultInfoAttachmentsDto.Vo>> page(@RequestBody DeviceFaultInfoAttachmentsDto.Page page) {
+        PageBean pageBean = page.getPage();
+        LambdaQueryWrapper<DeviceFaultInfoAttachments> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceFaultInfoAttachments.class).build();
+        IPage<DeviceFaultInfoAttachments> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
+        return R.ok(toPageBean(DeviceFaultInfoAttachmentsDto.Vo.class, iPage));
+    }
+
+    @PostMapping("save")
+    @ApiOperation("添加")
+    public R save(@RequestBody @Validated DeviceFaultInfoAttachmentsDto.Save save) {
+        DeviceFaultInfoAttachments saveInfo = copy(DeviceFaultInfoAttachments.class, save);
+        save(saveInfo);
+        return R.ok();
+    }
+
+    @PostMapping("update")
+    @ApiOperation("修改")
+    public R update(@RequestBody @Validated DeviceFaultInfoAttachmentsDto.Update update) {
+        DeviceFaultInfoAttachments updateInfo = copy(DeviceFaultInfoAttachments.class, update);
+        updateById(updateInfo);
+        return R.ok();
+    }
+}

+ 110 - 0
device-api-service/src/main/java/com/xy/service/DeviceFaultInfoFlowServiceImpl.java

@@ -0,0 +1,110 @@
+package com.xy.service;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.system.SystemUtil;
+import com.xy.dto.SysWorkUser.ListDto;
+import com.xy.dto.SysWorkUser.SysWorkVo;
+import com.xy.entity.DeviceFaultInfoFlow;
+import com.xy.error.CommRuntimeException;
+import com.xy.mapper.DeviceFaultInfoFlowMapper;
+import com.xy.service.DeviceFaultInfoFlowService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xy.utils.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+
+import java.util.List;
+
+import com.xy.dto.DeviceFaultInfoFlowDto;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.PostMapping;
+import io.swagger.annotations.ApiOperation;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.validation.annotation.Validated;
+
+import static com.xy.utils.Beans.copy;
+import static com.xy.utils.PlusBeans.toIPage;
+import static com.xy.utils.PlusBeans.toPageBean;
+
+
+/**
+* <p>
+* 设备故障处理流程 服务实现类
+* </p>
+*
+* @author 谭斌
+* @since 2024-01-16
+*/
+@Service
+@RequiredArgsConstructor
+@Api(tags = "设备故障处理流程")
+public class DeviceFaultInfoFlowServiceImpl extends ServiceImpl<DeviceFaultInfoFlowMapper, DeviceFaultInfoFlow> implements DeviceFaultInfoFlowService {
+
+    private final SysWorkUserService sysWorkUserService;
+
+
+    @PostMapping("obj")
+    @ApiOperation("对象查询")
+    public R<DeviceFaultInfoFlowDto.Vo> obj(@RequestBody DeviceFaultInfoFlowDto.Vo vo) {
+        DeviceFaultInfoFlowDto.SelectList selectList = copy(DeviceFaultInfoFlowDto.SelectList.class, vo);
+        List<DeviceFaultInfoFlowDto.Vo> list = list(selectList).getData();
+        if(Emptys.check(list)) {
+            return R.ok(list.get(0));
+        }
+        return R.ok();
+    }
+
+    @PostMapping("list")
+    @ApiOperation("集合查询")
+    public R<List<DeviceFaultInfoFlowDto.Vo>> list(@RequestBody DeviceFaultInfoFlowDto.SelectList selectList) {
+        LambdaQueryWrapper<DeviceFaultInfoFlow> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList, DeviceFaultInfoFlow.class).build();
+        lambdaQueryWrapper.orderByDesc(DeviceFaultInfoFlow::getCreateTime);
+        List<DeviceFaultInfoFlow> list = list(lambdaQueryWrapper);
+        return R.ok(copy(DeviceFaultInfoFlowDto.Vo.class, list));
+    }
+
+    @PostMapping("page")
+    @ApiOperation("分页查询")
+    public R<PageBean<DeviceFaultInfoFlowDto.Vo>> page(@RequestBody DeviceFaultInfoFlowDto.Page page) {
+        PageBean pageBean = page.getPage();
+        LambdaQueryWrapper<DeviceFaultInfoFlow> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceFaultInfoFlow.class).build();
+        IPage<DeviceFaultInfoFlow> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
+        return R.ok(toPageBean(DeviceFaultInfoFlowDto.Vo.class, iPage));
+    }
+
+    @PostMapping("save")
+    @ApiOperation("添加")
+    public R save(@RequestBody @Validated DeviceFaultInfoFlowDto.Save save) {
+        String content = save.getContent();
+        if(StrUtil.isEmpty(content)){
+            throw new CommRuntimeException("回复内容不可为空");
+        }
+        DeviceFaultInfoFlow saveInfo = copy(DeviceFaultInfoFlow.class, save);
+        Long operatorId = AuthorizeUtils.getLoginId(Long.class);
+        Long sysId = AuthorizeUtils.getSysId();
+        List<String> roleCodes = AuthorizeUtils.getRoleCodes(sysId);
+//        List<Long> roleIds = AuthorizeUtils.getRoleIds(sysId);
+        R<List<SysWorkVo>> listR = R.feignCheck(sysWorkUserService.list(new ListDto().setId(CollUtil.newArrayList(operatorId)).setSysId(sysId)));
+        List<SysWorkVo> data = listR.getData();
+        SysWorkVo sysWorkVo = data.get(0);
+        String roleNames = CollUtil.join(sysWorkVo.getRoleNames(), StrUtil.COMMA);
+        saveInfo.setOperatorRoleName(roleNames);
+        saveInfo.setOperatorRole( CollUtil.join(roleCodes, StrUtil.COMMA));
+        saveInfo.setOperatorId( operatorId);
+        save(saveInfo);
+        return R.ok();
+    }
+
+    @PostMapping("update")
+    @ApiOperation("修改")
+    public R update(@RequestBody @Validated DeviceFaultInfoFlowDto.Update update) {
+        DeviceFaultInfoFlow updateInfo = copy(DeviceFaultInfoFlow.class, update);
+        updateById(updateInfo);
+        return R.ok();
+    }
+}

+ 29 - 6
device-api-service/src/main/java/com/xy/service/DeviceFaultInfoServiceImpl.java

@@ -1,13 +1,18 @@
 package com.xy.service;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 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.map.JMap;
+import com.xy.consts.CommConsts;
 import com.xy.dto.DeviceFaultInfoDto;
+import com.xy.dto.DeviceFaultInfoFlowDto;
+import com.xy.dto.SysWorkUser.ListDto;
+import com.xy.dto.SysWorkUser.SysWorkVo;
 import com.xy.dto.be.MercDto;
 import com.xy.entity.DeviceFaultInfo;
 import com.xy.entity.DeviceFaultLog;
@@ -15,14 +20,12 @@ import com.xy.entity.DeviceInfo;
 import com.xy.error.CommRuntimeException;
 import com.xy.mapper.DeviceFaultInfoMapper;
 import com.xy.service.be.MercService;
-import com.xy.utils.Emptys;
-import com.xy.utils.MybatisPlusQuery;
-import com.xy.utils.PageBean;
-import com.xy.utils.R;
+import com.xy.utils.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -52,6 +55,8 @@ public class DeviceFaultInfoServiceImpl extends ServiceImpl<DeviceFaultInfoMappe
     private final DeviceFaultLogServiceImpl deviceFaultLogService;
     private final MercService mercService;
     private final DeviceInfoServiceImpl deviceInfoService;
+    private final DeviceFaultInfoFlowServiceImpl deviceFaultInfoFlowService;
+    private final SysWorkUserService sysWorkUserService;
 
     @PostMapping("obj")
     @ApiOperation("对象查询")
@@ -82,6 +87,14 @@ public class DeviceFaultInfoServiceImpl extends ServiceImpl<DeviceFaultInfoMappe
                 .eqWrapper(page, DeviceFaultInfo.class).build()
                 .ge(beginTime != null, DeviceFaultInfo::getCreateTime, beginTime)
                 .le(endTime != null, DeviceFaultInfo::getCreateTime, endTime);
+
+        Long sysId = AuthorizeUtils.getSysId();
+        List<String> roleCodes = AuthorizeUtils.getRoleCodes(sysId);
+        //售后角色只看转售后的,其他角色看所有
+        if(roleCodes.contains(CommConsts.MERC_SH_ADMIN)){
+            lambdaQueryWrapper.eq(DeviceFaultInfo::getToAfterSale,true);
+        }
+
         IPage<DeviceFaultInfo> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
         PageBean<DeviceFaultInfoDto.Vo> data = toPageBean(DeviceFaultInfoDto.Vo.class, iPage);
         List<DeviceFaultInfoDto.Vo> records = data.getRecords();
@@ -120,20 +133,30 @@ public class DeviceFaultInfoServiceImpl extends ServiceImpl<DeviceFaultInfoMappe
     @PostMapping("resolve")
     @ApiOperation("标记已解决")
     public R resolve(@RequestBody @Validated DeviceFaultInfoDto.Update update) {
-        DeviceFaultInfo deviceFaultInfo = this.getById(update.getFaultId());
+        resolveDone(update);
+        return R.ok();
+    }
+    @Transactional(rollbackFor = Exception.class)
+    public void resolveDone( DeviceFaultInfoDto.Update update){
+        Long faultId = update.getFaultId();
+        DeviceFaultInfo deviceFaultInfo = this.getById(faultId);
         if (deviceFaultInfo == null) {
             throw new CommRuntimeException("操作对象不存在!");
         }
         DeviceFaultInfo updateInfo = copy(DeviceFaultInfo.class, update);
         updateInfo.setState(true);
+        updateInfo.setResolveTime(LocalDateTime.now());
         updateInfo.setFaultLevel(-1);
         boolean b = updateById(updateInfo);
         if (b) {
+            DeviceFaultInfoFlowDto.Save save = new DeviceFaultInfoFlowDto.Save();
+            save.setFaultId(faultId);
+            save.setContent("故障已解决");
+            deviceFaultInfoFlowService.save(save);
             //清理日志 故障信息表标记已解决,清除日志表中对应设备事件在标记已解决时间之前所有事件。
             deviceFaultLogService.remove(Wrappers.<DeviceFaultLog>lambdaUpdate().le(DeviceFaultLog::getEventTime, LocalDateTime.now()));
             //更新故障等级为正常
             deviceInfoService.updateById(new DeviceInfo().setDeviceId(deviceFaultInfo.getDeviceId()).setFaultLevel(-1));
         }
-        return R.ok();
     }
 }

+ 10 - 4
device-api-service/src/main/java/com/xy/service/DeviceMqttConsumerImpl.java

@@ -229,11 +229,10 @@ public class DeviceMqttConsumerImpl implements DeviceMqttConsumer {
                     .collect(Collectors.toList());
             for (DeviceFaultMonitorConfigDto.Vo config : configSortedList) {
                 Integer eventNum = config.getEventNum();
-
                 Long minuteNum = config.getMinuteNum();
-
                 Integer faultLevel = config.getFaultLevel();
-
+                Long monitorId = config.getMonitorId();
+                Boolean toAfterSale = config.getToAfterSale();
                 // 获取当前时间
                 Date now = DateUtil.date();
 
@@ -262,10 +261,15 @@ public class DeviceMqttConsumerImpl implements DeviceMqttConsumer {
                         if (faultLevel1.intValue() < faultLevel) {
                             //小于,当前故障级别,更新
                             deviceFaultInfo.setFaultLevel(faultLevel);
+                            if(toAfterSale){
+                                //如果配置了自动转售后,则更新
+                                deviceFaultInfo.setToAfterSale(toAfterSale);
+                            }
                             deviceInfoService.updateById(new DeviceInfo().setDeviceId(deviceId).setFaultLevel(faultLevel));
                         }
                         //累加次数
-                        deviceFaultInfo.setEventNum(deviceFaultInfo.getEventNum() + 1);
+                        deviceFaultInfo.setEventNum(deviceFaultInfo.getEventNum() + 1).setMonitorId(monitorId);
+
                         deviceFaultInfoService.updateById(deviceFaultInfo);
                     } else {
                         deviceFaultInfoService.save(new DeviceFaultInfo()
@@ -275,6 +279,8 @@ public class DeviceMqttConsumerImpl implements DeviceMqttConsumer {
                                 .setFaultLevel(faultLevel)
                                 .setEventCode(code)
                                 .setEventNum(count.intValue())
+                                .setMonitorId(monitorId)
+                                .setToAfterSale(toAfterSale)
                         );
                         deviceInfoService.updateById(new DeviceInfo().setDeviceId(deviceId).setFaultLevel(faultLevel));
                     }

+ 2 - 0
device-api-service/src/main/java/com/xy/service/factory/device/impl/open/OpenDeviceFactoryImpl.java

@@ -27,6 +27,7 @@ import com.xy.utils.*;
 import com.xy.utils.Enum.AlgorithmTypeEnum;
 import com.xy.utils.enums.DeviceTypeEnum;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -39,6 +40,7 @@ import static com.xy.utils.Beans.copy;
 /**
  * 开门柜设备 接口实现
  */
+@Slf4j
 @Factory(type = "1")
 @AllArgsConstructor
 public class OpenDeviceFactoryImpl implements DeviceFactory {

+ 75 - 0
device-api/src/main/java/com/xy/dto/DeviceFaultInfoAttachmentsDto.java

@@ -0,0 +1,75 @@
+package com.xy.dto;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xy.utils.PageBean;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 设备故障信息附件
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-01-16
+ */
+public class DeviceFaultInfoAttachmentsDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class SelectList extends Vo {
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Page extends Vo {
+
+        @ApiModelProperty(value = "分页对象", required = true)
+        private PageBean page;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Save extends Vo {
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Update extends Vo {
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Vo {
+
+        private Long attachmentsId;
+
+        @ApiModelProperty(value = "附件名称")
+        private String attachmentsName;
+
+        @ApiModelProperty(value = "ID")
+        private Long faultId;
+
+        @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;
+
+        @ApiModelProperty(value = "附件地址(对象存储地址)")
+        private String attachmentsUrl;
+
+
+    }
+
+}

+ 5 - 0
device-api/src/main/java/com/xy/dto/DeviceFaultInfoDto.java

@@ -96,6 +96,11 @@ public class DeviceFaultInfoDto {
         @ApiModelProperty(value = "故障级别-字典:device_fault_level")
         private Integer faultLevel;
 
+        @ApiModelProperty(value = "监控ID")
+        private Long monitorId;
+
+        @ApiModelProperty(value = "是否转售后")
+        private Boolean toAfterSale;
 
     }
 

+ 87 - 0
device-api/src/main/java/com/xy/dto/DeviceFaultInfoFlowDto.java

@@ -0,0 +1,87 @@
+package com.xy.dto;
+
+
+import java.time.LocalDateTime;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import com.xy.utils.PageBean;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * <p>
+ * 设备故障处理流程
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-01-16
+ */
+public class DeviceFaultInfoFlowDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class SelectList extends Vo {
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Page extends Vo {
+
+        @ApiModelProperty(value = "分页对象", required = true)
+        private PageBean page;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Save extends Vo {
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Update extends Vo {
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Vo {
+
+        @ApiModelProperty(value = "ID")
+        private Long flowId;
+
+        @ApiModelProperty(value = "故障ID")
+        private Long faultId;
+
+        @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;
+
+        @ApiModelProperty(value = "操作人ID")
+        private Long operatorId;
+
+        @ApiModelProperty(value = "角色编码")
+        private String operatorRole;
+
+        @ApiModelProperty(value = "角色名称")
+        private String operatorRoleName;
+
+        @ApiModelProperty(value = "内容")
+        private String content;
+
+        @ApiModelProperty(value = "图片,多个逗号分隔")
+        private String images;
+
+
+    }
+
+}

+ 4 - 1
device-api/src/main/java/com/xy/dto/DeviceFaultMonitorConfigDto.java

@@ -54,7 +54,7 @@ public class DeviceFaultMonitorConfigDto {
 
         @ApiModelProperty(value = "事件编码")
         private String eventCode;
-        
+
         @ApiModelProperty(value = "配置描述")
         private String configName;
 
@@ -78,6 +78,9 @@ public class DeviceFaultMonitorConfigDto {
         @ApiModelProperty(value = "故障级别-字典:device_fault_level")
         private Integer faultLevel;
 
+        @ApiModelProperty(value = "是否转售后")
+        private Boolean toAfterSale;
+
 
     }
 

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

@@ -0,0 +1,16 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+
+/**
+ * <p>
+ * 设备故障信息附件 服务类
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-01-16
+ */
+@RestMappingController("/device-fault-info-attachments")
+public interface DeviceFaultInfoAttachmentsService {
+
+}

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

@@ -0,0 +1,16 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+
+/**
+ * <p>
+ * 设备故障处理流程 服务类
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-01-16
+ */
+@RestMappingController("/device-fault-info-flow")
+public interface DeviceFaultInfoFlowService {
+
+}