Commit a45614658900c80bac76e5160e8f0a2ee12eccd8

Authored by 胡翰林
1 parent 9599cbae

故障原因管理接口

设备报修维修接口
@@ -32,6 +32,7 @@ COMMENT ON COLUMN "public"."device"."director_id" IS '负责人id'; @@ -32,6 +32,7 @@ COMMENT ON COLUMN "public"."device"."director_id" IS '负责人id';
32 CREATE TABLE "public"."qg_repair_order" ( 32 CREATE TABLE "public"."qg_repair_order" (
33 "id" varchar(36) NOT NULL, 33 "id" varchar(36) NOT NULL,
34 "device_id" varchar(36), 34 "device_id" varchar(36),
  35 + "order_code" varchar(50),
35 "report_date" timestamp(6), 36 "report_date" timestamp(6),
36 "report_by" varchar(36), 37 "report_by" varchar(36),
37 "status" varchar(50), 38 "status" varchar(50),
@@ -35,7 +35,7 @@ public class TkRepairRecordController extends BaseController { @@ -35,7 +35,7 @@ public class TkRepairRecordController extends BaseController {
35 35
36 @PostMapping("/save") 36 @PostMapping("/save")
37 @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')") 37 @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
38 - @ApiOperation("维修记录保存") 38 + @ApiOperation("设备维修")
39 public ResponseEntity<TkRepairRecordDTO> save(@RequestBody TkRepairRecordDTO dto) throws ThingsboardException { 39 public ResponseEntity<TkRepairRecordDTO> save(@RequestBody TkRepairRecordDTO dto) throws ThingsboardException {
40 String currentTenantId = getCurrentUser().getCurrentTenantId(); 40 String currentTenantId = getCurrentUser().getCurrentTenantId();
41 dto.setTenantId(currentTenantId); 41 dto.setTenantId(currentTenantId);
@@ -49,7 +49,7 @@ public class TkRepairRecordController extends BaseController { @@ -49,7 +49,7 @@ public class TkRepairRecordController extends BaseController {
49 49
50 TkRepairRecordDTO deviceDTO = tkRepairRecordService.save(dto); 50 TkRepairRecordDTO deviceDTO = tkRepairRecordService.save(dto);
51 51
52 - tkRepairOrderService.updateStatus(dto.getOrderId(),RepairOrderStatusEnum.REPAIRFINISH.name()); 52 + tkRepairOrderService.updateStatus(dto.getOrderId(), RepairOrderStatusEnum.REPAIRFINISH.name());
53 return ResponseEntity.ok(deviceDTO); 53 return ResponseEntity.ok(deviceDTO);
54 } 54 }
55 55
@@ -13,6 +13,9 @@ import java.time.LocalDateTime; @@ -13,6 +13,9 @@ import java.time.LocalDateTime;
13 @Data 13 @Data
14 public class TkRepairOrderDTO extends TenantDTO { 14 public class TkRepairOrderDTO extends TenantDTO {
15 15
  16 + @ApiModelProperty(value = "维修单编码")
  17 + private String orderCode;
  18 +
16 @ApiModelProperty(value = "设备id") 19 @ApiModelProperty(value = "设备id")
17 private String deviceId; 20 private String deviceId;
18 21
@@ -24,6 +27,9 @@ public class TkRepairOrderDTO extends TenantDTO { @@ -24,6 +27,9 @@ public class TkRepairOrderDTO extends TenantDTO {
24 @ApiModelProperty(value = "报修人") 27 @ApiModelProperty(value = "报修人")
25 private String reportBy; 28 private String reportBy;
26 29
  30 + @ApiModelProperty(value = "报修人")
  31 + private String reportByName;
  32 +
27 @ApiModelProperty(value = "状态(RepairOrderStatusEnum) SCHEDULING排期中 REPAIRFINISH维修完成 ACCEPTANCEPASSED验收通过") 33 @ApiModelProperty(value = "状态(RepairOrderStatusEnum) SCHEDULING排期中 REPAIRFINISH维修完成 ACCEPTANCEPASSED验收通过")
28 private String status; 34 private String status;
29 35
@@ -15,6 +15,8 @@ import java.time.LocalDateTime; @@ -15,6 +15,8 @@ import java.time.LocalDateTime;
15 @TableName(value = ModelConstants.TKREPAIRORDER_TABLE_NAME, autoResultMap = true) 15 @TableName(value = ModelConstants.TKREPAIRORDER_TABLE_NAME, autoResultMap = true)
16 public class TkRepairOrderEntity extends TenantBaseEntity { 16 public class TkRepairOrderEntity extends TenantBaseEntity {
17 17
  18 + private String orderCode;
  19 +
18 private String deviceId; 20 private String deviceId;
19 21
20 private LocalDateTime reportDate; 22 private LocalDateTime reportDate;
@@ -8,7 +8,6 @@ import lombok.extern.slf4j.Slf4j; @@ -8,7 +8,6 @@ import lombok.extern.slf4j.Slf4j;
8 import org.apache.commons.collections4.CollectionUtils; 8 import org.apache.commons.collections4.CollectionUtils;
9 import org.apache.commons.lang3.StringUtils; 9 import org.apache.commons.lang3.StringUtils;
10 import org.springframework.stereotype.Service; 10 import org.springframework.stereotype.Service;
11 -import org.thingsboard.server.common.data.User;  
12 import org.thingsboard.server.common.data.exception.ThingsboardException; 11 import org.thingsboard.server.common.data.exception.ThingsboardException;
13 import org.thingsboard.server.common.data.id.TenantId; 12 import org.thingsboard.server.common.data.id.TenantId;
14 import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException; 13 import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
@@ -19,6 +18,7 @@ import org.thingsboard.server.common.data.yunteng.utils.CopyUtils; @@ -19,6 +18,7 @@ import org.thingsboard.server.common.data.yunteng.utils.CopyUtils;
19 import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils; 18 import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils;
20 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; 19 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
21 import org.thingsboard.server.dao.yunteng.entities.TenantBaseEntity; 20 import org.thingsboard.server.dao.yunteng.entities.TenantBaseEntity;
  21 +import org.thingsboard.server.dao.yunteng.entities.TkDeviceEntity;
22 import org.thingsboard.server.dao.yunteng.entities.TkRepairOrderEntity; 22 import org.thingsboard.server.dao.yunteng.entities.TkRepairOrderEntity;
23 import org.thingsboard.server.dao.yunteng.mapper.TkRepairOrderMapper; 23 import org.thingsboard.server.dao.yunteng.mapper.TkRepairOrderMapper;
24 import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; 24 import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
@@ -27,10 +27,8 @@ import org.thingsboard.server.dao.yunteng.service.TkRepairOrderService; @@ -27,10 +27,8 @@ import org.thingsboard.server.dao.yunteng.service.TkRepairOrderService;
27 27
28 import java.time.LocalDateTime; 28 import java.time.LocalDateTime;
29 import java.util.HashMap; 29 import java.util.HashMap;
30 -import java.util.List;  
31 import java.util.Map; 30 import java.util.Map;
32 import java.util.UUID; 31 import java.util.UUID;
33 -import java.util.stream.Collectors;  
34 32
35 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE; 33 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE;
36 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE_SIZE; 34 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE_SIZE;
@@ -44,26 +42,32 @@ public class TkRepairOrderServiceImpl extends AbstractBaseService<TkRepairOrderM @@ -44,26 +42,32 @@ public class TkRepairOrderServiceImpl extends AbstractBaseService<TkRepairOrderM
44 private final TkDeviceService tkdeviceService; 42 private final TkDeviceService tkdeviceService;
45 43
46 @Override 44 @Override
47 - public TkPageData<TkRepairOrderDTO> page(String tenantId, TkRepairOrderDTO params) {  
48 - QueryWrapper<TkRepairOrderEntity> queryWrapper = getCondition(tenantId, params);  
49 - getCondition(tenantId, params);  
50 - Map<String, Object> queryMap = new HashMap<>();  
51 - queryMap.put(PAGE, params.getPage());  
52 - queryMap.put(PAGE_SIZE, params.getPageSize());  
53 - IPage<TkRepairOrderEntity> page = baseMapper.selectPage(  
54 - getPage(queryMap, "create_time", false), queryWrapper);  
55 -  
56 - TkPageData<TkRepairOrderDTO> pageData = getPageData(page, TkRepairOrderDTO.class);  
57 - if (pageData != null && CollectionUtils.isNotEmpty(pageData.getItems())) {  
58 - pageData.getItems().forEach(item -> { 45 + public TkPageData<TkRepairOrderDTO> page(String tenantId, Map<String, Object> params) {
  46 + TkPageData<TkRepairOrderDTO> result = new TkPageData<>();
  47 + IPage<TkRepairOrderEntity> page =
  48 + getPage(params, "create_time", false);
  49 +
  50 + IPage<TkRepairOrderDTO> pageData = baseMapper.getRepairOrderPage(page, params);
  51 + if (pageData != null && CollectionUtils.isNotEmpty(pageData.getRecords())) {
  52 + Map<String, DeviceDTO> deviceMap = new HashMap<>();
  53 + pageData.getRecords().forEach(item -> {
59 String deviceId = item.getDeviceId(); 54 String deviceId = item.getDeviceId();
60 if (StringUtils.isNotBlank(deviceId)) { 55 if (StringUtils.isNotBlank(deviceId)) {
61 - DeviceDTO deviceDTO = tkdeviceService.checkDeviceByTenantIdAndDeviceId(UUID.fromString(tenantId), UUID.fromString(deviceId)); 56 + DeviceDTO deviceDTO = deviceMap.get(tenantId);
  57 + if (deviceDTO == null) {
  58 + deviceDTO = tkdeviceService.checkDeviceByTenantIdAndDeviceId(UUID.fromString(tenantId), UUID.fromString(deviceId));
  59 + deviceMap.put(tenantId, deviceDTO);
  60 + }
  61 +
62 item.setDeviceInfo(deviceDTO); 62 item.setDeviceInfo(deviceDTO);
63 } 63 }
64 }); 64 });
65 } 65 }
66 - return pageData; 66 + if (pageData != null) {
  67 + result.setItems(pageData.getRecords());
  68 + }
  69 + result.setTotal(Long.valueOf(pageData.getTotal()).intValue());
  70 + return result;
67 } 71 }
68 72
69 private QueryWrapper<TkRepairOrderEntity> getCondition(String tenantId, TkRepairOrderDTO params) { 73 private QueryWrapper<TkRepairOrderEntity> getCondition(String tenantId, TkRepairOrderDTO params) {
@@ -136,21 +140,25 @@ public class TkRepairOrderServiceImpl extends AbstractBaseService<TkRepairOrderM @@ -136,21 +140,25 @@ public class TkRepairOrderServiceImpl extends AbstractBaseService<TkRepairOrderM
136 140
137 @Override 141 @Override
138 public TkRepairOrderDTO load(String id) throws ThingsboardException { 142 public TkRepairOrderDTO load(String id) throws ThingsboardException {
139 - TkRepairOrderDTO result = new TkRepairOrderDTO(); 143 + TkRepairOrderDTO result = null;
140 TkRepairOrderEntity entity = baseMapper.selectById(id); 144 TkRepairOrderEntity entity = baseMapper.selectById(id);
141 - entity.copyToDTO(result); 145 + if (entity != null) {
  146 + entity.copyToDTO(result);
  147 + }
142 return result; 148 return result;
143 } 149 }
144 150
145 @Override 151 @Override
146 public TkRepairOrderDTO loadByDeviceId(String deviceId) throws ThingsboardException { 152 public TkRepairOrderDTO loadByDeviceId(String deviceId) throws ThingsboardException {
147 - TkRepairOrderDTO result = new TkRepairOrderDTO(); 153 + TkRepairOrderDTO result = null;
148 QueryWrapper<TkRepairOrderEntity> queryWrapper = new QueryWrapper<>(); 154 QueryWrapper<TkRepairOrderEntity> queryWrapper = new QueryWrapper<>();
149 LambdaQueryWrapper<TkRepairOrderEntity> lambda = queryWrapper.lambda(); 155 LambdaQueryWrapper<TkRepairOrderEntity> lambda = queryWrapper.lambda();
150 lambda.eq(TenantBaseEntity::getTenantId, SpringBeanUtils.getTenantId().toString()); 156 lambda.eq(TenantBaseEntity::getTenantId, SpringBeanUtils.getTenantId().toString());
151 lambda.eq(TkRepairOrderEntity::getDeviceId, deviceId); 157 lambda.eq(TkRepairOrderEntity::getDeviceId, deviceId);
152 TkRepairOrderEntity entity = baseMapper.selectOne(queryWrapper); 158 TkRepairOrderEntity entity = baseMapper.selectOne(queryWrapper);
153 - entity.copyToDTO(result); 159 + if (entity != null) {
  160 + entity.copyToDTO(result);
  161 + }
154 return result; 162 return result;
155 } 163 }
156 164
@@ -5,19 +5,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -5,19 +5,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 import com.baomidou.mybatisplus.core.metadata.IPage; 5 import com.baomidou.mybatisplus.core.metadata.IPage;
6 import lombok.RequiredArgsConstructor; 6 import lombok.RequiredArgsConstructor;
7 import lombok.extern.slf4j.Slf4j; 7 import lombok.extern.slf4j.Slf4j;
8 -import org.apache.commons.collections4.CollectionUtils;  
9 import org.apache.commons.lang3.StringUtils; 8 import org.apache.commons.lang3.StringUtils;
10 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
11 -import org.thingsboard.server.common.data.User;  
12 import org.thingsboard.server.common.data.exception.ThingsboardException; 10 import org.thingsboard.server.common.data.exception.ThingsboardException;
13 import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException; 11 import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
14 import org.thingsboard.server.common.data.yunteng.dto.TkRepairOrderDTO; 12 import org.thingsboard.server.common.data.yunteng.dto.TkRepairOrderDTO;
15 import org.thingsboard.server.common.data.yunteng.dto.TkRepairRecordDTO; 13 import org.thingsboard.server.common.data.yunteng.dto.TkRepairRecordDTO;
16 import org.thingsboard.server.common.data.yunteng.dto.UserDTO; 14 import org.thingsboard.server.common.data.yunteng.dto.UserDTO;
17 -import org.thingsboard.server.common.data.yunteng.utils.CopyUtils;  
18 -import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils;  
19 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; 15 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
20 -import org.thingsboard.server.dao.yunteng.entities.TkDeviceEntity;  
21 import org.thingsboard.server.dao.yunteng.entities.TkRepairRecordEntity; 16 import org.thingsboard.server.dao.yunteng.entities.TkRepairRecordEntity;
22 import org.thingsboard.server.dao.yunteng.mapper.TkRepairRecordMapper; 17 import org.thingsboard.server.dao.yunteng.mapper.TkRepairRecordMapper;
23 import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; 18 import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
@@ -27,9 +22,7 @@ import org.thingsboard.server.dao.yunteng.service.TkUserService; @@ -27,9 +22,7 @@ import org.thingsboard.server.dao.yunteng.service.TkUserService;
27 22
28 import java.time.LocalDateTime; 23 import java.time.LocalDateTime;
29 import java.util.HashMap; 24 import java.util.HashMap;
30 -import java.util.List;  
31 import java.util.Map; 25 import java.util.Map;
32 -import java.util.stream.Collectors;  
33 26
34 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE; 27 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE;
35 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE_SIZE; 28 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE_SIZE;
@@ -54,14 +47,8 @@ public class TkRepairRecordServiceImpl extends AbstractBaseService<TkRepairRecor @@ -54,14 +47,8 @@ public class TkRepairRecordServiceImpl extends AbstractBaseService<TkRepairRecor
54 IPage<TkRepairRecordEntity> page = 47 IPage<TkRepairRecordEntity> page =
55 getPage(queryMap, "rr.create_time", false); 48 getPage(queryMap, "rr.create_time", false);
56 IPage<TkRepairRecordDTO> pageData = baseMapper.getRepairRecordPage(page, queryMap); 49 IPage<TkRepairRecordDTO> pageData = baseMapper.getRepairRecordPage(page, queryMap);
57 - if (pageData != null && CollectionUtils.isNotEmpty(pageData.getRecords())) {  
58 - List<TkRepairRecordDTO> dataList = pageData.getRecords().stream().map(item -> {  
59 - TkRepairRecordDTO dto = new TkRepairRecordDTO();  
60 - CopyUtils.copyProperties(item, dto);  
61 - return dto;  
62 -  
63 - }).collect(Collectors.toList());  
64 - result.setItems(dataList); 50 + if (pageData != null) {
  51 + result.setItems(pageData.getRecords());
65 } 52 }
66 result.setTotal(Long.valueOf(pageData.getTotal()).intValue()); 53 result.setTotal(Long.valueOf(pageData.getTotal()).intValue());
67 54
1 package org.thingsboard.server.dao.yunteng.mapper; 1 package org.thingsboard.server.dao.yunteng.mapper;
2 2
3 import com.baomidou.mybatisplus.core.mapper.BaseMapper; 3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import com.baomidou.mybatisplus.core.metadata.IPage;
4 import org.apache.ibatis.annotations.Mapper; 5 import org.apache.ibatis.annotations.Mapper;
  6 +import org.apache.ibatis.annotations.Param;
  7 +import org.thingsboard.server.common.data.yunteng.dto.TkRepairOrderDTO;
  8 +import org.thingsboard.server.common.data.yunteng.dto.TkRepairRecordDTO;
5 import org.thingsboard.server.dao.yunteng.entities.TkRepairOrderEntity; 9 import org.thingsboard.server.dao.yunteng.entities.TkRepairOrderEntity;
6 10
  11 +import java.util.Map;
  12 +
7 @Mapper 13 @Mapper
8 public interface TkRepairOrderMapper extends BaseMapper<TkRepairOrderEntity> { 14 public interface TkRepairOrderMapper extends BaseMapper<TkRepairOrderEntity> {
  15 + IPage<TkRepairOrderDTO> getRepairOrderPage(IPage<?> page, @Param("queryMap") Map<String, Object> queryMap);
9 } 16 }
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +
  4 +<mapper namespace="org.thingsboard.server.dao.yunteng.mapper.TkRepairOrderMapper">
  5 + <resultMap type="org.thingsboard.server.common.data.yunteng.dto.TkRepairOrderDTO" id="repairOrderMap">
  6 + <!-- <result property="id" column="id"/>-->
  7 + <!-- <result property="reportDate" column="report_date"/>-->
  8 + <!-- <result property="deviceId" column="device_id"/>-->
  9 + <!-- <result property="reportBy" column="report_by"/>-->
  10 + <!-- <result property="emergency" column="emergency"/>-->
  11 + <!-- <result property="description" column="description"/>-->
  12 + <result property="reportByName" column="reportByName"/>
  13 + </resultMap>
  14 + <select id="getRepairOrderPage" resultMap="repairOrderMap">
  15 + SELECT
  16 + o.id,o.device_id,o.order_code,o.report_date,o.report_by,o.status,o.emergency,o.situation_img,o.description
  17 + ,o.tenant_id,o.create_time,o.updater,o.update_time,o.creator,su.real_name as reportByName
  18 + from qg_repair_order o
  19 + inner join sys_user su on su.id=o.report_by
  20 + <where>
  21 + <if test="queryMap.tenantId !=null ">
  22 + AND o.tenant_id = #{queryMap.tenantId}
  23 + </if>
  24 + <if test="queryMap.status !=null ">
  25 + AND o.status = #{queryMap.status}
  26 + </if>
  27 + <if test="queryMap.deviceId !=null ">
  28 + AND o.device_id = #{queryMap.deviceId}
  29 + </if>
  30 + <if test="queryMap.emergency !=null ">
  31 + AND o.emergency = #{queryMap.emergency}
  32 + </if>
  33 + <if test="queryMap.startDate !=null ">
  34 + AND to_char(o.report_date, 'YYYY-MM-DD HH24:MI:SS') &gt;= #{queryMap.startDate}
  35 + </if>
  36 + <if test="queryMap.endDate !=null ">
  37 + AND to_char(o.report_date, 'YYYY-MM-DD HH24:MI:SS') &lt;= #{queryMap.endDate}
  38 + </if>
  39 + </where>
  40 + </select>
  41 +</mapper>