Commit c3dc2282fa4f0f4801b385c2ca5275faea2aa6ff

Authored by 胡翰林
1 parent 68e88940

设备保养接口

Showing 34 changed files with 1152 additions and 37 deletions
... ... @@ -6,8 +6,7 @@ CREATE TABLE "public"."qg_malfunction_reason" (
6 6 "create_time" timestamp(6),
7 7 "creator" varchar(36),
8 8 "updater" varchar(36),
9   - "update_time" timestamp(6),
10   - "remark" varchar(255),
  9 + "update_time" timestamp(6)
11 10 CONSTRAINT "qg_malfunction_reason_pkey" PRIMARY KEY ("id")
12 11 );
13 12
... ... @@ -43,8 +42,7 @@ CREATE TABLE "public"."qg_repair_order" (
43 42 "create_time" timestamp(6),
44 43 "creator" varchar(36),
45 44 "updater" varchar(36),
46   - "update_time" timestamp(6),
47   - "remark" varchar(255),
  45 + "update_time" timestamp(6)
48 46 CONSTRAINT "qg_repair_order_pkey" PRIMARY KEY ("id")
49 47 );
50 48
... ... @@ -75,8 +73,7 @@ CREATE TABLE "public"."qg_repair_record" (
75 73 "create_time" timestamp(6),
76 74 "creator" varchar(36),
77 75 "updater" varchar(36),
78   - "update_time" timestamp(6),
79   - "remark" varchar(255),
  76 + "update_time" timestamp(6)
80 77 CONSTRAINT "qg_repair_record_pkey" PRIMARY KEY ("id")
81 78 );
82 79
... ... @@ -199,4 +196,72 @@ COMMENT ON TABLE "public"."qg_inspection_details" IS '巡检记录明细';
199 196 COMMENT ON COLUMN "public"."qg_inspection_details"."id" IS '主键ID';
200 197 COMMENT ON COLUMN "public"."qg_inspection_details"."check_device_id" IS '巡检设备';
201 198 COMMENT ON COLUMN "public"."qg_inspection_details"."plan_details" IS '巡检内容';
202   -COMMENT ON COLUMN "public"."qg_inspection_details"."record_result" IS '巡检结果';
\ No newline at end of file
  199 +COMMENT ON COLUMN "public"."qg_inspection_details"."record_result" IS '巡检结果';
  200 +
  201 +CREATE TABLE "public"."qg_preserve_detail" (
  202 + "id" varchar(36) NOT NULL,
  203 + "detail_code" varchar(50),
  204 + "preserve_detail" varchar(200),
  205 + "preserve_plan_id" varchar(36),
  206 + "device_id" varchar(36),
  207 + "check_plan_id" varchar(36),
  208 + "detail_status" varchar(50),
  209 + "tenant_id" varchar(36),
  210 + "create_time" timestamp(6),
  211 + "creator" varchar(36),
  212 + "updater" varchar(36),
  213 + "update_time" timestamp(6),
  214 + CONSTRAINT "qg_preserve_detail_pkey" PRIMARY KEY ("id")
  215 +);
  216 +
  217 +COMMENT ON TABLE "public"."qg_preserve_detail" IS '保养明细';
  218 +COMMENT ON COLUMN "public"."qg_preserve_detail"."detail_code" IS '保养明细编码';
  219 +COMMENT ON COLUMN "public"."qg_preserve_detail"."preserve_detail" IS '方案明细';
  220 +COMMENT ON COLUMN "public"."qg_preserve_detail"."preserve_plan_id" IS '保养计划id';
  221 +COMMENT ON COLUMN "public"."qg_preserve_detail"."device_id" IS '设备id';
  222 +COMMENT ON COLUMN "public"."qg_preserve_detail"."check_plan_id" IS '方案id';
  223 +COMMENT ON COLUMN "public"."qg_preserve_detail"."detail_status" IS '状态';
  224 +
  225 +CREATE TABLE "public"."qg_preserve_plan" (
  226 + "id" varchar(36) NOT NULL,
  227 + "preserve_code" varchar(50),
  228 + "preserve_name" varchar(200),
  229 + "status" varchar(50),
  230 + "times" int4,
  231 + "frequency" varchar(50),
  232 + "tenant_id" varchar(36),
  233 + "create_time" timestamp(6),
  234 + "creator" varchar(36),
  235 + "updater" varchar(36),
  236 + "update_time" timestamp(6),
  237 + CONSTRAINT "qg_preserve_plan_pkey" PRIMARY KEY ("id")
  238 +);
  239 +
  240 +COMMENT ON TABLE "public"."qg_preserve_plan" IS '保养计划';
  241 +COMMENT ON COLUMN "public"."qg_preserve_plan"."preserve_code" IS '保养计划编码';
  242 +COMMENT ON COLUMN "public"."qg_preserve_plan"."preserve_name" IS '保养计划名称';
  243 +COMMENT ON COLUMN "public"."qg_preserve_plan"."status" IS '状态';
  244 +COMMENT ON COLUMN "public"."qg_preserve_plan"."times" IS '次数';
  245 +COMMENT ON COLUMN "public"."qg_preserve_plan"."frequency" IS '频率';
  246 +
  247 +CREATE TABLE "public"."qg_preserve_record" (
  248 + "id" varchar(36) NOT NULL,
  249 + "record_code" varchar(50),
  250 + "preserve_plan_id" varchar(36),
  251 + "preserve_date" timestamp(6),
  252 + "preserve_by" varchar(36),
  253 + "preserve_status" varchar(50),
  254 + "tenant_id" varchar(36),
  255 + "create_time" timestamp(6),
  256 + "creator" varchar(36),
  257 + "updater" varchar(36),
  258 + "update_time" timestamp(6),
  259 + CONSTRAINT "qg_preserve_record_pkey" PRIMARY KEY ("id")
  260 +);
  261 +
  262 +COMMENT ON TABLE "public"."qg_preserve_record" IS '保养记录';
  263 +COMMENT ON COLUMN "public"."qg_preserve_record"."record_code" IS '保养记录编码';
  264 +COMMENT ON COLUMN "public"."qg_preserve_record"."preserve_plan_id" IS '保养计划id';
  265 +COMMENT ON COLUMN "public"."qg_preserve_record"."preserve_date" IS '保养日期';
  266 +COMMENT ON COLUMN "public"."qg_preserve_record"."preserve_by" IS '保养日期';
  267 +COMMENT ON COLUMN "public"."qg_preserve_record"."preserve_status" IS '状态';
... ...
  1 +package org.thingsboard.server.controller.yunteng;
  2 +
  3 +import io.swagger.annotations.Api;
  4 +import io.swagger.annotations.ApiOperation;
  5 +import lombok.RequiredArgsConstructor;
  6 +import lombok.extern.slf4j.Slf4j;
  7 +import org.springframework.http.ResponseEntity;
  8 +import org.springframework.security.access.prepost.PreAuthorize;
  9 +import org.springframework.web.bind.annotation.*;
  10 +import org.thingsboard.server.common.data.exception.ThingsboardException;
  11 +import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
  12 +import org.thingsboard.server.common.data.yunteng.dto.TkPreserveDetailDTO;
  13 +import org.thingsboard.server.common.data.yunteng.dto.TkPreservePlanDTO;
  14 +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
  15 +import org.thingsboard.server.controller.BaseController;
  16 +import org.thingsboard.server.dao.yunteng.service.TkPreserveDetailService;
  17 +import org.thingsboard.server.dao.yunteng.service.TkPreservePlanService;
  18 +import org.thingsboard.server.queue.util.TbCoreComponent;
  19 +
  20 +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE;
  21 +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE_SIZE;
  22 +
  23 +@RestController
  24 +@TbCoreComponent
  25 +@RequiredArgsConstructor
  26 +@RequestMapping("api/yt/preservePlan")
  27 +@Api(tags = {"保养计划"})
  28 +@Slf4j
  29 +public class TkPreservePlanController extends BaseController {
  30 +
  31 + private final TkPreservePlanService tkPreservePlanService;
  32 +
  33 + private final TkPreserveDetailService tkPreserveDetailService;
  34 +
  35 + @PostMapping("/save")
  36 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  37 + @ApiOperation("保养计划保存")
  38 + public ResponseEntity<TkPreservePlanDTO> save(@RequestBody TkPreservePlanDTO dto) throws ThingsboardException {
  39 + TkPreservePlanDTO preservePlanDTO = tkPreservePlanService.save(dto);
  40 + return ResponseEntity.ok(preservePlanDTO);
  41 + }
  42 +
  43 + @GetMapping("/delete")
  44 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  45 + @ApiOperation("保养计划删除")
  46 + public ResponseEntity<Boolean> delete(@RequestParam("id") String id) throws ThingsboardException {
  47 + return ResponseEntity.ok(tkPreservePlanService.delete(id));
  48 + }
  49 +
  50 + @GetMapping("/detail")
  51 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  52 + @ApiOperation("保养计划详情")
  53 + public ResponseEntity<TkPreservePlanDTO> detail(@RequestParam("id") String id) throws ThingsboardException {
  54 + TkPreservePlanDTO deviceDTO = tkPreservePlanService.detail(id);
  55 + return ResponseEntity.ok(deviceDTO);
  56 + }
  57 +
  58 + @PostMapping("/pageData")
  59 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  60 + @ApiOperation("保养计划分页列表")
  61 + public TkPageData<TkPreservePlanDTO> pageData(
  62 + @RequestParam(PAGE_SIZE) int pageSize,
  63 + @RequestParam(PAGE) int page,
  64 + @RequestBody TkPreservePlanDTO dto)
  65 + throws ThingsboardException {
  66 + dto.setPage(page);
  67 + dto.setPageSize(pageSize);
  68 + return tkPreservePlanService.page(dto);
  69 + }
  70 +
  71 + @PostMapping("/updateStatus")
  72 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  73 + @ApiOperation("更新保养计划状态")
  74 + public ResponseEntity<TkPreservePlanDTO> updateStatus(@RequestBody TkPreservePlanDTO dto) throws ThingsboardException {
  75 + TkPreservePlanDTO orderInfo = tkPreservePlanService.load(dto.getId());
  76 + if (orderInfo == null) {
  77 + throw new TkDataValidationException("保养计划不存在!");
  78 + }
  79 +
  80 + tkPreservePlanService.updateStatus(dto.getId(), dto.getStatus());
  81 + return ResponseEntity.ok(orderInfo);
  82 + }
  83 +
  84 + @PostMapping("/pageDetail")
  85 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  86 + @ApiOperation("保养计划详情分页列表")
  87 + public TkPageData<TkPreserveDetailDTO> pageDetail(
  88 + @RequestParam(PAGE_SIZE) int pageSize,
  89 + @RequestParam(PAGE) int page,
  90 + @RequestBody TkPreserveDetailDTO dto)
  91 + throws ThingsboardException {
  92 + dto.setPage(page);
  93 + dto.setPageSize(pageSize);
  94 + return tkPreserveDetailService.page(dto);
  95 + }
  96 +}
... ...
  1 +package org.thingsboard.server.controller.yunteng;
  2 +
  3 +import io.swagger.annotations.Api;
  4 +import io.swagger.annotations.ApiOperation;
  5 +import lombok.RequiredArgsConstructor;
  6 +import lombok.extern.slf4j.Slf4j;
  7 +import org.springframework.http.ResponseEntity;
  8 +import org.springframework.security.access.prepost.PreAuthorize;
  9 +import org.springframework.web.bind.annotation.*;
  10 +import org.thingsboard.server.common.data.exception.ThingsboardException;
  11 +import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
  12 +import org.thingsboard.server.common.data.yunteng.dto.TkPreserveRecordDTO;
  13 +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
  14 +import org.thingsboard.server.controller.BaseController;
  15 +import org.thingsboard.server.dao.yunteng.service.TkPreserveRecordServcie;
  16 +import org.thingsboard.server.queue.util.TbCoreComponent;
  17 +
  18 +import java.util.Map;
  19 +
  20 +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE;
  21 +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE_SIZE;
  22 +
  23 +@RestController
  24 +@TbCoreComponent
  25 +@RequiredArgsConstructor
  26 +@RequestMapping("api/yt/preserveRecord")
  27 +@Api(tags = {"保养记录"})
  28 +@Slf4j
  29 +public class TkPreserveRecordController extends BaseController {
  30 +
  31 + private final TkPreserveRecordServcie tkPreserveRecordServcie;
  32 +
  33 + @PostMapping("/save")
  34 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  35 + @ApiOperation("保养记录保存")
  36 + public ResponseEntity<TkPreserveRecordDTO> save(@RequestBody TkPreserveRecordDTO dto) throws ThingsboardException {
  37 + TkPreserveRecordDTO preservePlanDTO = tkPreserveRecordServcie.save(dto);
  38 + return ResponseEntity.ok(preservePlanDTO);
  39 + }
  40 +
  41 + @GetMapping("/delete")
  42 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  43 + @ApiOperation("保养记录删除")
  44 + public ResponseEntity<Boolean> delete(@RequestParam("id") String id) throws ThingsboardException {
  45 + return ResponseEntity.ok(tkPreserveRecordServcie.delete(id));
  46 + }
  47 +
  48 + @GetMapping("/detail")
  49 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  50 + @ApiOperation("保养记录详情")
  51 + public ResponseEntity<TkPreserveRecordDTO> detail(@RequestParam("id") String id) throws ThingsboardException {
  52 + TkPreserveRecordDTO deviceDTO = tkPreserveRecordServcie.detail(id);
  53 + return ResponseEntity.ok(deviceDTO);
  54 + }
  55 +
  56 + @PostMapping("/updateStatus")
  57 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  58 + @ApiOperation("更新保养记录状态")
  59 + public ResponseEntity<TkPreserveRecordDTO> updateStatus(@RequestBody TkPreserveRecordDTO dto) throws ThingsboardException {
  60 + TkPreserveRecordDTO orderInfo = tkPreserveRecordServcie.load(dto.getId());
  61 + if (orderInfo == null) {
  62 + throw new TkDataValidationException("保养记录不存在!");
  63 + }
  64 +
  65 + tkPreserveRecordServcie.updateStatus(dto.getId(), dto.getPreserveStatus());
  66 + return ResponseEntity.ok(orderInfo);
  67 + }
  68 +
  69 + @PostMapping("/pageData")
  70 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  71 + @ApiOperation("保养记录分页列表")
  72 + public TkPageData<TkPreserveRecordDTO> pageData(
  73 + @RequestParam(PAGE_SIZE) int pageSize,
  74 + @RequestParam(PAGE) int page,
  75 + @RequestBody Map<String, Object> params)
  76 + throws ThingsboardException {
  77 + params.put(PAGE, page);
  78 + params.put(PAGE_SIZE, pageSize);
  79 + return tkPreserveRecordServcie.page(params);
  80 + }
  81 +}
... ...
... ... @@ -59,7 +59,7 @@ public class TkRepairOrderController extends BaseController {
59 59 }
60 60
61 61 if (StringUtils.isBlank(dto.getStatus())) {
62   - dto.setStatus(RepairOrderStatusEnum.SCHEDULING.name());
  62 + dto.setStatus(RepairOrderStatusEnum.DRAFT.name());
63 63 }
64 64
65 65 TkRepairOrderDTO deviceDTO = tkRepairOrderService.save(dto);
... ... @@ -93,4 +93,17 @@ public class TkRepairOrderController extends BaseController {
93 93 params.put(PAGE_SIZE, pageSize);
94 94 return tkRepairOrderService.page(getCurrentUser().getCurrentTenantId(), params);
95 95 }
  96 +
  97 + @PostMapping("/updateStatus")
  98 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  99 + @ApiOperation("更新工单状态")
  100 + public ResponseEntity<TkRepairOrderDTO> updateStatus(@RequestBody TkRepairOrderDTO dto) throws ThingsboardException {
  101 + TkRepairOrderDTO orderInfo = tkRepairOrderService.load(dto.getId());
  102 + if (orderInfo == null) {
  103 + throw new TkDataValidationException("工单不存在!");
  104 + }
  105 +
  106 + tkRepairOrderService.updateStatus(dto.getId(), dto.getStatus());
  107 + return ResponseEntity.ok(orderInfo);
  108 + }
96 109 }
... ...
... ... @@ -143,4 +143,10 @@ public class DeviceDTO extends TenantDTO {
143 143 private Integer isEdge;
144 144 @ApiModelProperty(value = "设备负责人id")
145 145 private String directorId;
  146 + @ApiModelProperty(value = "设备负责人名称")
  147 + private String directorName;
  148 + @ApiModelProperty(value = "类别id")
  149 + private String categoryId;
  150 + @ApiModelProperty(value = "类别名称")
  151 + private String categoryName;
146 152 }
... ...
  1 +package org.thingsboard.server.common.data.yunteng.dto;
  2 +
  3 +import io.swagger.annotations.ApiModelProperty;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +
  7 +@EqualsAndHashCode(callSuper = true)
  8 +@Data
  9 +public class TkPreserveDetailDTO extends TenantDTO {
  10 + @ApiModelProperty(value = "保养明细编码")
  11 + private String detailCode;
  12 +
  13 + @ApiModelProperty(value = "方案明细")
  14 + private String preserveDetail;
  15 +
  16 + @ApiModelProperty(value = "保养计划id")
  17 + private String preservePlanId;
  18 +
  19 + @ApiModelProperty(value = "设备id")
  20 + private String deviceId;
  21 +
  22 + @ApiModelProperty(value = "设备信息")
  23 + private DeviceDTO deviceInfo;
  24 +
  25 + @ApiModelProperty(value = "方案id")
  26 + private String checkPlanId;
  27 +
  28 + @ApiModelProperty(value = "执行状态(UNEXECUTED未执行,EXECUTED已执行)")
  29 + private String detailStatus;
  30 +
  31 + @ApiModelProperty(value = "页号")
  32 + private Integer page;
  33 +
  34 + @ApiModelProperty(value = "页码")
  35 + private Integer pageSize;
  36 +
  37 +}
... ...
  1 +package org.thingsboard.server.common.data.yunteng.dto;
  2 +
  3 +import io.swagger.annotations.ApiModelProperty;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +
  7 +import java.util.List;
  8 +
  9 +@EqualsAndHashCode(callSuper = true)
  10 +@Data
  11 +public class TkPreservePlanDTO extends TenantDTO {
  12 +
  13 + @ApiModelProperty(value = "保养计划编码")
  14 + private String preserveCode;
  15 +
  16 + @ApiModelProperty(value = "保养计划名称")
  17 + private String preserveName;
  18 +
  19 + @ApiModelProperty(value = "状态(NOTSTART 未开始,UNDERWAY进行中,COMPLETED已完成,STOP停用)")
  20 + private String status;
  21 +
  22 + @ApiModelProperty(value = "次数")
  23 + private Integer times;
  24 +
  25 + @ApiModelProperty(value = "频率")
  26 + private String frequency;
  27 +
  28 + @ApiModelProperty(value = "保养明细")
  29 + List<TkPreserveDetailDTO> preserveDetailList;
  30 +
  31 + @ApiModelProperty(value = "页号")
  32 + private Integer page;
  33 +
  34 + @ApiModelProperty(value = "页码")
  35 + private Integer pageSize;
  36 +
  37 +}
... ...
  1 +package org.thingsboard.server.common.data.yunteng.dto;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import com.fasterxml.jackson.databind.annotation.JsonSerialize;
  5 +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
  6 +import io.swagger.annotations.ApiModelProperty;
  7 +import lombok.Data;
  8 +import lombok.EqualsAndHashCode;
  9 +
  10 +import java.time.LocalDateTime;
  11 +
  12 +@EqualsAndHashCode(callSuper = true)
  13 +@Data
  14 +public class TkPreserveRecordDTO extends TenantDTO {
  15 + @ApiModelProperty(value = "记录编号")
  16 + private String recordCode;
  17 +
  18 + @ApiModelProperty(value = "保养计划id")
  19 + private String preservePlanId;
  20 +
  21 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  22 + @ApiModelProperty(value = "保养日期")
  23 + @JsonSerialize(using = LocalDateTimeSerializer.class)
  24 + private LocalDateTime preserveDate;
  25 +
  26 + @ApiModelProperty(value = "保养人员id")
  27 + private String preserveBy;
  28 +
  29 + @ApiModelProperty(value = "状态(INCOMPLETE未完成,COMPLETE已完成)")
  30 + private String preserveStatus;
  31 +
  32 + @ApiModelProperty(value = "保养人员姓名")
  33 + private String preserveByName;
  34 +
  35 + @ApiModelProperty(value = "保养计划名称")
  36 + private String preservePlanName;
  37 +
  38 + @ApiModelProperty(value = "查询开始时间")
  39 + private LocalDateTime startDate;
  40 +
  41 + @ApiModelProperty(value = "查询开始结束")
  42 + private LocalDateTime endDate;
  43 +
  44 + @ApiModelProperty(value = "页号")
  45 + private Integer page;
  46 +
  47 + @ApiModelProperty(value = "页码")
  48 + private Integer pageSize;
  49 +
  50 +}
... ...
  1 +package org.thingsboard.server.common.data.yunteng.enums;
  2 +
  3 +public enum PreserveDetailStatusEnum {
  4 + //未执行
  5 + UNEXECUTED,
  6 + //已执行
  7 + EXECUTED
  8 +}
... ...
  1 +package org.thingsboard.server.common.data.yunteng.enums;
  2 +
  3 +public enum PreservePlanStatusEnum {
  4 + //未开始
  5 + NOTSTART,
  6 + //进行中
  7 + UNDERWAY,
  8 + //已完成
  9 + COMPLETED,
  10 + //停用
  11 + STOP
  12 +}
... ...
  1 +package org.thingsboard.server.common.data.yunteng.enums;
  2 +
  3 +public enum PreserveRecordStatusEnum {
  4 + //未完成
  5 + INCOMPLETE,
  6 + //完成
  7 + COMPLETE,
  8 +}
... ...
1 1 package org.thingsboard.server.common.data.yunteng.enums;
2 2
3 3 public enum RepairOrderStatusEnum {
  4 + //DRAFT
  5 + DRAFT,
4 6 //排期中
5 7 SCHEDULING,
6 8 //维修完成
... ...
... ... @@ -680,6 +680,9 @@ public class ModelConstants {
680 680 * 维修记录
681 681 */
682 682 public static final String TKREPAIRRECORD_TABLE_NAME = "qg_repair_record";
  683 + public static final String TKPRESERVEPLAN_TABLE_NAME = "qg_preserve_plan";
  684 + public static final String TKPRESERVEDETAIL_TABLE_NAME = "qg_preserve_detail";
  685 + public static final String TKPRESERVERECORD_TABLE_NAME = "qg_preserve_record";
683 686
684 687 public static final String TKINSPECTIONPLAN_TABLE_NAME= "qg_inspection_plan"; // 巡检计划
685 688 public static final String TKCHECKPLAN_TABLE_NAME= "qg_check_plan"; // 巡检/保养方案
... ...
... ... @@ -90,4 +90,6 @@ public class TkDeviceEntity extends TbTenantBaseEntity {
90 90
91 91 private String directorId;
92 92
  93 + private String categoryId;
  94 +
93 95 }
... ...
  1 +package org.thingsboard.server.dao.yunteng.entities;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.TableName;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +import org.thingsboard.server.dao.model.ModelConstants;
  7 +
  8 +/**
  9 + * 保养明细
  10 + */
  11 +@Data
  12 +@EqualsAndHashCode(callSuper = true)
  13 +@TableName(value = ModelConstants.TKPRESERVEDETAIL_TABLE_NAME, autoResultMap = true)
  14 +public class TkPreserveDetailEntity extends TenantBaseEntity {
  15 + private String detailCode;
  16 + private String preserveDetail;
  17 + private String preservePlanId;
  18 + private String deviceId;
  19 + private String checkPlanId;
  20 + private String detailStatus;
  21 +}
... ...
  1 +package org.thingsboard.server.dao.yunteng.entities;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.TableName;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +import org.thingsboard.server.dao.model.ModelConstants;
  7 +
  8 +/**
  9 + * 保养计划
  10 + */
  11 +@Data
  12 +@EqualsAndHashCode(callSuper = true)
  13 +@TableName(value = ModelConstants.TKPRESERVEPLAN_TABLE_NAME, autoResultMap = true)
  14 +public class TkPreservePlanEntity extends TenantBaseEntity {
  15 + private String preserveCode;
  16 + private String preserveName;
  17 + private String status;
  18 + private Integer times;
  19 + private String frequency;
  20 +}
... ...
  1 +package org.thingsboard.server.dao.yunteng.entities;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.TableName;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +import org.thingsboard.server.dao.model.ModelConstants;
  7 +
  8 +import java.time.LocalDateTime;
  9 +
  10 +/**
  11 + * 保养记录
  12 + */
  13 +@Data
  14 +@EqualsAndHashCode(callSuper = true)
  15 +@TableName(value = ModelConstants.TKPRESERVERECORD_TABLE_NAME, autoResultMap = true)
  16 +public class TkPreserveRecordEntity extends TenantBaseEntity {
  17 + private String recordCode;
  18 + private String preservePlanId;
  19 + private LocalDateTime preserveDate;
  20 + private String preserveBy;
  21 + private String preserveStatus;
  22 +}
... ...
... ... @@ -7,9 +7,11 @@ import lombok.RequiredArgsConstructor;
7 7 import lombok.extern.slf4j.Slf4j;
8 8 import org.apache.commons.lang3.StringUtils;
9 9 import org.springframework.stereotype.Service;
  10 +import org.thingsboard.server.common.data.exception.ThingsboardException;
10 11 import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
11 12 import org.thingsboard.server.common.data.yunteng.dto.TkMalfunctionReasonDTO;
12 13 import org.thingsboard.server.common.data.yunteng.dto.TkRepairOrderDTO;
  14 +import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils;
13 15 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
14 16 import org.thingsboard.server.dao.yunteng.entities.TkMalfunctionReasonEntity;
15 17 import org.thingsboard.server.dao.yunteng.mapper.TkMalfunctionReasonMapper;
... ... @@ -33,10 +35,10 @@ public class TkMalfunctionReasonServiceImpl extends AbstractBaseService<TkMalfun
33 35 LambdaQueryWrapper<TkMalfunctionReasonEntity> lambda = wrapper.lambda();
34 36 lambda.eq(TkMalfunctionReasonEntity::getTenantId, tenantId);
35 37 if (queryMap != null && queryMap.get("code") != null) {
36   - lambda.eq(TkMalfunctionReasonEntity::getCode, queryMap.get("code").toString());
  38 + lambda.like(TkMalfunctionReasonEntity::getCode, queryMap.get("code").toString());
37 39 }
38 40 if (queryMap != null && queryMap.get("reason") != null) {
39   - lambda.eq(TkMalfunctionReasonEntity::getReason, queryMap.get("reason").toString());
  41 + lambda.like(TkMalfunctionReasonEntity::getReason, queryMap.get("reason").toString());
40 42 }
41 43
42 44 IPage<TkMalfunctionReasonEntity> page = baseMapper.selectPage(
... ... @@ -51,10 +53,10 @@ public class TkMalfunctionReasonServiceImpl extends AbstractBaseService<TkMalfun
51 53 LambdaQueryWrapper<TkMalfunctionReasonEntity> lambda = wrapper.lambda();
52 54 lambda.eq(TkMalfunctionReasonEntity::getTenantId, tenantId);
53 55 if (queryMap != null && queryMap.get("code") != null) {
54   - lambda.eq(TkMalfunctionReasonEntity::getCode, queryMap.get("code").toString());
  56 + lambda.like(TkMalfunctionReasonEntity::getCode, queryMap.get("code").toString());
55 57 }
56 58 if (queryMap != null && queryMap.get("reason") != null) {
57   - lambda.eq(TkMalfunctionReasonEntity::getReason, queryMap.get("reason").toString());
  59 + lambda.like(TkMalfunctionReasonEntity::getReason, queryMap.get("reason").toString());
58 60 }
59 61 List<TkMalfunctionReasonEntity> entitys = baseMapper.selectList(wrapper);
60 62 return Optional.ofNullable(entitys).map(all -> all.stream().map(item -> item.getDTO(TkMalfunctionReasonDTO.class))
... ... @@ -63,7 +65,7 @@ public class TkMalfunctionReasonServiceImpl extends AbstractBaseService<TkMalfun
63 65 }
64 66
65 67 @Override
66   - public TkMalfunctionReasonDTO save(TkMalfunctionReasonDTO tkMalfunctionReasonDTO) {
  68 + public TkMalfunctionReasonDTO save(TkMalfunctionReasonDTO tkMalfunctionReasonDTO) throws ThingsboardException {
67 69 checkDto(tkMalfunctionReasonDTO);
68 70 TkMalfunctionReasonEntity entity = new TkMalfunctionReasonEntity();
69 71 if (StringUtils.isBlank(tkMalfunctionReasonDTO.getId())) {
... ... @@ -81,9 +83,9 @@ public class TkMalfunctionReasonServiceImpl extends AbstractBaseService<TkMalfun
81 83 return tkMalfunctionReasonDTO;
82 84 }
83 85
84   - private void checkDto(TkMalfunctionReasonDTO dto) {
  86 + private void checkDto(TkMalfunctionReasonDTO dto) throws ThingsboardException {
85 87 if (StringUtils.isBlank(dto.getTenantId())) {
86   - throw new TkDataValidationException("租户id为空!");
  88 + dto.setTenantId(SpringBeanUtils.getTenantId().getId().toString());
87 89 }
88 90 }
89 91
... ...
  1 +package org.thingsboard.server.dao.yunteng.impl;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6 +import lombok.RequiredArgsConstructor;
  7 +import lombok.extern.slf4j.Slf4j;
  8 +import org.apache.commons.collections4.CollectionUtils;
  9 +import org.apache.commons.lang3.StringUtils;
  10 +import org.springframework.stereotype.Service;
  11 +import org.thingsboard.server.common.data.exception.ThingsboardException;
  12 +import org.thingsboard.server.common.data.id.TenantId;
  13 +import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
  14 +import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO;
  15 +import org.thingsboard.server.common.data.yunteng.dto.TkPreserveDetailDTO;
  16 +import org.thingsboard.server.common.data.yunteng.enums.PreserveDetailStatusEnum;
  17 +import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils;
  18 +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
  19 +import org.thingsboard.server.dao.yunteng.entities.TenantBaseEntity;
  20 +import org.thingsboard.server.dao.yunteng.entities.TkPreserveDetailEntity;
  21 +import org.thingsboard.server.dao.yunteng.mapper.TkPreserveDetailMapper;
  22 +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
  23 +import org.thingsboard.server.dao.yunteng.service.TkDeviceService;
  24 +import org.thingsboard.server.dao.yunteng.service.TkPreserveDetailService;
  25 +
  26 +import java.util.HashMap;
  27 +import java.util.List;
  28 +import java.util.Map;
  29 +import java.util.UUID;
  30 +import java.util.stream.Collectors;
  31 +
  32 +@Service
  33 +@RequiredArgsConstructor
  34 +@Slf4j
  35 +public class TkPreserveDetailServiceImpl extends AbstractBaseService<TkPreserveDetailMapper, TkPreserveDetailEntity>
  36 + implements TkPreserveDetailService {
  37 +
  38 + private final TkDeviceService tkdeviceService;
  39 +
  40 + @Override
  41 + public TkPageData<TkPreserveDetailDTO> page(TkPreserveDetailDTO condition) throws ThingsboardException {
  42 + TkPageData<TkPreserveDetailDTO> result = new TkPageData<>();
  43 + QueryWrapper<TkPreserveDetailEntity> wrapper = new QueryWrapper<>();
  44 + LambdaQueryWrapper<TkPreserveDetailEntity> lambda = wrapper.lambda();
  45 + TenantId tenantId = SpringBeanUtils.getTenantId();
  46 + lambda.eq(TkPreserveDetailEntity::getTenantId, tenantId.getId().toString());
  47 +
  48 + if (StringUtils.isNotBlank(condition.getPreservePlanId())) {
  49 + lambda.eq(TkPreserveDetailEntity::getPreservePlanId, condition.getPreservePlanId());
  50 + }
  51 +
  52 + lambda.orderByDesc(TenantBaseEntity::getCreateTime);
  53 +
  54 + Page<TkPreserveDetailEntity> page = new Page<>();
  55 + page.setCurrent(condition.getPage());
  56 + page.setSize(condition.getPageSize());
  57 + page = baseMapper.selectPage(page, wrapper);
  58 +
  59 + if (page != null && CollectionUtils.isNotEmpty(page.getRecords())) {
  60 + Map<String, DeviceDTO> deviceMap = new HashMap<>();
  61 + List<TkPreserveDetailDTO> dataList = page.getRecords().stream().map(item -> {
  62 + TkPreserveDetailDTO dto = item.getDTO(TkPreserveDetailDTO.class);
  63 + String deviceId = dto.getDeviceId();
  64 + DeviceDTO deviceDTO = deviceMap.get(deviceId);
  65 + if (deviceDTO == null) {
  66 + deviceDTO = tkdeviceService.checkDeviceByTenantIdAndDeviceId(tenantId.getId(), UUID.fromString(dto.getDeviceId()));
  67 + deviceMap.put(deviceId, deviceDTO);
  68 + }
  69 + dto.setDeviceInfo(deviceDTO);
  70 + return dto;
  71 + }).collect(Collectors.toList());
  72 + result.setItems(dataList);
  73 + }
  74 + result.setTotal(Long.valueOf(page.getTotal()).intValue());
  75 + return result;
  76 + }
  77 +
  78 + @Override
  79 + public TkPreserveDetailDTO save(TkPreserveDetailDTO dto) throws ThingsboardException {
  80 + checkDto(dto);
  81 +
  82 + TkPreserveDetailEntity entity = new TkPreserveDetailEntity();
  83 + if (StringUtils.isBlank(dto.getId())) {
  84 + dto.copyToEntity(entity);
  85 + baseMapper.insert(entity);
  86 + } else {
  87 + LambdaQueryWrapper<TkPreserveDetailEntity> filter = new QueryWrapper<TkPreserveDetailEntity>().lambda()
  88 + .eq(TkPreserveDetailEntity::getId, dto.getId());
  89 + entity = dto.getEntity(TkPreserveDetailEntity.class);
  90 + baseMapper.update(entity, filter);
  91 + }
  92 + entity.copyToDTO(dto);
  93 + return dto;
  94 + }
  95 +
  96 + private void checkDto(TkPreserveDetailDTO dto) throws ThingsboardException {
  97 + if (StringUtils.isBlank(dto.getDeviceId())) {
  98 + throw new TkDataValidationException("设备不能为空!");
  99 + }
  100 +
  101 + if (StringUtils.isBlank(dto.getPreservePlanId())) {
  102 + throw new TkDataValidationException("保养计划id不能为空!");
  103 + }
  104 +
  105 + if (StringUtils.isBlank(dto.getCheckPlanId())) {
  106 + throw new TkDataValidationException("方案不能为空!");
  107 + }
  108 +
  109 + if (StringUtils.isBlank(dto.getTenantId())) {
  110 + dto.setTenantId(SpringBeanUtils.getTenantId().getId().toString());
  111 + }
  112 +
  113 + if (StringUtils.isBlank(dto.getDetailStatus())) {
  114 + dto.setDetailStatus(PreserveDetailStatusEnum.UNEXECUTED.name());
  115 + }
  116 + }
  117 +
  118 +
  119 + @Override
  120 + public boolean delete(String id) {
  121 + int count = baseMapper.deleteById(id);
  122 + return count > 0;
  123 + }
  124 +
  125 + @Override
  126 + public boolean deleteByPlanId(String planId) {
  127 + Map<String, Object> params = new HashMap<>();
  128 + params.put("preserve_plan_id", planId);
  129 + int count = baseMapper.deleteByMap(params);
  130 + return count > 0;
  131 + }
  132 +
  133 + @Override
  134 + public void deleteNotInIdEqPlanId(String planId, List<String> notinIds) {
  135 + baseMapper.delete(new QueryWrapper<TkPreserveDetailEntity>()
  136 + .lambda().eq(TkPreserveDetailEntity::getPreservePlanId, planId)
  137 + .notIn(TkPreserveDetailEntity::getId, notinIds)
  138 + );
  139 + }
  140 +
  141 + @Override
  142 + public List<TkPreserveDetailDTO> listByPlanId(String planId) throws ThingsboardException {
  143 + if (StringUtils.isBlank(planId)) {
  144 + throw new TkDataValidationException("方案id不能为空!");
  145 + }
  146 + QueryWrapper<TkPreserveDetailEntity> wrapper = new QueryWrapper<>();
  147 + LambdaQueryWrapper<TkPreserveDetailEntity> lambda = wrapper.lambda();
  148 + TenantId tenantId = SpringBeanUtils.getTenantId();
  149 + lambda.eq(TkPreserveDetailEntity::getTenantId, tenantId.getId().toString());
  150 + lambda.eq(TkPreserveDetailEntity::getPreservePlanId, planId);
  151 + List<TkPreserveDetailEntity> entities = baseMapper.selectList(wrapper);
  152 + if (CollectionUtils.isNotEmpty(entities)) {
  153 + List<TkPreserveDetailDTO> dataList = entities.stream().map(item -> {
  154 + TkPreserveDetailDTO dto = item.getDTO(TkPreserveDetailDTO.class);
  155 + return dto;
  156 + }).collect(Collectors.toList());
  157 + return dataList;
  158 + } else {
  159 + return null;
  160 + }
  161 +
  162 + }
  163 +}
... ...
  1 +package org.thingsboard.server.dao.yunteng.impl;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6 +import lombok.RequiredArgsConstructor;
  7 +import lombok.extern.slf4j.Slf4j;
  8 +import org.apache.commons.collections.CollectionUtils;
  9 +import org.apache.commons.lang3.StringUtils;
  10 +import org.springframework.stereotype.Service;
  11 +import org.thingsboard.server.common.data.exception.ThingsboardException;
  12 +import org.thingsboard.server.common.data.id.TenantId;
  13 +import org.thingsboard.server.common.data.yunteng.core.exception.ThingsKitException;
  14 +import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
  15 +import org.thingsboard.server.common.data.yunteng.dto.TkPreserveDetailDTO;
  16 +import org.thingsboard.server.common.data.yunteng.dto.TkPreservePlanDTO;
  17 +import org.thingsboard.server.common.data.yunteng.dto.TkPreserveRecordDTO;
  18 +import org.thingsboard.server.common.data.yunteng.enums.PreservePlanStatusEnum;
  19 +import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils;
  20 +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
  21 +import org.thingsboard.server.dao.yunteng.entities.TenantBaseEntity;
  22 +import org.thingsboard.server.dao.yunteng.entities.TkPreservePlanEntity;
  23 +import org.thingsboard.server.dao.yunteng.mapper.TkPreservePlanMapper;
  24 +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
  25 +import org.thingsboard.server.dao.yunteng.service.TkPreserveDetailService;
  26 +import org.thingsboard.server.dao.yunteng.service.TkPreservePlanService;
  27 +import org.thingsboard.server.dao.yunteng.service.TkPreserveRecordServcie;
  28 +
  29 +import javax.transaction.Transactional;
  30 +import java.util.List;
  31 +import java.util.stream.Collectors;
  32 +
  33 +@Service
  34 +@RequiredArgsConstructor
  35 +@Slf4j
  36 +public class TkPreservePlanServiceImpl extends AbstractBaseService<TkPreservePlanMapper, TkPreservePlanEntity>
  37 + implements TkPreservePlanService {
  38 +
  39 + private final TkPreserveDetailService tkPreserveDetailService;
  40 +
  41 + private final TkPreserveRecordServcie tkPreserveRecordServcie;
  42 +
  43 + @Override
  44 + public TkPageData<TkPreservePlanDTO> page(TkPreservePlanDTO condition) throws ThingsboardException {
  45 + QueryWrapper<TkPreservePlanEntity> wrapper = new QueryWrapper<>();
  46 + LambdaQueryWrapper<TkPreservePlanEntity> lambda = wrapper.lambda();
  47 + TenantId tenantId = SpringBeanUtils.getTenantId();
  48 + lambda.eq(TkPreservePlanEntity::getTenantId, tenantId.getId().toString());
  49 + if (StringUtils.isNotBlank(condition.getPreserveName())) {
  50 + lambda.like(TkPreservePlanEntity::getPreserveName, condition.getPreserveName());
  51 + }
  52 +
  53 + lambda.orderByDesc(TenantBaseEntity::getCreateTime);
  54 +
  55 + Page<TkPreservePlanEntity> page = new Page<>();
  56 + page.setCurrent(condition.getPage());
  57 + page.setSize(condition.getPageSize());
  58 + page = baseMapper.selectPage(page, wrapper);
  59 +
  60 + return getPageData(page, TkPreservePlanDTO.class);
  61 + }
  62 +
  63 + @Override
  64 + @Transactional
  65 + public TkPreservePlanDTO save(TkPreservePlanDTO dto) throws ThingsboardException {
  66 + checkDto(dto);
  67 + Boolean isAdd = false;
  68 + TkPreservePlanEntity entity = new TkPreservePlanEntity();
  69 + if (StringUtils.isBlank(dto.getId())) {
  70 + dto.copyToEntity(entity);
  71 + baseMapper.insert(entity);
  72 + isAdd = true;
  73 + } else {
  74 + LambdaQueryWrapper<TkPreservePlanEntity> filter = new QueryWrapper<TkPreservePlanEntity>().lambda()
  75 + .eq(TkPreservePlanEntity::getId, dto.getId());
  76 + entity = dto.getEntity(TkPreservePlanEntity.class);
  77 + baseMapper.update(entity, filter);
  78 + }
  79 + entity.copyToDTO(dto);
  80 + String id = dto.getId();
  81 + List<TkPreserveDetailDTO> preserveDetailList = dto.getPreserveDetailList();
  82 + if (CollectionUtils.isNotEmpty(preserveDetailList)) {
  83 + List<String> detailIds = preserveDetailList.stream().filter(e -> StringUtils.isNotBlank(e.getId()))
  84 + .map(TkPreserveDetailDTO::getId).collect(Collectors.toList());
  85 + if (CollectionUtils.isNotEmpty(detailIds) && isAdd == false) {
  86 + tkPreserveDetailService.deleteNotInIdEqPlanId(id, detailIds);
  87 + }
  88 + for (TkPreserveDetailDTO detailDto : preserveDetailList) {
  89 + detailDto.setPreservePlanId(id);
  90 + tkPreserveDetailService.save(detailDto);
  91 + }
  92 + }
  93 +
  94 + entity.copyToDTO(dto);
  95 + return dto;
  96 + }
  97 +
  98 + @Override
  99 + public TkPreservePlanDTO load(String id) {
  100 + TkPreservePlanDTO result = null;
  101 + TkPreservePlanEntity entity = baseMapper.selectById(id);
  102 + if (entity != null) {
  103 + result = new TkPreservePlanDTO();
  104 + entity.copyToDTO(result);
  105 + }
  106 + return result;
  107 + }
  108 +
  109 + private void checkDto(TkPreservePlanDTO dto) throws ThingsboardException {
  110 + if (StringUtils.isBlank(dto.getPreserveName())) {
  111 + throw new TkDataValidationException("计划名称不能为空!");
  112 + }
  113 +
  114 + if (StringUtils.isBlank(dto.getFrequency())) {
  115 + throw new TkDataValidationException("频率不能为空!");
  116 + }
  117 +
  118 + if (dto.getTimes() == null) {
  119 + throw new TkDataValidationException("次数不能为空!");
  120 + }
  121 +
  122 + if (StringUtils.isBlank(dto.getTenantId())) {
  123 + dto.setTenantId(SpringBeanUtils.getTenantId().getId().toString());
  124 + }
  125 +
  126 + if (StringUtils.isBlank(dto.getStatus())) {
  127 + dto.setStatus(PreservePlanStatusEnum.NOTSTART.name());
  128 + }
  129 + }
  130 +
  131 + @Override
  132 + public TkPreservePlanDTO detail(String id) throws ThingsboardException {
  133 + TkPreservePlanDTO dto = load(id);
  134 + List<TkPreserveDetailDTO> detailList = tkPreserveDetailService.listByPlanId(id);
  135 + dto.setPreserveDetailList(detailList);
  136 + return dto;
  137 + }
  138 +
  139 + @Override
  140 + public void updateStatus(String id, String status) throws ThingsboardException {
  141 + TkPreservePlanEntity entity = baseMapper.selectById(id);
  142 + if (entity == null) {
  143 + throw new TkDataValidationException("保养计划不存在!");
  144 + }
  145 + PreservePlanStatusEnum statusEnum = PreservePlanStatusEnum.valueOf(status);
  146 + if (statusEnum == null) {
  147 + throw new TkDataValidationException("保养计划状态不存在!");
  148 + }
  149 + entity.setStatus(statusEnum.name());
  150 + LambdaQueryWrapper<TkPreservePlanEntity> filter = new QueryWrapper<TkPreservePlanEntity>().lambda()
  151 + .eq(TkPreservePlanEntity::getId, entity.getId());
  152 + baseMapper.update(entity, filter);
  153 + }
  154 +
  155 + @Override
  156 + @Transactional
  157 + public boolean delete(String id) throws ThingsboardException {
  158 + List<TkPreserveRecordDTO> recordList = tkPreserveRecordServcie.listByPlanId(id);
  159 + if (CollectionUtils.isNotEmpty(recordList)) {
  160 + throw new TkDataValidationException("该计划存在关联的保养记录,不能删除!");
  161 + }
  162 + tkPreserveDetailService.deleteByPlanId(id);
  163 + int count = baseMapper.deleteById(id);
  164 + return count > 0;
  165 + }
  166 +}
... ...
  1 +package org.thingsboard.server.dao.yunteng.impl;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5 +import com.baomidou.mybatisplus.core.metadata.IPage;
  6 +import lombok.RequiredArgsConstructor;
  7 +import lombok.extern.slf4j.Slf4j;
  8 +import org.apache.commons.collections4.CollectionUtils;
  9 +import org.apache.commons.lang3.StringUtils;
  10 +import org.springframework.stereotype.Service;
  11 +import org.thingsboard.server.common.data.exception.ThingsboardException;
  12 +import org.thingsboard.server.common.data.id.TenantId;
  13 +import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
  14 +import org.thingsboard.server.common.data.yunteng.dto.TkPreservePlanDTO;
  15 +import org.thingsboard.server.common.data.yunteng.dto.TkPreserveRecordDTO;
  16 +import org.thingsboard.server.common.data.yunteng.dto.UserDTO;
  17 +import org.thingsboard.server.common.data.yunteng.enums.PreservePlanStatusEnum;
  18 +import org.thingsboard.server.common.data.yunteng.enums.PreserveRecordStatusEnum;
  19 +import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils;
  20 +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
  21 +import org.thingsboard.server.dao.yunteng.entities.TkPreserveRecordEntity;
  22 +import org.thingsboard.server.dao.yunteng.mapper.TkPreserveRecordMapper;
  23 +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
  24 +import org.thingsboard.server.dao.yunteng.service.TkPreservePlanService;
  25 +import org.thingsboard.server.dao.yunteng.service.TkPreserveRecordServcie;
  26 +import org.thingsboard.server.dao.yunteng.service.TkUserService;
  27 +
  28 +import java.util.HashMap;
  29 +import java.util.List;
  30 +import java.util.Map;
  31 +import java.util.Optional;
  32 +import java.util.stream.Collectors;
  33 +
  34 +@Service
  35 +@RequiredArgsConstructor
  36 +@Slf4j
  37 +public class TkPreserveRecordServcieImpl extends AbstractBaseService<TkPreserveRecordMapper, TkPreserveRecordEntity>
  38 + implements TkPreserveRecordServcie {
  39 +
  40 + private final TkUserService tkUserService;
  41 +
  42 + @Override
  43 + public TkPageData<TkPreserveRecordDTO> page(Map<String, Object> params) throws ThingsboardException {
  44 + TenantId tenantId = SpringBeanUtils.getTenantId();
  45 + params.put("tenantId", tenantId.getId().toString());
  46 + TkPageData<TkPreserveRecordDTO> result = new TkPageData<>();
  47 + IPage<TkPreserveRecordEntity> page =
  48 + getPage(params, "create_time", false);
  49 +
  50 + IPage<TkPreserveRecordDTO> pageData = baseMapper.getPreserveRecordPage(page, params);
  51 + if (pageData != null) {
  52 + result.setItems(pageData.getRecords());
  53 + }
  54 + result.setTotal(Long.valueOf(pageData.getTotal()).intValue());
  55 + return result;
  56 + }
  57 +
  58 + @Override
  59 + public TkPreserveRecordDTO save(TkPreserveRecordDTO dto) throws ThingsboardException {
  60 + checkDto(dto);
  61 +
  62 + TkPreserveRecordEntity entity = new TkPreserveRecordEntity();
  63 + if (StringUtils.isBlank(dto.getId())) {
  64 + dto.copyToEntity(entity);
  65 + baseMapper.insert(entity);
  66 + } else {
  67 + LambdaQueryWrapper<TkPreserveRecordEntity> filter = new QueryWrapper<TkPreserveRecordEntity>().lambda()
  68 + .eq(TkPreserveRecordEntity::getId, dto.getId());
  69 + entity = dto.getEntity(TkPreserveRecordEntity.class);
  70 + baseMapper.update(entity, filter);
  71 + }
  72 + entity.copyToDTO(dto);
  73 + return dto;
  74 + }
  75 +
  76 + private void checkDto(TkPreserveRecordDTO dto) throws ThingsboardException {
  77 +
  78 + if (StringUtils.isBlank(dto.getPreservePlanId())) {
  79 + throw new TkDataValidationException("保养计划id不能为空!");
  80 + }
  81 +
  82 + if (StringUtils.isBlank(dto.getPreserveBy())) {
  83 + throw new TkDataValidationException("保养计划id不能为空!");
  84 + }
  85 +
  86 + if (dto.getPreserveDate() == null) {
  87 + throw new TkDataValidationException("保养日期不能为空!");
  88 + }
  89 +
  90 + if (StringUtils.isBlank(dto.getTenantId())) {
  91 + dto.setTenantId(SpringBeanUtils.getTenantId().getId().toString());
  92 + }
  93 +
  94 + if (StringUtils.isBlank(dto.getPreserveStatus())) {
  95 + dto.setPreserveStatus(PreserveRecordStatusEnum.INCOMPLETE.name());
  96 + }
  97 + }
  98 +
  99 + @Override
  100 + public TkPreserveRecordDTO load(String id) {
  101 + TkPreserveRecordDTO result = null;
  102 + TkPreserveRecordEntity entity = baseMapper.selectById(id);
  103 + if (entity != null) {
  104 + result = new TkPreserveRecordDTO();
  105 + entity.copyToDTO(result);
  106 + }
  107 + return result;
  108 + }
  109 +
  110 + @Override
  111 + public TkPreserveRecordDTO detail(String id) throws ThingsboardException {
  112 + Map<String, Object> params = new HashMap<>();
  113 + params.put("id", id);
  114 + TkPageData<TkPreserveRecordDTO> page = page(params);
  115 + if (page != null && CollectionUtils.isNotEmpty(page.getItems())) {
  116 + Optional<TkPreserveRecordDTO> first = page.getItems().stream().findFirst();
  117 + return first.get();
  118 + } else {
  119 + return null;
  120 + }
  121 + }
  122 +
  123 + @Override
  124 + public void updateStatus(String id, String status) throws ThingsboardException {
  125 + TkPreserveRecordEntity entity = baseMapper.selectById(id);
  126 + if (entity == null) {
  127 + throw new TkDataValidationException("保养记录不存在!");
  128 + }
  129 + PreservePlanStatusEnum statusEnum = PreservePlanStatusEnum.valueOf(status);
  130 + if (statusEnum == null) {
  131 + throw new TkDataValidationException("保养记录状态不存在!");
  132 + }
  133 + entity.setPreserveStatus(statusEnum.name());
  134 + LambdaQueryWrapper<TkPreserveRecordEntity> filter = new QueryWrapper<TkPreserveRecordEntity>().lambda()
  135 + .eq(TkPreserveRecordEntity::getId, entity.getId());
  136 + baseMapper.update(entity, filter);
  137 + }
  138 +
  139 + @Override
  140 + public boolean delete(String id) {
  141 + int count = baseMapper.deleteById(id);
  142 + return count > 0;
  143 + }
  144 +
  145 + @Override
  146 + public List<TkPreserveRecordDTO> listByPlanId(String planId) throws ThingsboardException {
  147 + if (StringUtils.isBlank(planId)) {
  148 + throw new TkDataValidationException("方案id不能为空!");
  149 + }
  150 + QueryWrapper<TkPreserveRecordEntity> wrapper = new QueryWrapper<>();
  151 + LambdaQueryWrapper<TkPreserveRecordEntity> lambda = wrapper.lambda();
  152 + TenantId tenantId = SpringBeanUtils.getTenantId();
  153 + lambda.eq(TkPreserveRecordEntity::getTenantId, tenantId.getId().toString());
  154 + lambda.eq(TkPreserveRecordEntity::getPreservePlanId, planId);
  155 + List<TkPreserveRecordEntity> entities = baseMapper.selectList(wrapper);
  156 + if (CollectionUtils.isNotEmpty(entities)) {
  157 + List<TkPreserveRecordDTO> dataList = entities.stream().map(item -> {
  158 + TkPreserveRecordDTO dto = item.getDTO(TkPreserveRecordDTO.class);
  159 + return dto;
  160 + }).collect(Collectors.toList());
  161 + return dataList;
  162 + } else {
  163 + return null;
  164 + }
  165 + }
  166 +}
... ...
... ... @@ -14,11 +14,9 @@ import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidatio
14 14 import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO;
15 15 import org.thingsboard.server.common.data.yunteng.dto.TkRepairOrderDTO;
16 16 import org.thingsboard.server.common.data.yunteng.enums.RepairOrderStatusEnum;
17   -import org.thingsboard.server.common.data.yunteng.utils.CopyUtils;
18 17 import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils;
19 18 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
20 19 import org.thingsboard.server.dao.yunteng.entities.TenantBaseEntity;
21   -import org.thingsboard.server.dao.yunteng.entities.TkDeviceEntity;
22 20 import org.thingsboard.server.dao.yunteng.entities.TkRepairOrderEntity;
23 21 import org.thingsboard.server.dao.yunteng.mapper.TkRepairOrderMapper;
24 22 import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
... ... @@ -30,9 +28,6 @@ import java.util.HashMap;
30 28 import java.util.Map;
31 29 import java.util.UUID;
32 30
33   -import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE;
34   -import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE_SIZE;
35   -
36 31 @Service
37 32 @RequiredArgsConstructor
38 33 @Slf4j
... ... @@ -100,7 +95,7 @@ public class TkRepairOrderServiceImpl extends AbstractBaseService<TkRepairOrderM
100 95
101 96
102 97 @Override
103   - public TkRepairOrderDTO save(TkRepairOrderDTO dto) {
  98 + public TkRepairOrderDTO save(TkRepairOrderDTO dto) throws ThingsboardException {
104 99 checkDto(dto);
105 100 if (dto.getReportDate() == null) {
106 101 dto.setReportDate(LocalDateTime.now());
... ... @@ -143,6 +138,7 @@ public class TkRepairOrderServiceImpl extends AbstractBaseService<TkRepairOrderM
143 138 TkRepairOrderDTO result = null;
144 139 TkRepairOrderEntity entity = baseMapper.selectById(id);
145 140 if (entity != null) {
  141 + result=new TkRepairOrderDTO();
146 142 entity.copyToDTO(result);
147 143 }
148 144 return result;
... ... @@ -157,6 +153,7 @@ public class TkRepairOrderServiceImpl extends AbstractBaseService<TkRepairOrderM
157 153 lambda.eq(TkRepairOrderEntity::getDeviceId, deviceId);
158 154 TkRepairOrderEntity entity = baseMapper.selectOne(queryWrapper);
159 155 if (entity != null) {
  156 + result=new TkRepairOrderDTO();
160 157 entity.copyToDTO(result);
161 158 }
162 159 return result;
... ... @@ -180,7 +177,7 @@ public class TkRepairOrderServiceImpl extends AbstractBaseService<TkRepairOrderM
180 177 baseMapper.update(entity, filter);
181 178 }
182 179
183   - private void checkDto(TkRepairOrderDTO dto) {
  180 + private void checkDto(TkRepairOrderDTO dto) throws ThingsboardException {
184 181 if (StringUtils.isBlank(dto.getDeviceId())) {
185 182 throw new TkDataValidationException("设备不能为空!");
186 183 }
... ... @@ -190,7 +187,7 @@ public class TkRepairOrderServiceImpl extends AbstractBaseService<TkRepairOrderM
190 187 }
191 188
192 189 if (StringUtils.isBlank(dto.getTenantId())) {
193   - throw new TkDataValidationException("租户id为空!");
  190 + dto.setTenantId(SpringBeanUtils.getTenantId().getId().toString());
194 191 }
195 192 }
196 193
... ...
... ... @@ -12,6 +12,7 @@ import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidatio
12 12 import org.thingsboard.server.common.data.yunteng.dto.TkRepairOrderDTO;
13 13 import org.thingsboard.server.common.data.yunteng.dto.TkRepairRecordDTO;
14 14 import org.thingsboard.server.common.data.yunteng.dto.UserDTO;
  15 +import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils;
15 16 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
16 17 import org.thingsboard.server.dao.yunteng.entities.TkRepairRecordEntity;
17 18 import org.thingsboard.server.dao.yunteng.mapper.TkRepairRecordMapper;
... ... @@ -56,7 +57,7 @@ public class TkRepairRecordServiceImpl extends AbstractBaseService<TkRepairRecor
56 57 }
57 58
58 59 @Override
59   - public TkRepairRecordDTO save(TkRepairRecordDTO dto) {
  60 + public TkRepairRecordDTO save(TkRepairRecordDTO dto) throws ThingsboardException {
60 61 checkDto(dto);
61 62 if (dto.getRepairDate() == null) {
62 63 dto.setRepairDate(LocalDateTime.now());
... ... @@ -76,7 +77,7 @@ public class TkRepairRecordServiceImpl extends AbstractBaseService<TkRepairRecor
76 77 return dto;
77 78 }
78 79
79   - private void checkDto(TkRepairRecordDTO dto) {
  80 + private void checkDto(TkRepairRecordDTO dto) throws ThingsboardException {
80 81 if (StringUtils.isBlank(dto.getOrderId())) {
81 82 throw new TkDataValidationException("维修工单不能为空!");
82 83 }
... ... @@ -86,7 +87,7 @@ public class TkRepairRecordServiceImpl extends AbstractBaseService<TkRepairRecor
86 87 }
87 88
88 89 if (StringUtils.isBlank(dto.getTenantId())) {
89   - throw new TkDataValidationException("租户id为空!");
  90 + dto.setTenantId(SpringBeanUtils.getTenantId().getId().toString());
90 91 }
91 92 }
92 93
... ...
  1 +package org.thingsboard.server.dao.yunteng.mapper;
  2 +
  3 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import org.apache.ibatis.annotations.Mapper;
  5 +import org.thingsboard.server.dao.yunteng.entities.TkPreserveDetailEntity;
  6 +
  7 +@Mapper
  8 +public interface TkPreserveDetailMapper extends BaseMapper<TkPreserveDetailEntity> {
  9 +}
... ...
  1 +package org.thingsboard.server.dao.yunteng.mapper;
  2 +
  3 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import org.apache.ibatis.annotations.Mapper;
  5 +import org.thingsboard.server.dao.yunteng.entities.TkPreservePlanEntity;
  6 +
  7 +@Mapper
  8 +public interface TkPreservePlanMapper extends BaseMapper<TkPreservePlanEntity> {
  9 +}
... ...
  1 +package org.thingsboard.server.dao.yunteng.mapper;
  2 +
  3 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import com.baomidou.mybatisplus.core.metadata.IPage;
  5 +import org.apache.ibatis.annotations.Mapper;
  6 +import org.apache.ibatis.annotations.Param;
  7 +import org.thingsboard.server.common.data.yunteng.dto.TkPreserveRecordDTO;
  8 +import org.thingsboard.server.dao.yunteng.entities.TkPreserveRecordEntity;
  9 +
  10 +import java.util.Map;
  11 +
  12 +@Mapper
  13 +public interface TkPreserveRecordMapper extends BaseMapper<TkPreserveRecordEntity> {
  14 + IPage<TkPreserveRecordDTO> getPreserveRecordPage(IPage<?> page, @Param("queryMap") Map<String, Object> queryMap);
  15 +
  16 +}
... ...
1 1 package org.thingsboard.server.dao.yunteng.service;
2 2
3 3
  4 +import org.thingsboard.server.common.data.exception.ThingsboardException;
4 5 import org.thingsboard.server.common.data.yunteng.dto.TkMalfunctionReasonDTO;
5 6 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
6 7 import org.thingsboard.server.dao.yunteng.entities.TkMalfunctionReasonEntity;
... ... @@ -14,7 +15,7 @@ public interface TkMalfunctionReasonService extends BaseService<TkMalfunctionRea
14 15
15 16 List<TkMalfunctionReasonDTO> list(String tenantId, Map<String, Object> queryMap);
16 17
17   - TkMalfunctionReasonDTO save(TkMalfunctionReasonDTO tkMalfunctionReasonDTO);
  18 + TkMalfunctionReasonDTO save(TkMalfunctionReasonDTO tkMalfunctionReasonDTO) throws ThingsboardException;
18 19
19 20 boolean delete(String id);
20 21
... ...
  1 +package org.thingsboard.server.dao.yunteng.service;
  2 +
  3 +import org.thingsboard.server.common.data.exception.ThingsboardException;
  4 +import org.thingsboard.server.common.data.yunteng.dto.TkPreserveDetailDTO;
  5 +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
  6 +import org.thingsboard.server.dao.yunteng.entities.TkPreserveDetailEntity;
  7 +
  8 +import java.util.List;
  9 +
  10 +public interface TkPreserveDetailService extends BaseService<TkPreserveDetailEntity>{
  11 +
  12 + TkPageData<TkPreserveDetailDTO> page(TkPreserveDetailDTO condition) throws ThingsboardException;
  13 +
  14 + TkPreserveDetailDTO save(TkPreserveDetailDTO dto) throws ThingsboardException;
  15 +
  16 + boolean delete(String id);
  17 +
  18 + boolean deleteByPlanId(String planId);
  19 +
  20 + void deleteNotInIdEqPlanId(String planId,List<String> notinIds);
  21 +
  22 + List<TkPreserveDetailDTO> listByPlanId(String planId) throws ThingsboardException;
  23 +}
... ...
  1 +package org.thingsboard.server.dao.yunteng.service;
  2 +
  3 +import org.thingsboard.server.common.data.exception.ThingsboardException;
  4 +import org.thingsboard.server.common.data.yunteng.dto.TkPreservePlanDTO;
  5 +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
  6 +import org.thingsboard.server.dao.yunteng.entities.TkPreservePlanEntity;
  7 +
  8 +public interface TkPreservePlanService extends BaseService<TkPreservePlanEntity> {
  9 +
  10 + TkPageData<TkPreservePlanDTO> page(TkPreservePlanDTO condition) throws ThingsboardException;
  11 +
  12 + TkPreservePlanDTO save(TkPreservePlanDTO dto) throws ThingsboardException;
  13 +
  14 + TkPreservePlanDTO load(String id);
  15 +
  16 + TkPreservePlanDTO detail(String id) throws ThingsboardException;
  17 +
  18 + void updateStatus(String id, String status) throws ThingsboardException;
  19 +
  20 + boolean delete(String id) throws ThingsboardException;
  21 +}
... ...
  1 +package org.thingsboard.server.dao.yunteng.service;
  2 +
  3 +import org.thingsboard.server.common.data.exception.ThingsboardException;
  4 +import org.thingsboard.server.common.data.yunteng.dto.TkPreserveRecordDTO;
  5 +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
  6 +import org.thingsboard.server.dao.yunteng.entities.TkPreserveRecordEntity;
  7 +
  8 +import java.util.List;
  9 +import java.util.Map;
  10 +
  11 +public interface TkPreserveRecordServcie extends BaseService<TkPreserveRecordEntity>{
  12 +
  13 + TkPageData<TkPreserveRecordDTO> page(Map<String, Object> params) throws ThingsboardException;
  14 +
  15 + TkPreserveRecordDTO save(TkPreserveRecordDTO dto) throws ThingsboardException;
  16 +
  17 + TkPreserveRecordDTO load(String id);
  18 +
  19 + TkPreserveRecordDTO detail(String id) throws ThingsboardException;
  20 +
  21 + void updateStatus(String id, String status) throws ThingsboardException;
  22 +
  23 + boolean delete(String id);
  24 +
  25 + List<TkPreserveRecordDTO> listByPlanId(String planId) throws ThingsboardException;
  26 +}
... ...
1 1 package org.thingsboard.server.dao.yunteng.service;
2 2
3   -
4   -import com.baomidou.mybatisplus.core.metadata.IPage;
5 3 import org.thingsboard.server.common.data.exception.ThingsboardException;
6 4 import org.thingsboard.server.common.data.yunteng.dto.TkRepairOrderDTO;
7 5 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
... ... @@ -14,7 +12,7 @@ public interface TkRepairOrderService extends BaseService<TkRepairOrderEntity> {
14 12
15 13 TkPageData<TkRepairOrderDTO> page(String tenantId,Map<String, Object> params);
16 14
17   - TkRepairOrderDTO save(TkRepairOrderDTO dto);
  15 + TkRepairOrderDTO save(TkRepairOrderDTO dto) throws ThingsboardException;
18 16
19 17 TkRepairOrderDTO detail(String id) throws ThingsboardException;
20 18
... ...
... ... @@ -9,7 +9,7 @@ public interface TkRepairRecordService extends BaseService<TkRepairRecordEntity>
9 9
10 10 TkPageData<TkRepairRecordDTO> page(String tenantId, TkRepairRecordDTO params);
11 11
12   - TkRepairRecordDTO save(TkRepairRecordDTO dto);
  12 + TkRepairRecordDTO save(TkRepairRecordDTO dto) throws ThingsboardException;
13 13
14 14 TkRepairRecordDTO detail(String id) throws ThingsboardException;
15 15
... ...
  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 +<mapper namespace="org.thingsboard.server.dao.yunteng.mapper.TkPreserveRecordMapper">
  4 + <resultMap type="org.thingsboard.server.common.data.yunteng.dto.TkPreserveRecordDTO" id="preserveRecordMap">
  5 + <result property="preserveByName" column="preserveByName"/>
  6 + <result property="preservePlanName" column="preserveName"/>
  7 + </resultMap>
  8 + <select id="getPreserveRecordPage" resultMap="preserveRecordMap">
  9 + SELECT
  10 + r.record_code,r.preserve_plan_id,r.preserve_date,r.preserve_by,r.preserve_status
  11 + ,r.tenant_id,r.create_time,r.updater,r.update_time,r.creator
  12 + ,su.real_name as preserveByName,p.preserve_name as preserveName
  13 + from qg_preserve_record r
  14 + inner join sys_user su on su.id=r.preserve_by
  15 + inner join qg_preserve_plan p on p.id=r.preserve_plan_id
  16 + <where>
  17 + <if test="queryMap.id !=null ">
  18 + AND r.id = #{queryMap.id}
  19 + </if>
  20 + <if test="queryMap.tenantId !=null ">
  21 + AND r.tenant_id = #{queryMap.tenantId}
  22 + </if>
  23 + <if test="queryMap.preserve_plan_id !=null ">
  24 + AND r.status = #{queryMap.preservePlanId}
  25 + </if>
  26 + <if test="queryMap.preserve_by !=null ">
  27 + AND r.device_id = #{queryMap.preserveBy}
  28 + </if>
  29 + <if test="queryMap.preserve_status !=null ">
  30 + AND r.emergency = #{queryMap.preserveStatus}
  31 + </if>
  32 + <if test="queryMap.startDate !=null ">
  33 + AND to_char(r.preserve_date, 'YYYY-MM-DD HH24:MI:SS') &gt;= #{queryMap.startDate}
  34 + </if>
  35 + <if test="queryMap.endDate !=null ">
  36 + AND to_char(r.preserve_date, 'YYYY-MM-DD HH24:MI:SS') &lt;= #{queryMap.endDate}
  37 + </if>
  38 + </where>
  39 + </select>
  40 +</mapper>
\ No newline at end of file
... ...
... ... @@ -3,12 +3,6 @@
3 3
4 4 <mapper namespace="org.thingsboard.server.dao.yunteng.mapper.TkRepairOrderMapper">
5 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 6 <result property="reportByName" column="reportByName"/>
13 7 </resultMap>
14 8 <select id="getRepairOrderPage" resultMap="repairOrderMap">
... ...