Kaynağa Gözat

东北大学电子信息牌优化修改

xuxiaofei 2 yıl önce
ebeveyn
işleme
be0b29c0e2

+ 5 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteLaboratoryService.java

@@ -593,4 +593,9 @@ public interface RemoteLaboratoryService {
     @PostMapping("/plan/triggerRiskPlan")
     ResultData triggerRiskPlan(@RequestBody SubFunction<SensorFunctionStatus> subFunction);
 
+    /**
+     * 根据气瓶信标查询气瓶日志列表
+     */
+    @GetMapping("/warningNoticeLog/getListByTag")
+    ResultData getListByTag(@RequestParam("tag") String tag);
 }

+ 10 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteLaboratoryFallbackFactory.java

@@ -567,6 +567,16 @@ public class RemoteLaboratoryFallbackFactory implements FallbackFactory<RemoteLa
             public ResultData triggerRiskPlan(SubFunction<SensorFunctionStatus> subFunction) {
                 return ResultData.fail("预案报警失败!!"+ cause.getMessage());
             }
+
+            /**
+             * 根据气瓶信标查询气瓶日志列表
+             *
+             * @param tag
+             */
+            @Override
+            public ResultData getListByTag(String tag) {
+                return ResultData.fail("根据气瓶信标查询气瓶日志列表失败!!"+ cause.getMessage());
+            }
         };
     }
 }

+ 102 - 0
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/controller/DbStockController.java

@@ -1,6 +1,9 @@
 package com.zd.airbottle.controller;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zd.airbottle.domain.DbBeacon;
@@ -9,6 +12,7 @@ import com.zd.airbottle.domain.DbStock;
 import com.zd.airbottle.domain.DbUsageRecord;
 import com.zd.airbottle.domain.bo.DbStockBo;
 import com.zd.airbottle.domain.bo.DbStockParam;
+import com.zd.airbottle.domain.vo.DbInOutRecordVo;
 import com.zd.airbottle.domain.vo.DbStockVo;
 import com.zd.airbottle.service.DbBeaconService;
 import com.zd.airbottle.service.DbInOutRecordService;
@@ -23,6 +27,7 @@ import com.zd.common.core.security.TokenService;
 import com.zd.common.core.utils.StringUtils;
 import com.zd.common.core.web.controller.AbstractController;
 import com.zd.laboratory.api.dto.CheckSubjectDto;
+import com.zd.laboratory.api.dto.WarningNoticeLogDto;
 import com.zd.laboratory.api.feign.RemoteLaboratoryService;
 import com.zd.model.constant.BaseConstants;
 import com.zd.model.constant.HttpStatus;
@@ -36,6 +41,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.text.DecimalFormat;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.util.*;
@@ -458,4 +464,100 @@ public class DbStockController extends AbstractController {
         return ResultData.success(dbStockService.selectStockListGroupBy(bo));
     }
 
+    /**
+     * 按气体名称分组(电子信息牌使用)
+     * @param bo
+     * @return
+     */
+    @ApiOperation(value = "按气体名称分组")
+    @GetMapping(value = "/groupName")
+    public ResultData groupName(DbStockBo bo) {
+        //气瓶分类后显示的长度
+        int num=4;
+        List<DbStockVo> backList = new ArrayList<>();
+        paramCheck.notNull(bo.getSubjectId());
+        List<DbStockVo> list= dbStockService.selectStockListGroupBy(bo);
+        if(list!=null && !list.isEmpty()){
+            Integer totalNum =  list.stream().mapToInt(DbStockVo::getTotalNum).sum();
+            int p=0;
+            for (int i=0;i<list.size();i++){
+                DbStockVo backVo = new DbStockVo();
+                if(i<num){
+                    backVo.setGasName(list.get(i).getGasName());
+                    backVo.setTotalNum(list.get(i).getTotalNum());
+                    backVo.setRatio(myPercent(list.get(i).getTotalNum(),totalNum,"##.0%"));
+                    backList.add(backVo);
+                }else{
+                    p=p+list.get(i).getTotalNum();
+                }
+            }
+
+            if(list.size()>num){
+                DbStockVo backVo2 = new DbStockVo();
+                backVo2.setGasName("其它");
+                backVo2.setTotalNum(p);
+                backVo2.setRatio(myPercent(p,totalNum,"##.0%"));
+                backList.add(backVo2);
+            }
+        }
+        return ResultData.success(backList);
+    }
+
+    /***
+     * 查询实验室下气体列表(信息牌使用)
+     * @param bo
+     * @return
+     */
+    @ApiOperation(value = "查询实验室下气体列表(信息牌使用)")
+    @GetMapping(value = "/getListByName")
+    public ResultData getListByName(DbStockBo bo) {
+        List<DbInOutRecordVo> backList = new ArrayList<>();
+        //实验室下根据气体名称查询未出库的气瓶集合
+        paramCheck.notNull(bo.getSubjectId()).notNull(bo.getGasName());
+        QueryWrapper<DbInOutRecord> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(DbInOutRecord::getSubjectId,bo.getSubjectId()).eq(DbInOutRecord::getGasName,bo.getGasName()).eq(DbInOutRecord::getType,1);
+        List<DbInOutRecord> list = dbInOutRecordService.list(queryWrapper);
+        if(list!=null && !list.isEmpty()){
+            for (DbInOutRecord r:list) {
+                DbInOutRecordVo vo = new DbInOutRecordVo();
+                BeanUtils.copyProperties(r,vo);
+                if(r.getBeaconTag()!=null){
+                    //去lab日志表查询气瓶状态
+                    ResultData rd = remoteLaboratoryService.getListByTag(r.getBeaconTag());
+                    if(rd.getCode()==HttpStatus.SUCCESS){
+                        List<WarningNoticeLogDto> warnList = JSON.parseArray(JSONObject.toJSONString(rd.getData()), WarningNoticeLogDto.class);
+                        if(warnList!=null && !warnList.isEmpty()){
+                            vo.setLocationState(warnList.get(0).getLocationState());
+                        }
+                    }
+                }
+                backList.add(vo);
+            }
+        }
+        return ResultData.success(backList);
+    }
+
+
+
+    /**
+     * 百分比计算
+     *
+     * @param y
+     * @param z
+     * @return
+     */
+    public String myPercent(Integer y, Integer z, String format) {
+        if (0 == y || 0 == z) {
+            return "0%";
+        }
+        // 接受百分比的值
+        String baifenbi = "";
+        double baiy = y * 1.0;
+        double baiz = z * 1.0;
+        double fen = baiy / baiz;
+        DecimalFormat df1 = new DecimalFormat(format);
+        // 百分比格式,后面不足2位的用0补齐
+        baifenbi = df1.format(fen);
+        return baifenbi;
+    }
 }

+ 3 - 0
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/domain/vo/DbInOutRecordVo.java

@@ -106,4 +106,7 @@ public class DbInOutRecordVo {
 
     @ApiModelProperty("年月")
     private String yearMonth;
+
+    @ApiModelProperty("位置状态(0离位 1在位)")
+    private Integer locationState;
 }

+ 3 - 0
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/domain/vo/DbStockVo.java

@@ -69,4 +69,7 @@ public class DbStockVo implements Serializable {
 
     @ApiModelProperty("数量")
     private Integer totalNum;
+
+    @ApiModelProperty("比率")
+    private String ratio;
 }

+ 3 - 2
zd-modules/zd-airbottle/src/main/resources/mapper/airbottle/DbStockMapper.xml

@@ -39,14 +39,15 @@
 
     <select id="selectStockListGroupBy" parameterType="com.zd.airbottle.domain.bo.DbStockBo"
             resultType="com.zd.airbottle.domain.vo.DbStockVo">
-        select s.id,s.gas_name, count(1) totalNum
+        select s.gas_name, count(1) totalNum
         from db_stock s
         <where>
             <if test="deptId != null and deptId !=''">
                 and ( s.college_id in (SELECT dt.dept_id FROM sys_dept dt WHERE find_in_set(#{deptId} ,ancestors )) or s.college_id = #{deptId} )
             </if>
+            <if test="subjectId!=null"> and s.subject_id=#{subjectId}</if>
         </where>
-        GROUP BY s.gas_name
+        GROUP BY s.gas_name order by totalNum desc
     </select>
 
     <select id="selectSubjectListGroupBy" parameterType="com.zd.airbottle.domain.bo.DbStockBo"

+ 11 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/WarningNoticeLogController.java

@@ -2,6 +2,7 @@ package com.zd.laboratory.controller;
 
 import cn.hutool.core.date.LocalDateTimeUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zd.airbottle.api.feign.RemoteAirBottleService;
 import com.zd.common.core.security.TokenService;
@@ -258,4 +259,14 @@ public class WarningNoticeLogController extends AbstractController {
         return ResultData.success(count);
     }
 
+
+    @GetMapping("/getListByTag")
+    @ApiOperation("根据气瓶信标查询气瓶日志")
+    public ResultData getListByTag(@RequestParam("tag") String tag){
+        QueryWrapper<WarningNoticeLog> logQueryWrapper = new QueryWrapper<>();
+        logQueryWrapper.lambda().eq(WarningNoticeLog::getBeaconTag,tag).orderByDesc(WarningNoticeLog::getCreateTime);
+        List<WarningNoticeLog> list = warningNoticeLogService.list(logQueryWrapper);
+        return ResultData.success(list);
+    }
+
 }