From a022ae9804d0c2f402711b6b5202319d853919cf Mon Sep 17 00:00:00 2001
From: cjl <909710561@qq.com>
Date: Fri, 09 Aug 2024 13:38:47 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into cjl

---
 screen-job/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java |  131 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 131 insertions(+), 0 deletions(-)

diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
new file mode 100644
index 0000000..4813ddb
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
@@ -0,0 +1,131 @@
+package com.moral.api.service.impl;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.entity.DustldDTO;
+import com.moral.api.entity.HistorySecondCruiser;
+import com.moral.api.entity.SecondCruiserSort;
+import com.moral.api.mapper.HistorySecondCruiserMapper;
+import com.moral.api.mapper.ManageCoordinateDetailMapper;
+import com.moral.api.mapper.OrganizationMapper;
+import com.moral.api.mapper.SecondCruiserSortMapper;
+import com.moral.api.service.HistorySecondCruiserService;
+import com.moral.util.DateUtils;
+
+/**
+ * Description //todo
+ *
+ * @author swb
+ * @ClassName HistorySecondCruiserServiceImpl
+ * @date 2024.06.25 14:41
+ */
+@Service
+@Slf4j
+public class HistorySecondCruiserServiceImpl extends ServiceImpl<HistorySecondCruiserMapper, HistorySecondCruiser> implements HistorySecondCruiserService {
+
+    @Autowired
+    private HistorySecondCruiserMapper historySecondCruiserMapper;
+    @Autowired
+    private OrganizationMapper organizationMapper;
+    @Autowired
+    private ManageCoordinateDetailMapper manageCoordinateDetailMapper;
+    @Autowired
+    private SecondCruiserSortMapper secondCruiserSortMapper;
+
+
+    @Override
+    @Transactional
+    public void sort(String startTime, String endTime) {
+
+        if (ObjectUtils.isEmpty(startTime)&&ObjectUtils.isEmpty(endTime)){
+            //������������������������������
+            startTime = DateUtils.getDateStringOfHour(-2, "yyyy-MM-dd HH:00:00");
+
+            //������������������
+            endTime = DateUtils.getCurDate("yyyy-MM-dd HH:00:00");
+        }
+        List<HistorySecondCruiser> result = historySecondCruiserMapper.getResult(startTime, endTime);
+
+        //
+        ArrayList<SecondCruiserSort> list1 = new ArrayList<>();
+        if (!ObjectUtils.isEmpty(result)){
+            for (HistorySecondCruiser historySecondCruiser : result) {
+                String mac = historySecondCruiser.getMac();
+                Integer organizationId = historySecondCruiser.getOrganizationId();
+                List<Integer> orgList = organizationMapper.orgIdSpecialDevList(organizationId, mac);
+                if(CollectionUtils.isEmpty(orgList)){
+                    return;
+                }
+
+                HashMap<String, Object> params = new HashMap<>();
+                params.put("mac",mac);
+                params.put("startTime",startTime);
+                params.put("endTime",endTime);
+                List<Map<String, Object>> dusts = historySecondCruiserMapper.getDusts(params);
+                Map<String, List<DustldDTO>> collect = manageCoordinateDetailMapper.CompareTo(orgList.get(0)).stream().collect(Collectors.groupingBy(o -> o.getName()));
+                if (ObjectUtils.isEmpty(dusts) || ObjectUtils.isEmpty(collect)){
+                    return;
+                }
+                Set<String> strings = collect.keySet();
+                for (String string : strings) {
+                    SecondCruiserSort secondCruiserSort = new SecondCruiserSort();
+                    ArrayList<Double> doubleArrayList = new ArrayList<>();
+                    List<DustldDTO> dustldDTOS = collect.get(string);
+                    for (DustldDTO dustldDTO : dustldDTOS) {
+                        String flyLat = dustldDTO.getFlyLat();
+                        String flyLon = dustldDTO.getFlyLon();
+                        if (flyLon==null && flyLat==null){
+                            continue;
+                        }
+                        double latDouble1 = Double.parseDouble(flyLat);
+                        double lonDouble1 = Double.parseDouble(flyLon);
+                        for (Map<String, Object> dust : dusts) {
+                            String flyLat1 = Objects.nonNull(dust.get("flyLat")) ? dust.get("flyLat").toString() :"0";
+                            String flyLon1 = Objects.nonNull(dust.get("flyLon")) ? dust.get("flyLon").toString() :"0";
+                            double latDouble = Double.parseDouble(flyLat1);
+                            double lonDouble = Double.parseDouble(flyLon1);
+//                    String flyLon1 = dust.get("flyLon").toString();
+                            if (latDouble1==latDouble && lonDouble1==lonDouble){
+                                Double dustld = Objects.nonNull(dust.get("dustld"))?Double.parseDouble(dust.get("dustld").toString()):0d;
+                                doubleArrayList.add(dustld);
+                                break;
+                            }
+                        }
+                    }
+                    if (ObjectUtils.isEmpty(doubleArrayList)){
+                        continue;
+                    }
+                    Double ListAva = doubleArrayList.stream() .collect(Collectors.averagingDouble(Double::doubleValue));
+                    double rsAvg = new BigDecimal(ListAva).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+                    secondCruiserSort.setRoad(string);
+                    secondCruiserSort.setValue(rsAvg);
+                    secondCruiserSort.setMac(mac);
+                    secondCruiserSort.setOrganizationId(organizationId);
+                    secondCruiserSort.setTime(endTime);
+                    list1.add(secondCruiserSort);
+                }
+            }
+        }
+        if (!ObjectUtils.isEmpty(list1)){
+//            log.info(list1.size()+"");
+            secondCruiserSortMapper.insertAll(list1);
+        }
+
+    }
+
+}

--
Gitblit v1.8.0