|
@@ -1,10 +1,12 @@
|
|
|
package com.usky.iot.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alibaba.nacos.shaded.com.google.gson.JsonArray;
|
|
|
import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
@@ -14,17 +16,16 @@ import com.usky.common.core.bean.CommonPage;
|
|
|
import com.usky.common.core.exception.BusinessException;
|
|
|
import com.usky.common.mybatis.core.AbstractCrudService;
|
|
|
import com.usky.common.security.utils.SecurityUtils;
|
|
|
-import com.usky.iot.domain.BaseAlarm;
|
|
|
-import com.usky.iot.domain.DmpDeviceType;
|
|
|
-import com.usky.iot.domain.DmpProductAttribute;
|
|
|
-import com.usky.iot.domain.DmpProductInfo;
|
|
|
+import com.usky.iot.domain.*;
|
|
|
import com.usky.iot.mapper.DmpProductInfoMapper;
|
|
|
import com.usky.iot.service.*;
|
|
|
+import com.usky.iot.service.config.IntegerUtils;
|
|
|
import com.usky.iot.service.vo.DmpProductInfoRequest;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -251,4 +252,77 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
|
|
|
public List<Map<String, Object>> collect() {
|
|
|
return baseMapper.selectCollect();
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> deviceCollect(Integer deptId) {
|
|
|
+ List<Integer> productIds2 = new ArrayList<>();
|
|
|
+ QueryWrapper<DmpProductInfo> query2 = Wrappers.query();
|
|
|
+ query2.select("id as productId","product_name as productName")
|
|
|
+ .eq("delete_flag",0)
|
|
|
+ .eq("tenant_id",SecurityUtils.getTenantId());
|
|
|
+ List<Map<String, Object>> productIds1 = this.listMaps(query2);
|
|
|
+ if (productIds1.size()>0){
|
|
|
+ for (int i = 0; i < productIds1.size(); i++) {
|
|
|
+ productIds2.add(Integer.valueOf(productIds1.get(i).get("productId").toString()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Map<String, Object>> list = new ArrayList<>();
|
|
|
+ if (CollectionUtil.isNotEmpty(productIds2)){
|
|
|
+ QueryWrapper<DmpDeviceStatus> query1 = Wrappers.query();
|
|
|
+ query1.select("product_id as productId","count(*) as count","count(device_status != 1 or null) as " +
|
|
|
+ "faultCount")
|
|
|
+ .in("product_id",productIds2)
|
|
|
+ .groupBy("product_id");
|
|
|
+ list = dmpDeviceStatusService.listMaps(query1);
|
|
|
+ for (int l = 0; l < productIds1.size(); l++) {
|
|
|
+ for (int j = 0; j < list.size(); j++){
|
|
|
+ if (productIds1.get(l).get("productId").equals(list.get(j).get("productId"))){
|
|
|
+ list.get(j).put("productName",productIds1.get(l).get("productName"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Object> deviceStatusStatistic(Integer deptId,String productCode) {
|
|
|
+ List<Object> list2 = new ArrayList<>();
|
|
|
+ QueryWrapper<DmpDeviceStatus> query = Wrappers.query();
|
|
|
+ query.select("count(*) as count","COUNT(device_status=1 or null) as " +
|
|
|
+ "onCount","COUNT(device_status=2 or null) as offCount")
|
|
|
+ .eq(StringUtils.isNotBlank(productCode),"product_code",productCode);
|
|
|
+ List<Map<String, Object>> list = dmpDeviceStatusService.listMaps(query);
|
|
|
+ QueryWrapper<DmpDeviceInfo> query1 = Wrappers.query();
|
|
|
+ query1.select("count(*) as count","COUNT(service_status=1 or null) as notActiveCount")
|
|
|
+ .eq(StringUtils.isNotBlank(productCode),"product_code",productCode);
|
|
|
+ List<Map<String, Object>> list1 = dmpDeviceInfoService.listMaps(query1);
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ if (Integer.valueOf(list.get(0).get("offCount").toString()).equals(0)){
|
|
|
+ map.put("count", 0);
|
|
|
+ map.put("onCount", 0);
|
|
|
+ map.put("offCount", 0);
|
|
|
+ map.put("notActiveCount", 0);
|
|
|
+ map.put("onCountBig", 0);
|
|
|
+ map.put("offCountBig", 0);
|
|
|
+ map.put("notActiveCountBig", 0);
|
|
|
+ }else {
|
|
|
+ BigDecimal onCountBig = new BigDecimal(Integer.valueOf(list.get(0).get("onCount").toString()));
|
|
|
+ BigDecimal temp = new BigDecimal(Integer.valueOf(list.get(0).get("count").toString()));
|
|
|
+ onCountBig = onCountBig.divide(temp,2,RoundingMode.HALF_UP);
|
|
|
+ BigDecimal offCountBig = new BigDecimal(Integer.valueOf(list.get(0).get("offCount").toString()));
|
|
|
+ offCountBig = offCountBig.divide(temp,2,RoundingMode.HALF_UP);
|
|
|
+ BigDecimal notActiveCountBig = new BigDecimal(Integer.valueOf(list1.get(0).get("notActiveCount").toString()));
|
|
|
+ notActiveCountBig = notActiveCountBig.divide(temp,2,RoundingMode.HALF_UP);
|
|
|
+ map.put("count", Integer.valueOf(list.get(0).get("count").toString()));
|
|
|
+ map.put("onCount", Integer.valueOf(list.get(0).get("onCount").toString()));
|
|
|
+ map.put("offCount", Integer.valueOf(list.get(0).get("offCount").toString()));
|
|
|
+ map.put("notActiveCount", Integer.valueOf(list1.get(0).get("notActiveCount").toString()));
|
|
|
+ map.put("onCountBig", onCountBig);
|
|
|
+ map.put("offCountBig", offCountBig);
|
|
|
+ map.put("notActiveCountBig", notActiveCountBig);
|
|
|
+ }
|
|
|
+ list2.add(map);
|
|
|
+ return list2;
|
|
|
+ }
|
|
|
}
|