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

Merge branch 'master' of http://192.168.1.43:3000/git/sass-lab-distributed-java

zhuchangxue лет назад: 3
Родитель
Сommit
87126aff17
51 измененных файлов с 660 добавлено и 205 удалено
  1. 1 1
      zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/RemoteStockService.java
  2. 2 1
      zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/factory/RemoteStockFallbackFactory.java
  3. 21 0
      zd-api/zd-api-system/src/main/java/com/zd/system/api/laboratory/domain/SensorFunctionStatus.java
  4. 4 0
      zd-common/zd-common-core/pom.xml
  5. 33 0
      zd-common/zd-common-core/src/main/java/com/zd/common/core/config/WebConfig.java
  6. 17 4
      zd-common/zd-common-core/src/main/java/com/zd/common/core/web/domain/BaseBean.java
  7. 22 0
      zd-common/zd-common-security/src/main/java/com/zd/common/security/utils/SaveUtil.java
  8. 2 2
      zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/controller/AlarmRecordController.java
  9. 1 1
      zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/service/IAlarmRecordService.java
  10. 2 2
      zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/service/impl/AlarmRecordServiceImpl.java
  11. 2 8
      zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/domain/BottleStorage.java
  12. 1 8
      zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/domain/BottleStorageOut.java
  13. 4 0
      zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/domain/RfidTag.java
  14. 0 3
      zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/domain/UseRecord.java
  15. 7 8
      zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/domain/UsegasApply.java
  16. 3 1
      zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/vo/AlarmRecordVo.java
  17. 9 3
      zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/vo/BottleStorageErrorVo.java
  18. 11 6
      zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/vo/UseRecordVo.java
  19. 129 0
      zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/vo/UsegasApplyDetailVo.java
  20. 3 0
      zd-modules/zd-bottle-parent/zd-bottle-api/src/main/resources/META-INF/spring.factories
  21. 5 6
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/BottleStorageController.java
  22. 3 2
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/BottleStorageErrorController.java
  23. 2 0
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/BottleStorageOutController.java
  24. 3 8
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/RfidTagController.java
  25. 3 6
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/UseRecordController.java
  26. 91 5
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/UsegasApplyController.java
  27. 2 0
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/UsegasAuditRecordController.java
  28. 1 1
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/RfidTagService.java
  29. 1 0
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/UsegasApplyService.java
  30. 5 9
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/AlarmRecordServiceImpl.java
  31. 14 10
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/BottleStorageErrorServiceImpl.java
  32. 2 2
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/BottleStorageOutServiceImpl.java
  33. 6 3
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/BottleStorageServiceImpl.java
  34. 38 6
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/RfidTagServiceImpl.java
  35. 23 16
      zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/UseRecordServiceImpl.java
  36. 2 0
      zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/AlarmRecordMapper.xml
  37. 2 0
      zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/BottleStorageErrorMapper.xml
  38. 7 8
      zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/BottleStorageMapper.xml
  39. 7 5
      zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/BottleStorageOutMapper.xml
  40. 4 0
      zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/RfidTagMapper.xml
  41. 12 10
      zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/UseRecordMapper.xml
  42. 2 0
      zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/UsegasAuditRecordMapper.xml
  43. 2 2
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpStockController.java
  44. 1 2
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/IHxpStockService.java
  45. 14 8
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpStockServiceImpl.java
  46. 60 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectManagerService.java
  47. 1 2
      zd-modules/zd-netty/src/main/java/com/zd/netty/base/FridConsumer.java
  48. 2 2
      zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDClientImpl.java
  49. 12 6
      zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDServerImpl.java
  50. 5 3
      zd-modules/zd-netty/src/main/java/com/zd/netty/service/ISendService.java
  51. 54 34
      zd-modules/zd-netty/src/main/java/com/zd/netty/service/impl/SendServiceImpl.java

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

@@ -16,7 +16,7 @@ public interface RemoteStockService {
 
 
     @PostMapping(value = "/hxpStock/RFIDCheck")
-    public void rfidCheck(@RequestBody InventoryTag tag);
+    public boolean rfidCheck(@RequestBody InventoryTag tag);
 
     @GetMapping(value = "/hxpStock/expireCheck")
     public void expireCheck();

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

@@ -17,8 +17,9 @@ public class RemoteStockFallbackFactory implements FallbackFactory<RemoteStockSe
         logger.error("化学品服务调用失败:{}", throwable.getMessage());
         return new RemoteStockService() {
             @Override
-            public void rfidCheck(InventoryTag tag) {
+            public boolean rfidCheck(InventoryTag tag) {
                 logger.error("保存调用失败:{}" ,throwable.getMessage());
+                return false;
             }
 
             @Override

+ 21 - 0
zd-api/zd-api-system/src/main/java/com/zd/system/api/laboratory/domain/SensorFunctionStatus.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.zd.common.core.enums.SenseType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -64,6 +65,10 @@ public class SensorFunctionStatus extends BasicFunctionStatus {
 
     private String sendDate;
 
+    private SenseType type;
+
+    private String  configName;
+
     public SensorFunctionStatus() {
         //获取当前时间
         LocalDateTime newTime = LocalDateTime.now();
@@ -160,4 +165,20 @@ public class SensorFunctionStatus extends BasicFunctionStatus {
     public void setId(Long id) {
         this.id = id;
     }
+
+    public SenseType getType() {
+        return type;
+    }
+
+    public void setType(SenseType type) {
+        this.type = type;
+    }
+
+    public String getConfigName() {
+        return configName;
+    }
+
+    public void setConfigName(String configName) {
+        this.configName = configName;
+    }
 }

+ 4 - 0
zd-common/zd-common-core/pom.xml

@@ -126,6 +126,10 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-webmvc</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 33 - 0
zd-common/zd-common-core/src/main/java/com/zd/common/core/config/WebConfig.java

@@ -0,0 +1,33 @@
+package com.zd.common.core.config;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+
+    /**
+     * 添加Long转json精度丢失的配置
+     */
+    @Override
+    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+        MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
+        ObjectMapper objectMapper = new ObjectMapper();
+        SimpleModule simpleModule = new SimpleModule();
+        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
+        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
+        objectMapper.registerModule(simpleModule);
+        jackson2HttpMessageConverter.setObjectMapper(objectMapper);
+        converters.add(0,jackson2HttpMessageConverter);
+    }
+}

+ 17 - 4
zd-common/zd-common-core/src/main/java/com/zd/common/core/web/domain/BaseBean.java

@@ -23,11 +23,22 @@ public class BaseBean implements Serializable {
     /**
      * 数据主键
      */
-    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "${comment}")
     private Long id;
 
     /**
+     * 操作人Id -只读
+     */
+    @ApiModelProperty("操作人Id")
+    private Long userId;
+
+    /**
+     * 部门id -只读
+     */
+    @ApiModelProperty("部门id")
+    private Long deptId;
+
+    /**
      * 创建者 -只读
      */
     @JsonProperty(access = JsonProperty.Access.READ_ONLY)
@@ -75,16 +86,18 @@ public class BaseBean implements Serializable {
     /**
      * 设置基本属性
      *
-     * @param userCode        用户编码
+     * @param userCode 用户编码
      */
-    public void setCommonValue(String userCode) {
+    public void setCommonValue(String userCode, Long userId, Long deptId) {
         Date currentDate = CalendarUtil.calendar().getTime();
         if (this.isNewRecord()) {
             this.setId(IdGen.snowflakeId());
             this.setNewRecord(true);
             this.createBy = userCode;
+            this.userId = userId;
+            this.deptId = deptId;
             this.createTime = currentDate;
-        }else {
+        } else {
             this.updateBy = userCode;
             this.updateTime = currentDate;
         }

+ 22 - 0
zd-common/zd-common-security/src/main/java/com/zd/common/security/utils/SaveUtil.java

@@ -3,6 +3,7 @@ package com.zd.common.security.utils;
 import com.zd.common.core.utils.DateUtils;
 import com.zd.common.core.utils.SecurityUtils;
 import com.zd.common.core.utils.SpringUtils;
+import com.zd.common.core.web.domain.BaseBean;
 import com.zd.common.core.web.domain.BaseEntity;
 import com.zd.common.security.service.TokenService;
 import com.zd.system.api.domain.SysUser;
@@ -40,4 +41,25 @@ public class SaveUtil {
             o.setDeptName(sysUser.getDept().getDeptName());
         }
     }
+
+    public static void setCommonAttr(BaseBean o) {
+        //设置创建时间
+        o.setCreateTime(DateUtils.getNowDate());
+        //-2 为内部用户 不再处理
+        if (Long.valueOf("-2").equals(o.getUserId())) {
+            return;
+        }
+
+        //设置创建人
+        o.setCreateBy(SecurityUtils.getUsername());
+        o.setUserId(SecurityUtils.getUserId());
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser();
+        if (null == loginUser) {
+            return;
+        }
+        SysUser sysUser = loginUser.getSysUser();
+        if (sysUser != null && sysUser.getDept() != null) {
+            o.setDeptId(sysUser.getDept().getDeptId());
+        }
+    }
 }

+ 2 - 2
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/controller/AlarmRecordController.java

@@ -29,6 +29,7 @@ import java.util.stream.Collectors;
 
 /**
  * 报警记录Controller
+ * @author Administrator
  */
 @RestController
 @Api(tags = "【报警记录】")
@@ -97,7 +98,6 @@ public class AlarmRecordController extends BaseController<AlarmRecord> {
     @Log(title = "识别器新增报警记录", businessType = BusinessType.INSERT)
     @PostMapping("remote/add")
     public R<Boolean> remoteAdd(@RequestBody InventoryTag tag) {
-        alarmRecordService.remoteAdd(tag);
-        return R.ok();
+        return R.ok(alarmRecordService.remoteAdd(tag));
     }
 }

+ 1 - 1
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/service/IAlarmRecordService.java

@@ -50,7 +50,7 @@ public interface IAlarmRecordService {
      *
      * @param tag 标签值
      */
-    void remoteAdd(InventoryTag tag);
+    boolean remoteAdd(InventoryTag tag);
 
     /**
      * 报警记录查询

+ 2 - 2
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/service/impl/AlarmRecordServiceImpl.java

@@ -244,8 +244,8 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void remoteAdd(InventoryTag tag) {
-        insertAlarmRecord(new AlarmRecord().setElectronicTag(tag.getEpc()),tag.getRemoteLabHardware());
+    public boolean remoteAdd(InventoryTag tag) {
+        return insertAlarmRecord(new AlarmRecord().setElectronicTag(tag.getEpc()),tag.getRemoteLabHardware())==1;
     }
 
     @Override

+ 2 - 8
zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/domain/BottleStorage.java

@@ -72,17 +72,11 @@ public class BottleStorage extends BaseBean {
     @ApiModelProperty("入库状态 1闲置 2使用 3出库")
     private Integer storageStatus;
 
-    @ApiModelProperty("入库人id")
-    private Long inUserId;
-
     @ApiModelProperty("入库人姓名")
-    private String inUserName;
+    private String userName;
 
     @ApiModelProperty("入库人联系方式")
-    private String inUserPhone;
-
-    @ApiModelProperty("部门id")
-    private Long deptId;
+    private String userPhone;
 
     @ApiModelProperty("部门名称")
     private String deptName;

+ 1 - 8
zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/domain/BottleStorageOut.java

@@ -9,7 +9,6 @@ import lombok.Setter;
 import lombok.experimental.Accessors;
 
 import java.math.BigDecimal;
-import java.util.Date;
 
 
 /**
@@ -28,13 +27,7 @@ import java.util.Date;
 public class BottleStorageOut extends BaseBean{
 
     @ApiModelProperty("操作人")
-    private String applyUserName;
-
-    @ApiModelProperty("操作人Id")
-    private Long applyUserid;
-
-    @ApiModelProperty("部门id")
-    private Long deptId;
+    private String userName;
 
     @ApiModelProperty("部门名称")
     private String deptName;

+ 4 - 0
zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/domain/RfidTag.java

@@ -25,6 +25,10 @@ import org.hibernate.validator.constraints.Length;
 @EqualsAndHashCode(callSuper = true)
 public class RfidTag extends BaseBean {
 
+    @Excel(name = "授权码")
+    @ApiModelProperty("授权码")
+    private String authCode;
+
     @Excel(name = "标签内码")
     @Length(message = "标签内码长度不能超过50")
     @ApiModelProperty("标签内码")

+ 0 - 3
zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/domain/UseRecord.java

@@ -30,9 +30,6 @@ public class UseRecord extends BaseBean {
     @ApiModelProperty("联系人")
     private String contacts;
 
-    @ApiModelProperty("使用人id")
-    private Long userId;
-
     @ApiModelProperty("联系方式")
     private String phone;
 

+ 7 - 8
zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/domain/UsegasApply.java

@@ -10,6 +10,7 @@ import lombok.Setter;
 import lombok.experimental.Accessors;
 
 
+import javax.validation.constraints.NotNull;
 import java.util.Date;
 
 /**
@@ -36,33 +37,31 @@ public class UsegasApply extends BaseBean {
     @ApiModelProperty("申请人")
     private String applyUser;
 
-    @ApiModelProperty("申请人id")
-    private Long userId;
-
-    @ApiModelProperty("部门id")
-    private Long deptId;
-
     @ApiModelProperty("部门名称")
     private String deptName;
 
     @ApiModelProperty("联系方式")
+    @NotNull(message = "联系方式不能为空!")
     private String phone;
 
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty("期限开始")
     private Date startTime;
 
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty("期限结束")
+    @NotNull(message = "使用期限不能为空!")
     private Date endTime;
 
     @ApiModelProperty("气体用途")
+    @NotNull(message = "气体用途不能为空!")
     private String gasUse;
 
     @ApiModelProperty("申请凭证")
     private String applyCertificate;
 
     @ApiModelProperty("安全措施")
+    @NotNull(message = "安全措施不能为空!")
     private String safetyPrecautions;
 
     @ApiModelProperty("气体id")

+ 3 - 1
zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/vo/AlarmRecordVo.java

@@ -33,9 +33,11 @@ public class AlarmRecordVo {
     @ApiModelProperty(value = "数据主键,关联其他业务表中的数据id")
     private Long masterId;
 
+    @Excel(name = "标签码" )
     @ApiModelProperty("电子标签")
     private String electronicTag;
 
+    @Excel(name = "气瓶编号" )
     @ApiModelProperty("气瓶编号")
     private String airNumber;
     /**
@@ -47,7 +49,7 @@ public class AlarmRecordVo {
     /**
      * 气瓶规格
      */
-    @Excel(name = "气瓶级别/规格" )
+    @Excel(name = "气瓶规格" )
     @ApiModelProperty(value = "气瓶规格")
     private String configName;
 

+ 9 - 3
zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/vo/BottleStorageErrorVo.java

@@ -48,6 +48,14 @@ public class BottleStorageErrorVo {
     @ApiModelProperty("实验室名称")
     private String subjectName;
 
+    @Excel(name = "标签码" )
+    @ApiModelProperty("电子标签")
+    private String electronicTag;
+
+    @Excel(name = "气瓶编号" )
+    @ApiModelProperty("气瓶编号")
+    private String airNumber;
+
     /**
      * 气瓶入库ID
      */
@@ -56,7 +64,7 @@ public class BottleStorageErrorVo {
     @Excel(name = "气体名称")
     @ApiModelProperty(value = "气体名称")
     private String airName;
-    @Excel(name = "气体级别/规格")
+    @Excel(name = "气体规格")
     @ApiModelProperty(value = "气瓶规格")
     private String configName;
     /**
@@ -92,8 +100,6 @@ public class BottleStorageErrorVo {
     /** 气体组成(冗余字段) */
     @ApiModelProperty(value = "气体组成")
     private String airConstituents;
-    @ApiModelProperty(value = "气瓶编号")
-    private String airNumber;
 
     private List<UseRecordVo> recordVos;
 

+ 11 - 6
zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/vo/UseRecordVo.java

@@ -28,6 +28,7 @@ public class UseRecordVo {
      */
     @ApiModelProperty(value = "${comment}")
     private Long id;
+
     private Long userId;
     /**
      * 联系人
@@ -41,12 +42,16 @@ public class UseRecordVo {
     @Excel(name = "联系方式")
     @ApiModelProperty(value = "联系方式")
     private String phone;
-    /**
-     * 实验地点
-     */
-    @Excel(name = "实验地点")
-    @ApiModelProperty(value = "实验地点")
-    private String location;
+
+
+    @Excel(name = "标签码" )
+    @ApiModelProperty("电子标签")
+    private String electronicTag;
+
+    @Excel(name = "气瓶编号" )
+    @ApiModelProperty("气瓶编号")
+    private String airNumber;
+
     /**
      * 气瓶入库ID
      */

+ 129 - 0
zd-modules/zd-bottle-parent/zd-bottle-api/src/main/java/com/zd/bottle/vo/UsegasApplyDetailVo.java

@@ -0,0 +1,129 @@
+package com.zd.bottle.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zd.bottle.domain.UsegasAuditRecord;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+@ApiModel("用气资格详情")
+public class UsegasApplyDetailVo {
+
+    @ApiModelProperty(value = "${comment}")
+    private Long id;
+
+    @ApiModelProperty(value = "使用气体")
+    private String useGasName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("期限开始")
+    private Date startTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("使用期限")
+    private Date endTime;
+
+    @ApiModelProperty("气瓶用途")
+    private String gasUse;
+
+    @ApiModelProperty("主要安全措施")
+    private String safetyPrecautions;
+
+    @ApiModelProperty("用气申请表")
+    private String applyCertificate;
+
+    @ApiModelProperty("申请人")
+    private String applyUser;
+
+    @ApiModelProperty("联系方式")
+    private String phone;
+
+    @ApiModelProperty("审核记录")
+    private List<UsegasAuditRecord> details;
+
+    public String getUseGasName() {
+        return useGasName;
+    }
+
+    public void setUseGasName(String useGasName) {
+        this.useGasName = useGasName;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getGasUse() {
+        return gasUse;
+    }
+
+    public void setGasUse(String gasUse) {
+        this.gasUse = gasUse;
+    }
+
+    public String getSafetyPrecautions() {
+        return safetyPrecautions;
+    }
+
+    public void setSafetyPrecautions(String safetyPrecautions) {
+        this.safetyPrecautions = safetyPrecautions;
+    }
+
+    public String getApplyCertificate() {
+        return applyCertificate;
+    }
+
+    public void setApplyCertificate(String applyCertificate) {
+        this.applyCertificate = applyCertificate;
+    }
+
+    public List<UsegasAuditRecord> getDetails() {
+        return details;
+    }
+
+    public void setDetails(List<UsegasAuditRecord> details) {
+        this.details = details;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getApplyUser() {
+        return applyUser;
+    }
+
+    public void setApplyUser(String applyUser) {
+        this.applyUser = applyUser;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+}

+ 3 - 0
zd-modules/zd-bottle-parent/zd-bottle-api/src/main/resources/META-INF/spring.factories

@@ -0,0 +1,3 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+  com.zd.bottle.feign.RemoteBottleFallbackFactory
+

+ 5 - 6
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/BottleStorageController.java

@@ -16,6 +16,7 @@ import com.zd.common.log.annotation.Log;
 import com.zd.common.log.enums.BusinessType;
 import com.zd.common.response.ResultData;
 import com.zd.common.security.annotation.PreAuthorize;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 import com.zd.common.core.web.controller.BaseController;
@@ -34,8 +35,9 @@ import java.util.Map;
  * @since 2022-09-08
  */
 @RestController
+@Api(tags = "【入库】")
 @RequestMapping("/bottleStorage")
-public class BottleStorageController extends BaseController {
+public class BottleStorageController extends BaseController<BottleStorage> {
 
     @Resource
     private BottleStorageService bottleStorageService;
@@ -46,12 +48,11 @@ public class BottleStorageController extends BaseController {
     /**
      * 查询入库记录列表
      */
-    //@PreAuthorize(hasPermi = "bottle:bottleStorage:list")
     @PreAuthorize(hasPermi = PerPrefix.BOTTLE_BOTTLESTORAGE + PerFun.LIST)
     @GetMapping("/list")
     @ApiOperation(value = "查询报警记录列表")
-    public TableDataInfo<BottleStorageVo> list(BottleStorageVo vo) {
-        // List<BottleStorage> list = bottleStorageService.list(new LambdaQueryWrapper<>(bottleStorage));
+    public TableDataInfo<BottleStorage> list(BottleStorageVo vo) {
+        startPage("create_time","descending");
         List<BottleStorageVo> list = bottleStorageService.getListVo(vo);
         return getDataTable(list);
     }
@@ -63,7 +64,6 @@ public class BottleStorageController extends BaseController {
      * @return Boolean
      */
     @ApiOperation(value = "新增入库信息")
-    //@PreAuthorize(hasPermi = "bottle:bottleStorage:add")
     @PreAuthorize(hasPermi = PerPrefix.BOTTLE_BOTTLESTORAGE + PerFun.ADD)
     @Log(title = "新增入库信息", businessType = BusinessType.INSERT)
     @PostMapping
@@ -78,7 +78,6 @@ public class BottleStorageController extends BaseController {
      * @return
      */
     @ApiOperation(value = "入库详情")
-    //@PreAuthorize(hasPermi = "bottle:bottleStorage:query")
     @PreAuthorize(hasPermi = PerPrefix.BOTTLE_BOTTLESTORAGE + PerFun.QUERY)
     @GetMapping(value = "/{id}")
     public AjaxResult getInfo(@PathVariable("id") Long id) {

+ 3 - 2
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/BottleStorageErrorController.java

@@ -5,16 +5,16 @@ import com.zd.bottle.service.BottleStorageErrorService;
 import com.zd.bottle.vo.BottleStorageErrorVo;
 import com.zd.common.core.utils.bean.TransferUtils;
 import com.zd.common.core.utils.poi.ExcelUtil;
+import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.core.web.page.TableDataInfo;
 import com.zd.common.log.annotation.Log;
 import com.zd.common.log.enums.BusinessType;
 import com.zd.common.response.ResultData;
 import com.zd.common.security.annotation.PreAuthorize;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import com.zd.common.core.web.controller.BaseController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
@@ -30,6 +30,7 @@ import java.util.List;
  * @since 2022-09-08
  */
 @RestController
+@Api(tags = "【异常记录】")
 @RequestMapping("/bottleStorageError")
 public class BottleStorageErrorController extends BaseController<BottleStorageError> {
 

+ 2 - 0
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/BottleStorageOutController.java

@@ -10,6 +10,7 @@ import com.zd.common.log.annotation.Log;
 import com.zd.common.log.enums.BusinessType;
 import com.zd.common.response.ResultData;
 import com.zd.common.security.annotation.PreAuthorize;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 import com.zd.common.core.web.controller.BaseController;
@@ -26,6 +27,7 @@ import java.util.List;
  * @since 2022-09-08
  */
 @RestController
+@Api(tags = "【出库记录】")
 @RequestMapping("/bottleStorageOut")
 public class BottleStorageOutController extends BaseController<BottleStorageOut> {
 

+ 3 - 8
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/RfidTagController.java

@@ -4,24 +4,19 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.zd.bottle.domain.RfidTag;
 import com.zd.bottle.service.RfidTagService;
-import com.zd.common.core.domain.per.PerFun;
-import com.zd.common.core.domain.per.PerPrefix;
-import com.zd.common.core.utils.SpringUtils;
 import com.zd.common.core.utils.poi.ExcelUtil;
+import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.core.web.page.TableDataInfo;
 import com.zd.common.log.annotation.Log;
 import com.zd.common.log.enums.BusinessType;
 import com.zd.common.response.ResultData;
-import com.zd.common.security.annotation.PreAuthorize;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
-import com.zd.common.core.web.controller.BaseController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.sql.Wrapper;
 import java.util.Arrays;
 import java.util.List;
 
@@ -96,7 +91,7 @@ public class RfidTagController extends BaseController<RfidTag> {
 //    @PreAuthorize(hasPermi = PerPrefix.BOTTLE_TAG+ PerFun.ADD)
     @Log(title = "RFID标签管理", businessType = BusinessType.INSERT)
     @PostMapping
-    public ResultData<Boolean> add(@RequestBody RfidTag rfidTag) {
+    public ResultData<RfidTag> add(@RequestBody RfidTag rfidTag) {
         String tagCode = rfidTag.getTagCode();
         LambdaQueryWrapper<RfidTag> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(RfidTag::getTagCode,tagCode);
@@ -104,7 +99,7 @@ public class RfidTagController extends BaseController<RfidTag> {
         if (!tags.isEmpty()){
             return ResultData.fail("该标签已经存在,请勿重复录入,如需补打二维码请点击下方按钮。");
         }
-        return ResultData.result(service.add(rfidTag));
+        return ResultData.success(service.add(rfidTag));
     }
 
     /**

+ 3 - 6
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/UseRecordController.java

@@ -17,11 +17,9 @@ import com.zd.common.log.annotation.Log;
 import com.zd.common.log.enums.BusinessType;
 import com.zd.common.response.ResultData;
 import com.zd.common.security.annotation.PreAuthorize;
-import com.zd.common.security.service.TokenService;
-import com.zd.system.api.domain.SysUser;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -41,17 +39,16 @@ import java.util.List;
  * @since 2022-09-08
  */
 @RestController
+@Api(tags = "【使用记录表】")
 @RequestMapping("/useRecord")
 public class UseRecordController extends BaseController<UseRecord> {
-    SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm");
-
     @Resource
     private UseRecordService useRecordService;
 
     /**
      * 查询使用记录列表
      */
-    @PreAuthorize(hasPermi = "bottle:use:record:list")
+//    @PreAuthorize(hasPermi = "bottle:use:record:list")
     @GetMapping("/list")
     @ApiOperation(value = "查询使用记录列表")
     public TableDataInfo<UseRecordVo> list(UseRecord useRecord) {

+ 91 - 5
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/UsegasApplyController.java

@@ -1,22 +1,32 @@
 package com.zd.bottle.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.zd.bottle.domain.UsegasApply;
+import com.zd.bottle.domain.UsegasAuditRecord;
 import com.zd.bottle.service.UsegasApplyService;
+import com.zd.bottle.service.UsegasAuditRecordService;
+import com.zd.bottle.vo.UsegasApplyDetailVo;
 import com.zd.bottle.vo.UsegasApplyTabVo;
 import com.zd.bottle.vo.UsegasApplyVo;
 import com.zd.common.core.domain.per.PerFun;
 import com.zd.common.core.domain.per.PerPrefix;
-import com.zd.common.core.web.domain.BaseBean;
+import com.zd.common.core.utils.DateUtils;
+import com.zd.common.core.utils.SecurityUtils;
+import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.core.web.page.TableDataInfo;
 import com.zd.common.response.ResultData;
 import com.zd.common.security.annotation.PreAuthorize;
+import com.zd.common.security.service.TokenService;
+import com.zd.common.security.utils.SaveUtil;
+import com.zd.system.api.domain.SysUser;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.zd.common.core.web.controller.BaseController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -28,11 +38,16 @@ import java.util.List;
  * @since 2022-09-08
  */
 @RestController
+@Api(tags = "【用气申请表】")
 @RequestMapping("/usegasApply")
 public class UsegasApplyController extends BaseController<UsegasApply> {
 
     @Autowired
     private UsegasApplyService usegasApplyService;
+    @Autowired
+    private UsegasAuditRecordService usegasAuditRecordService;
+    @Autowired
+    private TokenService tokenService;
 
     @ApiModelProperty(value = "待审核")
     @PreAuthorize(hasPermi = PerPrefix.QP_USEGASAPPLY + PerFun.LIST)
@@ -71,4 +86,75 @@ public class UsegasApplyController extends BaseController<UsegasApply> {
         UsegasApplyTabVo usegasApplyTabVo = usegasApplyService.selectApplyTabCount(usegasApply);
         return ResultData.success(usegasApplyTabVo);
     }
+
+
+    /**---------------------------------- 用气申请 -------------------------------------*/
+
+    /**
+     * 获取当前登录用户信息
+     */
+    @ApiOperation(value = "获取当前登录用户信息")
+    @GetMapping("/getLoginUser")
+    public ResultData<SysUser> getLoginUser(){
+        //获取当前登录用户信息
+        SysUser sysUser = tokenService.getLoginUser().getSysUser();
+        return ResultData.success(sysUser);
+    }
+
+    @ApiOperation(value = "个人申请列表")
+    @PostMapping("/listByUser")
+    public TableDataInfo<UsegasApply> queryApplyListByUser(@RequestBody UsegasApply usegasApply){
+
+        startPage();
+        QueryWrapper<UsegasApply> wrapper = new QueryWrapper();
+        wrapper.eq("user_id", SecurityUtils.getUserId());
+        if(usegasApply.getLeadAuditStaus() != null){
+            wrapper.eq("lead_audit_staus", usegasApply.getLeadAuditStaus());
+        }
+        wrapper.orderByDesc("create_time");
+        List<UsegasApply> list = usegasApplyService.list(wrapper);
+        return getDataTable(list);
+    }
+
+    @ApiOperation(value = "个人提交申请")
+    @PostMapping("/addByUser")
+    public ResultData<UsegasApplyTabVo> addApplyByUser(@RequestBody @Valid UsegasApply usegasApply){
+        SaveUtil.setCommonAttr(usegasApply);
+        usegasApplyService.save(usegasApply);
+        return ResultData.success();
+    }
+
+    @ApiOperation(value = "个人重新申请")
+    @PostMapping("/updateByUser")
+    public ResultData<UsegasApplyTabVo> updateApplyByUser(@RequestBody @Valid UsegasApply usegasApply){
+        usegasApply.setUpdateBy(SecurityUtils.getUsername());
+        usegasApply.setUpdateTime(DateUtils.getNowDate());
+        usegasApply.setLeadAuditStaus((short) 0);
+        usegasApplyService.updateById(usegasApply);
+        return ResultData.success();
+    }
+
+    @ApiOperation(value = "申请详情")
+    @PostMapping("/detail")
+    public ResultData<UsegasApplyDetailVo> queryApplyDetail(@RequestBody UsegasApply usegasApply){
+
+        UsegasApplyDetailVo usegasApplyDetailVo = new UsegasApplyDetailVo();
+
+        usegasApply = usegasApplyService.getById(usegasApply.getId());
+
+        if(usegasApply == null){
+            return ResultData.fail("未查询到数据!");
+        }
+
+        BeanUtils.copyProperties(usegasApply, usegasApplyDetailVo);
+
+        QueryWrapper<UsegasAuditRecord> queryWrapper = new QueryWrapper();
+
+        queryWrapper.eq("usegas_apply_id", usegasApplyDetailVo.getId());
+        List<UsegasAuditRecord> list = usegasAuditRecordService.list(queryWrapper);
+
+        usegasApplyDetailVo.setDetails(list);
+
+        return ResultData.success(usegasApplyDetailVo);
+    }
 }

+ 2 - 0
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/UsegasAuditRecordController.java

@@ -9,6 +9,7 @@ import com.zd.common.core.domain.per.PerPrefix;
 import com.zd.common.core.web.page.TableDataInfo;
 import com.zd.common.response.ResultData;
 import com.zd.common.security.annotation.PreAuthorize;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +27,7 @@ import java.util.List;
  * @since 2022-09-08
  */
 @RestController
+@Api(tags = "【用气审核表】")
 @RequestMapping("/usegasAuditRecord")
 public class UsegasAuditRecordController extends BaseController<UsegasAuditRecord> {
 

+ 1 - 1
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/RfidTagService.java

@@ -18,5 +18,5 @@ public interface RfidTagService extends IService<RfidTag> {
      * @param rfidTag 实体
      * @return boolean
      */
-    boolean add(RfidTag rfidTag);
+    RfidTag add(RfidTag rfidTag);
 }

+ 1 - 0
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/UsegasApplyService.java

@@ -38,4 +38,5 @@ public interface UsegasApplyService extends IService<UsegasApply> {
      * @return List<AirAmount>
      */
     List<AirAmount> calcApply(String airName);
+
 }

+ 5 - 9
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/AlarmRecordServiceImpl.java

@@ -87,7 +87,8 @@ public class AlarmRecordServiceImpl extends ServiceImpl<AlarmRecordMapper, Alarm
                 BottleStorage storage = storageMap.get(masterId);
                 r.setCurrentPressure(storage.getCurrentPressure())
                         .setAirName(storage.getAirName())
-                        .setConfigName(storage.getConfigName());
+                        .setConfigName(storage.getConfigName())
+                        .setAirNumber(storage.getAirNumber());
             }
         });
     }
@@ -95,7 +96,6 @@ public class AlarmRecordServiceImpl extends ServiceImpl<AlarmRecordMapper, Alarm
     @Override
     public List<AlarmRecord> getList(AlarmRecord alarmRecord) {
         LambdaQueryWrapper<AlarmRecord> queryWrapper = Wrappers.lambdaQuery(AlarmRecord.class);
-        queryWrapper.between(AlarmRecord::getAlarmTime,alarmRecord.getStartTime(),alarmRecord.getEndTime());
         String startTime = alarmRecord.getStartTime();
         if (StringUtils.hasLength(startTime)){
             queryWrapper.apply("DATE_FORMAT(alarm_time,'%Y-%m-%d') >="+alarmRecord.getStartTime());
@@ -113,7 +113,7 @@ public class AlarmRecordServiceImpl extends ServiceImpl<AlarmRecordMapper, Alarm
         String electronicTag = tag.getEpc();
         RemoteLabHardware hardware = tag.getRemoteLabHardware();
         LambdaQueryWrapper<RfidTag> queryWrapper = Wrappers.lambdaQuery(RfidTag.class);
-        queryWrapper.eq(RfidTag::getTagCode,electronicTag);
+        queryWrapper.eq(RfidTag::getAuthCode,electronicTag);
         RfidTag rfidTag = tagService.getOne(queryWrapper);
         if (rfidTag==null){
             log.info(MSG_MATCH,electronicTag,"标签未录入");
@@ -123,11 +123,6 @@ public class AlarmRecordServiceImpl extends ServiceImpl<AlarmRecordMapper, Alarm
         wrapper.eq(BottleStorage::getElectronicTag,rfidTag.getId());
         BottleStorage bottleStorage = storageService.getOne(wrapper);
         if (bottleStorage != null) {
-            if (hardware!=null){
-                //RFID设备报警
-                R<Boolean> alarm = remoteNettyService.alarm(hardware);
-                log.info(MSG_MATCH,alarm.getCode(),alarm.getMsg());
-            }
             Long id = bottleStorage.getId();
             String key = FRID_CODE + electronicTag + id;
             String frid = redisService.getCacheObject(key);
@@ -142,7 +137,8 @@ public class AlarmRecordServiceImpl extends ServiceImpl<AlarmRecordMapper, Alarm
                     .setAlarmTime(Calendar.getInstance().getTime())
                     .setMasterId(id)
                     .setType(1)
-                    .setProductType(1);
+                    .setProductType(1)
+                    .setDeptId(bottleStorage.getDeptId());
             return save(alarmRecord);
         }else {
             if (hardware!=null){

+ 14 - 10
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/BottleStorageErrorServiceImpl.java

@@ -37,16 +37,17 @@ public class BottleStorageErrorServiceImpl extends ServiceImpl<BottleStorageErro
     private BottleStorageService storageService;
     @Resource
     private UseRecordService useRecordService;
+
     @Override
     public List<BottleStorageError> list(BottleStorageError bottleStorageError) {
         LambdaQueryWrapper<BottleStorageError> queryWrapper = Wrappers.lambdaQuery(BottleStorageError.class);
         String startTime = bottleStorageError.getStartTime();
-        if (StringUtils.hasLength(startTime)){
-            queryWrapper.apply("DATE_FORMAT(op_time,'%Y-%m-%d') >="+startTime);
+        if (StringUtils.hasLength(startTime)) {
+            queryWrapper.apply("DATE_FORMAT(op_time,'%Y-%m-%d') >=" + startTime);
         }
         String endTime = bottleStorageError.getEndTime();
-        if (StringUtils.hasLength(endTime)){
-            queryWrapper.apply("DATE_FORMAT(op_time,'%Y-%m-%d') <="+endTime);
+        if (StringUtils.hasLength(endTime)) {
+            queryWrapper.apply("DATE_FORMAT(op_time,'%Y-%m-%d') <=" + endTime);
         }
         String searchValue = bottleStorageError.getSearchValue();
         if (StringUtils.hasLength(searchValue)) {
@@ -60,12 +61,14 @@ public class BottleStorageErrorServiceImpl extends ServiceImpl<BottleStorageErro
     @Override
     public void getBottleInfo(List<BottleStorageErrorVo> storageErrorVos) {
         Map<Long, BottleStorage> storageMap = getStorageMap(storageErrorVos);
-        storageErrorVos.forEach(se->{
+        storageErrorVos.forEach(se -> {
             Long storageId = se.getStorageId();
-            if (storageMap.containsKey(storageId)){
+            if (storageMap.containsKey(storageId)) {
                 BottleStorage storage = storageMap.get(storageId);
                 se.setAirName(storage.getAirName())
-                        .setConfigName(storage.getConfigName());
+                        .setConfigName(storage.getConfigName())
+                        .setElectronicTag(storage.getElectronicTag())
+                        .setAirNumber(storage.getAirNumber());
             }
         });
     }
@@ -73,13 +76,14 @@ public class BottleStorageErrorServiceImpl extends ServiceImpl<BottleStorageErro
     @Override
     public BottleStorageErrorVo getStorageErrorInfo(Long id) {
         BottleStorageError storageError = getById(id);
-        BottleStorageErrorVo storageErrorVo=new BottleStorageErrorVo();
-        BeanUtils.copyProperties(storageError,storageErrorVo);
+        BottleStorageErrorVo storageErrorVo = new BottleStorageErrorVo();
+        BeanUtils.copyProperties(storageError, storageErrorVo);
         BottleStorage bottleStorage = storageService.getById(storageError.getStorageId());
         storageErrorVo.setAirName(bottleStorage.getAirName())
                 .setConfigName(bottleStorage.getConfigName())
                 .setAirConstituents(bottleStorage.getAirComponent())
-                .setAirNumber(bottleStorage.getAirNumber());
+                .setAirNumber(bottleStorage.getAirNumber())
+                .setElectronicTag(bottleStorage.getElectronicTag());
         List<UseRecord> useRecords = useRecordService.getByStorageId(storageError.getStorageId());
         List<UseRecordVo> recordVos = TransferUtils.transferList(useRecords, UseRecordVo.class);
         storageErrorVo.setRecordVos(recordVos);

+ 2 - 2
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/BottleStorageOutServiceImpl.java

@@ -51,8 +51,8 @@ public class BottleStorageOutServiceImpl extends ServiceImpl<BottleStorageOutMap
 
         bottleStorageOut.setDeptId(sysUser.getDept().getDeptId());
         bottleStorageOut.setDeptName(sysUser.getDept().getDeptName());
-        bottleStorageOut.setApplyUserid(sysUser.getUserId());
-        bottleStorageOut.setApplyUserName(sysUser.getUserName());
+        bottleStorageOut.setUserId(sysUser.getUserId());
+        bottleStorageOut.setUserName(sysUser.getUserName());
         bottleStorageOut.setPhone(sysUser.getPhonenumber());
         bottleStorageOut.setCreateTime(new Date());
         return save(bottleStorageOut);

+ 6 - 3
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/BottleStorageServiceImpl.java

@@ -10,6 +10,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zd.bottle.vo.BottleStorageVo;
 import com.zd.bottle.vo.BottleStorageUseVo;
 import com.zd.bottle.vo.BottleStorageVo;
+import com.zd.common.core.domain.per.PerPrefix;
+import com.zd.common.datascope.annotation.DataScope;
 import com.zd.common.security.service.TokenService;
 import com.zd.system.api.domain.SysUser;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -49,9 +51,9 @@ public class BottleStorageServiceImpl extends ServiceImpl<BottleStorageMapper, B
     @Override
     public boolean add(BottleStorage bottleStorage) {
         SysUser sysUser = tokenService.getLoginUser().getSysUser();
-        bottleStorage.setInUserId(sysUser.getUserId());
-        bottleStorage.setInUserName(sysUser.getNickName());
-        bottleStorage.setInUserPhone(sysUser.getPhonenumber());
+        bottleStorage.setUserId(sysUser.getUserId());
+        bottleStorage.setUserName(sysUser.getNickName());
+        bottleStorage.setUserPhone(sysUser.getPhonenumber());
         bottleStorage.setDeptId(sysUser.getDept().getDeptId());
         bottleStorage.setDeptName(sysUser.getDept().getDeptName());
         bottleStorage.setCreateBy(sysUser.getNickName());
@@ -67,6 +69,7 @@ public class BottleStorageServiceImpl extends ServiceImpl<BottleStorageMapper, B
      * @return
      */
     @Override
+    // @DataScope(deptAlias = "bs", userAlias = "bs", permi = PerPrefix.BOTTLE_BOTTLESTORAGE)
     public List<BottleStorageVo> getListVo(BottleStorageVo vo) {
         return bottleStorageMapper.getListVo(vo);
     }

+ 38 - 6
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/RfidTagServiceImpl.java

@@ -1,12 +1,13 @@
 package com.zd.bottle.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zd.bottle.domain.RfidTag;
 import com.zd.bottle.mapper.RfidTagMapper;
 import com.zd.bottle.service.RfidTagService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zd.common.core.utils.SecurityUtils;
-import com.zd.common.core.utils.SpringUtils;
+import com.zd.common.core.exception.ServiceException;
+import com.zd.common.core.utils.IdGen;
 import com.zd.common.security.service.TokenService;
+import com.zd.system.api.domain.SysUser;
 import com.zd.system.api.model.LoginUser;
 import org.springframework.stereotype.Service;
 
@@ -25,14 +26,45 @@ public class RfidTagServiceImpl extends ServiceImpl<RfidTagMapper, RfidTag> impl
 
     @Resource
     private TokenService tokenService;
+    private static final Integer DATA_LENGTH=8;
+
+    protected static final String[] CHARS = new String[] { "a", "b", "c", "d", "e", "f",
+            "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
+            "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
+            "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
+            "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
+            "W", "X", "Y", "Z" };
+
+
+    public static String generateShortUuid() {
+        StringBuilder shortBuffer = new StringBuilder();
+        String uuid = IdGen.uuid();
+        for (int i = 0; i < DATA_LENGTH; i++) {
+            String str = uuid.substring(i * 4, i * 4 + 4);
+            int x = Integer.parseInt(str, 16);
+            shortBuffer.append(CHARS[x % 0x3E]);
+        }
+        return shortBuffer.toString();
+
+    }
     @Override
-    public boolean add(RfidTag rfidTag) {
+    public RfidTag add(RfidTag rfidTag) {
         String username=null;
+        Long userId=null;
+        Long deptId=null;
         LoginUser loginUser = tokenService.getLoginUser();
         if (loginUser!=null){
             username=loginUser.getUsername();
+            SysUser sysUser = loginUser.getSysUser();
+            userId=sysUser.getUserId();
+            deptId=sysUser.getDeptId();
+        }
+        rfidTag.setAuthCode(generateShortUuid());
+        rfidTag.setCommonValue(username,userId,deptId);
+        boolean save = save(rfidTag);
+        if (save){
+            return rfidTag;
         }
-        rfidTag.setCommonValue(username);
-        return save(rfidTag);
+        throw new ServiceException("存储失败");
     }
 }

+ 23 - 16
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/service/impl/UseRecordServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zd.bottle.domain.BottleStorage;
 import com.zd.bottle.domain.BottleStorageError;
 import com.zd.bottle.domain.UseRecord;
@@ -13,7 +14,6 @@ import com.zd.bottle.mapper.UseRecordMapper;
 import com.zd.bottle.service.BottleStorageErrorService;
 import com.zd.bottle.service.BottleStorageService;
 import com.zd.bottle.service.UseRecordService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zd.bottle.service.UsegasApplyService;
 import com.zd.bottle.vo.AirAmount;
 import com.zd.bottle.vo.UseRecordVo;
@@ -22,12 +22,11 @@ import com.zd.common.core.constant.HttpStatus;
 import com.zd.common.core.constant.SecurityConstants;
 import com.zd.common.core.domain.R;
 import com.zd.common.core.exception.ServiceException;
-import com.zd.common.core.utils.DateUtils;
 import com.zd.common.core.utils.SecurityUtils;
 import com.zd.common.core.utils.bean.TransferUtils;
 import com.zd.common.security.service.TokenService;
-import com.zd.common.security.utils.SaveUtil;
 import com.zd.system.api.RemoteUserService;
+import com.zd.system.api.domain.SysUser;
 import com.zd.system.api.model.LoginUser;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -71,7 +70,9 @@ public class UseRecordServiceImpl extends ServiceImpl<UseRecordMapper, UseRecord
             Long storageId = u.getStorageId();
             if (storageMap.containsKey(storageId)) {
                 BottleStorage bottleStorage = storageMap.get(storageId);
-                u.setAirName(bottleStorage.getAirName()).setStorage(bottleStorage);
+                u.setAirName(bottleStorage.getAirName())
+                        .setElectronicTag(bottleStorage.getElectronicTag()).setAirNumber(bottleStorage.getAirNumber())
+                        .setStorage(bottleStorage);
             }
         });
         return recordVos;
@@ -153,14 +154,15 @@ public class UseRecordServiceImpl extends ServiceImpl<UseRecordMapper, UseRecord
         }
         //查询用户使用资格
         LoginUser user = userInfo.getData();
+        SysUser sysUser = user.getSysUser();
         Long storageId = recordDto.getStorageId();
         LambdaQueryWrapper<UsegasApply> queryWrapper = Wrappers.lambdaQuery(UsegasApply.class);
-        queryWrapper.eq(UsegasApply::getUserId, user.getSysUser().getUserId())
+        queryWrapper.eq(UsegasApply::getUserId, sysUser.getUserId())
                 .ge(UsegasApply::getEndTime, new Date())
                 //todo 气体ID待确认
                 .eq(UsegasApply::getUseGasName, recordDto.getBottleName())
-                .eq(UsegasApply::getLeadAuditStaus,1);
-        List <UsegasApply> list = usegasApplyService.list(queryWrapper);
+                .eq(UsegasApply::getLeadAuditStaus, 1);
+        List<UsegasApply> list = usegasApplyService.list(queryWrapper);
         if (list.isEmpty()) {
             result = 3;
         }
@@ -174,8 +176,8 @@ public class UseRecordServiceImpl extends ServiceImpl<UseRecordMapper, UseRecord
             return result;
         }
 
-        recordDto.setContacts(user.getSysUser().getNickName())
-                .setPhone(user.getSysUser().getPhonenumber())
+        recordDto.setContacts(sysUser.getNickName())
+                .setPhone(sysUser.getPhonenumber())
                 .setUseTime(Calendar.getInstance().getTime());
         UseRecord useRecord = new UseRecord();
         BeanUtils.copyProperties(recordDto, useRecord);
@@ -186,7 +188,7 @@ public class UseRecordServiceImpl extends ServiceImpl<UseRecordMapper, UseRecord
         }
 
         LambdaUpdateWrapper<BottleStorage> updateWrapper = Wrappers.lambdaUpdate(BottleStorage.class);
-        updateWrapper.eq(BottleStorage::getId, useRecord.getStorageId()).set(BottleStorage::getStorageStatus,2);
+        updateWrapper.eq(BottleStorage::getId, useRecord.getStorageId()).set(BottleStorage::getStorageStatus, 2);
         Integer isSurplus = recordDto.getIsSurplus();
         if (isSurplus == 1) {
             // 修改库存中气瓶余量标记
@@ -201,8 +203,8 @@ public class UseRecordServiceImpl extends ServiceImpl<UseRecordMapper, UseRecord
             throw new ServiceException("入库数据异常");
         }
         //设置其他公共字段
-        useRecord.setUserId(user.getSysUser().getUserId());
-        useRecord.setCommonValue(user.getSysUser().getUserName());
+        useRecord.setUserId(sysUser.getUserId());
+        useRecord.setCommonValue(sysUser.getUserName(),sysUser.getUserId(),sysUser.getDeptId());
         if (save(useRecord)) {
             return result;
         }
@@ -211,11 +213,15 @@ public class UseRecordServiceImpl extends ServiceImpl<UseRecordMapper, UseRecord
 
     @Override
     public Integer updateUseRecord(UseRecord useRecord) {
+        R<LoginUser> userInfo = userService.getUserInfo(SecurityUtils.getUsername(), SecurityConstants.INNER);
+        if (userInfo.getCode()!=HttpStatus.SUCCESS || userInfo.getData()==null){
+            throw new ServiceException("未登录或登录失效");
+        }
         Long storageId = useRecord.getStorageId();
         LambdaQueryWrapper<UseRecord> queryWrapper = Wrappers.lambdaQuery(UseRecord.class);
-        queryWrapper.eq(UseRecord::getStorageId,storageId).isNull(UseRecord::getBackTime);
+        queryWrapper.eq(UseRecord::getStorageId, storageId).isNull(UseRecord::getBackTime);
         UseRecord temp = getOne(queryWrapper);
-        if (temp==null) {
+        if (temp == null) {
             throw new ServiceException("数据异常");
         }
         BigDecimal afterUse = useRecord.getAfterUse();
@@ -235,7 +241,8 @@ public class UseRecordServiceImpl extends ServiceImpl<UseRecordMapper, UseRecord
         storageService.updateById(storage);
 
         useRecord.setId(temp.getId());
-        useRecord.setCommonValue(SecurityUtils.getUsername());
+        SysUser sysUser = userInfo.getData().getSysUser();
+        useRecord.setCommonValue(sysUser.getUserName(),sysUser.getUserId(),sysUser.getDeptId());
         return baseMapper.updateById(useRecord);
     }
 
@@ -243,7 +250,7 @@ public class UseRecordServiceImpl extends ServiceImpl<UseRecordMapper, UseRecord
     public List<UseRecord> getByUserId(UseRecord useRecord) {
         Long userId = tokenService.getLoginUser().getSysUser().getUserId();
         LambdaQueryWrapper<UseRecord> queryWrapper = Wrappers.lambdaQuery(UseRecord.class);
-        queryWrapper.eq(UseRecord::getUserId,userId);
+        queryWrapper.eq(UseRecord::getUserId, userId);
         return list(queryWrapper);
     }
 

+ 2 - 0
zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/AlarmRecordMapper.xml

@@ -10,6 +10,8 @@
         <result column="type" property="type" />
         <result column="product_type" property="productType" />
         <result column="alarm_time" property="alarmTime" />
+        <result column="user_id" property="userId"/>
+        <result column="dept_id" property="deptId"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->

+ 2 - 0
zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/BottleStorageErrorMapper.xml

@@ -13,6 +13,8 @@
         <result column="after_edit" property="afterEdit" />
         <result column="op_time" property="opTime" />
         <result column="phone" property="phone" />
+        <result column="user_id" property="userId"/>
+        <result column="dept_id" property="deptId"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->

+ 7 - 8
zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/BottleStorageMapper.xml

@@ -20,9 +20,9 @@
         <result column="air_number" property="airNumber"/>
         <result column="validate_remark" property="validateRemark"/>
         <result column="storage_status" property="storageStatus"/>
-        <result column="in_user_id" property="inUserId"/>
-        <result column="in_user_name" property="inUserName"/>
-        <result column="in_user_phone" property="inUserPhone"/>
+        <result column="user_id" property="userId"/>
+        <result column="user_name" property="userName"/>
+        <result column="user_phone" property="userPhone"/>
         <result column="dept_id" property="deptId"/>
         <result column="dept_name" property="deptName"/>
         <result column="subject_id" property="subjectId"/>
@@ -52,9 +52,9 @@
         air_number,
         validate_remark,
         storage_status,
-        in_user_id,
-        in_user_name,
-        in_user_phone,
+        user_id,
+        user_name,
+        user_phone,
         dept_id,
         dept_name,
         subject_id,
@@ -72,9 +72,8 @@
             parameterType="com.zd.bottle.vo.BottleStorageVo">
         select bs.*,
                (select count(1) from ab_use_record ur where ur.storage_id=bs.id) numberPersons,
-               ( select ur.use_time from ab_use_record ur where ur.storage_id=bs.id ORDER BY use_time desc ) lastTime
+               ( select max(ur.use_time) from ab_use_record ur where ur.storage_id=bs.id ORDER BY use_time desc ) lastTime
         from ab_bottle_storage bs
-                 LEFT JOIN ab_use_record ur on bs.id=ur.storage_id
                  where 1=1
         <if test="searchValue != null">
             and (bs.electronic_tag like concat('%', #{searchValue}, '%')

+ 7 - 5
zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/BottleStorageOutMapper.xml

@@ -6,10 +6,10 @@
     <resultMap id="BaseResultMap" type="com.zd.bottle.domain.BottleStorageOut">
         <result column="id" property="id" />
         <result column="create_time" property="createTime" />
-        <result column="apply_user_name" property="applyUserName" />
-        <result column="apply_userid" property="applyUserid" />
+        <result column="user_name" property="userName" />
+        <result column="user_id" property="userId" />
         <result column="dept_id" property="deptId" />
-        <result column="apply_userid" property="applyUserid" />
+        <result column="dept_name" property="deptName" />
         <result column="phone" property="phone" />
         <result column="storage_id" property="storageId" />
         <result column="pressure" property="pressure" />
@@ -18,8 +18,10 @@
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
         id,
-        apply_user_name,
-        apply_userid,
+        user_name,
+        user_id,
+        dept_id,
+        dept_name,
         phone,
         storage_id,
         pressure,

+ 4 - 0
zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/RfidTagMapper.xml

@@ -6,14 +6,18 @@
     <resultMap id="BaseResultMap" type="com.zd.bottle.domain.RfidTag">
         <result column="id" property="id" />
         <result column="create_time" property="createTime" />
+        <result column="auth_code" property="authCode" />
         <result column="tag_code" property="tagCode" />
         <result column="is_bind" property="isBind" />
+        <result column="user_id" property="userId"/>
+        <result column="dept_id" property="deptId"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
         id,
         create_time,
+        auth_code,
         tag_code, is_bind
     </sql>
 

+ 12 - 10
zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/UseRecordMapper.xml

@@ -12,7 +12,7 @@
         <result column="contacts" property="contacts"/>
         <result column="user_id" property="userId"/>
         <result column="phone" property="phone"/>
-        <result column="location" property="location"/>
+        <result column="subject_name" property="subjectName"/>
         <result column="subject_id" property="subjectId"/>
         <result column="storage_id" property="storageId"/>
         <result column="before_use_pic" property="beforeUsePic"/>
@@ -28,7 +28,8 @@
         <result column="update_by" property="updateBy" />
         <result column="update_time" property="updateTime" />
         <result column="contacts" property="contacts" />
-        <result column="user_id" property="userId" />
+        <result column="user_id" property="userId"/>
+        <result column="dept_id" property="deptId"/>
         <result column="phone" property="phone" />
         <result column="subject_name" property="subjectName" />
         <result column="subject_id" property="subjectId" />
@@ -82,10 +83,10 @@
         ab_bottle_storage s
         LEFT JOIN ab_bottle_storage_out o ON s.id = o.storage_id
         WHERE
-        s.air_status=0 AND DATE_FORMAT( s.create_time, '%Y-%m' )> DATE_FORMAT( date_sub( curdate(), INTERVAL 12 MONTH ),
+         DATE_FORMAT( s.create_time, '%Y-%m' )> DATE_FORMAT( date_sub( curdate(), INTERVAL 12 MONTH ),
         '%Y-%m' )
         <if test="airName != null and airName!=''">
-            and s.air_bottle_name=#{airName}
+            and s.air_name=#{airName}
         </if>
         GROUP BY
         MONTH (s.create_time
@@ -101,7 +102,7 @@
         WHERE
         DATE_FORMAT( r.create_time, '%Y-%m' )> DATE_FORMAT( date_sub( curdate(), INTERVAL 12 MONTH ), '%Y-%m' )
         <if test="airName != null and airName!=''">
-            and s.specification_name LIKE concat( '%', #{airName}, '%' ) )
+            and s.config_name LIKE concat( '%', #{airName}, '%' ) )
         </if>
         GROUP BY
         MONTH (r.create_time
@@ -110,12 +111,13 @@
 
     <select id="getListUseRecord" resultType="com.zd.bottle.vo.UseRecordVo"
             parameterType="java.lang.Long">
-        select ur.user_id, contacts, phone, count(1) countNumber, sum(amount) amount, MAX(ur.use_time) use_time
+        select ur.user_id, contacts, phone, count(1) countNumber, sum(amount) as amount, MAX(ur.use_time) as use_time
         from ab_use_record ur
-        where 1=1
-        <if test="storage_id != null ">
-              and ur.storage_id = ${storageId}
-        </if>
+        <where>
+            <if test="storage_id != null ">
+                ur.storage_id = ${storageId}
+            </if>
+        </where>
         GROUP BY ur.user_id, contacts, phone
 
     </select>

+ 2 - 0
zd-modules/zd-bottle-parent/zd-bottle/src/main/resources/mapper/UsegasAuditRecordMapper.xml

@@ -12,6 +12,8 @@
         <result column="remark" property="remark" />
         <result column="usegas_apply_id" property="usegasApplyId" />
         <result column="audit_type" property="auditType" />
+        <result column="user_id" property="userId"/>
+        <result column="dept_id" property="deptId"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->

+ 2 - 2
zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpStockController.java

@@ -208,8 +208,8 @@ public class HxpStockController extends BaseController {
 
     @ApiOperation(value = "RFID违规检测")
     @PostMapping(value = "/RFIDCheck")
-    public void RFIDCheck(@RequestBody InventoryTag tag) {
-        hxpStockService.RFIDCheck(tag);
+    public boolean RFIDCheck(@RequestBody InventoryTag tag) {
+        return hxpStockService.RFIDCheck(tag);
     }
 
     /**

+ 1 - 2
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/IHxpStockService.java

@@ -7,7 +7,6 @@ import com.zd.chemical.domain.vo.HxpStockJoinVO;
 import com.zd.chemical.domain.vo.HxpStockOutVO;
 import com.zd.chemical.domain.vo.HxpStockSearch;
 import com.zd.system.api.domain.InventoryTag;
-import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 
 /**
  * 库存管理Service接口
@@ -89,7 +88,7 @@ public interface IHxpStockService
      */
     public int deleteHxpStockById(Long id);
 
-    void RFIDCheck(InventoryTag tag);
+    boolean RFIDCheck(InventoryTag tag);
 
     int selectCountByRfidCode(HxpStock hxpStock);
 

+ 14 - 8
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpStockServiceImpl.java

@@ -7,7 +7,6 @@ import com.zd.chemical.domain.*;
 import com.zd.chemical.domain.vo.*;
 import com.zd.chemical.mapper.*;
 import com.zd.chemical.service.*;
-import com.zd.common.core.domain.R;
 import com.zd.common.core.domain.per.PerPrefix;
 import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.utils.DateUtils;
@@ -23,7 +22,6 @@ import com.zd.system.api.domain.InventoryTag;
 import com.zd.system.api.domain.SysDictData;
 import com.zd.system.api.laboratory.RemoteLaboratoryService;
 import com.zd.system.api.laboratory.RemoteMessageContentService;
-import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 import com.zd.system.api.netty.RemoteNettyService;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -183,6 +181,10 @@ public class HxpStockServiceImpl implements IHxpStockService {
 
         logger.info("化学品入库,前端参数:" + JSONUtil.toJsonStr(hxpStock));
 
+        if(hxpStock.getOutUsages().compareTo(hxpStock.getTare()) < 0){
+            throw new ServiceException("入库重量错误,入库失败!");
+        }
+
         HxpClassifyConfig hxpClassifyConfig = hxpClassifyConfigMapper.selectHxpClassifyConfigById(hxpStock.getChemicalClassify());
 
         // 出于数据安全考虑,前端获取并回传的数据应该后端再校验一次,暂记录
@@ -292,23 +294,25 @@ public class HxpStockServiceImpl implements IHxpStockService {
 
     /**
      * RFID 实时检测 是否是违规带离实验室
+     * @return
      */
     @Override
-    public void RFIDCheck(InventoryTag tag) {
+    public boolean RFIDCheck(InventoryTag tag) {
+        boolean b = false;
         String rfidCode = tag.getEpc();
         if(StringUtils.isBlank(rfidCode)){
-            return;
+            return b;
         }
         Date d = cacheMap.get(rfidCode);
         if(d != null && DateUtil.compare(DateUtil.offsetSecond(d, interval), DateUtils.getNowDate()) > 0){
-            return;
+            return b;
         }
 
 
         logger.info("RFID 实时检测 RFIDCheck(标签编号): " + rfidCode);
         HxpStock hxpStock = hxpStockMapper.selectByRfidCode(rfidCode);
         if(hxpStock == null){
-            return;
+            return b;
         }
 
         // 查询该库存数据是否处于领用状态
@@ -318,11 +322,11 @@ public class HxpStockServiceImpl implements IHxpStockService {
         }else {
             logger.error("RFID 检测到违规触发报警: " + JSONUtil.toJsonStr(hxpStock));
             //触发RFID警报
-            RemoteLabHardware hardware = tag.getRemoteLabHardware();
+            /*RemoteLabHardware hardware = tag.getRemoteLabHardware();
             if (hardware!=null){
                 R<Boolean> alarm = remoteNettyService.alarm(hardware);//RFID设备报警
                 logger.info("==================>{},{}",alarm.getCode(),alarm.getMsg());
-            }
+            }*/
             // 如果非领用状态,做报警台账
             // 0.检测实验室声光报警器是否使用- 使用则直接调用触发- 否则跳过
             Map<String,Object> subInfo = hxpUserecordMapper.selectSubInfoById(hxpStock.getSubId());
@@ -421,7 +425,9 @@ public class HxpStockServiceImpl implements IHxpStockService {
                     hxpAlarmRecordMapper.insertHxpAlarmRecord(hxpAlarmRecord);
                 }
             }
+            return b;
         }
+        return b;
     }
 
     private void sendPhoneAlarm(String subName, String chemicalName, String phones) {

+ 60 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectManagerService.java

@@ -3,6 +3,7 @@ package com.zd.laboratory.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.zd.common.core.constant.*;
 import com.zd.common.core.domain.R;
@@ -756,12 +757,24 @@ public class LabSubjectManagerService {
     public List<SensorFunctionStatus> getSensorFunctionStatuses(List<LabSensor> labSensors, Boolean isInitVal, Boolean isInitWran) {
         //按名字显示
         if (CollUtil.isEmpty(labSensors)) return Collections.emptyList();
-        JSONObject jsonObject = redisService.getCacheObject(CacheConstants.SENSOR_DATA_KEY + labSensors.get(0).getSubjectId());
+
+        Long subId = labSensors.get(0).getSubjectId();
+
+        /*JSONObject jsonObject = redisService.getCacheObject(CacheConstants.SENSOR_DATA_KEY + subId);
         if (null == jsonObject) {
             return getSensorFunctionOldStatuses(labSensors, isInitVal);
         } else {
             return getSensorFunctionNewStatuses(labSensors);
+        }*/
+
+        List<SensorFunctionStatus> list = getSensorFunctionOldStatuses(labSensors, isInitVal);
+        JSONObject jsonObject = redisService.getCacheObject(CacheConstants.SENSOR_DATA_KEY + subId);
+        logger.info("传感器合并:云盒设备:"+ JSONUtil.toJsonStr(list));
+        if(jsonObject != null){
+            list = getSensorFunctionNewStatusesTwo(list, subId);
+            logger.info("传感器合并:采集器设备:"+ JSONUtil.toJsonStr(list));
         }
+        return list;
     }
 
     /**
@@ -795,6 +808,9 @@ public class LabSubjectManagerService {
                         sensorFunctionStatus.setNumberDecimal(c.getNumberDecimal());
                         sensorFunctionStatus.setRouteNum(a.getRouteNum());
                         sensorFunctionStatus.setId(a.getId());
+                        sensorFunctionStatus.setType(a.getType());
+                        sensorFunctionStatus.setConfigName(a.getConfigName());
+
                         if (wran != null && wran.contains(c.getFunNum())) {
                             sensorFunctionStatus.setHasWarn(true);
                         }
@@ -853,6 +869,49 @@ public class LabSubjectManagerService {
                 .collect(Collectors.toList());
     }
 
+    /**
+     * 新采集器数据的组装
+     *
+     * @param labSensors
+     * @return
+     */
+    private List<SensorFunctionStatus> getSensorFunctionNewStatusesTwo(List<SensorFunctionStatus> labSensors, Long subId) {
+        //按名字显示
+        if (CollUtil.isEmpty(labSensors)) {
+            return Collections.emptyList();
+        }
+        JSONObject jsonObject = redisService.getCacheObject(CacheConstants.SENSOR_DATA_KEY + subId);
+        //获取
+        final Map<SenseType, List<SensorFunctionStatus>> sensorFunctionStatusListMap = hardwareFunctionStatusConfig.getSensorFunctionStatusListMap();
+        return Optional.ofNullable(labSensors).orElseGet(Collections::emptyList).stream()
+                .map(a -> {
+                    List<SensorFunctionStatus> list = sensorFunctionStatusListMap.get(a.getType());
+                    return Optional.ofNullable(list).orElseGet(Collections::emptyList).stream().map(c -> {
+                        if(StringUtils.isBlank(a.getConfigName())){
+
+                            return a;
+                        }else {
+                            c.setVal(jsonObject.getString(a.getConfigName()));
+
+                            SensorFunctionStatus sensorFunctionStatus = new SensorFunctionStatus();
+                            sensorFunctionStatus.setFunNum(c.getFunNum());
+                            sensorFunctionStatus.setDescribe(a.getDescribe());
+                            sensorFunctionStatus.setFuncName(c.getDescribe());
+                            sensorFunctionStatus.setOrder(c.getOrder());
+                            sensorFunctionStatus.setHardwareNum(a.getHardwareNum());
+                            sensorFunctionStatus.setUnit(c.getUnit());
+                            sensorFunctionStatus.setNumberDecimal(c.getNumberDecimal());
+                            sensorFunctionStatus.setRouteNum(a.getRouteNum());
+                            sensorFunctionStatus.setVal(c.getVal());
+                            return sensorFunctionStatus;
+                        }
+
+                    }).collect(Collectors.toList());
+                }).filter(a -> CollUtil.isNotEmpty(a)).flatMap(List::stream)
+                .sorted((c, d) -> NumberUtil.compare(c.getOrder(), d.getOrder()))
+                .collect(Collectors.toList());
+    }
+
 
     /**
      * 获取指定传感器下新采集器的测点数据getSensorNewFunctionStatuses

+ 1 - 2
zd-modules/zd-netty/src/main/java/com/zd/netty/base/FridConsumer.java

@@ -2,7 +2,6 @@ package com.zd.netty.base;
 
 import com.payne.reader.base.Consumer;
 import com.payne.reader.bean.receive.InventoryTag;
-import com.zd.common.core.exception.ServiceException;
 import com.zd.netty.service.ISendService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -23,7 +22,7 @@ public class FridConsumer implements Consumer<InventoryTag> {
             tag.setEpc(tag.getEpc().replace(" ", ""));
             com.zd.system.api.domain.InventoryTag  inventoryTag = new com.zd.system.api.domain.InventoryTag ();
             BeanUtils.copyProperties(tag,inventoryTag);
-            sendService.send(inventoryTag);
+            sendService.send(inventoryTag, null);
         } catch (BeansException e) {
             log.error(e.getMessage());
         }

+ 2 - 2
zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDClientImpl.java

@@ -46,10 +46,10 @@ public class DeJuRFIDClientImpl implements IService {
             serverMap.put(ipAddress, server);
         }
         if (server.open(DeJuRFIDServerImpl.PORT)) {
-            log.info("开始监听");
+            log.info("开始监听"+ipAddress);
             subscribeServerHandler(server, hardware);
         } else {
-            log.info("监听失败");
+            log.info("监听失败"+ipAddress);
             throw new ServiceException("监听失败,请稍后进行设备重连。。。");
         }
     }

+ 12 - 6
zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDServerImpl.java

@@ -200,16 +200,22 @@ public class DeJuRFIDServerImpl implements IService {
         String ipAddress = hardware.getIpAddress();
         if (CLIENT_MAP.containsKey(ipAddress)) {
             GClient client = CLIENT_MAP.get(ipAddress);
-            log.info("报警状态:==============》{}", isAlarm.get());
+            log.info("报警状态:==============》{},设备IP:{}", isAlarm.get(),ipAddress);
             if (!isAlarm.get()) {
-                scheduledExecutorService.execute(() -> {
-                    isAlarm.set(true);
-                    changeGpo(1, client, 10);
-                });
+                isAlarm.set(true);
+                changeGpo(1, client, 10);
             }
         }
     }
 
+    public static void alarm(GClient client){
+        log.info("报警状态:==============》{},设备:{} 触发报警", isAlarm.get(),client.getName());
+        if (!isAlarm.get()) {
+            isAlarm.set(true);
+            changeGpo(1, client, 10);
+        }
+    }
+
     public static void close(RemoteLabHardware hardware) {
         String ipAddress = hardware.getIpAddress();
         if (CLIENT_MAP.containsKey(ipAddress)) {
@@ -276,7 +282,7 @@ public class DeJuRFIDServerImpl implements IService {
                 InventoryTag tag = new InventoryTag();
                 BeanUtils.copyProperties(logBaseEpcInfo, tag);
                 tag.setRemoteLabHardware(hardware);
-                sendService.send(tag);
+                sendService.send(tag,client);
             }
         };
         client.onTagEpcOver = (s, logBaseEpcOver) -> log.info("HandlerTagEpcOver");

+ 5 - 3
zd-modules/zd-netty/src/main/java/com/zd/netty/service/ISendService.java

@@ -1,15 +1,17 @@
 package com.zd.netty.service;
 
+import com.gg.reader.api.dal.GClient;
 import com.zd.system.api.domain.InventoryTag;
-import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 
 public interface ISendService {
 
     /**
      * 发送读取到的编码
-     * @param tag frid数据
+     *
+     * @param tag    frid数据
+     * @param client
      */
-    void send(InventoryTag tag);
+    void send(InventoryTag tag, GClient client);
 
     /**
      * 发送异常信息

+ 54 - 34
zd-modules/zd-netty/src/main/java/com/zd/netty/service/impl/SendServiceImpl.java

@@ -1,6 +1,10 @@
 package com.zd.netty.service.impl;
 
+import com.gg.reader.api.dal.GClient;
 import com.zd.bottle.feign.service.RemoteBottleService;
+import com.zd.common.core.constant.HttpStatus;
+import com.zd.common.core.domain.R;
+import com.zd.netty.sdk.DeJuRFIDServerImpl;
 import com.zd.netty.service.ISendService;
 import com.zd.system.api.airbottle.RemoteAirBottleService;
 import com.zd.system.api.chemical.RemoteStockService;
@@ -31,34 +35,21 @@ public class SendServiceImpl implements ISendService {
 
 
     @Override
-    public void send(InventoryTag tag) {
+    public void send(InventoryTag tag, GClient client) {
 
         RemoteLabHardware hardware = tag.getRemoteLabHardware();
         if (hardware != null) {
             int antId = tag.getAntId();
             String uniformPower = hardware.getUniformPower();
             String[] uniformPowers = uniformPower.split(",");
-            handleTag(tag, antId, uniformPowers);
+            handleTag(tag, antId, uniformPowers, client);
         } else {
-            try {
-                bottleService.remoteAdd(tag);
-            } catch (Exception e) {
-                log.info("气瓶服务异常:" + e.getMessage());
-            }
-            try {
-                remoteBottleService.remoteAdd(tag);
-            } catch (Exception e) {
-                log.info("新气瓶服务异常:" + e.getMessage());
-            }
-            try {
-                remoteStockService.rfidCheck(tag);
-            } catch (Exception e) {
-                log.info("化学品服务异常:" + e.getMessage());
-            }
+            sendBottle(tag, client);
+            sendStock(tag,client);
         }
     }
 
-    private void handleTag(InventoryTag tag, int antId, String[] uniformPowers) {
+    private void handleTag(InventoryTag tag, int antId, String[] uniformPowers, GClient client) {
         // 判断有设备配置和触发的天线编码等与配置天线编号
         if (uniformPowers.length > 0) {
             String tempUniformPower = uniformPowers[antId - 1];
@@ -66,31 +57,60 @@ public class SendServiceImpl implements ISendService {
                 String[] tempUniformPowers = tempUniformPower.split(":");
                 if (tempUniformPowers.length > 1) {
                     String temp = tempUniformPowers[1];
-                    sendTag(tag, temp);
+                    sendTag(tag, temp, client);
+                }else {
+                    sendTag(tag, null, client);
                 }
             }
         }
     }
 
-    private void sendTag(InventoryTag tag, String temp) {
+    private void sendTag(InventoryTag tag, String temp, GClient client) {
+        if (temp==null){
+            sendBottle(tag, client);
+            sendStock(tag, client);
+            return;
+        }
         if (ALL_TYPE.equals(temp) || BOTTLE_TYPE.equals(temp)) {
-            try {
-                bottleService.remoteAdd(tag);
-            } catch (Exception e) {
-                log.info("气瓶服务异常:" + e.getMessage());
-            }
-            try {
-                remoteBottleService.remoteAdd(tag);
-            } catch (Exception e) {
-                log.info("新气瓶服务异常:" + e.getMessage());
-            }
+            sendBottle(tag, client);
         }
         if (ALL_TYPE.equals(temp) || CHEMICAL_TYPE.equals(temp)) {
-            try {
-                remoteStockService.rfidCheck(tag);
-            } catch (Exception e) {
-                log.info("化学品服务异常:" + e.getMessage());
+            sendStock(tag, client);
+        }
+    }
+
+    private void sendStock(InventoryTag tag, GClient client) {
+        try {
+            boolean result = remoteStockService.rfidCheck(tag);
+            alarm(client, result);
+        } catch (Exception e) {
+            log.info("化学品服务异常:" + e.getMessage());
+        }
+    }
+
+    private void sendBottle(InventoryTag tag, GClient client) {
+        R<Boolean> result;
+        try {
+            result = bottleService.remoteAdd(tag);
+            if (result.getCode()==HttpStatus.SUCCESS){
+                alarm(client, result.getData());
+            }
+        } catch (Exception e) {
+            log.info("气瓶服务异常:" + e.getMessage());
+        }
+        try {
+            result = remoteBottleService.remoteAdd(tag);
+            if (result.getCode()==HttpStatus.SUCCESS){
+                alarm(client, result.getData());
             }
+        } catch (Exception e) {
+            log.info("新气瓶服务异常:" + e.getMessage());
+        }
+    }
+
+    private void alarm(GClient client, Boolean result) {
+        if (client != null && Boolean.TRUE.equals(result)) {
+            DeJuRFIDServerImpl.alarm(client);
         }
     }