Bläddra i källkod

批量检定和批量位号

guarantee-lsq 2 år sedan
förälder
incheckning
11470c9c0d

+ 3 - 0
platform-common/src/main/java/com/platform/common/constant/CommonConstants.java

@@ -293,4 +293,7 @@ public interface CommonConstants {
     /**
      * 龙岩维修 end
      */
+    String CHANGE_TYPE_SB_POSITION = "1"; // 设备位置变动
+    String CHANGE_TYPE_SB_NO = "2"; // 设备位号变动
+    String CHANGE_TYPE_SB_PARENT = "3"; // 父设备变动
 }

+ 12 - 0
platform-dao/src/main/java/com/platform/dao/dto/sb/BatchSbChange.java

@@ -0,0 +1,12 @@
+package com.platform.dao.dto.sb;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class BatchSbChange implements Serializable {
+
+    private List<SbChangeRecordDTO> sbChangeRecordDTOList;
+}

+ 106 - 0
platform-dao/src/main/java/com/platform/dao/dto/sb/SbChangeRecordDTO.java

@@ -0,0 +1,106 @@
+package com.platform.dao.dto.sb;
+
+import com.platform.common.bean.BaseDTO;
+import com.platform.common.validation.group.UpdateGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.*;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+
+/**
+ * @Description 设备更改记录表DTO
+ * @Author lsq
+ * @Date 2022-11-02 14:30:47
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class SbChangeRecordDTO extends BaseDTO implements Serializable {
+
+    /**
+     * 主键
+     */
+    private String id;
+    /**
+     * 设备ID
+     */
+    private String sbId;
+    /**
+     * 更改内容
+     */
+    private String content;
+    /**
+     * 原设备位置
+     */
+    private String oldPositionId;
+    /**
+     * 修改后设备位置
+     */
+    private String positionId;
+    /**
+     * 位号
+     */
+    private String sbNoId;
+    /**
+     * 原父设备ID
+     */
+    private String oldParentId;
+    /**
+     * 修改后父设备ID
+     */
+    private String parentId;
+    /**
+     * 记录时间开始
+     */
+    private LocalDateTime createdTimeStart;
+    /**
+     * 记录时间结束
+     */
+    private LocalDateTime createdTimeEnd;
+    /**
+     * 修改时间开始
+     */
+    private LocalDateTime updateTimeStart;
+    /**
+     * 修改时间结束
+     */
+    private LocalDateTime updateTimeEnd;
+    /**
+     * 开始时间
+     */
+    private LocalDateTime startTime;
+    /**
+     * 开始时间开始
+     */
+    private LocalDateTime startTimeStart;
+    /**
+     * 开始时间结束
+     */
+    private LocalDateTime startTimeEnd;
+    /**
+     * 结束时间
+     */
+    private LocalDateTime endTime;
+    /**
+     * 结束时间开始
+     */
+    private LocalDateTime endTimeStart;
+    /**
+     * 结束时间结束
+     */
+    private LocalDateTime endTimeEnd;
+    /**
+     * 更改类型 1 位置 2 位号 3 父设备
+     */
+    private Integer changeType;
+    /**
+     * 关键字
+     */
+    private String keyword;
+
+}

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/dto/sb/SbMeasureLogDTO.java

@@ -222,4 +222,8 @@ public class SbMeasureLogDTO extends BaseDTO implements Serializable {
      */
     private String sbPositionId;
 
+    /**
+     * 设备位号
+     */
+    private String sbPositionNo;
 }

+ 101 - 0
platform-dao/src/main/java/com/platform/dao/entity/sb/SbChangeRecord.java

@@ -0,0 +1,101 @@
+package com.platform.dao.entity.sb;
+
+import lombok.Data;
+
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+import lombok.experimental.Accessors;
+import com.platform.common.bean.DataScope;
+import javax.persistence.Transient;
+
+/**
+ * @Description 设备更改记录表实体类
+ * @Author lsq
+ * @Date 2022-11-02 14:30:47
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@Table(name = "t_sb_change_record")
+public class SbChangeRecord implements Serializable{
+
+    /**
+     * 主键
+     */
+    @Id
+    private String id;
+    /**
+     * 记录人ID
+     */
+    private String createdUserId;
+    /**
+     * 记录人
+     */
+    private String createdUserName;
+    /**
+     * 修改人ID
+     */
+    private String updateUserId;
+    /**
+     * 修改人
+     */
+    private String updateUserName;
+    /**
+     * 设备ID
+     */
+    private String sbId;
+    /**
+     * 更改内容
+     */
+    private String content;
+    /**
+     * 原设备位置
+     */
+    private String oldPositionId;
+    /**
+     * 修改后设备位置
+     */
+    private String positionId;
+    /**
+     * 位号
+     */
+    private String sbNoId;
+    /**
+     * 原父设备ID
+     */
+    private String oldParentId;
+    /**
+     * 修改后父设备ID
+     */
+    private String parentId;
+    /**
+     * 记录时间
+     */
+    private LocalDateTime createdTime;
+    /**
+     * 修改时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 开始时间
+     */
+    private LocalDateTime startTime;
+    /**
+     * 结束时间
+     */
+    private LocalDateTime endTime;
+    /**
+     * 更改类型 1 位置 2 位号 3 父设备
+     */
+    private Integer changeType;
+
+   /**
+    * 数据权限
+    */
+    @Transient
+    private DataScope dataScope;
+
+}

+ 27 - 0
platform-dao/src/main/java/com/platform/dao/enums/SbChangeTypeEnum.java

@@ -0,0 +1,27 @@
+package com.platform.dao.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Description 是否启用
+ * @Author liuyu
+ * @Date 2020/05/05
+ * @Version Copyright (c) 2019,合肥乾元坤合科技有限公司 All rights reserved.
+ */
+@Getter
+@AllArgsConstructor
+public enum SbChangeTypeEnum {
+
+    /**
+     *设备位号
+     */
+    SB_CHANGE_SB_NO(2),
+    /**
+     * 设备位置
+     */
+    SB_CHANGE_SB_POSITION(1)
+    ;
+    private final Integer value;
+
+}

+ 27 - 0
platform-dao/src/main/java/com/platform/dao/mapper/sb/SbChangeRecordMapper.java

@@ -0,0 +1,27 @@
+package com.platform.dao.mapper.sb;
+
+import com.platform.dao.dto.sb.SbChangeRecordDTO;
+import com.platform.dao.config.MyMapper;
+import com.platform.dao.entity.sb.SbChangeRecord;
+import com.platform.dao.vo.query.sb.SbChangeRecordVO;
+import org.springframework.stereotype.Component;
+import java.util.List;
+
+
+/**
+ * @Description 设备更改记录表 mapper
+ * @Author lsq
+ * @Date 2022-11-02 14:30:47
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Component
+public interface SbChangeRecordMapper extends MyMapper<SbChangeRecord> {
+    /**
+     * 分页查询
+     * @param dto
+     * @return
+     */
+    List<SbChangeRecordVO> selectList(SbChangeRecordDTO dto);
+
+    SbChangeRecord getLastOne(SbChangeRecordDTO dto);
+}

+ 124 - 0
platform-dao/src/main/java/com/platform/dao/vo/export/sb/ExportSbChangeRecordVO.java

@@ -0,0 +1,124 @@
+package com.platform.dao.vo.export.sb;
+
+import com.platform.office.annotation.Excel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+
+/**
+ * @Description 设备更改记录表导出VO
+ * @Author lsq
+ * @Date 2022-11-02 14:30:47
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+public class ExportSbChangeRecordVO implements Serializable {
+
+    /**
+     * 主键
+     */
+    @Excel(name = "主键", orderNum = "1")
+    private String id;
+
+    /**
+     * 记录人ID
+     */
+    @Excel(name = "记录人ID", orderNum = "2")
+    private String createdUserId;
+
+    /**
+     * 记录人
+     */
+    @Excel(name = "记录人", orderNum = "3")
+    private String createdUserName;
+
+    /**
+     * 修改人ID
+     */
+    @Excel(name = "修改人ID", orderNum = "4")
+    private String updateUserId;
+
+    /**
+     * 修改人
+     */
+    @Excel(name = "修改人", orderNum = "5")
+    private String updateUserName;
+
+    /**
+     * 设备ID
+     */
+    @Excel(name = "设备ID", orderNum = "6")
+    private String sbId;
+
+    /**
+     * 更改内容
+     */
+    @Excel(name = "更改内容", orderNum = "7")
+    private String content;
+
+    /**
+     * 原设备位置
+     */
+    @Excel(name = "原设备位置", orderNum = "8")
+    private String oldPositionId;
+
+    /**
+     * 修改后设备位置
+     */
+    @Excel(name = "修改后设备位置", orderNum = "9")
+    private String positionId;
+
+    /**
+     * 位号
+     */
+    @Excel(name = "位号", orderNum = "10")
+    private String sbNoId;
+
+    /**
+     * 原父设备ID
+     */
+    @Excel(name = "原父设备ID", orderNum = "11")
+    private String oldParentId;
+
+    /**
+     * 修改后父设备ID
+     */
+    @Excel(name = "修改后父设备ID", orderNum = "12")
+    private String parentId;
+
+    /**
+     * 记录时间
+     */
+    @Excel(name = "记录时间", orderNum = "13")
+    private LocalDateTime createdTime;
+
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", orderNum = "14")
+    private LocalDateTime updateTime;
+
+    /**
+     * 开始时间
+     */
+    @Excel(name = "开始时间", orderNum = "15")
+    private LocalDateTime startTime;
+
+    /**
+     * 结束时间
+     */
+    @Excel(name = "结束时间", orderNum = "16")
+    private LocalDateTime endTime;
+
+    /**
+     * 更改类型 1 位置 2 位号 3 父设备
+     */
+    @Excel(name = "更改类型 1 位置 2 位号 3 父设备", orderNum = "17")
+    private Integer changeType;
+
+
+}

+ 96 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/sb/SbChangeRecordVO.java

@@ -0,0 +1,96 @@
+package com.platform.dao.vo.query.sb;
+
+import lombok.Data;
+import com.platform.common.bean.BaseVO;
+import com.platform.common.bean.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.*;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+
+/**
+ * @Description 设备更改记录表VO结果类
+ * @Author lsq
+ * @Date 2022-11-02 14:30:47
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class SbChangeRecordVO extends BaseVO implements Serializable {
+
+    /**
+     * 主键
+     */
+    private String id;
+    /**
+     * 记录人ID
+     */
+    private String createdUserId;
+    /**
+     * 记录人
+     */
+    private String createdUserName;
+    /**
+     * 修改人ID
+     */
+    private String updateUserId;
+    /**
+     * 修改人
+     */
+    private String updateUserName;
+    /**
+     * 设备ID
+     */
+    private String sbId;
+    /**
+     * 更改内容
+     */
+    private String content;
+    /**
+     * 原设备位置
+     */
+    private String oldPositionId;
+    /**
+     * 修改后设备位置
+     */
+    private String positionId;
+    /**
+     * 位号
+     */
+    private String sbNoId;
+    /**
+     * 原父设备ID
+     */
+    private String oldParentId;
+    /**
+     * 修改后父设备ID
+     */
+    private String parentId;
+    /**
+     * 记录时间
+     */
+    private LocalDateTime createdTime;
+    /**
+     * 修改时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 开始时间
+     */
+    private LocalDateTime startTime;
+    /**
+     * 结束时间
+     */
+    private LocalDateTime endTime;
+    /**
+     * 更改类型 1 位置 2 位号 3 父设备
+     */
+    private Integer changeType;
+
+
+}

+ 132 - 0
platform-dao/src/main/resources/mapper/sb/SbChangeRecordMapper.xml

@@ -0,0 +1,132 @@
+<?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.platform.dao.mapper.sb.SbChangeRecordMapper">
+    <sql id="Base_Column_List">
+                             change.id,
+                                     change.created_user_id,
+                                     change.created_user_name,
+                                     change.update_user_id,
+                                     change.update_user_name,
+                                     change.sb_id,
+                                     change.content,
+                                     change.old_position_id,
+                                     change.position_id,
+                                     change.sb_no_id,
+                                     change.old_parent_id,
+                                     change.parent_id,
+                                     change.created_time,
+                                     change.update_time,
+                                     change.start_time,
+                                     change.end_time,
+                                     change.change_type
+                        </sql>
+    <sql id="Ref_Column_List">
+                                                                                                                                                                                                                                                         change.sb_id,
+                                     change.content,
+                                     change.old_position_id,
+                                     change.position_id,
+                                     change.sb_no_id,
+                                     change.old_parent_id,
+                                     change.parent_id,
+                                                                                                                             change.start_time,
+                                     change.end_time,
+                                     change.change_type
+                                </sql>
+    <sql id="List_Condition">
+        <if test="id != null and id != ''">
+            and change.id = #{id}
+        </if>
+        <if test="createdUserId != null and createdUserId != ''">
+            and change.created_user_id = #{createdUserId}
+        </if>
+        <if test="createdUserName != null and createdUserName != ''">
+            and change.created_user_name = #{createdUserName}
+        </if>
+        <if test="updateUserId != null and updateUserId != ''">
+            and change.update_user_id = #{updateUserId}
+        </if>
+        <if test="updateUserName != null and updateUserName != ''">
+            and change.update_user_name = #{updateUserName}
+        </if>
+        <if test="sbId != null and sbId != ''">
+            and change.sb_id = #{sbId}
+        </if>
+        <if test="content != null and content != ''">
+            and change.content = #{content}
+        </if>
+        <if test="oldPositionId != null and oldPositionId != ''">
+            and change.old_position_id = #{oldPositionId}
+        </if>
+        <if test="positionId != null and positionId != ''">
+            and change.position_id = #{positionId}
+        </if>
+        <if test="sbNoId != null and sbNoId != ''">
+            and change.sb_no_id = #{sbNoId}
+        </if>
+        <if test="oldParentId != null and oldParentId != ''">
+            and change.old_parent_id = #{oldParentId}
+        </if>
+        <if test="parentId != null and parentId != ''">
+            and change.parent_id = #{parentId}
+        </if>
+        <if test="createdTimeStart != null">
+            and change.created_time <![CDATA[>=]]>; #{createdTimeStart}
+        </if>
+        <if test="createdTimeEnd != null">
+            and change.created_time <![CDATA[<=]]> #{createdTimeEnd}
+        </if>
+        <if test="createdTime != null">
+            and change.created_time = #{createdTime}
+        </if>
+        <if test="updateTimeStart != null">
+            and change.update_time <![CDATA[>=]]>; #{updateTimeStart}
+        </if>
+        <if test="updateTimeEnd != null">
+            and change.update_time <![CDATA[<=]]> #{updateTimeEnd}
+        </if>
+        <if test="updateTime != null">
+            and change.update_time = #{updateTime}
+        </if>
+        <if test="startTimeStart != null">
+            and change.start_time <![CDATA[>=]]>; #{startTimeStart}
+        </if>
+        <if test="startTimeEnd != null">
+            and change.start_time <![CDATA[<=]]> #{startTimeEnd}
+        </if>
+        <if test="startTime != null">
+            and change.start_time = #{startTime}
+        </if>
+        <if test="endTimeStart != null">
+            and change.end_time <![CDATA[>=]]>; #{endTimeStart}
+        </if>
+        <if test="endTimeEnd != null">
+            and change.end_time <![CDATA[<=]]> #{endTimeEnd}
+        </if>
+        <if test="endTime != null">
+            and change.end_time = #{endTime}
+        </if>
+        <if test="changeType != null">
+            and change.change_type = #{changeType}
+        </if>
+        <if test="keyword != null and keyword != ''">
+            and change.id like concat(concat('%',#{keyword}),'%')
+        </if>
+    </sql>
+    <select id="selectList" parameterType="com.platform.dao.dto.sb.SbChangeRecordDTO"
+            resultType="com.platform.dao.vo.query.sb.SbChangeRecordVO">
+        select change.*
+        from t_sb_change_record as change
+        <where>
+            <include refid="List_Condition"/>
+        </where>
+    </select>
+
+    <select id="getLastOne" parameterType="com.platform.dao.dto.sb.SbChangeRecordDTO"
+            resultType="com.platform.dao.entity.sb.SbChangeRecord">
+            select * from t_sb_change_record where end_time is null
+            <if test="sbNoId != null and sbNoId != ''">
+                and sbNoId = #{sbNoId}
+            </if>
+            order by created_time desc limit 1
+    </select>
+</mapper>

+ 156 - 0
platform-rest/src/main/java/com/platform/rest/controller/sb/SbChangeRecordController.java

@@ -0,0 +1,156 @@
+package com.platform.rest.controller.sb;
+
+import com.platform.common.util.R;
+import com.platform.dao.dto.sb.BatchSbChange;
+import com.platform.dao.dto.sb.SbChangeRecordDTO;
+import com.platform.dao.entity.sb.SbChangeRecord;
+import com.platform.service.sb.SbChangeRecordService;
+import com.platform.dao.util.ExcelUtil;
+import com.platform.dao.vo.export.sb.ExportSbChangeRecordVO;
+import com.platform.dao.vo.query.sb.SbChangeRecordVO;
+import com.platform.common.util.BeanConverterUtil;
+import com.platform.common.validation.group.AddGroup;
+import com.platform.common.validation.group.UpdateGroup;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import lombok.AllArgsConstructor;
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.rest.log.annotation.SysLog;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @Description 设备更改记录表 控制器
+ * @Author lsq
+ * @Date 2022-11-02 14:30:47
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/sb/sb-changes")
+public class SbChangeRecordController {
+
+  private final  SbChangeRecordService sbChangeRecordService;
+
+  /**
+   * 通过id查询单条记录
+   *
+   * @param id 主键
+   * @return R
+   */
+  @GetMapping("/{id}")
+  public R<SbChangeRecord> getById(@PathVariable("id") String id){
+      return new R<>(sbChangeRecordService.getModelById(id));
+  }
+
+  /**
+   * 新增记录
+   *
+   * @param sbChangeRecordDTO 设备更改记录表DTO
+   * @return R
+   */
+  @SysLog("新增设备更改记录表")
+  @PostMapping
+  @PreAuthorize("@pms.hasPermission('sb-change-records-add')")
+  public R save(@Validated({AddGroup.class}) @RequestBody SbChangeRecordDTO sbChangeRecordDTO) {
+      return new R<>(sbChangeRecordService.saveModelByDTO(sbChangeRecordDTO));
+  }
+
+  /**
+   * 新增记录
+   *
+   * @param batchSbChange 设备更改记录表DTO
+   * @return R
+   */
+  @SysLog("新增设备更改记录表")
+  @PostMapping
+  @PreAuthorize("@pms.hasPermission('sb-change-records-add')")
+  public R saveBatch(@RequestBody BatchSbChange batchSbChange) {
+    sbChangeRecordService.saveBatch(batchSbChange);
+    return new R();
+  }
+
+  /**
+   * 修改记录
+   *
+   * @param sbChangeRecordDTO 设备更改记录表DTO
+   * @return R
+   */
+  @SysLog("修改设备更改记录表")
+  @PutMapping("/{id}")
+  @PreAuthorize("@pms.hasPermission('sb-change-records-edit')")
+  public R update(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody SbChangeRecordDTO sbChangeRecordDTO) {
+      sbChangeRecordService.modModelByDTO(sbChangeRecordDTO);
+      return new R<>();
+  }
+
+
+                                                                                                        
+  /**
+   * 通过id删除一条记录
+   *
+   * @param id 主键
+   * @return R
+   */
+  @SysLog("删除设备更改记录表")
+  @DeleteMapping("/{id}")
+  @PreAuthorize("@pms.hasPermission('sb-change-records-del')")
+  public R removeById(@PathVariable String id){
+    sbChangeRecordService.deleteByPrimaryKey(id);
+    return new R<>();
+  }
+
+    /**
+     * 批量记录
+     *
+     * @param ids 主键
+     * @return R
+     */
+    @SysLog("批量删除设备更改记录表")
+    @DeleteMapping("")
+    @PreAuthorize("@pms.hasPermission('sb-change-records-del')")
+    public R removeIds(@RequestBody List<String> ids){
+        sbChangeRecordService.batchDelete(ids);
+        return new R<>();
+    }
+
+  /**
+   * 获取分页
+   *
+   * @param pageNum 当前页码
+   * @param pageSize 每页条数
+   * @param sbChangeRecordDTO 设备更改记录表DTO
+   * @return R
+   */
+  @GetMapping("/page")
+  public R<AbstractPageResultBean<SbChangeRecordVO>> query(SbChangeRecordDTO sbChangeRecordDTO, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "20") int pageSize) {
+      return new R<>(sbChangeRecordService.selectPageList(sbChangeRecordDTO, pageNum, pageSize));
+  }
+
+  /**
+   * 获取列表
+   *
+   * @param sbChangeRecordDTO 设备更改记录表DTO
+   * @return R
+   */
+  @GetMapping("")
+  public R query(SbChangeRecordDTO sbChangeRecordDTO) {
+      return new R<>(sbChangeRecordService.getModelListByDTO(sbChangeRecordDTO));
+  }
+
+  /**
+     * 设备更改记录表导出
+     *
+     * @param sbChangeRecordDTO 设备更改记录表DTO
+     * @return R
+     */
+  @GetMapping("/export")
+  @SysLog("设备更改记录表导出")
+  @PreAuthorize("@pms.hasPermission('sb-change-records-export')")
+  public void export(HttpServletResponse response, SbChangeRecordDTO sbChangeRecordDTO) {
+    List<SbChangeRecord> list = sbChangeRecordService.getModelListByDTO(sbChangeRecordDTO);
+    ExcelUtil.exportResponseDict(response, ExportSbChangeRecordVO.class, BeanConverterUtil.copyListProperties(list, ExportSbChangeRecordVO.class), "设备更改记录表");
+  }
+
+}

+ 42 - 0
platform-service/src/main/java/com/platform/service/sb/SbChangeRecordService.java

@@ -0,0 +1,42 @@
+package com.platform.service.sb;
+
+import com.platform.dao.dto.sb.BatchSbChange;
+import com.platform.dao.vo.query.sb.SbChangeRecordVO;
+import com.platform.dao.dto.sb.SbChangeRecordDTO;
+import com.platform.dao.entity.sb.SbChangeRecord;
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.service.base.IBaseService;
+import java.util.List;
+
+/**
+ * @Description 设备更改记录表 service
+ * @Author lsq
+ * @Date 2022-11-02 14:30:47
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+public interface SbChangeRecordService extends IBaseService<SbChangeRecord, SbChangeRecordDTO> {
+
+   /**
+    * 批量删除
+    *
+    * @param ids :
+    * @return :
+    */
+    int batchDelete(List<String> ids);
+
+    /**
+     * 分页查询
+     * @param record
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    AbstractPageResultBean<SbChangeRecordVO> selectPageList(SbChangeRecordDTO record, int pageNum, int pageSize);
+
+    /**
+     * 批量修改设备位号和位置
+     * @param batchSbChange
+     */
+    void saveBatch(BatchSbChange batchSbChange);
+
+                                                                                                                                                                                                                }

+ 142 - 0
platform-service/src/main/java/com/platform/service/sb/impl/SbChangeRecordServiceImpl.java

@@ -0,0 +1,142 @@
+package com.platform.service.sb.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.common.util.IdGeneratorUtils;
+import com.platform.common.util.SecurityUtils;
+import com.platform.dao.bean.MyPage;
+import com.platform.dao.dto.sb.BatchSbChange;
+import com.platform.dao.dto.sb.SbChangeRecordDTO;
+import com.platform.dao.entity.sb.SbChangeRecord;
+import com.platform.dao.entity.sb.SbInfo;
+import com.platform.dao.entity.sb.SbLocation;
+import com.platform.dao.enums.SbChangeTypeEnum;
+import com.platform.dao.mapper.sb.SbChangeRecordMapper;
+import com.platform.dao.mapper.sb.SbInfoMapper;
+import com.platform.dao.mapper.sb.SbLocationMapper;
+import com.platform.dao.mapper.sb.SbPositionMapper;
+import com.platform.dao.vo.query.sb.SbChangeRecordVO;
+import com.platform.service.base.impl.BaseServiceImpl;
+import com.platform.service.sb.SbChangeRecordService;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Service;
+import tk.mybatis.mapper.weekend.Weekend;
+import tk.mybatis.mapper.weekend.WeekendCriteria;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @Description 设备更改记录表 service 实现类
+ * @Author lsq
+ * @Date 2022-11-02 14:30:47
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@AllArgsConstructor
+@Service("sbChangeRecordService")
+public class SbChangeRecordServiceImpl extends BaseServiceImpl<SbChangeRecordMapper, SbChangeRecord, SbChangeRecordDTO> implements SbChangeRecordService {
+    private final SbInfoMapper sbInfoMapper;
+    private final SbLocationMapper sbLocationMapper;
+    private final SbPositionMapper sbPositionMapper;
+
+    @Override
+    public int batchDelete(List<String> ids) {
+        Weekend<SbChangeRecord> weekend = new Weekend<>(SbChangeRecord.class);
+        WeekendCriteria<SbChangeRecord, Object> weekendCriteria = weekend.weekendCriteria();
+        weekendCriteria.andIn(SbChangeRecord::getId, ids);
+        mapper.deleteByExample(weekend);
+        return 1;
+    }
+
+    @Override
+    public AbstractPageResultBean<SbChangeRecordVO> selectPageList(SbChangeRecordDTO record, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        return new MyPage(mapper.selectList(record));
+    }
+
+    @Override
+    public void saveBatch(BatchSbChange batchSbChange) {
+        if(batchSbChange.getSbChangeRecordDTOList() != null && batchSbChange.getSbChangeRecordDTOList().size() > 0){
+            batchSbChange.getSbChangeRecordDTOList().forEach(item -> {
+                this.handleSingle(item);
+            });
+        }
+    }
+
+    @Override
+    public AbstractPageResultBean<SbChangeRecord> selectPageInfo(SbChangeRecordDTO record, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        return new MyPage(mapper.selectList(record));
+    }
+
+    /**
+     * 处理单个变更设备
+     * @param model
+     */
+    private void handleSingle(SbChangeRecordDTO model){
+        StringBuilder remark = new StringBuilder();
+        SbInfo sbInfo = sbInfoMapper.selectByPrimaryKey(model.getSbId());
+        SbInfo tempInfo = new SbInfo();
+        tempInfo.setId(sbInfo.getId());
+        tempInfo.setPositionId(sbInfo.getPositionId());
+        if(model.getChangeType() == SbChangeTypeEnum.SB_CHANGE_SB_NO.getValue()){
+            // 设备位号变动
+            remark.append("设备位号变动【"+sbInfo.getPositionNo()).append("】 ---> ");
+            remark.append("【"+model.getSbNoId()+"】");
+            sbInfo.setPositionNo(model.getSbNoId()); // 设备位号
+            // 位号变动,父设备也有可能变动
+            SbLocation location = new SbLocation();
+            location.setNo(model.getSbNoId());
+            List<SbLocation> locations = sbLocationMapper.select(location);
+            if(locations != null && locations.size() > 0){
+                sbInfo.setParentId(locations.get(0).getSbId());
+            }
+        }else if(model.getChangeType() == SbChangeTypeEnum.SB_CHANGE_SB_POSITION.getValue()){
+            // 设备位置变动
+            sbInfo.setPositionId(model.getPositionId());
+            String before = StringUtils.isBlank(tempInfo.getPositionId()) ? "" : sbPositionMapper.selectNameById(tempInfo.getPositionId());
+            remark.append("设备位置变动【" + before).append("】 ---> ");
+            String after = StringUtils.isBlank(model.getPositionId()) ? "" : sbPositionMapper.selectNameById(model.getPositionId());
+            remark.append("【" + after + "】");
+        }
+        handleSbChangeRecord(remark.toString(),model,tempInfo,model.getChangeType());
+        sbInfoMapper.updateByPrimaryKey(sbInfo);
+    }
+
+    /**
+     * 存储变更记录
+     * @param remark
+     * @param model
+     * @param sb
+     * @param type
+     */
+    void handleSbChangeRecord(String remark, SbChangeRecordDTO model, SbInfo sb, Integer type){
+        SbChangeRecord record = new SbChangeRecord();
+        record.setId(IdGeneratorUtils.getObjectId());
+        record.setChangeType(type);
+        record.setContent(remark);
+        record.setCreatedTime(LocalDateTime.now());
+        record.setCreatedUserId(SecurityUtils.getUserInfo().getUserId());
+        record.setCreatedUserName(SecurityUtils.getUserInfo().getUsername());
+        record.setSbId(sb.getId());
+        if(type == SbChangeTypeEnum.SB_CHANGE_SB_NO.getValue()){
+            record.setSbNoId(model.getSbNoId());
+            record.setStartTime(LocalDateTime.now());
+            // 将之前位置编号的结束时间修正
+            SbChangeRecordDTO dto = new SbChangeRecordDTO();
+            dto.setChangeType(record.getChangeType());
+            dto.setSbNoId(model.getSbNoId());
+            SbChangeRecord oldRecord = mapper.getLastOne(dto);
+            if(oldRecord != null){
+                oldRecord.setEndTime(LocalDateTime.now());
+                mapper.updateByPrimaryKey(oldRecord);
+            }
+        }else if(type == SbChangeTypeEnum.SB_CHANGE_SB_POSITION.getValue()){
+            record.setOldPositionId(sb.getPositionId());
+            record.setPositionId(model.getPositionId());
+        }
+        mapper.insert(record);
+    }
+
+                                                                                                                                                                                                                }

+ 88 - 48
platform-service/src/main/java/com/platform/service/sb/impl/SbMeasureLogServiceImpl.java

@@ -7,27 +7,22 @@ import com.platform.common.exception.BusinessException;
 import com.platform.common.exception.DeniedException;
 import com.platform.common.util.*;
 import com.platform.dao.bean.MyPage;
-import com.platform.dao.dto.activiti.SbAllocateFormActiviti;
-import com.platform.dao.dto.check.CheckJobDTO;
 import com.platform.dao.dto.sb.BatchSbMeasureLog;
+import com.platform.dao.dto.sb.SbChangeRecordDTO;
 import com.platform.dao.dto.sb.SbMeasureLogDTO;
 import com.platform.dao.entity.check.CheckProjectStandardRelation;
-import com.platform.dao.entity.customize.CustomFieldTemplate;
-import com.platform.dao.entity.customize.CustomFieldTemplateData;
+import com.platform.dao.entity.sb.SbChangeRecord;
 import com.platform.dao.entity.sb.SbInfo;
+import com.platform.dao.entity.sb.SbLocation;
 import com.platform.dao.entity.sb.SbMeasureLog;
 import com.platform.dao.entity.upms.SysFile;
-import com.platform.dao.enums.*;
-import com.platform.dao.mapper.customize.CustomFieldTemplateDataMapper;
-import com.platform.dao.mapper.sb.SbInfoMapper;
-import com.platform.dao.mapper.sb.SbMeasureLogMapper;
-import com.platform.dao.mapper.sb.SbPositionMapper;
-import com.platform.dao.vo.query.check.CheckJobVO;
+import com.platform.dao.enums.SbUseType;
+import com.platform.dao.enums.SysFileTypeEnum;
+import com.platform.dao.enums.YesNoEnum;
+import com.platform.dao.mapper.sb.*;
 import com.platform.dao.vo.query.sb.SbMeasureLogVO;
-import com.platform.dao.vo.report.CheckJobReportVO;
 import com.platform.dao.vo.report.MeasureLogReportVO;
 import com.platform.service.base.impl.BaseServiceImpl;
-import com.platform.service.repair.strategy.impl.AllocateRepairBaseStrategy;
 import com.platform.service.sb.SbMeasureLogService;
 import com.platform.service.upms.SysFileService;
 import lombok.AllArgsConstructor;
@@ -53,7 +48,9 @@ public class SbMeasureLogServiceImpl extends BaseServiceImpl<SbMeasureLogMapper,
     private SbInfoMapper sbInfoMapper;
     private final SysFileService sysFileService;
     private final SbPositionMapper sbPositionMapper;
-    private final CustomFieldTemplateDataMapper customFieldTemplateDataMapper;
+    private final SbLocationMapper sbLocationMapper;
+    private final SbChangeRecordMapper sbChangeRecordMapper;
+
     @Override
     public boolean cascadingDeleteByKey(String id) {
         int result = mapper.deleteByPrimaryKey(id);
@@ -145,6 +142,10 @@ public class SbMeasureLogServiceImpl extends BaseServiceImpl<SbMeasureLogMapper,
         model.setId(sbMeasureLog.getId());
         // 更新设备下次检定日期
         SbInfo sbInfo = sbInfoMapper.selectByPrimaryKey(model.getSbId());
+        SbInfo tempInfo = new SbInfo();
+        tempInfo.setId(sbInfo.getId());
+        tempInfo.setParentId(sbInfo.getParentId());
+        tempInfo.setPositionId(sbInfo.getPositionId());
         if(sbInfo.getUseType().equals(SbUseType.BGCL.getValue())){
             model.setType(1);
         }else if(sbInfo.getUseType().equals(SbUseType.BGCL.getValue())){
@@ -166,40 +167,59 @@ public class SbMeasureLogServiceImpl extends BaseServiceImpl<SbMeasureLogMapper,
         sbInfo.setDph(model.getRequirement());// 检定人
         sbInfo.setMeasureStatus(YesNoEnum.NO.getValue());// 每次检定后, 检定状态改为正常
         sbInfo.setCheckPeriod(model.getCheckPeriod()); // 检定周期
-        // sbInfo.setStatus(model.getSbStatus());// 每次检定后,状态变更也要更新
         // 设备位置变动
         StringBuilder remark = new StringBuilder();
-        boolean insertAllocate = Boolean.FALSE;
+        boolean insertAllocate = Boolean.FALSE; // 设备位置
+        boolean insertParent = Boolean.FALSE; // 父设备
+        boolean insertNo = Boolean.FALSE; // 设备位号
         String oldPositionId = getPureString(sbInfo.getPositionId());
         String oldParentId = getPureString(sbInfo.getParentId());
         String positionId = getPureString(model.getSbPositionId());
         String parentId = getPureString(model.getSbParentId());
+        String oldSbPositionNo = getPureString(sbInfo.getPositionNo()); // 设备位号
+        String positionNo = getPureString(model.getSbPositionNo());
         if(!oldPositionId.equals(positionId)){
             insertAllocate = Boolean.TRUE;
             sbInfo.setPositionId(positionId);
-            remark.append("设备位置变动【" + sbPositionMapper.selectNameById(oldPositionId)).append("】-》");
-            remark.append("【" + sbPositionMapper.selectNameById(positionId) + "】\n");
+            String before = oldPositionId == "" ? oldPositionId : sbPositionMapper.selectNameById(oldPositionId);
+            remark.append("设备位置变动【" + before).append("】 ---> ");
+            String after = positionId == "" ? positionId : sbPositionMapper.selectNameById(positionId);
+            remark.append("【" + after + "】");
         }
         if(!oldParentId.equals(parentId)){
-            insertAllocate = Boolean.TRUE;
+            insertParent = Boolean.TRUE;
             sbInfo.setParentId(parentId);
-            remark.append("父设备变动【" + sbInfo.getName()).append("】-》");
-            remark.append("【" + sbInfoMapper.selectNameById(parentId) + "】\n");
+            remark.append("父设备变动【" + sbInfo.getName()).append("】 ---> ");
+            String after = parentId == "" ? parentId : sbInfoMapper.selectNameById(parentId);
+            remark.append("【" + after + "】");
+        }
+        if(!oldSbPositionNo.equals(positionNo)){
+            insertNo = Boolean.TRUE;
+            remark.append("设备位号变动【"+sbInfo.getPositionNo()).append("】 ---> ");
+            remark.append("【"+positionNo+"】");
+            // 位号变动,父设备也有可能变动
+            SbLocation location = new SbLocation();
+            location.setNo(positionNo);
+            List<SbLocation> locations = sbLocationMapper.select(location);
+            if(locations != null && locations.size() > 0){
+                sbInfo.setParentId(locations.get(0).getSbId());
+            }
+            sbInfo.setPositionNo(model.getSbPositionNo()); // 设备位号
         }
-        sbInfoMapper.updateByPrimaryKey(sbInfo);
         // 保存文件
         sysFileService.saveFile(model.getId(), SysFileTypeEnum.Sb_MEASURE_IMGS.getValue(), model.getCheckImgList());
         sysFileService.saveFile(model.getId(), SysFileTypeEnum.Sb_MEASURE_FILES.getValue(), model.getCheckFileList());
         // 写入调拨记录
         if(insertAllocate){
-            handleSbInfoAllocate(remark.toString(),model,sbInfo.getName());
+            handleSbChangeRecord(remark.toString(),model,tempInfo,CommonConstants.CHANGE_TYPE_SB_POSITION);
         }
-        // 保存参数
-       /* List<CheckStandardParamDTO> paramList = model.getParamList();
-        paramList.forEach(item -> {
-            item.setStandardId(sbMeasureLog.getId());
-        });
-        paramService.saveModelListByDTO(paramList);*/
+        if(insertParent){
+            handleSbChangeRecord(remark.toString(),model,tempInfo,CommonConstants.CHANGE_TYPE_SB_PARENT);
+        }
+        if(insertNo){
+            handleSbChangeRecord(remark.toString(),model,tempInfo,CommonConstants.CHANGE_TYPE_SB_NO);
+        }
+        sbInfoMapper.updateByPrimaryKey(sbInfo);
         return sbMeasureLog;
     }
 
@@ -207,25 +227,46 @@ public class SbMeasureLogServiceImpl extends BaseServiceImpl<SbMeasureLogMapper,
         return StringUtils.isBlank(info) ? "" : info;
     }
 
-    void handleSbInfoAllocate(String remark,SbMeasureLogDTO model,String sbName){
-        CustomFieldTemplateData data = new CustomFieldTemplateData();
-        data.setId(IdGeneratorUtils.getObjectId());
-        data.setCreatedTime(LocalDateTime.now());
-        data.setCreatedUserName(SecurityUtils.getUserInfo().getUsername());
-        data.setCreatedUserId(SecurityUtils.getUserInfo().getUserId());
-        data.setObjId(model.getSbId());
-        data.setRemark(CommonConstants.SB_ALLOCATE_FORM);
-        data.setStatus(CustomFieldTemplateDataStatusEnum.SUCCESS.getValue());
-        data.setType(CustomFieldTemplateDataTypeEnum.ACTIVITY_FORM.getValue());
-        // 封装具体data
-        SbAllocateFormActiviti allocate = new SbAllocateFormActiviti();
-        allocate.setStartTime(LocalDateTime.now());
-        allocate.setEndTime(LocalDateTime.now());
-        allocate.setRemark(remark);
-        allocate.setTitle("计量记录【"+sbName+"】");
-        data.setData(JsonUtils.objectToJson(allocate));
-        data.setDelFlag(0);
-        customFieldTemplateDataMapper.insert(data);
+    /**
+     * 保存变更记录
+     * @param remark
+     * @param model
+     * @param sb
+     * @param type
+     */
+    void handleSbChangeRecord(String remark,SbMeasureLogDTO model,SbInfo sb,String type){
+        SbChangeRecord record = new SbChangeRecord();
+        record.setId(IdGeneratorUtils.getObjectId());
+        record.setChangeType(Integer.parseInt(type));
+        record.setContent(remark);
+        record.setCreatedTime(LocalDateTime.now());
+        record.setCreatedUserId(SecurityUtils.getUserInfo().getUserId());
+        record.setCreatedUserName(SecurityUtils.getUserInfo().getUsername());
+        record.setSbId(sb.getId());
+        switch (type){
+            case CommonConstants.CHANGE_TYPE_SB_POSITION:
+                record.setOldPositionId(sb.getPositionId());
+                record.setPositionId(model.getSbPositionId());
+                break;
+            case CommonConstants.CHANGE_TYPE_SB_NO:
+                record.setSbNoId(model.getSbPositionNo());
+                record.setStartTime(LocalDateTime.now());
+                // 将之前位置编号的结束时间修正
+                SbChangeRecordDTO dto = new SbChangeRecordDTO();
+                dto.setChangeType(record.getChangeType());
+                dto.setSbNoId(model.getSbPositionNo());
+                SbChangeRecord oldRecord = sbChangeRecordMapper.getLastOne(dto);
+                if(oldRecord != null){
+                    oldRecord.setEndTime(LocalDateTime.now());
+                    sbChangeRecordMapper.updateByPrimaryKey(oldRecord);
+                }
+                break;
+            case CommonConstants.CHANGE_TYPE_SB_PARENT:
+                record.setOldParentId(sb.getParentId());
+                record.setParentId(model.getSbParentId());
+                break;
+        }
+        sbChangeRecordMapper.insert(record);
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -327,7 +368,6 @@ public class SbMeasureLogServiceImpl extends BaseServiceImpl<SbMeasureLogMapper,
             searchStartTime = DateUtils.getFirstDayOfMonth(startMonth);
             searchEndTime = DateUtils.getLastDayOfMonth(endMonth);
         }
-
         // 总数
         sbMeasureLogDTO.setSearchStartTime(searchStartTime);
         sbMeasureLogDTO.setSearchEndTime(searchEndTime);