Просмотр исходного кода

化学品对于操作关联柜锁操作视频功能

liubo лет назад: 3
Родитель
Сommit
5add028b96
24 измененных файлов с 383 добавлено и 107 удалено
  1. 3 6
      zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/RemoteChemicalService.java
  2. 1 1
      zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/factory/RemoteChemicalFallbackFactory.java
  3. 13 0
      zd-api/zd-api-system/src/main/java/com/zd/system/api/laboratory/CabinetV2Lock.java
  4. 5 0
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpAIOController.java
  5. 5 11
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpChemicalController.java
  6. 85 4
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/HxpCabinetlockLog.java
  7. 11 0
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/HxpStock.java
  8. 11 0
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/HxpUserecord.java
  9. 11 0
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/AioCabinetLockVo.java
  10. 11 0
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/HxpStockJoinVO.java
  11. 11 0
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/HxpStockOutVO.java
  12. 22 0
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/HxpUserecordDetailVo.java
  13. 2 1
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/mapper/HxpChemicalMapper.java
  14. 1 3
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/IHxpChemicalService.java
  15. 15 5
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpCabinetServiceImpl.java
  16. 26 11
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpChemicalServiceImpl.java
  17. 17 1
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpStockServiceImpl.java
  18. 19 4
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpUserecordServiceImpl.java
  19. 81 40
      zd-modules/zd-chemical/src/main/resources/mapper/chemical/HxpCabinetlockLogMapper.xml
  20. 1 1
      zd-modules/zd-chemical/src/main/resources/mapper/chemical/HxpChemicalMapper.xml
  21. 7 2
      zd-modules/zd-chemical/src/main/resources/mapper/chemical/HxpStockMapper.xml
  22. 14 8
      zd-modules/zd-chemical/src/main/resources/mapper/chemical/HxpUserecordMapper.xml
  23. 3 3
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/vo/LabSubjectVO.java
  24. 8 6
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectManagerService.java

+ 3 - 6
zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/RemoteChemicalService.java

@@ -5,10 +5,7 @@ import com.zd.common.core.domain.R;
 import com.zd.system.api.factory.RemoteExamFallbackFactory;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -28,6 +25,6 @@ public interface RemoteChemicalService {
     R<Boolean> updateStatus(@RequestParam("ipAddress") String ipAddress,@RequestParam("terminalStatus")Integer terminalStatus);
 
     @ApiOperation(value = "查询实验室化学品临界量风险指标")
-    @PostMapping("/hxpChemical/queryCriticaliBySubId")
-    R<Map<Long, BigDecimal>> queryCriticaliBySubId(@RequestBody List<Long> subIds);
+    @GetMapping("/hxpChemical/queryCriticaliBySubId")
+    R<List<Map<String, Object>>> queryCriticaliBySubId(@RequestParam("subIds") List<Long> subIds);
 }

+ 1 - 1
zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/factory/RemoteChemicalFallbackFactory.java

@@ -30,7 +30,7 @@ public class RemoteChemicalFallbackFactory implements FallbackFactory<RemoteChem
             }
 
             @Override
-            public R<Map<Long, BigDecimal>> queryCriticaliBySubId(List<Long> subIds) {
+            public R<List<Map<String, Object>>> queryCriticaliBySubId(List<Long> subIds) {
 
                 return R.fail("查询实验室化学品临界量风险指标失败:" + throwable.getMessage());
             }

+ 13 - 0
zd-api/zd-api-system/src/main/java/com/zd/system/api/laboratory/CabinetV2Lock.java

@@ -3,6 +3,11 @@ package com.zd.system.api.laboratory;
 public class CabinetV2Lock {
 
     /**
+     * 柜锁记录Id
+     */
+    private Long lockLogId;
+
+    /**
      * 硬件ID
      */
     private String hardwareId;
@@ -89,4 +94,12 @@ public class CabinetV2Lock {
     public void setRelayCode(String relayCode) {
         this.relayCode = relayCode;
     }
+
+    public Long getLockLogId() {
+        return lockLogId;
+    }
+
+    public void setLockLogId(Long lockLogId) {
+        this.lockLogId = lockLogId;
+    }
 }

+ 5 - 0
zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpAIOController.java

@@ -522,6 +522,11 @@ public class HxpAIOController extends BaseController {
         }else if(aioCabinetLockVo.getJoinId() == null){
             return R.fail("柜锁参数不能为空 !");
         }
+
+        if(aioCabinetLockVo.getLockLogId() == null){
+            return R.fail("开锁ID不能为空 !");
+        }
+
         aioCabinetLockVo.setSubId(getSubIdByTerminalNum());
         CabinetV2Lock cabinetV2Lock = hxpCabinetService.closeLock(aioCabinetLockVo);
         return R.ok(cabinetV2Lock);

+ 5 - 11
zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpChemicalController.java

@@ -7,6 +7,7 @@ import java.io.IOException;
 import java.util.concurrent.TimeUnit;
 import javax.servlet.http.HttpServletResponse;
 
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.map.MapUtil;
 import com.zd.chemical.domain.vo.*;
 import com.zd.chemical.service.IHxpChemicalJoinCabinetService;
@@ -20,14 +21,7 @@ import com.zd.system.api.domain.SysUser;
 import com.zd.system.api.domain.SysUserTeaCherByExcel;
 import com.zd.system.api.domain.SysUserTeaCherByExport;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import com.zd.common.response.ResultData;
 import com.zd.common.log.annotation.Log;
 import com.zd.common.log.enums.BusinessType;
@@ -249,10 +243,10 @@ public class HxpChemicalController extends BaseController {
     }
 
     @ApiOperation(value = "查询实验室化学品临界量风险指标")
-    @PostMapping("/queryCriticaliBySubId")
-    public R<Map<Long, BigDecimal>> queryCriticaliBySubId(@RequestBody List<Long> subIds) {
+    @GetMapping("/queryCriticaliBySubId")
+    public R<List<Map<String, Object>>> queryCriticaliBySubId(@RequestParam List<Long> subIds) {
         if(subIds.isEmpty()){
-            return R.ok(MapUtil.empty());
+            return R.ok(ListUtil.empty());
         }
         return R.ok(hxpChemicalService.queryCriticaliBySubId(subIds));
     }

+ 85 - 4
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/HxpCabinetlockLog.java

@@ -19,10 +19,6 @@ import com.zd.common.core.web.domain.BaseEntity;
  * @date 2022-07-11
  */
 @ApiModel("【请填写功能名称】")
-@Data
-@Accessors(chain = true)
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = false)
 public class HxpCabinetlockLog extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -62,4 +58,89 @@ public class HxpCabinetlockLog extends BaseEntity
     @ApiModelProperty(value = "用户ids")
     private String userIds;
 
+    @ApiModelProperty(value = "出入库ID")
+    private Long stockId;
+
+    @ApiModelProperty(value = "领用归还ID")
+    private Long userecordId;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getCabinetlockId() {
+        return cabinetlockId;
+    }
+
+    public void setCabinetlockId(Long cabinetlockId) {
+        this.cabinetlockId = cabinetlockId;
+    }
+
+    public Date getUnLockTime() {
+        return unLockTime;
+    }
+
+    public void setUnLockTime(Date unLockTime) {
+        this.unLockTime = unLockTime;
+    }
+
+    public Date getCloseLockTime() {
+        return closeLockTime;
+    }
+
+    public void setCloseLockTime(Date closeLockTime) {
+        this.closeLockTime = closeLockTime;
+    }
+
+    public Integer getOperationType() {
+        return operationType;
+    }
+
+    public void setOperationType(Integer operationType) {
+        this.operationType = operationType;
+    }
+
+    public String getUnLockVideo() {
+        return unLockVideo;
+    }
+
+    public void setUnLockVideo(String unLockVideo) {
+        this.unLockVideo = unLockVideo;
+    }
+
+    public String getCloseLockVideo() {
+        return closeLockVideo;
+    }
+
+    public void setCloseLockVideo(String closeLockVideo) {
+        this.closeLockVideo = closeLockVideo;
+    }
+
+    public String getUserIds() {
+        return userIds;
+    }
+
+    public void setUserIds(String userIds) {
+        this.userIds = userIds;
+    }
+
+    public Long getStockId() {
+        return stockId;
+    }
+
+    public void setStockId(Long stockId) {
+        this.stockId = stockId;
+    }
+
+    public Long getUserecordId() {
+        return userecordId;
+    }
+
+    public void setUserecordId(Long userecordId) {
+        this.userecordId = userecordId;
+    }
 }

+ 11 - 0
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/HxpStock.java

@@ -270,6 +270,9 @@ public class HxpStock extends BaseEntity {
      */
     private String machineCode;
 
+    @ApiModelProperty(value = "柜锁记录Id")
+    private Long lockLogId;
+
     public void setId(Long id) {
         this.id = id;
     }
@@ -669,4 +672,12 @@ public class HxpStock extends BaseEntity {
     public void setJoinVideo(String joinVideo) {
         this.joinVideo = joinVideo;
     }
+
+    public Long getLockLogId() {
+        return lockLogId;
+    }
+
+    public void setLockLogId(Long lockLogId) {
+        this.lockLogId = lockLogId;
+    }
 }

+ 11 - 0
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/HxpUserecord.java

@@ -117,6 +117,9 @@ public class HxpUserecord extends BaseEntity {
     @ApiModelProperty(value = "损耗量")
     private BigDecimal lossAmount;
 
+    @ApiModelProperty(value = "柜锁记录Id")
+    private Long lockLogId;
+
     public void setId(Long id) {
         this.id = id;
     }
@@ -268,4 +271,12 @@ public class HxpUserecord extends BaseEntity {
     public void setReturnVideo(String returnVideo) {
         this.returnVideo = returnVideo;
     }
+
+    public Long getLockLogId() {
+        return lockLogId;
+    }
+
+    public void setLockLogId(Long lockLogId) {
+        this.lockLogId = lockLogId;
+    }
 }

+ 11 - 0
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/AioCabinetLockVo.java

@@ -26,6 +26,9 @@ public class AioCabinetLockVo {
     @ApiModelProperty(value = "摄像头IP地址")
     private String ipAddress;
 
+    @ApiModelProperty(value = "柜锁记录Id")
+    private Long lockLogId;
+
     @ApiModelProperty(value = "柜锁ID")
     private Integer lockId;
 
@@ -120,4 +123,12 @@ public class AioCabinetLockVo {
     public void setLockType(LockTypeEnum lockType) {
         this.lockType = lockType;
     }
+
+    public Long getLockLogId() {
+        return lockLogId;
+    }
+
+    public void setLockLogId(Long lockLogId) {
+        this.lockLogId = lockLogId;
+    }
 }

+ 11 - 0
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/HxpStockJoinVO.java

@@ -98,6 +98,9 @@ public class HxpStockJoinVO {
     @ApiModelProperty(value = "入库视频")
     private String joinVideo;
 
+    @ApiModelProperty(value = "开关锁视频")
+    private String closeLockVideo;
+
     public Date getJoinTime() {
         return joinTime;
     }
@@ -257,4 +260,12 @@ public class HxpStockJoinVO {
     public void setJoinVideo(String joinVideo) {
         this.joinVideo = joinVideo;
     }
+
+    public String getCloseLockVideo() {
+        return closeLockVideo;
+    }
+
+    public void setCloseLockVideo(String closeLockVideo) {
+        this.closeLockVideo = closeLockVideo;
+    }
 }

+ 11 - 0
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/HxpStockOutVO.java

@@ -91,6 +91,9 @@ public class HxpStockOutVO {
     @ApiModelProperty(value = "身份验证")
     private String verify;
 
+    @ApiModelProperty(value = "开关锁视频")
+    private String closeLockVideo;
+
     public Date getOutTime() {
         return outTime;
     }
@@ -234,4 +237,12 @@ public class HxpStockOutVO {
     public void setTareUnit(String tareUnit) {
         this.tareUnit = tareUnit;
     }
+
+    public String getCloseLockVideo() {
+        return closeLockVideo;
+    }
+
+    public void setCloseLockVideo(String closeLockVideo) {
+        this.closeLockVideo = closeLockVideo;
+    }
 }

+ 22 - 0
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/HxpUserecordDetailVo.java

@@ -86,6 +86,9 @@ public class HxpUserecordDetailVo {
         @ApiModelProperty(value = "领用操作视频")
         private String outVideo;
 
+        @ApiModelProperty(value = "领用开关锁操作视频")
+        private String outLockVideo;
+
         public OutDetail() {
         }
 
@@ -136,6 +139,14 @@ public class HxpUserecordDetailVo {
         public void setOutVideo(String outVideo) {
             this.outVideo = outVideo;
         }
+
+        public String getOutLockVideo() {
+            return outLockVideo;
+        }
+
+        public void setOutLockVideo(String outLockVideo) {
+            this.outLockVideo = outLockVideo;
+        }
     }
 
     static class ReturnDetail {
@@ -154,6 +165,9 @@ public class HxpUserecordDetailVo {
         @ApiModelProperty(value = "归还操作视频")
         private String returnVideo;
 
+        @ApiModelProperty(value = "归还开关锁操作视频")
+        private String returnLockVideo;
+
         public ReturnDetail() {
         }
 
@@ -196,6 +210,14 @@ public class HxpUserecordDetailVo {
         public void setReturnVideo(String returnVideo) {
             this.returnVideo = returnVideo;
         }
+
+        public String getReturnLockVideo() {
+            return returnLockVideo;
+        }
+
+        public void setReturnLockVideo(String returnLockVideo) {
+            this.returnLockVideo = returnLockVideo;
+        }
     }
 
     public String getChemicalName() {

+ 2 - 1
zd-modules/zd-chemical/src/main/java/com/zd/chemical/mapper/HxpChemicalMapper.java

@@ -8,6 +8,7 @@ import java.util.Map;
 import com.zd.chemical.domain.HxpChemical;
 import com.zd.chemical.domain.HxpStock;
 import com.zd.chemical.domain.vo.*;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 化学品信息Mapper接口
@@ -132,5 +133,5 @@ public interface HxpChemicalMapper
      */
     public List<LinkedHashMap <String,String>> joinOutCount(HxpStock hxpStock);
 
-    Map<Long, BigDecimal> queryCriticaliBySubId(List<Long> subIds);
+    List<Map<String, Object>> queryCriticaliBySubId(@Param("subIds") List<Long> subIds);
 }

+ 1 - 3
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/IHxpChemicalService.java

@@ -1,6 +1,5 @@
 package com.zd.chemical.service;
 
-import java.math.BigDecimal;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -8,7 +7,6 @@ import java.util.Map;
 import com.zd.chemical.domain.HxpChemical;
 import com.zd.chemical.domain.HxpStock;
 import com.zd.chemical.domain.vo.*;
-import com.zd.system.api.domain.SysUserTeaCherByExcel;
 
 /**
  * 化学品信息Service接口
@@ -132,7 +130,7 @@ public interface IHxpChemicalService
      */
     public List<LinkedHashMap <String,String>> joinOutCount(HxpStock hxpStock);
 
-    Map<Long, BigDecimal> queryCriticaliBySubId(List<Long> subIds);
+    List<Map<String, Object>> queryCriticaliBySubId(List<Long> subIds);
 
     void indicatorMonitoring();
 }

+ 15 - 5
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpCabinetServiceImpl.java

@@ -267,6 +267,7 @@ public class HxpCabinetServiceImpl implements IHxpCabinetService {
         }
 
         boolean success = false;
+        String closeLockVideo = null;
         if (type == 1) {
             // 开锁
             // 1. 执行开锁命令
@@ -275,7 +276,7 @@ public class HxpCabinetServiceImpl implements IHxpCabinetService {
             if(r.getCode() == HttpStatus.SUCCESS){
                 success = true;
                 // 3. 调用录像功能
-
+                remoteCameraService.startRecord(result.getIpAddress());
             }
         }else if(type == 2){
             // 关锁
@@ -284,7 +285,13 @@ public class HxpCabinetServiceImpl implements IHxpCabinetService {
             if(r.getCode() == HttpStatus.SUCCESS){
                 success = true;
                 // 结束录像获取地址
-
+                R r1 = remoteCameraService.stopRecord(result.getIpAddress());
+                if(r1 != null && HttpStatus.SUCCESS == r1.getCode()){
+                    closeLockVideo = r1.getData() + "";
+                    success = true;
+                }else {
+                    logger.error("柜锁关闭获取摄像头录像失败:" + r.getMsg());
+                }
             }
         }
 
@@ -299,19 +306,22 @@ public class HxpCabinetServiceImpl implements IHxpCabinetService {
                 hxpCabinetlockLog.setCreateBy(SecurityUtils.getUsername());
                 cabinetlockLogService.insertHxpCabinetlockLog(hxpCabinetlockLog);
 
+                result.setLockLogId(hxpCabinetlockLog.getId());
             }else if(type == 2){
                 // 关锁之后要存储录像
-                /*HxpCabinetlockLog hxpCabinetlockLog = cabinetlockLogMapper.selectByLockId(aioCabinetLockVo.getSubId(), lockId);
+//                HxpCabinetlockLog hxpCabinetlockLog = cabinetlockLogMapper.selectByLockId(aioCabinetLockVo.getSubId(), Integer.parseInt(result.getLockId()));
+                HxpCabinetlockLog hxpCabinetlockLog = cabinetlockLogMapper.selectHxpCabinetlockLogById(aioCabinetLockVo.getLockLogId());
                 if(hxpCabinetlockLog != null){
                     hxpCabinetlockLog.setCloseLockTime(DateUtils.getNowDate());
                     hxpCabinetlockLog.setCloseLockVideo(closeLockVideo);
                     cabinetlockLogService.updateHxpCabinetlockLog(hxpCabinetlockLog);
                 }else {
-                    logger.error("柜锁关闭修改操作记录失败:" + aioCabinetLockVo.getSubId() + "---------" + lockId);
-                }*/
+                    logger.error("柜锁关闭修改操作记录失败:" + aioCabinetLockVo.getSubId() + "---------" + result.getLockId());
+                }
             }
         }
 
+
         result.setSuccess(success);
 
         return result;

+ 26 - 11
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpChemicalServiceImpl.java

@@ -1,5 +1,6 @@
 package com.zd.chemical.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.zd.chemical.domain.HxpAlarmRecord;
 import com.zd.chemical.domain.HxpChemical;
 import com.zd.chemical.domain.HxpChemicalClassify;
@@ -19,8 +20,10 @@ import com.zd.common.core.utils.StringUtils;
 import com.zd.common.datascope.annotation.DataScope;
 import com.zd.common.security.utils.DictUtils;
 import com.zd.common.security.utils.SaveUtil;
+import com.zd.system.api.alarm.domain.AlarmEntrty;
+import com.zd.system.api.alarm.domain.Routes;
+import com.zd.system.api.alarm.domain.SendTypes;
 import com.zd.system.api.domain.SysDictData;
-import com.zd.system.api.domain.SysUserTeaCherByExcel;
 import net.sourceforge.pinyin4j.PinyinHelper;
 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
@@ -30,12 +33,11 @@ import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombi
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.ServletException;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.atomic.DoubleAdder;
-import java.util.concurrent.atomic.LongAdder;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 化学品信息Service业务层处理
@@ -56,6 +58,7 @@ public class HxpChemicalServiceImpl implements IHxpChemicalService {
     @Autowired
     private HxpAlarmRecordMapper hxpAlarmRecordMapper;
 
+
     /**
      * 查询化学品信息
      *
@@ -493,19 +496,20 @@ public class HxpChemicalServiceImpl implements IHxpChemicalService {
     }
 
     @Override
-    public Map<Long, BigDecimal> queryCriticaliBySubId(List<Long> subIds) {
-        return hxpChemicalMapper.queryCriticaliBySubId(subIds);
+    public List<Map<String, Object>> queryCriticaliBySubId(List<Long> subIds) {
+        List<Map<String, Object>> map = hxpChemicalMapper.queryCriticaliBySubId(subIds);
+        return map;
     }
 
     @Override
     public void indicatorMonitoring() {
-        Map<Long, BigDecimal> map = hxpChemicalMapper.queryCriticaliBySubId(new ArrayList<>());
-        if(!map.isEmpty()){
+        List<Map<String, Object>> list = hxpChemicalMapper.queryCriticaliBySubId(new ArrayList<>());
+        if(!list.isEmpty()){
 
-            map.entrySet().forEach(a -> {
-                if(BigDecimal.valueOf(1L).compareTo(a.getValue()) >= 0){
+            list.forEach(map -> {
+                if(BigDecimal.valueOf(1L).compareTo(BigDecimal.valueOf(Double.parseDouble(map.get("criticali")+""))) >= 0){
 
-                    Map<String,Object> subInfo = hxpUserecordMapper.selectSubInfoById(a.getKey());
+                    Map<String,Object> subInfo = hxpUserecordMapper.selectSubInfoById(Long.parseLong(map.get("subId") + ""));
                     String safeUserId = "";
                     if(subInfo != null){
                         safeUserId = subInfo.get("safeUserId")==null?"":String.valueOf(subInfo.get("safeUserId"));
@@ -517,16 +521,27 @@ public class HxpChemicalServiceImpl implements IHxpChemicalService {
                     hxpAlarmRecord.setHasValid(1);
                     hxpAlarmRecord.setAlarmMode(3);
                     hxpAlarmRecord.setAlarmTime(DateUtils.getNowDate());
-                    hxpAlarmRecord.setSubId(a.getKey());
+                    hxpAlarmRecord.setSubId(Long.parseLong(map.get("subId") + ""));
                     hxpAlarmRecord.setHandlingStatus(1);
                     hxpAlarmRecord.setLiableUserIds(safeUserId);
 
                     hxpAlarmRecordMapper.insertHxpAlarmRecord(hxpAlarmRecord);
 
                     // TODO 此处需要发送短信通知
+
+                    String[] strings = Stream.of(new String[]{subInfo.get("phones")+""})
+                            .filter(a -> StrUtil.isNotBlank(a))
+                            .collect(Collectors.joining(","))
+                            .split(",");
+
+//                    AlarmEntrty alarmEntrty = new AlarmEntrty(Routes.NoticePush, strings, "房间内危化品已定为重大危险源,请确认安全存放量");
+//                    MessageBody messageBody = new MessageBody();
+//                    messageBody.setData(alarmEntrty);
+//                    commonSend.send("alarm/"+map.get("subId"),messageBody, SendMode.DISTINCT);
                 }
             });
 
+
         }
     }
 }

+ 17 - 1
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpStockServiceImpl.java

@@ -83,6 +83,8 @@ public class HxpStockServiceImpl implements IHxpStockService {
     private IHxpClassifyConfigService hxpClassifyConfigService;
     @Autowired
     private RemoteAlarmService remoteAlarmService;
+    @Autowired
+    private HxpCabinetlockLogMapper hxpCabinetlockLogMapper;
 
     /**
      * 查询库存管理
@@ -230,6 +232,13 @@ public class HxpStockServiceImpl implements IHxpStockService {
 
         hxpStock.setSuttle(hxpStock.getOutUsages().subtract(Optional.ofNullable(hxpStock.getTare()).orElse(BigDecimal.ZERO)));
 
+        if(hxpStock.getLockLogId() != null){
+            HxpCabinetlockLog hxpCabinetlockLog = new HxpCabinetlockLog();
+            hxpCabinetlockLog.setId(hxpStock.getLockLogId());
+            hxpCabinetlockLog.setStockId(hxpStock.getId());
+            hxpCabinetlockLogMapper.updateHxpCabinetlockLog(hxpCabinetlockLog);
+        }
+
         return hxpStock;
     }
 
@@ -517,7 +526,7 @@ public class HxpStockServiceImpl implements IHxpStockService {
 
             subMsg.put(hxpStock.getSubId(), subMsg.get(hxpStock.getSubId()) == null ? "" : subMsg.get(hxpStock.getSubId())+"," + hxpStock.getChemicalName());
             subNameMap.put(hxpStock.getSubId(),hxpStock.getSubName());
-            // TODO 报警记录
+            // 报警记录
             HxpAlarmRecord hxpAlarmRecord = new HxpAlarmRecord();
             hxpAlarmRecord.setAlarmContent(hxpStock.getSubName()+"实验室,化学品("+hxpStock.getChemicalName() + ")还有3天过期,请尽快确认处理。");
             hxpAlarmRecord.setAlarmType(1);
@@ -608,5 +617,12 @@ public class HxpStockServiceImpl implements IHxpStockService {
 
         // 出库将 已过期,即将过期,超时未归还 报警信息自动处理
         hxpAlarmRecordMapper.updateByOutStock(hxpStock.getId());
+
+        if(hxpStock.getLockLogId() != null){
+            HxpCabinetlockLog hxpCabinetlockLog = new HxpCabinetlockLog();
+            hxpCabinetlockLog.setId(hxpStock.getLockLogId());
+            hxpCabinetlockLog.setStockId(hxpStock.getId());
+            hxpCabinetlockLogMapper.updateHxpCabinetlockLog(hxpCabinetlockLog);
+        }
     }
 }

+ 19 - 4
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpUserecordServiceImpl.java

@@ -1,11 +1,9 @@
 package com.zd.chemical.service.impl;
 
-import com.zd.chemical.domain.HxpAlarmRecord;
-import com.zd.chemical.domain.HxpClassifyConfig;
-import com.zd.chemical.domain.HxpStock;
-import com.zd.chemical.domain.HxpUserecord;
+import com.zd.chemical.domain.*;
 import com.zd.chemical.domain.vo.*;
 import com.zd.chemical.mapper.HxpAlarmRecordMapper;
+import com.zd.chemical.mapper.HxpCabinetlockLogMapper;
 import com.zd.chemical.mapper.HxpStockMapper;
 import com.zd.chemical.mapper.HxpUserecordMapper;
 import com.zd.chemical.service.IHxpClassifyConfigService;
@@ -58,6 +56,8 @@ public class HxpUserecordServiceImpl implements IHxpUserecordService {
     private RemoteMessageContentService remoteMessageContentService;
     @Autowired
     private HxpAlarmRecordMapper hxpAlarmRecordMapper;
+    @Autowired
+    private HxpCabinetlockLogMapper hxpCabinetlockLogMapper;
 
     /**
      * 查询化学品使用记录
@@ -136,6 +136,14 @@ public class HxpUserecordServiceImpl implements IHxpUserecordService {
         hxpUserecord.setCollectTime(DateUtils.getNowDate());
         hxpUserecord.setUseStatus(1);
         hxpUserecordMapper.insertHxpUserecord(hxpUserecord);
+
+        if(hxpUserecord.getLockLogId() != null){
+            HxpCabinetlockLog hxpCabinetlockLog = new HxpCabinetlockLog();
+            hxpCabinetlockLog.setId(hxpUserecord.getLockLogId());
+            hxpCabinetlockLog.setUserecordId(hxpUserecord.getId());
+            hxpCabinetlockLogMapper.updateHxpCabinetlockLog(hxpCabinetlockLog);
+        }
+
         return hxpUserecord;
     }
 
@@ -187,6 +195,13 @@ public class HxpUserecordServiceImpl implements IHxpUserecordService {
         // 归还自动处理超时未归还报警
         hxpAlarmRecordMapper.updateByReturnUserecord(hxpUserecord.getId());
 
+        if(hxpUserecord.getLockLogId() != null){
+            HxpCabinetlockLog hxpCabinetlockLog = new HxpCabinetlockLog();
+            hxpCabinetlockLog.setId(hxpUserecord.getLockLogId());
+            hxpCabinetlockLog.setUserecordId(hxpUserecord.getId());
+            hxpCabinetlockLogMapper.updateHxpCabinetlockLog(hxpCabinetlockLog);
+        }
+
         return hxpUserecord;
     }
 

+ 81 - 40
zd-modules/zd-chemical/src/main/resources/mapper/chemical/HxpCabinetlockLogMapper.xml

@@ -1,29 +1,57 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zd.chemical.mapper.HxpCabinetlockLogMapper">
 
     <resultMap type="com.zd.chemical.domain.HxpCabinetlockLog" id="HxpCabinetlockLogResult">
-        <result property="id"    column="id"    />
-        <result property="cabinetlockId"    column="cabinetlock_id"    />
-        <result property="unLockTime"    column="un_lock_time"    />
-        <result property="closeLockTime"    column="close_lock_time"    />
-        <result property="operationType"    column="operation_type"    />
-        <result property="unLockVideo"    column="un_lock_video"    />
-        <result property="closeLockVideo"    column="close_lock_video"    />
-        <result property="userIds"    column="user_ids"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="createBy"    column="create_by"    />
+        <result property="id" column="id"/>
+        <result property="cabinetlockId" column="cabinetlock_id"/>
+        <result property="unLockTime" column="un_lock_time"/>
+        <result property="closeLockTime" column="close_lock_time"/>
+        <result property="operationType" column="operation_type"/>
+        <result property="unLockVideo" column="un_lock_video"/>
+        <result property="closeLockVideo" column="close_lock_video"/>
+        <result property="userIds" column="user_ids"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createBy" column="create_by"/>
+
+        <result property="stockId" column="stock_id"/>
+        <result property="userecordId" column="userecord_id"/>
     </resultMap>
 
     <sql id="selectHxpCabinetlockLogVo">
-        select id, cabinetlock_id, un_lock_time, close_lock_time, operation_type, un_lock_video, close_lock_video, user_ids, create_time, create_by from hxp_cabinetlock_log
+        select id,
+               cabinetlock_id,
+               un_lock_time,
+               close_lock_time,
+               operation_type,
+               un_lock_video,
+               close_lock_video,
+               user_ids,
+               create_time,
+               create_by,
+               stock_id,
+               userecord_id
+        from hxp_cabinetlock_log
     </sql>
     <sql id="selectHxpCabinetlockLogListVo">
-        select t.id, t.cabinetlock_id, t.un_lock_time, t.close_lock_time, t.operation_type, t.un_lock_video, t.close_lock_video, t.user_ids, t.create_time, t.create_by from hxp_cabinetlock_log as t
+        select t.id,
+               t.cabinetlock_id,
+               t.un_lock_time,
+               t.close_lock_time,
+               t.operation_type,
+               t.un_lock_video,
+               t.close_lock_video,
+               t.user_ids,
+               t.create_time,
+               t.create_by,
+               t.stock_id,
+               t.userecord_id
+        from hxp_cabinetlock_log as t
     </sql>
-    <select id="selectHxpCabinetlockLogList" parameterType="com.zd.chemical.domain.vo.HxpCabinetlockLogSearch" resultType="com.zd.chemical.domain.vo.HxpCabinetlockLogVo">
+    <select id="selectHxpCabinetlockLogList" parameterType="com.zd.chemical.domain.vo.HxpCabinetlockLogSearch"
+            resultType="com.zd.chemical.domain.vo.HxpCabinetlockLogVo">
         select DISTINCT
         cl.un_lock_time unLockTime,
         cl.close_lock_time closeLockTime,
@@ -41,9 +69,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         end operationTypeContent,
         cl.un_lock_video unLockVideo,
         cl.close_lock_video closeLockVideo,
-        (select group_concat(ur.nick_name SEPARATOR '、') from sys_user ur where find_in_set(ur.user_id, cl.user_ids)) operationNames
+        (select group_concat(ur.nick_name SEPARATOR '、') from sys_user ur where find_in_set(ur.user_id, cl.user_ids))
+        operationNames
         from
-        hxp_cabinetlock_log cl  left join sys_user ur on FIND_IN_SET(ur.user_id, cl.user_ids)
+        hxp_cabinetlock_log cl left join sys_user ur on FIND_IN_SET(ur.user_id, cl.user_ids)
         <where>
             <if test="cabinetlockId != null ">
                 and cl.cabinetlock_id = #{cabinetlockId}
@@ -87,44 +116,51 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectByLockId" resultType="com.zd.chemical.domain.HxpCabinetlockLog">
         <include refid="selectHxpCabinetlockLogVo"/>
         where cabinetlock_id = (select id from lab_hardware where subject_id = #{subId} and lock_id = #{lockId} limit 1)
-            and close_lock_video is null
+        and close_lock_video is null
         order by create_time desc
         limit 1
     </select>
 
-    <insert id="insertHxpCabinetlockLog" parameterType="com.zd.chemical.domain.HxpCabinetlockLog" useGeneratedKeys="true" keyProperty="id">
+    <insert id="insertHxpCabinetlockLog" parameterType="com.zd.chemical.domain.HxpCabinetlockLog"
+            useGeneratedKeys="true" keyProperty="id">
         insert into hxp_cabinetlock_log
         <trim prefix="(" suffix=")" suffixOverrides=",">
-    <if test="cabinetlockId != null">cabinetlock_id,</if>
+            <if test="cabinetlockId != null">cabinetlock_id,</if>
 
-    <if test="unLockTime != null">un_lock_time,</if>
+            <if test="unLockTime != null">un_lock_time,</if>
 
-    <if test="closeLockTime != null">close_lock_time,</if>
+            <if test="closeLockTime != null">close_lock_time,</if>
 
-    <if test="operationType != null">operation_type,</if>
+            <if test="operationType != null">operation_type,</if>
 
-    <if test="unLockVideo != null">un_lock_video,</if>
+            <if test="unLockVideo != null">un_lock_video,</if>
 
-    <if test="closeLockVideo != null">close_lock_video,</if>
+            <if test="closeLockVideo != null">close_lock_video,</if>
 
-    <if test="userIds != null">user_ids,</if>
+            <if test="userIds != null">user_ids,</if>
 
-    <if test="createTime != null">create_time,</if>
+            <if test="createTime != null">create_time,</if>
 
-    <if test="createBy != null">create_by,</if>
+            <if test="createBy != null">create_by,</if>
 
-         </trim>
+            <if test="stockId != null">stock_id,</if>
+            <if test="userecordId != null">userecord_id,</if>
+
+
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-    <if test="cabinetlockId != null">#{cabinetlockId},</if>
-    <if test="unLockTime != null">#{unLockTime},</if>
-    <if test="closeLockTime != null">#{closeLockTime},</if>
-    <if test="operationType != null">#{operationType},</if>
-    <if test="unLockVideo != null">#{unLockVideo},</if>
-    <if test="closeLockVideo != null">#{closeLockVideo},</if>
-    <if test="userIds != null">#{user_ids},</if>
-    <if test="createTime != null">#{createTime},</if>
-    <if test="createBy != null">#{createBy},</if>
-         </trim>
+            <if test="cabinetlockId != null">#{cabinetlockId},</if>
+            <if test="unLockTime != null">#{unLockTime},</if>
+            <if test="closeLockTime != null">#{closeLockTime},</if>
+            <if test="operationType != null">#{operationType},</if>
+            <if test="unLockVideo != null">#{unLockVideo},</if>
+            <if test="closeLockVideo != null">#{closeLockVideo},</if>
+            <if test="userIds != null">#{user_ids},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="stockId != null">#{stockId},</if>
+            <if test="userecordId != null">#{userecordId},</if>
+        </trim>
     </insert>
 
     <update id="updateHxpCabinetlockLog" parameterType="com.zd.chemical.domain.HxpCabinetlockLog">
@@ -139,12 +175,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="userIds != null">user_ids = #{userIds},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
+
+            <if test="stockId != null">stock_id = #{stockId},</if>
+            <if test="userecordId != null">userecord_id = #{userecordId},</if>
         </trim>
         where id = #{id}
     </update>
 
     <delete id="deleteHxpCabinetlockLogById">
-        delete from hxp_cabinetlock_log where id = #{id}
+        delete
+        from hxp_cabinetlock_log
+        where id = #{id}
     </delete>
 
     <delete id="deleteHxpCabinetlockLogByIds">

+ 1 - 1
zd-modules/zd-chemical/src/main/resources/mapper/chemical/HxpChemicalMapper.xml

@@ -462,7 +462,7 @@
                     s.status != 2 and s.status != 3
                     <if test="subIds != null and subIds.size > 0">
                         and jo.sub_id in
-                        <foreach item="id" collection="list" open="(" separator="," close=")">
+                        <foreach item="id" collection="subIds" open="(" separator="," close=")">
                             #{id}
                         </foreach>
                     </if>

+ 7 - 2
zd-modules/zd-chemical/src/main/resources/mapper/chemical/HxpStockMapper.xml

@@ -339,12 +339,14 @@
                 CONCAT(ifnull((SELECT ur.nick_name FROM sys_user ur WHERE ur.user_id = sk.join_one_user), ""),
                 case when sk.join_two_user is not null then '、' else '' end,
                 ifnull((SELECT ur.nick_name FROM sys_user ur WHERE ur.user_id = sk.join_two_user), "")) verify,
-            sk.join_video as joinVideo
+            sk.join_video as joinVideo,
+            ll.close_lock_video
 
         FROM hxp_stock sk LEFT JOIN hxp_chemical_join_cabinet cjc ON sk.join_id = cjc.id
         LEFT JOIN hxp_chemical cl ON cjc.chemical_id = cl.id
         LEFT JOIN hxp_cabinet ct ON ct.id = cjc.cabinet_id
         LEFT JOIN lab_subject st ON ct.sub_id = st.id
+        left join hxp_cabinetlock_log ll on sk.id = ll.stock_id and ll.operation_type = 1
         <where>
             <if test="searchValue != null  and searchValue != ''">
                 and (cl.chemical_name like concat('%',#{searchValue},'%')
@@ -420,12 +422,15 @@
                CONCAT(ifnull((SELECT ur.nick_name FROM sys_user ur WHERE ur.user_id = sk.out_user_id), "")) operator,
                 CONCAT(ifnull((SELECT ur.nick_name FROM sys_user ur WHERE ur.user_id = sk.out_one_user), ""),
                 case when sk.out_two_user is not null then '、' else '' end,
-                ifnull((SELECT ur.nick_name FROM sys_user ur WHERE ur.user_id = sk.out_two_user), "")) verify
+                ifnull((SELECT ur.nick_name FROM sys_user ur WHERE ur.user_id = sk.out_two_user), "")) verify,
+                ll.close_lock_video
+
 
         FROM hxp_stock sk LEFT JOIN hxp_chemical_join_cabinet cjc ON sk.join_id = cjc.id
         LEFT JOIN hxp_chemical cl ON cjc.chemical_id = cl.id
         LEFT JOIN hxp_cabinet ct ON ct.id = cjc.cabinet_id
         LEFT JOIN lab_subject st ON ct.sub_id = st.id
+        left join hxp_cabinetlock_log ll on sk.id = ll.stock_id and ll.operation_type = 2
         <where>
             and sk.status IN (2, 3)
             <if test="searchValue != null  and searchValue != ''">

+ 14 - 8
zd-modules/zd-chemical/src/main/resources/mapper/chemical/HxpUserecordMapper.xml

@@ -266,14 +266,16 @@
             <result column="outUsers" property="outUsers" />
             <result column="outType" property="outType" />
             <result column="outVideo" property="outVideo" />
+            <result column="outLockVideo" property="outLockVideo" />
+        </association>
+        <association property="returnDetail" javaType="com.zd.chemical.domain.vo.HxpUserecordDetailVo$ReturnDetail">
+            <result column="useStockNum" property="useStockNum" />
+            <result column="returnSuttle" property="returnSuttle" />
+            <result column="backUsers" property="backUsers" />
+            <result column="returnType" property="returnType" />
+            <result column="returnVideo" property="returnVideo" />
+            <result column="returnLockVideo" property="returnLockVideo" />
         </association>
-<!--        <association property="returnDetail" javaType="com.zd.chemical.domain.vo.HxpUserecordDetailVo$ReturnDetail">-->
-<!--            <result column="useStockNum" property="useStockNum" />-->
-<!--            <result column="returnSuttle" property="returnSuttle" />-->
-<!--            <result column="backUsers" property="backUsers" />-->
-<!--            <result column="returnType" property="returnType" />-->
-<!--            <result column="returnVideo" property="returnVideo" />-->
-<!--        </association>-->
 
     </resultMap>
 
@@ -318,12 +320,16 @@
                    case when hu.back_two_user is not null then '、' else '' end,
                    ifnull((SELECT ur.nick_name FROM sys_user ur WHERE ur.user_id = hu.back_two_user), "")) backUsers,
             hu.return_type returnType,
-            hu.return_video returnVideo
+            hu.return_video returnVideo,
+            llo.close_lock_video as outLockVideo,
+            llr.close_lock_video as returnLockVideo
 
         from hxp_userecord hu left join hxp_stock hs on hu.stock_id = hs.id
             left join hxp_chemical_join_cabinet cjc on hs.join_id = cjc.id
             left join hxp_chemical hc on cjc.chemical_id = hc.id
             left join hxp_cabinet ca on cjc.cabinet_id = ca.id
+            left join hxp_cabinetlock_log llo on hu.id = llo.userecord_id and llo.operation_type = 3
+            left join hxp_cabinetlock_log llr on hu.id = llr.userecord_id and llr.operation_type = 4
         where hu.id = #{id}
     </select>
 

+ 3 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/vo/LabSubjectVO.java

@@ -99,7 +99,7 @@ public class LabSubjectVO extends LabSubject {
     private String adminNameAndPhone;
 
     @ApiModelProperty(value = "化学品临界值危险指标")
-    private BigDecimal riskIndicator;
+    private String riskIndicator = "暂无化学品";
 
     public LabSubjectVO() {
     }
@@ -311,11 +311,11 @@ public class LabSubjectVO extends LabSubject {
         this.safeUserNameAdminPhone = safeUserNameAdminPhone;
     }
 
-    public BigDecimal getRiskIndicator() {
+    public String getRiskIndicator() {
         return riskIndicator;
     }
 
-    public void setRiskIndicator(BigDecimal riskIndicator) {
+    public void setRiskIndicator(String riskIndicator) {
         this.riskIndicator = riskIndicator;
     }
 

+ 8 - 6
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectManagerService.java

@@ -517,14 +517,16 @@ public class LabSubjectManagerService {
         // 实验室化学品临界量计算
         R r = remoteChemicalService.queryCriticaliBySubId(subIds);
         if(r.getCode() == HttpStatus.SUCCESS){
-            Map<Long, BigDecimal> map = (Map<Long, BigDecimal>) r.getData();
-            map.entrySet().forEach(a -> {
-                labSubjects.forEach(s -> {
-                    if(Objects.equals(s.getId(), a.getKey())){
-                        s.setRiskIndicator(a.getValue());
+            List<Map<String, Object>> list = (List<Map<String, Object>>) r.getData();
+            list.forEach(map -> {
+                for (LabSubjectVO s : labSubjects) {
+                    if (Objects.equals(s.getId(), Long.parseLong(map.get("subId") + ""))) {
+                        s.setRiskIndicator(map.get("criticali") + "");
+                        break;
                     }
-                });
+                }
             });
+
         }