Эх сурвалжийг харах

修改作业票相关逻辑,新增隔离点的前置隔离点信息

车车 11 сар өмнө
parent
commit
30b626505a

+ 3 - 2
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/ticket/AddJobTicketDTO.java

@@ -1,6 +1,7 @@
 package com.ktg.iscs.domain.dto.ticket;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ktg.iscs.domain.IsJobTicketPoints;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -52,8 +53,8 @@ public class AddJobTicketDTO
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date ticketEndTime;
 
-    @ApiModelProperty(value = "隔离点id, 多个用逗号分隔")
-    private String pointIds;
+    @ApiModelProperty(value = "隔离点的数据")
+    private List<IsJobTicketPoints> pointsList;
 
     @ApiModelProperty(value = "关联人员信息")
     private List<AddTicketUserDTO> ticketUserDTOList;

+ 24 - 26
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsJobTicketServiceImpl.java

@@ -59,9 +59,6 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
     @Autowired
     private IIsJobTicketLocksetService iIsJobTicketLocksetService;
 
-
-
-
     /**
      * 查询作业票
      *
@@ -85,7 +82,10 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
                     isJobTicketPoints.stream()
                             .filter(o1 -> o1.getPointId().equals(o.getPointId()))
                             .findFirst()
-                            .ifPresent(data -> o.setLockId(data.getLockId())));
+                            .ifPresent(data -> {
+                                o.setLockId(data.getLockId());
+                                o.setPrePointId(data.getPrePointId());
+                            }));
             // 2.2组装隔离点数据
             jobTicketDetailVO.setPointDetailVOList(pointDetailList);
         }
@@ -122,7 +122,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         // 1.断言判断必填
         Assert.isTrue(StringUtils.isNotBlank(dto.getTicketCode()), "作业票编号不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(dto.getTicketName()), "作业票名称不可为空!");
-        Assert.isTrue(StringUtils.isNotBlank(dto.getPointIds()), "请选择隔离点!");
+        Assert.isFalse(dto.getPointsList().isEmpty(), "请选择隔离点!");
         Assert.isFalse(dto.getTicketUserDTOList().isEmpty(), "人员信息不可为空!");
         // 1.1检查作业票编码是否唯一
         List<IsJobTicket> list = list(Wrappers.<IsJobTicket>lambdaQuery().eq(IsJobTicket::getTicketCode, dto.getTicketCode()));
@@ -135,18 +135,19 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         isJobTicketMapper.insertIsJobTicket(jobTicket);
         // 3.新增作业票和隔离点的关联关系
         // TODO 批量新增
-        Long[] pointIds = Convert.toLongArray(dto.getPointIds());
-        for (Long pointId : pointIds) {
-            IsJobTicketPoints isJobTicketPoints = new IsJobTicketPoints();
-            isJobTicketPoints.setTicketId(jobTicket.getTicketId());
-            isJobTicketPoints.setWorkareaId(dto.getWorkareaId());
-            isJobTicketPoints.setPointId(pointId);
+        for (IsJobTicketPoints isJobTicketPoints : dto.getPointsList()) {
+            IsJobTicketPoints jobTicketPoints = new IsJobTicketPoints();
+            jobTicketPoints.setTicketId(jobTicket.getTicketId());
+            jobTicketPoints.setWorkareaId(dto.getWorkareaId());
+            jobTicketPoints.setPointId(isJobTicketPoints.getPointId());
+            jobTicketPoints.setPrePointId(isJobTicketPoints.getPrePointId());
             iIsJobTicketPointsService.save(isJobTicketPoints);
         }
         // 3.1新增作业票和钥匙的关联关系(两条数据,一条上锁,一条解锁)
         saveJobTicketKet(jobTicket.getTicketId());
         // 3.2新增作业票和挂锁的关联关// 3.3新增作业票和锁具的关联关系
-        List<IsIsolationPoint> pointList = iIsIsolationPointService.listByIds(Arrays.asList(pointIds));
+        List<Long> pointIds = dto.getPointsList().stream().map(IsJobTicketPoints::getPointId).collect(Collectors.toList());
+        List<IsIsolationPoint> pointList = iIsIsolationPointService.listByIds(pointIds);
         saveJobTicketLockAndSet(pointList, jobTicket.getTicketId());
 
         // 4.新增人员信息
@@ -221,7 +222,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         Assert.isTrue(StringUtils.isNotBlank(dto.getTicketCode()), "作业票编号不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(dto.getTicketName()), "作业票名称不可为空!");
         // Assert.notNull(dto.getWorkshopId(), "所属车间不可为空!");
-        Assert.isTrue(StringUtils.isNotBlank(dto.getPointIds()), "请选择隔离点!");
+        Assert.isFalse(dto.getPointsList().isEmpty(), "请选择隔离点!");
         Assert.isFalse(dto.getTicketUserDTOList().isEmpty(), "人员信息不可为空!");
         // 1.2人员信息是否存在重复
         boolean b = dto.getTicketUserDTOList().size() == dto.getTicketUserDTOList().stream().distinct().count();
@@ -239,24 +240,21 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         isJobTicketMapper.updateById(jobTicket);
 
         // 3.1检查隔离点有没有变更
-        Long[] pointIds = Convert.toLongArray(dto.getPointIds());
+        List<Long> pointIds = dto.getPointsList().stream().map(IsJobTicketPoints::getPointId).collect(Collectors.toList());
         List<IsJobTicketPoints> isSopPoints = iIsJobTicketPointsService.list(Wrappers.<IsJobTicketPoints>lambdaQuery()
                 .eq(IsJobTicketPoints::getTicketId, dto.getTicketId())
                 .in(IsJobTicketPoints::getPointId, pointIds));
         // 3.2如果查出来变更了,开始执行删除,重新增加一轮 / 当workarea变更也要全部换掉
-        if (pointIds.length != isSopPoints.size() || !Objects.equals(isJobTicket.getWorkareaId(), dto.getWorkareaId())) {
-            Set<Long> recordIds = isSopPoints.stream().map(IsJobTicketPoints::getRecordId).collect(Collectors.toSet());
-            if (!recordIds.isEmpty()) {
-                String rids = StringUtils.join(recordIds.toArray(), ",");
-                iIsJobTicketPointsService.deleteIsJobTicketPointsByRecordIds(rids);
-            }
+        if (pointIds.size() != isSopPoints.size() || !Objects.equals(isJobTicket.getWorkareaId(), dto.getWorkareaId())) {
+            iIsJobTicketPointsService.remove(Wrappers.<IsJobTicketPoints>lambdaQuery().eq(IsJobTicketPoints::getTicketId, dto.getTicketId()));
             // TODO 批量新增
-            for (Long pointId : pointIds) {
-                IsJobTicketPoints isJobTicketPoints = new IsJobTicketPoints();
-                isJobTicketPoints.setTicketId(jobTicket.getTicketId());
-                isJobTicketPoints.setWorkshopId(dto.getWorkshopId());
-                isJobTicketPoints.setWorkareaId(dto.getWorkareaId());
-                isJobTicketPoints.setPointId(pointId);
+            for (IsJobTicketPoints isJobTicketPoints : dto.getPointsList()) {
+                IsJobTicketPoints jobTicketPoints = new IsJobTicketPoints();
+                jobTicketPoints.setTicketId(jobTicket.getTicketId());
+                jobTicketPoints.setWorkshopId(dto.getWorkshopId());
+                jobTicketPoints.setWorkareaId(dto.getWorkareaId());
+                jobTicketPoints.setPointId(isJobTicketPoints.getPointId());
+                jobTicketPoints.setPrePointId(isJobTicketPoints.getPrePointId());
                 iIsJobTicketPointsService.save(isJobTicketPoints);
             }
         }

+ 3 - 0
ktg-iscs/src/main/resources/mapper/IsWorkareaMapper.xml

@@ -127,6 +127,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             is_workarea w
             LEFT JOIN md_workshop s ON s.workshop_id = w.workshop_id
         <where>
+            <if test="dto.workareaId != null">
+                and w.workarea_id = #{dto.workareaId}
+            </if>
             <if test="dto.workareaCode != null and dto.workareaCode.trim != ''">
                 and w.workarea_code like concat('%',#{dto.workareaCode},'%')
             </if>