Commit 7b8d72d1 authored by 赵啸非's avatar 赵啸非

修改统计逻辑

parent a3c983bc
......@@ -6,13 +6,15 @@ import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.device.model.DeviceMessageStatEntity;
import com.mortals.xhx.module.device.service.DeviceMessageStatService;
import com.mortals.xhx.module.product.model.ProductEntity;
import com.mortals.xhx.module.product.model.ProductQuery;
import com.mortals.xhx.module.product.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -27,6 +29,8 @@ public class DeviceMessageStatController extends BaseCRUDJsonBodyMappingControll
@Autowired
private ParamService paramService;
@Autowired
private ProductService productService;
public DeviceMessageStatController() {
super.setModuleDesc("设备消息统计");
......@@ -43,10 +47,35 @@ public class DeviceMessageStatController extends BaseCRUDJsonBodyMappingControll
protected int doListAfter(DeviceMessageStatEntity query, Map<String, Object> model, Context context) throws AppException {
List<DeviceMessageStatEntity> statEntities = (List<DeviceMessageStatEntity>) model.get(KEY_RESULT_DATA);
//重新分组返回 [{date:2024-8}]
if(!ObjectUtils.isEmpty(statEntities)){
if (!ObjectUtils.isEmpty(statEntities)) {
//按月分组
Map<Integer, Map<String, List<DeviceMessageStatEntity>>> collect = statEntities.stream().collect(Collectors.groupingBy(DeviceMessageStatEntity::getMonth, Collectors.groupingBy(DeviceMessageStatEntity::getProductCode)));
Map<Integer, Map<String, List<DeviceMessageStatEntity>>> collect = statEntities.stream().collect(Collectors.groupingBy(DeviceMessageStatEntity::getMonth, Collectors.groupingBy(DeviceMessageStatEntity::getProductName, Collectors.toList())));
Map<Integer, Integer> monthStat = statEntities.stream().collect(Collectors.groupingBy(DeviceMessageStatEntity::getMonth, Collectors.summingInt(x -> x.getAlarmTotalCount())));
List<ProductEntity> productEntities = new ArrayList<ProductEntity>();
if (!ObjectUtils.isEmpty(query.getProductCodeList())) {
ProductQuery productQuery = new ProductQuery();
productQuery.setProductCodeList(query.getProductCodeList());
productEntities = productService.find(productQuery);
} else {
productEntities = productService.find(new ProductEntity());
}
for (int i = 1; i <= 12; i++) {
if (!collect.containsKey(i)) {
Map<String, List<DeviceMessageStatEntity>> map = new HashMap<>();
for (ProductEntity productEntity : productEntities) {
DeviceMessageStatEntity deviceMessageStatEntity = new DeviceMessageStatEntity();
deviceMessageStatEntity.initAttrValue();
map.put(productEntity.getProductName(), Arrays.asList(deviceMessageStatEntity));
}
collect.put(i, map);
}
if (monthStat.containsKey(i)) {
monthStat.put(i, 0);
}
}
model.put("stat", collect);
model.put("monthStat", monthStat);
}
return super.doListAfter(query, model, context);
}
......
......@@ -104,7 +104,6 @@ Content-Type: application/json
{
"size": -1,
"groupList": ["productCode","month"],
"productCodeList": ["pdj"],
"year": 2024,
"siteId": 1,
"orderColList": [{"colName":"month","sortKind":"asc"}]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment