From 2a354294d885900b57bf8b05083f842878668a71 Mon Sep 17 00:00:00 2001
From: swb <jpy123456>
Date: Thu, 27 Jun 2024 14:14:56 +0800
Subject: [PATCH] fix:走航车尘负荷路段排名提交

---
 screen-job/src/main/resources/mapper/SecondCruiserSortMapper.xml                         |   22 +
 screen-job/src/main/java/com/moral/api/mapper/SecondCruiserSortMapper.java               |   11 
 screen-job/src/main/java/com/moral/api/service/HistorySecondCruiserService.java          |   18 +
 screen-job/src/main/java/com/moral/api/entity/SecondCruiserSort.java                     |   48 ++++
 screen-job/src/main/java/com/moral/api/controller/PubController.java                     |   12 +
 screen-job/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java |  150 ++++++++++++
 screen-job/src/main/java/com/moral/api/service/SysDictTypeService.java                   |   10 
 screen-job/src/main/java/com/moral/api/entity/HistorySecondCruiser.java                  |   55 ++++
 screen-job/src/main/java/com/moral/api/entity/SysDictType.java                           |   63 +++++
 screen-job/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java          |   36 +++
 screen-job/src/main/resources/mapper/SysDictTypeMapper.xml                               |   23 +
 screen-job/src/main/resources/mapper/OrganizationMapper.xml                              |   19 +
 screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java                  |   22 +
 screen-job/src/main/resources/mapper/HistorySecondCruiserMapper.xml                      |   33 ++
 screen-job/src/main/java/com/moral/api/mapper/SysDictTypeMapper.java                     |   14 +
 screen-job/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java            |   14 +
 screen-job/src/main/java/com/moral/api/service/impl/SecondCruiserSortServiceImpl.java    |   19 +
 screen-job/src/main/java/com/moral/api/entity/DustldDTO.java                             |   24 ++
 screen-job/src/main/java/com/moral/api/entity/SysDictData.java                           |   65 +++++
 screen-job/src/main/resources/mapper/ManageCoordinateDetailMapper.xml                    |   13 +
 screen-job/src/main/java/com/moral/api/mapper/ManageCoordinateDetailMapper.java          |    3 
 screen-job/src/main/java/com/moral/api/mapper/OrganizationMapper.java                    |    6 
 screen-job/src/main/java/com/moral/api/service/SecondCruiserSortService.java             |    7 
 23 files changed, 687 insertions(+), 0 deletions(-)

diff --git a/screen-job/src/main/java/com/moral/api/controller/PubController.java b/screen-job/src/main/java/com/moral/api/controller/PubController.java
index bc9dde8..d6fab21 100644
--- a/screen-job/src/main/java/com/moral/api/controller/PubController.java
+++ b/screen-job/src/main/java/com/moral/api/controller/PubController.java
@@ -57,6 +57,9 @@
     @Autowired
     private ManageCoordinateDetailService manageCoordinateDetailService;
 
+    @Autowired
+    private HistorySecondCruiserService historySecondCruiserService;
+
     private final EmailSpringUtil emailSpringUtil;
     private final CityWeatherForecastService cityWeatherForecastService;
 
@@ -163,6 +166,15 @@
         return new ResultMessage();
     }
 
+    @GetMapping("secondCruiserSort")
+    @ApiOperation(value = "���������������", notes = "���������������")
+    public ResultMessage secondCruiserSort() {
+        String startTime ="2024-06-06 00:07:01";
+        String endTime ="2024-06-06 23:07:01";
+        historySecondCruiserService.sort(startTime,endTime);
+        return new ResultMessage();
+    }
+
     @GetMapping("insertCoordinateDetail")
     @ApiOperation(value = "������������", notes = "������������")
     public ResultMessage insertCoordinateDetail() {
diff --git a/screen-job/src/main/java/com/moral/api/entity/DustldDTO.java b/screen-job/src/main/java/com/moral/api/entity/DustldDTO.java
new file mode 100644
index 0000000..8901680
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/DustldDTO.java
@@ -0,0 +1,24 @@
+package com.moral.api.entity;
+
+import lombok.Data;
+
+/**
+ * Description //todo
+ *
+ * @author swb
+ * @ClassName DustldDTO
+ * @date 2024.06.25 14:25
+ */
+@Data
+public class DustldDTO {
+
+
+    private String name;
+    //������
+    private String flyLat;
+    //������
+    private String flyLon;
+
+    //���������
+    private Double  data;
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/HistorySecondCruiser.java b/screen-job/src/main/java/com/moral/api/entity/HistorySecondCruiser.java
new file mode 100644
index 0000000..28e9cab
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/HistorySecondCruiser.java
@@ -0,0 +1,55 @@
+package com.moral.api.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+
+/**
+ * Description //todo
+ *
+ * @author swb
+ * @ClassName HistorySecondCruiser
+ * @date 2024.06.25 14:33
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class HistorySecondCruiser extends Model<HistorySecondCruiser> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������mac
+     */
+    private String mac;
+
+    /**
+     * ������������
+     */
+    private Date time;
+
+    /**
+     * ������
+     */
+    private String value;
+
+    /**
+     * ���������������������id
+     */
+    private Integer organizationId;
+
+    /**
+     * ������������
+     */
+    private Date batch;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/SecondCruiserSort.java b/screen-job/src/main/java/com/moral/api/entity/SecondCruiserSort.java
new file mode 100644
index 0000000..d698262
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/SecondCruiserSort.java
@@ -0,0 +1,48 @@
+package com.moral.api.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.moral.util.DateUtils;
+
+/**
+ * Description //todo
+ *
+ * @author swb
+ * @ClassName SecondCruiserSort
+ * @date 2024.06.25 15:29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SecondCruiserSort extends Model<SecondCruiserSort> {
+
+    /**
+     * ������������
+     */
+    private  String  road;
+
+    /**
+     * ������
+     */
+    private  Double  value;
+
+    /**
+     * mac���
+     */
+    private String  mac;
+    /**
+     * ������Id
+     */
+    private Integer  organizationId;
+
+    /**
+     * ������
+     */
+    private String  time;
+
+
+    public SecondCruiserSort() {
+        this.time =DateUtils.getDateStringOfDay(-1,"yyyy-MM-dd 00:00:00"); // ������������������������������
+    }
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/SysDictData.java b/screen-job/src/main/java/com/moral/api/entity/SysDictData.java
new file mode 100644
index 0000000..99416ef
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/SysDictData.java
@@ -0,0 +1,65 @@
+package com.moral.api.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+
+/**
+ * Description //todo
+ *
+ * @author swb
+ * @ClassName SysDictData
+ * @date 2024.06.25 14:01
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysDictData  extends Model<SysDictData> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * ������������Id
+     */
+    private Integer dictTypeId;
+
+    /**
+     * ������������
+     */
+    @TableField("dataKey")
+    private String dataKey;
+
+    /**
+     * ���������
+     */
+    @TableField("dataValue")
+    private String dataValue;
+
+    /**
+     * ������������
+     */
+    private Date createTime;
+
+    /**
+     * ������������
+     */
+    private Date updateTime;
+
+    /**
+     * ������������
+     */
+    private String isDelete;
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/SysDictType.java b/screen-job/src/main/java/com/moral/api/entity/SysDictType.java
new file mode 100644
index 0000000..da85871
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/SysDictType.java
@@ -0,0 +1,63 @@
+package com.moral.api.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+
+/**
+ * Description //todo
+ *
+ * @author swb
+ * @ClassName SysDictType
+ * @date 2024.06.25 14:05
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysDictType  extends Model<SysDictType> {
+
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * ������
+     */
+    private String name;
+
+    /**
+     * ������
+     */
+    private String desc;
+
+    /**
+     * ������������ ������������
+     */
+    private Integer system;
+
+    /**
+     * ������������
+     */
+    private Date createTime;
+
+    /**
+     * ������������
+     */
+    private Date updateTime;
+
+    /**
+     * ������������
+     */
+    private String isDelete;
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java b/screen-job/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
new file mode 100644
index 0000000..2ee281a
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
@@ -0,0 +1,14 @@
+package com.moral.api.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.entity.HistorySecondCruiser;
+
+public interface HistorySecondCruiserMapper extends BaseMapper<HistorySecondCruiser> {
+
+    List<Map<String,Object>> getDusts(Map<String,Object> params);
+
+    List<HistorySecondCruiser> getResult(String startTime,String endTime);
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/ManageCoordinateDetailMapper.java b/screen-job/src/main/java/com/moral/api/mapper/ManageCoordinateDetailMapper.java
index 0199ec0..b0767b6 100644
--- a/screen-job/src/main/java/com/moral/api/mapper/ManageCoordinateDetailMapper.java
+++ b/screen-job/src/main/java/com/moral/api/mapper/ManageCoordinateDetailMapper.java
@@ -5,6 +5,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.moral.api.entity.CruiserDTO;
+import com.moral.api.entity.DustldDTO;
 import com.moral.api.entity.ManageCoordinate;
 import com.moral.api.entity.ManageCoordinateDetail;
 
@@ -13,4 +14,6 @@
     List<ManageCoordinate> selectCoordinate();
 
     List<CruiserDTO> getCruiserInfo(Map<String,Object> params);
+
+    List<DustldDTO> CompareTo(Integer orgId);
 }
diff --git a/screen-job/src/main/java/com/moral/api/mapper/OrganizationMapper.java b/screen-job/src/main/java/com/moral/api/mapper/OrganizationMapper.java
index f4c72f2..f3c083b 100644
--- a/screen-job/src/main/java/com/moral/api/mapper/OrganizationMapper.java
+++ b/screen-job/src/main/java/com/moral/api/mapper/OrganizationMapper.java
@@ -1,5 +1,9 @@
 package com.moral.api.mapper;
 
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
 import com.moral.api.entity.Organization;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -13,4 +17,6 @@
  */
 public interface OrganizationMapper extends BaseMapper<Organization> {
 
+    List<Integer> orgIdSpecialDevList(@Param("organizationId") Integer organizationId, @Param("mac") String mac);
+
 }
diff --git a/screen-job/src/main/java/com/moral/api/mapper/SecondCruiserSortMapper.java b/screen-job/src/main/java/com/moral/api/mapper/SecondCruiserSortMapper.java
new file mode 100644
index 0000000..375383a
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/SecondCruiserSortMapper.java
@@ -0,0 +1,11 @@
+package com.moral.api.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.entity.SecondCruiserSort;
+
+public interface SecondCruiserSortMapper extends BaseMapper<SecondCruiserSort> {
+
+    void insertAll(List<SecondCruiserSort> list);
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/SysDictTypeMapper.java b/screen-job/src/main/java/com/moral/api/mapper/SysDictTypeMapper.java
new file mode 100644
index 0000000..a52b923
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/SysDictTypeMapper.java
@@ -0,0 +1,14 @@
+package com.moral.api.mapper;
+
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.entity.SysDictData;
+import com.moral.api.entity.SysDictType;
+
+public interface SysDictTypeMapper extends BaseMapper<SysDictType> {
+
+    List<SysDictData> selectCodeList(@Param("code") String code, @Param("id") String id);
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/HistorySecondCruiserService.java b/screen-job/src/main/java/com/moral/api/service/HistorySecondCruiserService.java
new file mode 100644
index 0000000..9b13087
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/HistorySecondCruiserService.java
@@ -0,0 +1,18 @@
+package com.moral.api.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.entity.HistorySecondCruiser;
+
+/**
+ * <p>
+ * ��������������������� ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-09-13
+ */
+public interface HistorySecondCruiserService extends IService<HistorySecondCruiser> {
+
+    void sort(String startTime,String endTime);
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/SecondCruiserSortService.java b/screen-job/src/main/java/com/moral/api/service/SecondCruiserSortService.java
new file mode 100644
index 0000000..d1cb112
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/SecondCruiserSortService.java
@@ -0,0 +1,7 @@
+package com.moral.api.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.entity.SecondCruiserSort;
+
+public interface SecondCruiserSortService extends IService<SecondCruiserSort> {
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/SysDictTypeService.java b/screen-job/src/main/java/com/moral/api/service/SysDictTypeService.java
new file mode 100644
index 0000000..cbe633b
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/SysDictTypeService.java
@@ -0,0 +1,10 @@
+package com.moral.api.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.entity.SysDictData;
+import com.moral.api.entity.SysDictType;
+
+public interface SysDictTypeService extends IService<SysDictType> {
+
+    SysDictData listOne(String code, String dataKey);
+}
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..450c793
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
@@ -0,0 +1,150 @@
+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.Arrays;
+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.entity.SysDictData;
+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.api.service.SysDictTypeService;
+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 SysDictTypeService sysDictTypeService;
+
+    @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.getDateStringOfDay(-1, DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
+            //������������������
+            endTime = DateUtils.getCurDate(DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
+        }
+        SysDictData list = sysDictTypeService.listOne("ZHC", "dustld");
+        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;
+                                if(list.getDataValue().contains(",")){
+                                    List<String> resultStr = Arrays.asList(list.getDataValue().split(","));
+                                    if(resultStr.size() % 2 ==0){
+                                        dustld = numAvg(resultStr,BigDecimal.valueOf(dustld)).doubleValue();
+                                    }
+                                }else {
+                                    BigDecimal dataValue = Objects.nonNull(list.getDataValue())?BigDecimal.valueOf(Double.parseDouble(list.getDataValue())):BigDecimal.ZERO;
+                                    dustld = BigDecimal.valueOf(dustld).add(dataValue).doubleValue();
+                                }
+                                doubleArrayList.add(dustld);
+                                break;
+                            }
+                        }
+                    }
+                    if (ObjectUtils.isEmpty(doubleArrayList)){
+                        continue;
+                    }
+                    Double ListAva = doubleArrayList.stream() .collect(Collectors.averagingDouble(Double::doubleValue));
+                    double rsAvg = new BigDecimal(ListAva/1000).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
+                    secondCruiserSort.setRoad(string);
+                    secondCruiserSort.setValue(rsAvg);
+                    secondCruiserSort.setMac(mac);
+                    secondCruiserSort.setOrganizationId(organizationId);
+                    list1.add(secondCruiserSort);
+                }
+            }
+        }
+        secondCruiserSortMapper.insertAll(list1);
+    }
+
+    private BigDecimal numAvg(List<String> list , BigDecimal num){
+        int nums = 1;
+        for (int i=0;i<list.size();i=i+2){
+            if(num.compareTo(BigDecimal.valueOf(Double.parseDouble(list.get(i))))>= 0 ){
+                return num.add(BigDecimal.valueOf(Double.parseDouble(list.get(i+1))));
+            }
+            nums+=2;
+        }
+        return num;
+    }
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/SecondCruiserSortServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/SecondCruiserSortServiceImpl.java
new file mode 100644
index 0000000..5f0b463
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/SecondCruiserSortServiceImpl.java
@@ -0,0 +1,19 @@
+package com.moral.api.service.impl;
+
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.entity.SecondCruiserSort;
+import com.moral.api.mapper.SecondCruiserSortMapper;
+import com.moral.api.service.SecondCruiserSortService;
+
+/**
+ * Description //todo
+ *
+ * @author swb
+ * @ClassName SecondCruiserSortServiceImpl
+ * @date 2024.06.26 14:29
+ */
+@Service
+public class SecondCruiserSortServiceImpl extends ServiceImpl<SecondCruiserSortMapper, SecondCruiserSort> implements SecondCruiserSortService {
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java
new file mode 100644
index 0000000..47bce0d
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java
@@ -0,0 +1,36 @@
+package com.moral.api.service.impl;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.entity.SysDictData;
+import com.moral.api.entity.SysDictType;
+import com.moral.api.mapper.SysDictTypeMapper;
+import com.moral.api.service.SysDictTypeService;
+
+/**
+ * Description //todo
+ *
+ * @author swb
+ * @ClassName SysDictTypeServiceImpl
+ * @date 2024.06.25 14:10
+ */
+@Service
+public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDictType> implements SysDictTypeService {
+
+
+    @Override
+    public SysDictData listOne(String code, String dataKey) {
+        List<SysDictData> list = this.baseMapper.selectCodeList(code,dataKey);
+        SysDictData sysDictData = new SysDictData();
+        if (CollectionUtils.isNotEmpty(list)) {
+            return list.get(0);
+        }
+        sysDictData.setDataValue("0");
+        return sysDictData;
+
+    }
+}
diff --git a/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java
index 9ae95c9..c4a6323 100644
--- a/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java
+++ b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java
@@ -7,8 +7,10 @@
 import com.moral.api.service.HistoryFiveMinutelyService;
 import com.moral.api.service.HistoryHourlyService;
 import com.moral.api.service.HistoryMonthlyService;
+import com.moral.api.service.HistorySecondCruiserService;
 import com.moral.api.service.HistoryWeeklyService;
 import com.moral.api.service.ManageCoordinateDetailService;
+import com.moral.api.service.impl.HistorySecondCruiserServiceImpl;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
@@ -37,6 +39,10 @@
 
     @Autowired
     private ManageCoordinateDetailService manageCoordinateDetailService;
+
+
+    @Autowired
+    private HistorySecondCruiserService historySecondCruiserService;
 
     //5������������������
     @XxlJob("insertHistoryFiveMinutely")
@@ -165,4 +171,20 @@
     }
 
 
+    /**
+     * ���������������������
+     * @return
+     */
+    @XxlJob("secondCruiserSort")
+    public ReturnT secondCruiserSort(){
+        try {
+            historySecondCruiserService.sort(null,null);
+        } catch (Exception e) {
+            XxlJobHelper.log(e.getMessage());
+            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
+        }
+        return ReturnT.SUCCESS;
+
+    }
+
 }
diff --git a/screen-job/src/main/resources/mapper/HistorySecondCruiserMapper.xml b/screen-job/src/main/resources/mapper/HistorySecondCruiserMapper.xml
new file mode 100644
index 0000000..28397c0
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/HistorySecondCruiserMapper.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.api.mapper.HistorySecondCruiserMapper">
+
+    <!-- ������������������������ -->
+    <resultMap id="BaseResultMap" type="com.moral.api.entity.HistorySecondCruiser">
+        <result column="mac" property="mac"/>
+        <result column="time" property="time"/>
+        <result column="value" property="value"/>
+        <result column="organization_id" property="organizationId"/>
+        <result column="batch" property="batch"/>
+    </resultMap>
+
+
+    <select id="getDusts" resultType="java.util.Map">
+        SELECT
+            value ->>'$.flylat' as flyLat,value ->>'$.flylon' as flyLon,value ->>'$.dustld' as dustld,
+            `time`
+        FROM `history_second_cruiser`
+        WHERE mac = #{mac}
+          AND `time` <![CDATA[>=]]> #{startTime}
+          AND `time` <![CDATA[<=]]> #{endTime}
+    </select>
+
+    <select id="getResult" resultType="com.moral.api.entity.HistorySecondCruiser">
+        SELECT
+            distinct mac,organization_id
+        FROM `history_second_cruiser`
+        WHERE
+           `time` <![CDATA[>=]]> #{startTime}
+          AND `time` <![CDATA[<=]]> #{endTime}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/ManageCoordinateDetailMapper.xml b/screen-job/src/main/resources/mapper/ManageCoordinateDetailMapper.xml
index ab7b9c5..a605f40 100644
--- a/screen-job/src/main/resources/mapper/ManageCoordinateDetailMapper.xml
+++ b/screen-job/src/main/resources/mapper/ManageCoordinateDetailMapper.xml
@@ -28,4 +28,17 @@
         order by time
     </select>
 
+    <select id="CompareTo" resultType="com.moral.api.entity.DustldDTO">
+        SELECT
+            mc.start_point as name ,
+            md.longitude as flyLon,
+            md.latitude as  flyLat
+        FROM
+            manage_coordinate AS mc
+                LEFT JOIN manage_coordinate_detail AS md ON mc.coordinate_id = md.coordinate_id
+        WHERE
+            mc.is_del =0
+          and mc.organization_id=#{orgId}
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/OrganizationMapper.xml b/screen-job/src/main/resources/mapper/OrganizationMapper.xml
index 7dca616..39f2333 100644
--- a/screen-job/src/main/resources/mapper/OrganizationMapper.xml
+++ b/screen-job/src/main/resources/mapper/OrganizationMapper.xml
@@ -26,4 +26,23 @@
                     <result column="is_delete" property="isDelete" />
         </resultMap>
 
+    <select id="orgIdSpecialDevList" resultType="java.lang.Integer">
+        select organization_id from special_device where organization_id in (
+            SELECT id FROM (
+                               SELECT id, parent_id, name FROM organization  WHERE id = #{organizationId}
+                               UNION ALL
+                               SELECT i.id, i.parent_id, i.name
+                               FROM organization  i
+                                        INNER JOIN (
+                                   SELECT * FROM (
+                                                     SELECT id, parent_id, name FROM organization  WHERE id = #{organizationId}
+                                                     UNION ALL
+                                                     SELECT id, parent_id, name FROM organization WHERE parent_id = #{organizationId}
+                                                 ) t1
+                               ) t2 ON i.parent_id = t2.id
+                               where i.is_delete = 0
+                           ) t3 ) and mac = #{mac} and is_delete = 0
+
+
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/SecondCruiserSortMapper.xml b/screen-job/src/main/resources/mapper/SecondCruiserSortMapper.xml
new file mode 100644
index 0000000..c8e561e
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/SecondCruiserSortMapper.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.api.mapper.SecondCruiserSortMapper">
+
+    <!-- ������������������������ -->
+    <resultMap id="BaseResultMap" type="com.moral.api.entity.SecondCruiserSort">
+        <result column="road" property="road"/>
+        <result column="time" property="time"/>
+        <result column="value" property="value"/>
+        <result column="mac" property="mac"/>
+        <result column="organization_id" property="organizationId"/>
+    </resultMap>
+
+    <insert id="insertAll">
+        INSERT INTO second_cruiser_sort (road,time,value,mac,organization_id)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.road},#{item.time},#{item.value},#{item.mac},#{item.organizationId})
+        </foreach>
+    </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/SysDictTypeMapper.xml b/screen-job/src/main/resources/mapper/SysDictTypeMapper.xml
new file mode 100644
index 0000000..54cc75b
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/SysDictTypeMapper.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.api.mapper.SysDictTypeMapper">
+
+        <!-- ������������������������ -->
+        <resultMap id="BaseResultMap" type="com.moral.api.entity.SysDictType">
+                    <id column="id" property="id" />
+                    <result column="name" property="name" />
+                    <result column="desc" property="desc" />
+                    <result column="system" property="system" />
+                    <result column="create_time" property="createTime" />
+                    <result column="update_time" property="updateTime" />
+                    <result column="is_delete" property="isDelete" />
+        </resultMap>
+    <select id="selectCodeList" resultType="com.moral.api.entity.SysDictData">
+        select t1.id,t1.dict_type_id,t1.dataKey,t1.dataValue from sys_dict_type t
+                             left join sys_dict_data t1 on t1.dict_type_id = t.id
+        where t.is_delete = 0 and t.name = #{code} and t1.dataKey = #{id} and t1.is_delete = 0
+        order by t1.create_time desc
+    </select>
+
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.8.0