Преглед на файлове

调整作业票的业务逻辑,加入前置节点的数据存储

车车 преди 11 месеца
родител
ревизия
6d3f081db1

+ 3 - 5
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/sop/AddSopDTO.java

@@ -1,5 +1,6 @@
 package com.ktg.iscs.domain.dto.sop;
 
+import com.ktg.iscs.domain.IsJobTicketPoints;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -37,11 +38,8 @@ public class AddSopDTO implements Serializable {
     @ApiModelProperty(value = "SOP内容")
     private String sopContent;
 
-    @ApiModelProperty(value = "隔离点id, 多个用逗号分隔")
-    private String pointIds;
-
-    @ApiModelProperty(value = "前置隔离点ID")
-    private Long prePointId;
+    @ApiModelProperty(value = "点位数据")
+    private List<IsJobTicketPoints> pointsList;
 
     @ApiModelProperty(value = "关联人员信息")
     private List<AddSopUserDTO> ticketUserDTOList;

+ 3 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/vo/points/PointDetailVO.java

@@ -82,4 +82,7 @@ public class PointDetailVO extends BaseBean
 
     @ApiModelProperty(value = "挂锁ID")
     private Long lockId;
+
+    @ApiModelProperty(value = "前置隔离点ID")
+    private Long prePointId;
 }

+ 2 - 2
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsIsolationPointServiceImpl.java

@@ -71,7 +71,7 @@ public class IsIsolationPointServiceImpl extends ServiceImpl<IsIsolationPointMap
         // 断言校验
         Assert.isTrue(StringUtils.isNotBlank(isIsolationPoint.getPointName()), "隔离点名称不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(isIsolationPoint.getPointCode()), "隔离点编号名称不可为空!");
-        Assert.notNull(isIsolationPoint.getWorkshopId(), "所属车间不可为空!");
+        // Assert.notNull(isIsolationPoint.getWorkshopId(), "所属车间不可为空!");
         Assert.notNull(isIsolationPoint.getWorkareaId(), "所属区域不可为空!");
         List<IsIsolationPoint> list = list(Wrappers.<IsIsolationPoint>lambdaQuery()
                 .eq(IsIsolationPoint::getPointCode, isIsolationPoint.getPointCode()));
@@ -92,7 +92,7 @@ public class IsIsolationPointServiceImpl extends ServiceImpl<IsIsolationPointMap
         Assert.notNull(isIsolationPoint.getPointId(), "隔离点ID不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(isIsolationPoint.getPointName()), "隔离点名称不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(isIsolationPoint.getPointCode()), "隔离点编号名称不可为空!");
-        Assert.notNull(isIsolationPoint.getWorkshopId(), "所属车间不可为空!");
+        // Assert.notNull(isIsolationPoint.getWorkshopId(), "所属车间不可为空!");
         Assert.notNull(isIsolationPoint.getWorkareaId(), "所属区域不可为空!");
         List<IsIsolationPoint> list = list(Wrappers.<IsIsolationPoint>lambdaQuery()
                 .eq(IsIsolationPoint::getPointCode, isIsolationPoint.getPointCode())

+ 14 - 8
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsJobTicketServiceImpl.java

@@ -60,6 +60,8 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
     private IIsJobTicketLocksetService iIsJobTicketLocksetService;
 
 
+
+
     /**
      * 查询作业票
      *
@@ -218,7 +220,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         Assert.notNull(dto.getTicketId(), "id不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(dto.getTicketCode()), "作业票编号不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(dto.getTicketName()), "作业票名称不可为空!");
-        Assert.notNull(dto.getWorkshopId(), "所属车间不可为空!");
+        // Assert.notNull(dto.getWorkshopId(), "所属车间不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(dto.getPointIds()), "请选择隔离点!");
         Assert.isFalse(dto.getTicketUserDTOList().isEmpty(), "人员信息不可为空!");
         // 1.2人员信息是否存在重复
@@ -288,13 +290,17 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         Long[] longIds = Convert.toLongArray(ticketIds);
         isJobTicketMapper.deleteIsJobTicketByTicketIds(longIds);
         // 3.同时删除is_job_ticket_points
-        List<IsJobTicketPoints> isJobTicketPointsList = iIsJobTicketPointsService.list(Wrappers.<IsJobTicketPoints>lambdaQuery()
-                .in(IsJobTicketPoints::getPointId, longIds));
-        Set<Long> recordIds = isJobTicketPointsList.stream().map(IsJobTicketPoints::getRecordId).collect(Collectors.toSet());
-        if (!recordIds.isEmpty()) {
-            String rids = StringUtils.join(recordIds.toArray(), ",");
-            iIsJobTicketPointsService.deleteIsJobTicketPointsByRecordIds(rids);
-        }
+        iIsJobTicketPointsService.remove(Wrappers.<IsJobTicketPoints>lambdaQuery()
+                .in(IsJobTicketPoints::getTicketId, longIds));
+        // 3.1同时删除is_job_ticket_key
+            iIsJobTicketKeyService.remove(Wrappers.<IsJobTicketKey>lambdaQuery()
+                    .in(IsJobTicketKey::getTicketId, longIds));
+        // 3.2同时删除is_job_ticket_lock
+        iIsJobTicketLockService.remove(Wrappers.<IsJobTicketLock>lambdaQuery()
+                .in(IsJobTicketLock::getTicketId, longIds));
+        // 3.3同时删除is_job_ticket_lockset
+        iIsJobTicketLocksetService.remove(Wrappers.<IsJobTicketLockset>lambdaQuery()
+                .in(IsJobTicketLockset::getJobTicketId, longIds));
         return true;
     }
 

+ 21 - 19
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsSopServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ktg.common.core.text.Convert;
 import com.ktg.common.utils.bean.BeanUtils;
+import com.ktg.iscs.domain.IsJobTicketPoints;
 import com.ktg.iscs.domain.IsSop;
 import com.ktg.iscs.domain.IsSopPoints;
 import com.ktg.iscs.domain.IsSopUser;
@@ -65,6 +66,13 @@ public class IsSopServiceImpl extends ServiceImpl<IsSopMapper, IsSop> implements
             List<Long> pointIds = isSopPoints.stream().map(IsSopPoints::getPointId).collect(Collectors.toList());
             // List<IsIsolationPoint> isIsolationPoints = iIsIsolationPointService.listByIds(pointIds);
             List<PointDetailVO> pointDetailVOList = iIsIsolationPointService.getPointDetailList(pointIds);
+            for (PointDetailVO pointDetailVO : pointDetailVOList) {
+                for (IsSopPoints isSopPoint : isSopPoints) {
+                   if (pointDetailVO.getPointId().equals(isSopPoint.getPointId())) {
+                       pointDetailVO.setPrePointId(isSopPoint.getPrePointId());
+                   }
+                }
+            }
             // 3.1组合返回数据
             sopDetailVO.setPointDetailVOList(pointDetailVOList);
         }
@@ -98,25 +106,23 @@ public class IsSopServiceImpl extends ServiceImpl<IsSopMapper, IsSop> implements
     @Override
     public Boolean insertIsSop(AddSopDTO dto) {
         // 断言校验
-        Assert.notNull(dto.getWorkshopId(), "所属车间不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(dto.getSopName()), "SOP名称不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(dto.getSopCode()), "SOP编号名称不可为空!");
         List<IsSop> list = list(Wrappers.<IsSop>lambdaQuery().eq(IsSop::getSopCode, dto.getSopCode()));
         Assert.isTrue(list.isEmpty(), "该SOP编号已被使用!");
         // 1.判断隔离点必选
-        Assert.isTrue(StringUtils.isNotBlank(dto.getPointIds()), "隔离点id不可为空!");
+        Assert.isFalse(dto.getPointsList().isEmpty(), "隔离点id不可为空!");
         // 2.开始新增sop数据
         IsSop isSop = BeanUtils.toBean(dto, IsSop.class);
         save(isSop);
         // 3.新增车间、区域、隔离点和sop的关联关系
         // TODO 批量新增
-        Long[] pointIds = Convert.toLongArray(dto.getPointIds());
-        for (Long pointId : pointIds) {
+        for (IsJobTicketPoints isJobTicketPoints : dto.getPointsList()) {
             IsSopPoints isSopPoints = new IsSopPoints();
             isSopPoints.setSopId(isSop.getSopId());
-            isSopPoints.setWorkshopId(dto.getWorkshopId());
             isSopPoints.setWorkareaId(dto.getWorkareaId());
-            isSopPoints.setPointId(pointId);
+            isSopPoints.setPointId(isJobTicketPoints.getPointId());
+            isSopPoints.setPrePointId(isJobTicketPoints.getPrePointId());
             iIsSopPointsService.save(isSopPoints);
         }
         // 4.新增人员信息到模板
@@ -144,7 +150,6 @@ public class IsSopServiceImpl extends ServiceImpl<IsSopMapper, IsSop> implements
     public Boolean updateIsSop(AddSopDTO dto) {
         // 断言校验
         Assert.notNull(dto.getSopId(), "sopId不可为空!");
-        Assert.notNull(dto.getWorkshopId(), "所属车间不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(dto.getSopName()), "SOP名称不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(dto.getSopCode()), "SOP编号名称不可为空!");
         List<IsSop> list = list(Wrappers.<IsSop>lambdaQuery()
@@ -152,27 +157,24 @@ public class IsSopServiceImpl extends ServiceImpl<IsSopMapper, IsSop> implements
                 .ne(IsSop::getSopId, dto.getSopId()));
         Assert.isTrue(list.isEmpty(), "该SOP编号已被使用!");
         // 1.判断隔离点必选
-        Assert.isTrue(StringUtils.isNotBlank(dto.getPointIds()), "隔离点id不可为空!");
+        Assert.isFalse(dto.getPointsList().isEmpty(), "隔离点id不可为空!");
         // 1.1检查区域有没有变,区域变了的话隔离点肯定变了,因为隔离点是从区域数据中解析的
         IsSop sop = getById(dto.getSopId());
         // 2.开始检查隔离点有没有变更
-        Long[] pointIds = Convert.toLongArray(dto.getPointIds());
+        List<Long> poindList = dto.getPointsList().stream().map(IsJobTicketPoints::getPointId).collect(Collectors.toList());
         List<IsSopPoints> isSopPoints = iIsSopPointsService.list(Wrappers.<IsSopPoints>lambdaQuery()
-                .eq(IsSopPoints::getSopId, dto.getSopId()));
+                .eq(IsSopPoints::getSopId, dto.getSopId())
+                .in(IsSopPoints::getPointId, poindList));
         // 2.1如果查出来变更了,开始执行删除,重新增加一轮 / 区域变更则点位必然改变,也需要删除
-        if (pointIds.length != isSopPoints.size() || !sop.getWorkareaId().equals(dto.getWorkareaId())) {
-            Set<Long> recordIds = isSopPoints.stream().map(IsSopPoints::getRecordId).collect(Collectors.toSet());
-            if (!recordIds.isEmpty()) {
-                String rids = StringUtils.join(recordIds.toArray(), ",");
-                iIsSopPointsService.deleteIsSopPointsByRecordIds(rids);
-            }
+        if (dto.getPointsList().size() != isSopPoints.size() || !sop.getWorkareaId().equals(dto.getWorkareaId())) {
+            iIsSopPointsService.remove(Wrappers.<IsSopPoints>lambdaQuery().eq(IsSopPoints::getSopId, dto.getSopId()));
             // TODO 批量新增
-            for (Long pointId : pointIds) {
+            for (IsJobTicketPoints isJobTicketPoints : dto.getPointsList()) {
                 IsSopPoints newSopPoints = new IsSopPoints();
                 newSopPoints.setSopId(dto.getSopId());
-                newSopPoints.setWorkshopId(dto.getWorkshopId());
                 newSopPoints.setWorkareaId(dto.getWorkareaId());
-                newSopPoints.setPointId(pointId);
+                newSopPoints.setPointId(isJobTicketPoints.getPointId());
+                newSopPoints.setPrePointId(isJobTicketPoints.getPrePointId());
                 iIsSopPointsService.save(newSopPoints);
             }
         }

+ 1 - 2
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsWorkareaServiceImpl.java

@@ -82,7 +82,6 @@ public class IsWorkareaServiceImpl extends ServiceImpl<IsWorkareaMapper, IsWorka
         // 断言校验
         Assert.isTrue(StringUtils.isNotBlank(isWorkarea.getWorkareaName()), "区域名称不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(isWorkarea.getWorkareaCode()), "区域编号名称不可为空!");
-        Assert.notNull(isWorkarea.getWorkshopId(), "所属车间不可为空!");
         List<IsWorkarea> list = list(Wrappers.<IsWorkarea>lambdaQuery()
                 .eq(IsWorkarea::getWorkareaCode, isWorkarea.getWorkareaCode()));
         Assert.isTrue(list.isEmpty(), "该区域编号已被使用!");
@@ -110,7 +109,7 @@ public class IsWorkareaServiceImpl extends ServiceImpl<IsWorkareaMapper, IsWorka
         Assert.notNull(isWorkarea.getWorkareaId(), "区域ID不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(isWorkarea.getWorkareaName()), "区域名称不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(isWorkarea.getWorkareaCode()), "区域编号名称不可为空!");
-        Assert.notNull(isWorkarea.getWorkshopId(), "所属车间不可为空!");
+        // Assert.notNull(isWorkarea.getWorkshopId(), "所属车间不可为空!");
         List<IsWorkarea> list = list(Wrappers.<IsWorkarea>lambdaQuery()
                 .eq(IsWorkarea::getWorkareaCode, isWorkarea.getWorkareaCode())
                 .ne(IsWorkarea::getWorkareaId, isWorkarea.getWorkareaId()));