swb
2024-06-27 2a354294d885900b57bf8b05083f842878668a71
fix:走航车尘负荷路段排名提交
17 files added
6 files modified
687 ■■■■■ changed files
screen-job/src/main/java/com/moral/api/controller/PubController.java 12 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/entity/DustldDTO.java 24 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/entity/HistorySecondCruiser.java 55 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/entity/SecondCruiserSort.java 48 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/entity/SysDictData.java 65 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/entity/SysDictType.java 63 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java 14 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/mapper/ManageCoordinateDetailMapper.java 3 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/mapper/OrganizationMapper.java 6 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/mapper/SecondCruiserSortMapper.java 11 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/mapper/SysDictTypeMapper.java 14 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/HistorySecondCruiserService.java 18 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/SecondCruiserSortService.java 7 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/SysDictTypeService.java 10 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java 150 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/impl/SecondCruiserSortServiceImpl.java 19 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java 36 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java 22 ●●●●● patch | view | raw | blame | history
screen-job/src/main/resources/mapper/HistorySecondCruiserMapper.xml 33 ●●●●● patch | view | raw | blame | history
screen-job/src/main/resources/mapper/ManageCoordinateDetailMapper.xml 13 ●●●●● patch | view | raw | blame | history
screen-job/src/main/resources/mapper/OrganizationMapper.xml 19 ●●●●● patch | view | raw | blame | history
screen-job/src/main/resources/mapper/SecondCruiserSortMapper.xml 22 ●●●●● patch | view | raw | blame | history
screen-job/src/main/resources/mapper/SysDictTypeMapper.xml 23 ●●●●● patch | view | raw | blame | history
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() {
screen-job/src/main/java/com/moral/api/entity/DustldDTO.java
New file
@@ -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;
}
screen-job/src/main/java/com/moral/api/entity/HistorySecondCruiser.java
New file
@@ -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;
    }
}
screen-job/src/main/java/com/moral/api/entity/SecondCruiserSort.java
New file
@@ -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"); // 构造函数中设置默认值
    }
}
screen-job/src/main/java/com/moral/api/entity/SysDictData.java
New file
@@ -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;
}
screen-job/src/main/java/com/moral/api/entity/SysDictType.java
New file
@@ -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;
}
screen-job/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
New file
@@ -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);
}
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);
}
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);
}
screen-job/src/main/java/com/moral/api/mapper/SecondCruiserSortMapper.java
New file
@@ -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);
}
screen-job/src/main/java/com/moral/api/mapper/SysDictTypeMapper.java
New file
@@ -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);
}
screen-job/src/main/java/com/moral/api/service/HistorySecondCruiserService.java
New file
@@ -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);
}
screen-job/src/main/java/com/moral/api/service/SecondCruiserSortService.java
New file
@@ -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> {
}
screen-job/src/main/java/com/moral/api/service/SysDictTypeService.java
New file
@@ -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);
}
screen-job/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
New file
@@ -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;
    }
}
screen-job/src/main/java/com/moral/api/service/impl/SecondCruiserSortServiceImpl.java
New file
@@ -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 {
}
screen-job/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java
New file
@@ -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;
    }
}
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;
    }
}
screen-job/src/main/resources/mapper/HistorySecondCruiserMapper.xml
New file
@@ -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>
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>
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>
screen-job/src/main/resources/mapper/SecondCruiserSortMapper.xml
New file
@@ -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>
screen-job/src/main/resources/mapper/SysDictTypeMapper.xml
New file
@@ -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>