|
@@ -87,62 +87,43 @@ public class IotOpeationFillController {
|
|
|
public CommonResult<Integer> insertLog(@Valid @RequestBody List<IotOpeationFillSaveReqVO>createReqVO) {
|
|
|
List<IotOpeationFillSaveReqVO> fillList = createReqVO;
|
|
|
|
|
|
- String fillContent = null;
|
|
|
- for (IotOpeationFillSaveReqVO dayilyRun:fillList) {
|
|
|
- if(dayilyRun.getPointName().equals("当日运转时间")){
|
|
|
- fillContent = dayilyRun.getFillContent();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- for (IotOpeationFillSaveReqVO totalRun:fillList) {
|
|
|
- if((totalRun.getPointName().equals("累计运转时间")||totalRun.getPointName().equals("累计运行时间"))&&totalRun.getIsCollection()==0){
|
|
|
- double total = Double.parseDouble(fillContent);
|
|
|
- totalRun.setTotalRunTime(BigDecimal.valueOf(total).add(totalRun.getTotalRunTime()));
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- fillContent = null;
|
|
|
- for (IotOpeationFillSaveReqVO dayilyGas:fillList) {
|
|
|
- if(dayilyGas.getPointName().equals("当日注气量")){
|
|
|
- fillContent = dayilyGas.getFillContent();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- for (IotOpeationFillSaveReqVO totalGas:fillList) {
|
|
|
- if(totalGas.getPointName().equals("累计注气量")&&totalGas.getIsCollection()==0){
|
|
|
- double total = Double.parseDouble(fillContent);
|
|
|
- totalGas.setTotalRunTime(BigDecimal.valueOf(total).add(totalGas.getTotalRunTime()));
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- fillContent = null;
|
|
|
- for (IotOpeationFillSaveReqVO dayilyKm:fillList) {
|
|
|
- if(dayilyKm.getPointName().equals("当日公里数")){
|
|
|
- fillContent = dayilyKm.getFillContent();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- for (IotOpeationFillSaveReqVO totalKm:fillList) {
|
|
|
- if(totalKm.getPointName().equals("累计公里数")&&totalKm.getIsCollection()==0){
|
|
|
- double total = Double.parseDouble(fillContent);
|
|
|
- totalKm.setTotalRunTime(BigDecimal.valueOf(total).add(totalKm.getTotalRunTime()));
|
|
|
- break;
|
|
|
+ // 定义当日字段与累计字段的映射关系
|
|
|
+ Map<String, String> dailyToTotalMap = new HashMap<>();
|
|
|
+ dailyToTotalMap.put("当日运转时间", "累计运转时间");
|
|
|
+ dailyToTotalMap.put("当日运转时间", "累计运行时间"); // 兼容两个可能的累计名称
|
|
|
+ dailyToTotalMap.put("当日注气量", "累计注气量");
|
|
|
+ dailyToTotalMap.put("当日公里数", "累计公里数");
|
|
|
+ dailyToTotalMap.put("当日用电量", "累计用电量");
|
|
|
+
|
|
|
+ // 存储当日数据值的映射
|
|
|
+ Map<String, BigDecimal> dailyValues = new HashMap<>();
|
|
|
+
|
|
|
+ // 第一遍遍历:收集当日数据值
|
|
|
+ for (IotOpeationFillSaveReqVO item : fillList) {
|
|
|
+ String pointName = item.getPointName();
|
|
|
+ if (dailyToTotalMap.containsKey(pointName)) {
|
|
|
+ try {
|
|
|
+ dailyValues.put(pointName, new BigDecimal(item.getFillContent()));
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ // 处理数据格式错误,记录日志或抛出异常
|
|
|
+ System.out.println("数据格式错误,pointName={}, fillContent={}"+pointName+item.getFillContent());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- fillContent = null;
|
|
|
- for (IotOpeationFillSaveReqVO dayilyDl:fillList) {
|
|
|
- if(dayilyDl.getPointName().equals("当日用电量")){
|
|
|
- fillContent = dayilyDl.getFillContent();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- for (IotOpeationFillSaveReqVO totalDl:fillList) {
|
|
|
- if(totalDl.getPointName().equals("累计用电量")&&totalDl.getIsCollection()==0){
|
|
|
- double total = Double.parseDouble(fillContent);
|
|
|
- totalDl.setTotalRunTime(BigDecimal.valueOf(total).add(totalDl.getTotalRunTime()));
|
|
|
- break;
|
|
|
+ // 第二遍遍历:更新累计数据
|
|
|
+ for (IotOpeationFillSaveReqVO item : fillList) {
|
|
|
+ String pointName = item.getPointName();
|
|
|
+ // 检查当前项是否为累计项,并且是否有对应的当日数据
|
|
|
+ for (Map.Entry<String, String> entry : dailyToTotalMap.entrySet()) {
|
|
|
+ String dailyName = entry.getKey();
|
|
|
+ String totalName = entry.getValue();
|
|
|
+
|
|
|
+ if (pointName.equals(totalName) && item.getIsCollection() == 0 && dailyValues.containsKey(dailyName)) {
|
|
|
+ BigDecimal dailyValue = dailyValues.get(dailyName);
|
|
|
+ item.setTotalRunTime(dailyValue.add(item.getTotalRunTime()));
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -370,7 +351,7 @@ public class IotOpeationFillController {
|
|
|
|
|
|
|
|
|
}else{
|
|
|
- attrsDO.setFillContent("0.0");
|
|
|
+ attrsDO.setFillContent("");
|
|
|
if(StringUtils.isEmpty(maxLog)){
|
|
|
attrsDO.setTotalRunTime(BigDecimal.valueOf(0));
|
|
|
}else{
|
|
@@ -401,7 +382,7 @@ public class IotOpeationFillController {
|
|
|
|
|
|
|
|
|
}else{
|
|
|
- attrsDO.setFillContent("0.0");
|
|
|
+ attrsDO.setFillContent("");
|
|
|
if(StringUtils.isEmpty(maxLog)){
|
|
|
attrsDO.setTotalRunTime(BigDecimal.valueOf(0));
|
|
|
}else{
|