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