|
@@ -89,103 +89,25 @@ public class IotOpeationFillController {
|
|
|
public CommonResult<Integer> insertLog(@Valid @RequestBody List<IotOpeationFillSaveReqVO>createReqVO) {
|
|
|
List<IotOpeationFillSaveReqVO> fillList = createReqVO;
|
|
|
|
|
|
- // 定义当日字段与累计字段的映射关系
|
|
|
- Map<String, String> dailyToTotalMap = new HashMap<>();
|
|
|
- dailyToTotalMap.put("当日运转时间", "累计运行时间"); // 兼容两个可能的累计名称
|
|
|
- dailyToTotalMap.put("当日注气量", "累计注气量");
|
|
|
- dailyToTotalMap.put("当日公里数", "累计公里数");
|
|
|
- dailyToTotalMap.put("当日用电量", "累计用电量");
|
|
|
- dailyToTotalMap.put("当日注水量", "累计注水量");
|
|
|
- //泵车
|
|
|
- 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());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 第二遍遍历:更新累计数据
|
|
|
- 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;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ for (IotOpeationFillSaveReqVO fill:fillList) {
|
|
|
|
|
|
- // 定义当日字段与累计字段的映射关系
|
|
|
- Map<String, String> dailyToTotalMap1 = new HashMap<>();
|
|
|
- dailyToTotalMap1.put("发动机累计公里数填报", "发动机累计公里数");
|
|
|
- dailyToTotalMap1.put("变速箱累计公里数填报", "变速箱累计公里数");
|
|
|
- dailyToTotalMap1.put("发动机累计运行时长填报", "发动机累计运行时长");
|
|
|
- dailyToTotalMap1.put("吊车累计运行时长填报", "吊车累计运行时长");
|
|
|
- dailyToTotalMap1.put("吊车累计运行公里数填报", "吊车累计运行公里数");
|
|
|
- dailyToTotalMap1.put("液压油累计运行时长填报", "液压油累计运行时长");
|
|
|
- dailyToTotalMap1.put("底盘发动机累计公里数填报", "底盘发动机累计公里数");
|
|
|
- dailyToTotalMap1.put("底盘发动机累计运行时长填报", "底盘发动机累计运行时长");
|
|
|
- dailyToTotalMap1.put("台上发动机累计运转时长填报", "台上发动机累计运转时长");
|
|
|
- dailyToTotalMap1.put("台上动力端/变速箱累计运转时长填报", "台上动力端/变速箱累计运转时长");
|
|
|
-
|
|
|
-
|
|
|
- // 存储当日数据值的映射
|
|
|
- Map<String, BigDecimal> dailyValues1 = new HashMap<>();
|
|
|
-
|
|
|
- // 第一遍遍历:收集当日数据值
|
|
|
- for (IotOpeationFillSaveReqVO item : fillList) {
|
|
|
- String pointName = item.getPointName();
|
|
|
- if (dailyToTotalMap1.containsKey(pointName)) {
|
|
|
- try {
|
|
|
- dailyValues1.put(pointName, new BigDecimal(item.getFillContent()));
|
|
|
- } catch (NumberFormatException e) {
|
|
|
- // 处理数据格式错误,记录日志或抛出异常
|
|
|
- System.out.println("数据格式错误,pointName={}, fillContent={}"+pointName+item.getFillContent());
|
|
|
+ //累计并且设置了累计值,数据累加
|
|
|
+ //累计并且设置了累计值,数据不累加
|
|
|
+ if(fill.getIsSum()==1&&fill.getDefaultValue()!=""&&fill.getSumId()==1){
|
|
|
+ for (IotOpeationFillSaveReqVO fill1:fillList) {
|
|
|
+ if(Long.parseLong(fill.getDefaultValue())==fill1.getModelId()){
|
|
|
+ fill.setTotalRunTime(fill.getTotalRunTime().add(new BigDecimal(fill1.getFillContent())));
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 第二遍遍历:更新累计数据
|
|
|
- for (IotOpeationFillSaveReqVO item : fillList) {
|
|
|
- String pointName = item.getPointName();
|
|
|
- // 检查当前项是否为累计项,并且是否有对应的当日数据
|
|
|
- for (Map.Entry<String, String> entry : dailyToTotalMap1.entrySet()) {
|
|
|
- String dailyName = entry.getKey();
|
|
|
- String totalName = entry.getValue();
|
|
|
-
|
|
|
- if (pointName.equals(totalName) && item.getIsCollection() == 0 && dailyValues1.containsKey(dailyName)) {
|
|
|
- BigDecimal dailyValue = dailyValues1.get(dailyName);
|
|
|
- item.setTotalRunTime(dailyValue);
|
|
|
- break;
|
|
|
+ }else if(fill.getIsSum()==1&&fill.getDefaultValue()!=""&&fill.getSumId()==0){
|
|
|
+ for (IotOpeationFillSaveReqVO fill1:fillList) {
|
|
|
+ if(Long.parseLong(fill.getDefaultValue())==fill1.getModelId()){
|
|
|
+ fill.setTotalRunTime(new BigDecimal(fill1.getFillContent()));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
List< IotDeviceRunLogDO > logDO = new ArrayList<>();
|
|
|
|
|
|
for (IotOpeationFillSaveReqVO fill:fillList) {
|