车车 6 mesiacov pred
rodič
commit
a8bf860509

+ 8 - 0
ktg-iscs/src/main/java/com/ktg/iscs/controller/HardwareApiController.java

@@ -122,6 +122,14 @@ public class HardwareApiController extends BaseController
         return CommonResult.success(hardwareApiService.updateSwitchStatus(dto));
     }
 
+    @ApiOperation("批量更新隔离点开关状态")
+    @Log(title = "更新隔离点开关状态", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateSwitchList")
+    public CommonResult<Boolean> updateSwitchList(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") UpdateSwitchParam dto)
+    {
+        return CommonResult.success(hardwareApiService.updateSwitchList(dto));
+    }
+
     // ----------------------------------作业票及作业票的相关数据查询-------------------------------------------------------
 
     @ApiOperation("上锁取钥匙前检查")

+ 12 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/IsMapPoint.java

@@ -1,6 +1,7 @@
 package com.ktg.iscs.domain;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModelProperty;
@@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.ktg.common.annotation.Excel;
 import com.ktg.common.core.domain.model.BaseBean;
 
+import java.util.Date;
+
 /**
  * 地图点位数据对象 is_map_point
  *
@@ -68,4 +71,13 @@ public class IsMapPoint extends BaseBean
     @TableField(exist = false)
     private String pointNfc;
 
+    @ApiModelProperty(value = "开关状态(0-开 1-关)")
+    @TableField(exist = false)
+    private String switchStatus;
+
+    @ApiModelProperty(value = "开关状态最近更新时间")
+    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(exist = false)
+    private Date switchLastUpdateTime;
+
 }

+ 20 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/hardwareApi/UpdateSwitchParam.java

@@ -0,0 +1,20 @@
+package com.ktg.iscs.domain.dto.hardwareApi;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * UpdateTicketLockDTO
+ *
+ * @author cgj
+ * @date 2024-10-16
+ */
+@Data
+public class UpdateSwitchParam {
+
+    @ApiModelProperty(value = "批量更新点位开关状态数据")
+    private List<UpdateSwitchStatusDTO> list;
+
+}

+ 7 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/hardwareApi/UpdateSwitchStatusDTO.java

@@ -1,8 +1,11 @@
 package com.ktg.iscs.domain.dto.hardwareApi;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * UpdateTicketLockDTO
  *
@@ -18,4 +21,8 @@ public class UpdateSwitchStatusDTO {
     @ApiModelProperty(value = "开关状态(0-开 1-关)")
     private String switchStatus;
 
+    @ApiModelProperty(value = "开关状态最近更新时间")
+    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date switchLastUpdateTime;
+
 }

+ 7 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/HardwareApiService.java

@@ -94,6 +94,13 @@ public interface HardwareApiService {
      */
     Boolean updateSwitchStatus(UpdateSwitchStatusDTO dto);
 
+    /**
+     * 批量更新开关状态
+     * @param dto
+     * @return
+     */
+    Boolean updateSwitchList(UpdateSwitchParam dto);
+
     /**
      * 上锁取钥匙前检查
      * @param ticketId

+ 19 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/HardwareApiServiceImpl.java

@@ -2,6 +2,7 @@ package com.ktg.iscs.service.impl;
 
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ktg.common.core.redis.RedisCache;
 import com.ktg.common.utils.SecurityUtils;
 import com.ktg.common.utils.bean.BeanUtils;
 import com.ktg.iscs.domain.*;
@@ -13,6 +14,7 @@ import com.ktg.iscs.domain.vo.ticket.JobTicketDetailVO;
 import com.ktg.iscs.domain.vo.ticket.JobTicketUpdateProgressReqVO;
 import com.ktg.iscs.domain.vo.ticketPoints.IsJobTicketPointsVO;
 import com.ktg.iscs.service.*;
+import com.ktg.system.domain.vo.IsSystemAttributeVO;
 import com.sun.org.apache.bcel.internal.generic.NEW;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,8 +22,11 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
+import static com.ktg.common.constant.Constants.SYS_ATTR;
+
 /**
  * 硬件Service业务层处理
  *
@@ -57,6 +62,8 @@ public class HardwareApiServiceImpl implements HardwareApiService {
     private IIsJobCardService iIsJobCardService;
     @Autowired
     private IIsSystemAttributeService isSystemAttributeService;
+    @Autowired
+    private RedisCache redisCache;
     // @Value("${ktg-mes.jtcolocker}")
     // private String jtcolocker;
 
@@ -731,6 +738,18 @@ public class HardwareApiServiceImpl implements HardwareApiService {
                 .set(IsIsolationPoint::getSwitchStatus, dto.getSwitchStatus()));
     }
 
+    @Override
+    public Boolean updateSwitchList(UpdateSwitchParam dto) {
+        Assert.isFalse(dto.getList().isEmpty(), "点位开关数据不可为空!");
+        Date date = new Date();
+        dto.getList().forEach(o -> o.setSwitchLastUpdateTime(date));
+        redisCache.setCacheList(SYS_ATTR + "sys.points.switch.last", dto.getList());
+        redisCache.expire(SYS_ATTR + "sys.points.switch.last", 60, TimeUnit.SECONDS);
+        redisCache.deleteObject(SYS_ATTR + "sys.points.switch.records");
+        redisCache.setCacheList(SYS_ATTR + "sys.points.switch.records", dto.getList());
+        return true;
+    }
+
     @Override
     public Boolean checkBeforeToLock(Long ticketId) {
         Assert.notNull(ticketId, "当前作业票id不能为空!");

+ 16 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMapServiceImpl.java

@@ -3,17 +3,22 @@ package com.ktg.iscs.service.impl;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ktg.common.core.redis.RedisCache;
 import com.ktg.common.utils.StringUtils;
 import com.ktg.iscs.domain.IsMap;
 import com.ktg.iscs.domain.IsMapPoint;
+import com.ktg.iscs.domain.dto.hardwareApi.UpdateSwitchStatusDTO;
 import com.ktg.iscs.mapper.IsMapMapper;
 import com.ktg.iscs.service.IIsMapPointService;
 import com.ktg.iscs.service.IIsMapService;
+import com.ktg.system.domain.vo.IsSystemAttributeVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
 
+import static com.ktg.common.constant.Constants.SYS_ATTR;
+
 /**
  * 地图参数Service业务层处理
  *
@@ -27,6 +32,8 @@ public class IsMapServiceImpl extends ServiceImpl<IsMapMapper, IsMap> implements
     private IsMapMapper isMapMapper;
     @Autowired
     private IIsMapPointService iIsMapPointService;
+    @Autowired
+    private RedisCache redisCache;
 
     @Override
     public Page<IsMap> getIsMapPage(Page<IsMap> page, IsMap isMap) {
@@ -42,6 +49,15 @@ public class IsMapServiceImpl extends ServiceImpl<IsMapMapper, IsMap> implements
         IsMapPoint point = new IsMapPoint();
         point.setMapId(id);
         List<IsMapPoint> list = iIsMapPointService.getIsMapPointList(point);
+        List<UpdateSwitchStatusDTO> switchStatusList = redisCache.getCacheList(SYS_ATTR + "sys.points.switch.records");
+        for (IsMapPoint isMapPoint : list) {
+            for (UpdateSwitchStatusDTO updateSwitchStatusDTO : switchStatusList) {
+                if (isMapPoint.getPointNfc().equals(updateSwitchStatusDTO.getPointNfc())) {
+                    isMapPoint.setSwitchStatus(updateSwitchStatusDTO.getSwitchStatus());
+                    isMapPoint.setSwitchLastUpdateTime(updateSwitchStatusDTO.getSwitchLastUpdateTime());
+                }
+            }
+        }
         map.setPointList(list);
         return map;
     }