Sfoglia il codice sorgente

修改电机的状态

车车 1 mese fa
parent
commit
c0c371b917

+ 1 - 1
ktg-framework/src/main/java/com/ktg/framework/config/SecurityConfig.java

@@ -105,7 +105,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/iscs/key/selectIsKeyByNfcWithoutAuth").permitAll()
                 .antMatchers("/iscs/hardware/material-api/selectMaterialsByRfidList").permitAll()
                 .antMatchers("/iscs/hardware/material-api/selectCabinetMaterials").permitAll()
-                .antMatchers("/iscs/map/selectIsMapById", "/iscs/motor/getIsMotorListByLotoId", "/iscs/station/getIsLotoStationPage").anonymous()
+                .antMatchers("/iscs/map/selectIsMapById", "/iscs/motor/getIsMotorListByLotoId", "/iscs/station/getIsLotoStationPage").permitAll()
                 .antMatchers("/iscs/hardware-api/updateSwitchList").anonymous()
                 .antMatchers(
                         HttpMethod.GET,

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

@@ -118,7 +118,7 @@ public class HardwareApiController extends BaseController
     @ApiOperation("批量更新隔离点开关状态")
     // @Log(title = "批量更新隔离点开关状态", businessType = BusinessType.UPDATE)
     @PostMapping("/updateSwitchList")
-    public CommonResult<Boolean> updateSwitchList(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") UpdateSwitchParam dto)
+    public CommonResult<Integer> updateSwitchList(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") UpdateSwitchParam dto)
     {
         return CommonResult.success(hardwareApiService.updateSwitchList(dto));
     }

+ 13 - 1
ktg-iscs/src/main/java/com/ktg/iscs/domain/IsMotor.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_motor
  *
@@ -44,7 +47,7 @@ public class IsMotor extends BaseBean
     @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
     private String delFlag;
 
-    @ApiModelProperty(value = "状态(0-关闭 1-开启)")
+    @ApiModelProperty(value = "状态(0-开启 1-关闭)")
     private String status;
 
     @ApiModelProperty(value = "类型(SZ散装 GS高空运输线 MS码垛)")
@@ -62,4 +65,13 @@ public class IsMotor extends BaseBean
     @TableField(exist = false)
     private Long mapPointId;
 
+    @ApiModelProperty(value = "隔离点序列号")
+    @TableField(exist = false)
+    private String pointSerialNumber;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "开关状态最近更新时间")
+    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date switchLastUpdateTime;
+
 }

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

@@ -18,6 +18,9 @@ public class UpdateSwitchStatusDTO {
     /*@ApiModelProperty(value = "隔离点NFC")
     private String pointNfc;*/
 
+    @ApiModelProperty(value = "电柜序列号")
+    private String lotoSerialNumber;
+
     @ApiModelProperty(value = "隔离点序列号")
     private String pointSerialNumber;
 

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

@@ -93,7 +93,7 @@ public interface HardwareApiService {
      * @param dto
      * @return
      */
-    Boolean updateSwitchList(UpdateSwitchParam dto);
+    Integer updateSwitchList(UpdateSwitchParam dto);
 
     /**
      * 上锁取钥匙前检查

+ 39 - 7
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/HardwareApiServiceImpl.java

@@ -958,19 +958,51 @@ public class HardwareApiServiceImpl implements HardwareApiService {
         return true;
     }
 
+    /**
+     * 0-更新失败
+     * 1-更新成功
+     * 2-更新失败
+     * @param dto
+     * @return
+     */
     @Override
-    public Boolean updateSwitchList(UpdateSwitchParam dto) {
+    public Integer updateSwitchList(UpdateSwitchParam dto) {
         Assert.isFalse(dto.getList().isEmpty(), "点位开关数据不可为空!");
+        Date date = new Date();
         dto.getList().forEach(o -> {
-            Assert.notBlank(o.getPointSerialNumber(), "序列号不可为空!");
+            Assert.notBlank(o.getLotoSerialNumber(), "锁定站序列号不可为空!");
+            Assert.notBlank(o.getPointSerialNumber(), "点位序列号不可为空!");
+            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;
+        int result = 1;
+        // 判断是否有数据变更
+        List<UpdateSwitchStatusDTO> pointList = redisCache.getCacheList(SYS_ATTR + dto.getList().get(0).getLotoSerialNumber() + ":sys.points.switch.records");
+        if (dto.getList().size() != pointList.size()) {
+            result = 2;
+        } else {
+            for (UpdateSwitchStatusDTO updateSwitchStatusDTO : dto.getList()) {
+                List<UpdateSwitchStatusDTO> collect = pointList.stream()
+                        .filter(o -> o.getPointSerialNumber().equals(updateSwitchStatusDTO.getPointSerialNumber())).collect(Collectors.toList());
+                if (collect.isEmpty()) {
+                    result = 2;
+                    break;
+                } else {
+                    if (!updateSwitchStatusDTO.getSwitchStatus().equals(collect.get(0).getSwitchStatus())) {
+                        result = 2;
+                        break;
+                    }
+                }
+            }
+        }
+        redisCache.deleteObject(SYS_ATTR + dto.getList().get(0).getLotoSerialNumber() + ":sys.points.switch.last");
+        redisCache.setCacheList(SYS_ATTR + dto.getList().get(0).getLotoSerialNumber() + ":sys.points.switch.last", dto.getList());
+        redisCache.expire(SYS_ATTR + dto.getList().get(0).getLotoSerialNumber() + ":sys.points.switch.last", 60, TimeUnit.SECONDS);
+        redisCache.deleteObject(SYS_ATTR + dto.getList().get(0).getLotoSerialNumber() + ":sys.points.switch.records");
+        redisCache.setCacheList(SYS_ATTR + dto.getList().get(0).getLotoSerialNumber() + ":sys.points.switch.records", dto.getList());
+        return result;
     }
 
+
     @Transactional
     @Override
     public Boolean checkBeforeToLock(Long ticketId) {

+ 19 - 10
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMapServiceImpl.java

@@ -5,10 +5,12 @@ 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.IsLotoStation;
 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.IIsLotoStationService;
 import com.ktg.iscs.service.IIsMapPointService;
 import com.ktg.iscs.service.IIsMapService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +35,8 @@ public class IsMapServiceImpl extends ServiceImpl<IsMapMapper, IsMap> implements
     private IIsMapPointService iIsMapPointService;
     @Autowired
     private RedisCache redisCache;
+    @Autowired
+    private IIsLotoStationService isLotoStationService;
 
     @Override
     public Page<IsMap> getIsMapPage(Page<IsMap> page, IsMap isMap) {
@@ -49,20 +53,25 @@ 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");
-            if (!switchStatusList.isEmpty() && !list.isEmpty()) {
-                for (IsMapPoint isMapPoint : list) {
-                    for (UpdateSwitchStatusDTO updateSwitchStatusDTO : switchStatusList) {
-                        if (StringUtils.isNotBlank(isMapPoint.getPointSerialNumber())
-                                && StringUtils.isNotBlank(updateSwitchStatusDTO.getPointSerialNumber())
-                                && isMapPoint.getPointSerialNumber().equals(updateSwitchStatusDTO.getPointSerialNumber())) {
-                            isMapPoint.setSwitchStatus(updateSwitchStatusDTO.getSwitchStatus());
-                            isMapPoint.setSwitchLastUpdateTime(updateSwitchStatusDTO.getSwitchLastUpdateTime());
+            // 查询lotostation信息
+            IsLotoStation lotoStation = isLotoStationService.getOne(Wrappers.<IsLotoStation>lambdaQuery()
+                    .eq(IsLotoStation::getMapId, id));
+            if (lotoStation != null && StringUtils.isNotBlank(lotoStation.getLotoSerialNumber())) {
+                List<UpdateSwitchStatusDTO> switchStatusList = redisCache.getCacheList(SYS_ATTR + lotoStation.getLotoSerialNumber() + ":sys.points.switch.records");
+                if (!switchStatusList.isEmpty() && !list.isEmpty()) {
+                    for (IsMapPoint isMapPoint : list) {
+                        for (UpdateSwitchStatusDTO updateSwitchStatusDTO : switchStatusList) {
+                            if (StringUtils.isNotBlank(isMapPoint.getPointSerialNumber())
+                                    && StringUtils.isNotBlank(updateSwitchStatusDTO.getPointSerialNumber())
+                                    && isMapPoint.getPointSerialNumber().equals(updateSwitchStatusDTO.getPointSerialNumber())) {
+                                isMapPoint.setSwitchStatus(updateSwitchStatusDTO.getSwitchStatus());
+                                isMapPoint.setSwitchLastUpdateTime(updateSwitchStatusDTO.getSwitchLastUpdateTime());
+                            }
                         }
                     }
                 }
+                map.setPointList(list);
             }
-            map.setPointList(list);
         }
         return map;
     }

+ 22 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMotorServiceImpl.java

@@ -5,10 +5,13 @@ import cn.hutool.core.lang.Assert;
 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.IsIsolationPoint;
 import com.ktg.iscs.domain.IsLotoStation;
 import com.ktg.iscs.domain.IsMapPoint;
 import com.ktg.iscs.domain.IsMotor;
+import com.ktg.iscs.domain.dto.hardwareApi.UpdateSwitchStatusDTO;
 import com.ktg.iscs.domain.dto.motor.MotorMoveDTO;
 import com.ktg.iscs.domain.dto.motor.MotorMoveDetailDTO;
 import com.ktg.iscs.mapper.IsMotorMapper;
@@ -25,6 +28,8 @@ import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import static com.ktg.common.constant.Constants.SYS_ATTR;
+
 /**
  * 电机Service业务层处理
  *
@@ -42,6 +47,8 @@ public class IsMotorServiceImpl extends ServiceImpl<IsMotorMapper, IsMotor> impl
     private IIsIsolationPointService iIsIsolationPointService;
     @Autowired
     private IIsMapPointService isMapPointService;
+    @Autowired
+    private RedisCache redisCache;
 
     @Override
     public Page<IsMotor> getIsMotorPage(Page<IsMotor> page, IsMotor isMotor) {
@@ -75,6 +82,21 @@ public class IsMotorServiceImpl extends ServiceImpl<IsMotorMapper, IsMotor> impl
                                 isMotor.setY(mapPoint.getY());
                                 isMotor.setMapPointId(mapPoint.getId());
                                 isMotor.setPointName(collect.isEmpty() ? null : collect.get(0).getPointName());
+                                isMotor.setPointSerialNumber(collect.isEmpty() ? null : collect.get(0).getPointSerialNumber());
+                            }
+                        }
+                    }
+                    // 通过柜子的序列号去找缓存信息,然后给点位控制的开关设置状态
+                    if (StringUtils.isNotBlank(lotoStation.getLotoSerialNumber())) {
+                        List<UpdateSwitchStatusDTO> pointList = redisCache.getCacheList(SYS_ATTR + lotoStation.getLotoSerialNumber() + ":sys.points.switch.records");
+                        if (!pointList.isEmpty()) {
+                            for (IsMotor isMotor : motorList) {
+                                for (UpdateSwitchStatusDTO updateSwitchStatusDTO : pointList) {
+                                    if (StringUtils.isNotBlank(isMotor.getPointSerialNumber()) && isMotor.getPointSerialNumber().equals(updateSwitchStatusDTO.getPointSerialNumber())) {
+                                        isMotor.setStatus(updateSwitchStatusDTO.getSwitchStatus());
+                                        isMotor.setSwitchLastUpdateTime(updateSwitchStatusDTO.getSwitchLastUpdateTime());
+                                    }
+                                }
                             }
                         }
                     }