liubo пре 3 година
родитељ
комит
5d284f5de3

+ 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;
+    }
 }

+ 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());
+        }
+    }
 }

+ 8 - 2
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;
 
 /**
@@ -40,26 +41,31 @@ public class UsegasApply extends BaseBean {
     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")
+    @NotNull(message = "使用气体不能为空")
     private Long useGasId;
 
     @ApiModelProperty("气体名称")

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

@@ -0,0 +1,91 @@
+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 java.util.Date;
+import java.util.List;
+
+@ApiModel("用气资格详情")
+public class UsegasApplyDetailVo {
+
+    @ApiModelProperty(value = "${comment}")
+    private Long id;
+
+    @ApiModelProperty(value = "使用气体")
+    private String useGasName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("使用期限")
+    private Date endTime;
+
+    @ApiModelProperty("气瓶用途")
+    private String gasUse;
+
+    @ApiModelProperty("主要安全措施")
+    private String safetyPrecautions;
+
+    @ApiModelProperty("用气申请表")
+    private String applyCertificate;
+
+    @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;
+    }
+}

+ 77 - 3
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/UsegasApplyController.java

@@ -1,22 +1,31 @@
 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.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 org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -34,6 +43,10 @@ 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)
@@ -72,4 +85,65 @@ 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());
+        wrapper.eq("lead_audit_staus", usegasApply.getLeadAuditStaus());
+        List<UsegasApply> list = usegasApplyService.list(wrapper);
+        return getDataTable(list);
+    }
+
+    @ApiOperation(value = "个人提交申请")
+    @PostMapping("/addByUser")
+    public ResultData<UsegasApplyTabVo> addApplyByUser(@RequestBody @Valid UsegasApply usegasApply){
+        if(usegasApply.getUserId() == null || !usegasApply.getUserId().equals(SecurityUtils.getUserId())){
+            return ResultData.fail("参数异常!");
+        }
+        SaveUtil.setCommonAttr(usegasApply);
+        usegasApplyService.save(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);
+    }
 }

+ 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);
+
 }

+ 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);
 

+ 10 - 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;
@@ -292,23 +290,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 +318,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 +421,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