Administrator
2023-08-21 fdbb8d1d091524727456bf63d86b9612d39f822d
Merge remote-tracking branch 'origin/master'
已添加7个文件
已修改9个文件
886 ■■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/uav/controller/ArdUavController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/uav/service/UavService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/dispatch/controller/ArdDispatchPoliceController.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/dispatch/domain/ArdDispatchPolice.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/dispatch/domain/ArdDispatchPoliceUser.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/dispatch/mapper/ArdDispatchPoliceMapper.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/dispatch/service/IArdDispatchPoliceService.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/dispatch/service/impl/ArdDispatchPoliceServiceImpl.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/forest/UavClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/alarmpoints/ArdAlarmpointsWellMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/dispatch/ArdDispatchPoliceMapper.xml 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
@@ -125,45 +125,50 @@
     */
    @Override
    public List<SysUser> getNearAppUsers(SchedulingParam param) {
        Double longitude = param.getLongitude();
        Double latitude = param.getLatitude();
        if (longitude == null && latitude == null) {
            log.debug("原点坐标为空");
            return null;
        }
        Integer radius = param.getSealingRadius();
        if (radius == null) {
            log.debug("半径距离为空");
            return null;
        }
        SysUser user = new SysUser();
        List<SysUser> appUserList = iSysUserService.selectAllAppUserList(user);
        //过滤在线
        List<SysUser> onLineList = appUserList.stream()
                .filter(sysUser -> (sysUser.getAppOnlineState().equals("1")))
                .collect(Collectors.toList());
        //过滤范围
        List<SysUser> filteredList = new ArrayList<>();
        for(SysUser sysUser:onLineList) {
            ArdAppPosition ardAppPosition = ardAppPositionMapper.selectLastArdAppPositionByUserId(sysUser.getUserId());
            if (ardAppPosition != null) {
                Double lon = ardAppPosition.getLongitude();
                Double lat = ardAppPosition.getLatitude();
                if(longitude==null||latitude==null)
                {
                    continue;
                }
                double distance = GisTool.getDistance(new double[]{ longitude, latitude}, new double[]{ lon, lat});
                if (distance <= radius) {
                    Map<String,Object> params=new HashMap<>();
                    params.put("longitude",lon);
                    params.put("latitude",lat);
                    sysUser.setParams(params);
                    filteredList.add(sysUser); // å°†æ»¡è¶³æ¡ä»¶çš„用户添加到筛选列表中
        try {
            Long deptId = SecurityUtils.getLoginUser().getUser().getDeptId();
            Double longitude = param.getLongitude();
            Double latitude = param.getLatitude();
            if (longitude == null && latitude == null) {
                log.debug("原点坐标为空");
                return null;
            }
            Integer radius = param.getSealingRadius();
            if (radius == null) {
                log.debug("半径距离为空");
                return null;
            }
            SysUser user = new SysUser();
            user.setDeptId(deptId);
            List<SysUser> appUserList = iSysUserService.selectAllAppUserList(user);
            //过滤在线
            List<SysUser> onLineList = appUserList.stream()
                    .filter(sysUser -> (sysUser.getAppOnlineState().equals("1")))
                    .collect(Collectors.toList());
            //过滤范围
            for (SysUser sysUser : onLineList) {
                ArdAppPosition ardAppPosition = ardAppPositionMapper.selectLastArdAppPositionByUserId(sysUser.getUserId());
                if (ardAppPosition != null) {
                    Double lon = ardAppPosition.getLongitude();
                    Double lat = ardAppPosition.getLatitude();
                    if (longitude == null || latitude == null) {
                        continue;
                    }
                    double distance = GisTool.getDistance(new double[]{longitude, latitude}, new double[]{lon, lat});
                    if (distance <= radius) {
                        Map<String, Object> params = new HashMap<>();
                        params.put("longitude", lon);
                        params.put("latitude", lat);
                        sysUser.setParams(params);
                        filteredList.add(sysUser); // å°†æ»¡è¶³æ¡ä»¶çš„用户添加到筛选列表中
                    }
                }
            }
        } catch (Exception ex) {
            log.error("获取封控圈内所有在线app用户异常" + ex.getMessage());
        }
        return filteredList;
    }
ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
@@ -104,7 +104,7 @@
     * éƒ¨é—¨ID
     */
    @Excel(name = "部门ID")
    private Integer deptId;
    private Long deptId;
    /**
     * æ–¹ä½è§’
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -47,8 +47,7 @@
    private SysDeptMapper sysDeptMapper;
    @Resource
    private RedisCache redisCache;
    @Resource
    private IHikClientService hikClientService;
    @Resource
    private ArdChannelMapper ardChannelMapper;
@@ -235,6 +234,13 @@
        }
        if (ardCameras.size() > 0) {
            for (ArdCameras camera : ardCameras) {
                ArdChannel ardChannel=new ArdChannel();
                ardChannel.setDeviceId(camera.getId());
                List<ArdChannel> ardChannels = ardChannelMapper.selectArdChannelList(ardChannel);
                if(ardChannels!=null)
                {
                    camera.setChannelList(ardChannels);
                }
                Map<String, Object> cameraMap = ArdTool.convertEntityToMap(camera);
                childList.add(cameraMap);
            }
@@ -297,6 +303,7 @@
    @Override
    public List<ArdCameras> getNearCameras(SchedulingParam param) {
        try {
            Long deptId=SecurityUtils.getLoginUser().getUser().getDeptId();
            Double longitude = param.getLongitude();
            Double latitude = param.getLatitude();
            if (longitude == null && latitude == null) {
@@ -309,8 +316,10 @@
                return null;
            }
            String dayNightTime = redisCache.getCacheObject("sys_config:dayNightTime");
            //获取所有光电
            List<ArdCameras> ardCamerasList = ardCamerasMapper.selectArdCamerasList(new ArdCameras());
            //获取所有光电(按部门)
            ArdCameras cameras= new ArdCameras();
            cameras.setDeptId(deptId);
            List<ArdCameras> ardCamerasList = ardCamerasMapper.selectArdCamerasList(cameras);
            //统计所有光电可视范围内与报警点的距离
            List<ArdCameras> ardCameras = new ArrayList<>();
            for (ArdCameras camera : ardCamerasList) {
ard-work/src/main/java/com/ruoyi/device/uav/controller/ArdUavController.java
@@ -44,7 +44,7 @@
    @PostMapping("/")
    @ApiOperation("无人机post接口")
    public Object post(@RequestBody Map<String,String> param) {
    public Object post(@RequestBody Map<String, String> param) {
        String url = param.get("url");
        String data = param.get("data");
        return this.uavService.doUavRequest(POST, url, data);
@@ -52,9 +52,18 @@
    @DeleteMapping("/")
    @ApiOperation("无人机delete接口")
    public Object delete(@RequestParam String url, @RequestParam String data) {
    public Object delete(@RequestBody Map<String, String> param) {
        String url = param.get("url");
        String data = param.get("data");
        return this.uavService.doUavRequest(DELETE, url, data);
    }
    @GetMapping("/getToken")
    @ApiOperation("无人机delete接口")
    public Object getToken() {
        return this.uavService.getToken();
    }
}
ard-work/src/main/java/com/ruoyi/device/uav/service/UavService.java
@@ -5,6 +5,7 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.utils.forest.UavClient;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
@@ -29,12 +30,12 @@
    public static final String PASSWORD = "ardkj12345";//密码
    public static final String SALT = "0123456789012345";//盐
    //token ç™»é™†åŽæ¯æ¬¡è¯·æ±‚,在header中携带
    private String token;//登录成功返回的token
    private Map uavUser;//登录的用户信息
    private ObjectMapper om = new ObjectMapper();
    @Autowired
    private UavClient uavClient;
    @Autowired
    private RedisCache redisCache;
    @PostConstruct
    public void created() {
@@ -51,32 +52,40 @@
            e.printStackTrace();
        }
        //执行method
        this.getToken();//获取token验证,验证token有效性
        try {
            res = (String) requestMethod.invoke(this.uavClient, url, this.token, data);
        } catch (InvocationTargetException e) {
            ForestNetworkException fe = (ForestNetworkException) e.getCause();
            if (fe.getStatusCode() == 401) {//token失效,重新登录
                this.login();
            }
            try {//再次调用接口
                res = (String) requestMethod.invoke(this.uavClient, url, this.token, data);
            } catch (IllegalAccessException ex) {
                ex.printStackTrace();
            } catch (InvocationTargetException ex) {
                ex.printStackTrace();
            }
            res = (String) requestMethod.invoke(this.uavClient, url, this.getToken(), data);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
            System.out.println("doUavRequest è®¿é—®å¤±è´¥" + e.getMessage());
        } catch (InvocationTargetException e) {
            System.out.println("doUavRequest æ‰§è¡Œå¤±è´¥" + e.getMessage());
            e.printStackTrace();
        }
        return res;
    }
    public Map getUavUser() {
        if (this.uavUser == null) {
            this.login();
        return redisCache.getCacheMap("uav:uavUser");
    }
    public String getToken() {
        //获取uav用户信息
        Map uavUser = redisCache.getCacheMap("uav:uavUser");
        String token = (String) uavUser.get("access_token");
        //验证token有效性
        try {
            String res = uavClient.GET("manage/api/v1/devices", token, "{}");
        } catch (ForestNetworkException fe) {
            if (fe.getStatusCode() == 401) {//token失效,重新登录
                this.login();
                //再次获取token
                uavUser = redisCache.getCacheMap("uav:uavUser");
                token = (String) uavUser.get("access_token");
                return token;
            }
        }
        return this.uavUser;
        return token;
    }
    public void login() {
@@ -84,11 +93,11 @@
        String codedPassword = this.Encrypt(PASSWORD, SALT);
        String body = "{\"username\":\"" + USERNAME + "\",\"password\":\"" + codedPassword + "\"}";
        try {
            //uavClient.GET("logout", null, "{}");
            String res = uavClient.POST("login", null, body);
            Map resMap = om.readValue(res, Map.class);
            this.uavUser = (Map) resMap.get("data");
            if (this.uavUser != null) {
                this.token = (String) this.uavUser.get("access_token");
            if (resMap != null) {
                redisCache.setCacheMap("uav:uavUser", (Map) resMap.get("data"));
            }
        } catch (ForestRuntimeException e) {
            log.error("无人机连接超时" + e.getMessage());
ard-work/src/main/java/com/ruoyi/dispatch/controller/ArdDispatchPoliceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,111 @@
package com.ruoyi.dispatch.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.dispatch.domain.ArdDispatchPolice;
import com.ruoyi.dispatch.service.IArdDispatchPoliceService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
 * æ´¾è­¦ç®¡ç†Controller
 *
 * @author ard
 * @date 2023-08-21
 */
@Api(tags = "派警管理")
@RestController
@RequestMapping("/dispatch/police")
public class ArdDispatchPoliceController extends BaseController
{
    @Autowired
    private IArdDispatchPoliceService ardDispatchPoliceService;
    /**
     * æŸ¥è¯¢æ´¾è­¦ç®¡ç†åˆ—表
     */
    @ApiOperation("查询派警管理列表")
    @PreAuthorize("@ss.hasPermi('dispatch:police:list')")
    @GetMapping("/list")
    public TableDataInfo list(ArdDispatchPolice ardDispatchPolice)
    {
        startPage();
        List<ArdDispatchPolice> list = ardDispatchPoliceService.selectArdDispatchPoliceList(ardDispatchPolice);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºæ´¾è­¦ç®¡ç†åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('dispatch:police:export')")
    @Log(title = "派警管理", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ArdDispatchPolice ardDispatchPolice)
    {
        List<ArdDispatchPolice> list = ardDispatchPoliceService.selectArdDispatchPoliceList(ardDispatchPolice);
        ExcelUtil<ArdDispatchPolice> util = new ExcelUtil<ArdDispatchPolice>(ArdDispatchPolice.class);
        util.exportExcel(response, list, "派警管理数据");
    }
    /**
     * èŽ·å–æ´¾è­¦ç®¡ç†è¯¦ç»†ä¿¡æ¯
     */
    @PreAuthorize("@ss.hasPermi('dispatch:police:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") String id)
    {
        return success(ardDispatchPoliceService.selectArdDispatchPoliceById(id));
    }
    /**
     * æ–°å¢žæ´¾è­¦ç®¡ç†
     */
    @ApiOperation("新增派警管理")
    @PreAuthorize("@ss.hasPermi('dispatch:police:add')")
    @Log(title = "派警管理", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ArdDispatchPolice ardDispatchPolice)
    {
        return toAjax(ardDispatchPoliceService.insertArdDispatchPolice(ardDispatchPolice));
    }
    /**
     * ä¿®æ”¹æ´¾è­¦ç®¡ç†
     */
    @PreAuthorize("@ss.hasPermi('dispatch:police:edit')")
    @Log(title = "派警管理", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ArdDispatchPolice ardDispatchPolice)
    {
        return toAjax(ardDispatchPoliceService.updateArdDispatchPolice(ardDispatchPolice));
    }
    /**
     * åˆ é™¤æ´¾è­¦ç®¡ç†
     */
    @ApiOperation("删除派警管理")
    @PreAuthorize("@ss.hasPermi('dispatch:police:remove')")
    @Log(title = "派警管理", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable String[] ids)
    {
        return toAjax(ardDispatchPoliceService.deleteArdDispatchPoliceByIds(ids));
    }
}
ard-work/src/main/java/com/ruoyi/dispatch/domain/ArdDispatchPolice.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
package com.ruoyi.dispatch.domain;
import java.util.List;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
 * æ´¾è­¦ç®¡ç†å¯¹è±¡ ard_dispatch_police
 *
 * @author ard
 * @date 2023-08-21
 */
public class ArdDispatchPolice extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** ID */
    private String id;
    /** æ´¾è­¦åç§° */
    @Excel(name = "派警名称")
    private String name;
    /** ç»åº¦ */
    @Excel(name = "经度")
    private Double longitude;
    /** çº¬åº¦ */
    @Excel(name = "纬度")
    private Double latitude;
    /** éƒ¨é—¨ID */
    @Excel(name = "部门ID")
    private Integer deptId;
    /** ç”¨æˆ·ID */
    @Excel(name = "用户ID")
    private String userId;
    /** æ´¾è­¦å…³è”用户信息 */
    private List<String> ardDispatchPoliceUserList;
    public void setId(String id)
    {
        this.id = id;
    }
    public String getId()
    {
        return id;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public String getName()
    {
        return name;
    }
    public void setLongitude(Double longitude)
    {
        this.longitude = longitude;
    }
    public Double getLongitude()
    {
        return longitude;
    }
    public void setLatitude(Double latitude)
    {
        this.latitude = latitude;
    }
    public Double getLatitude()
    {
        return latitude;
    }
    public void setDeptId(Integer deptId)
    {
        this.deptId = deptId;
    }
    public Integer getDeptId()
    {
        return deptId;
    }
    public void setUserId(String userId)
    {
        this.userId = userId;
    }
    public String getUserId()
    {
        return userId;
    }
    public List<String> getArdDispatchPoliceUserList() {
        return ardDispatchPoliceUserList;
    }
    public void setArdDispatchPoliceUserList(List<String> ardDispatchPoliceUserList) {
        this.ardDispatchPoliceUserList = ardDispatchPoliceUserList;
    }
}
ard-work/src/main/java/com/ruoyi/dispatch/domain/ArdDispatchPoliceUser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.ruoyi.dispatch.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
 * æ´¾è­¦å…³è”用户对象 ard_dispatch_police_user
 *
 * @author ard
 * @date 2023-08-21
 */
public class ArdDispatchPoliceUser extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** æ´¾è­¦ID */
    @Excel(name = "派警ID")
    private String dispatchId;
    /** å…³è”用户ID */
    @Excel(name = "关联用户ID")
    private String userId;
    public void setDispatchId(String dispatchId)
    {
        this.dispatchId = dispatchId;
    }
    public String getDispatchId()
    {
        return dispatchId;
    }
    public void setUserId(String userId)
    {
        this.userId = userId;
    }
    public String getUserId()
    {
        return userId;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("dispatchId", getDispatchId())
            .append("userId", getUserId())
            .toString();
    }
}
ard-work/src/main/java/com/ruoyi/dispatch/mapper/ArdDispatchPoliceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.ruoyi.dispatch.mapper;
import java.util.List;
import com.ruoyi.dispatch.domain.ArdDispatchPolice;
import com.ruoyi.dispatch.domain.ArdDispatchPoliceUser;
/**
 * æ´¾è­¦ç®¡ç†Mapper接口
 *
 * @author ard
 * @date 2023-08-21
 */
public interface ArdDispatchPoliceMapper
{
    /**
     * æŸ¥è¯¢æ´¾è­¦ç®¡ç†
     *
     * @param id æ´¾è­¦ç®¡ç†ä¸»é”®
     * @return æ´¾è­¦ç®¡ç†
     */
    public ArdDispatchPolice selectArdDispatchPoliceById(String id);
    /**
     * æŸ¥è¯¢æ´¾è­¦ç®¡ç†åˆ—表
     *
     * @param ardDispatchPolice æ´¾è­¦ç®¡ç†
     * @return æ´¾è­¦ç®¡ç†é›†åˆ
     */
    public List<ArdDispatchPolice> selectArdDispatchPoliceList(ArdDispatchPolice ardDispatchPolice);
    /**
     * æ–°å¢žæ´¾è­¦ç®¡ç†
     *
     * @param ardDispatchPolice æ´¾è­¦ç®¡ç†
     * @return ç»“æžœ
     */
    public int insertArdDispatchPolice(ArdDispatchPolice ardDispatchPolice);
    /**
     * ä¿®æ”¹æ´¾è­¦ç®¡ç†
     *
     * @param ardDispatchPolice æ´¾è­¦ç®¡ç†
     * @return ç»“æžœ
     */
    public int updateArdDispatchPolice(ArdDispatchPolice ardDispatchPolice);
    /**
     * åˆ é™¤æ´¾è­¦ç®¡ç†
     *
     * @param id æ´¾è­¦ç®¡ç†ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteArdDispatchPoliceById(String id);
    /**
     * æ‰¹é‡åˆ é™¤æ´¾è­¦ç®¡ç†
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteArdDispatchPoliceByIds(String[] ids);
    /**
     * æ‰¹é‡åˆ é™¤æ´¾è­¦å…³è”用户
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteArdDispatchPoliceUserByDispatchIds(String[] ids);
    /**
     * æ‰¹é‡æ–°å¢žæ´¾è­¦å…³è”用户
     *
     * @param ardDispatchPoliceUserList æ´¾è­¦å…³è”用户列表
     * @return ç»“æžœ
     */
    public int batchArdDispatchPoliceUser(List<ArdDispatchPoliceUser> ardDispatchPoliceUserList);
    /**
     * é€šè¿‡æ´¾è­¦ç®¡ç†ä¸»é”®åˆ é™¤æ´¾è­¦å…³è”用户信息
     *
     * @param id æ´¾è­¦ç®¡ç†ID
     * @return ç»“æžœ
     */
    public int deleteArdDispatchPoliceUserByDispatchId(String id);
}
ard-work/src/main/java/com/ruoyi/dispatch/service/IArdDispatchPoliceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.ruoyi.dispatch.service;
import java.util.List;
import com.ruoyi.dispatch.domain.ArdDispatchPolice;
/**
 * æ´¾è­¦ç®¡ç†Service接口
 *
 * @author ard
 * @date 2023-08-21
 */
public interface IArdDispatchPoliceService
{
    /**
     * æŸ¥è¯¢æ´¾è­¦ç®¡ç†
     *
     * @param id æ´¾è­¦ç®¡ç†ä¸»é”®
     * @return æ´¾è­¦ç®¡ç†
     */
    public ArdDispatchPolice selectArdDispatchPoliceById(String id);
    /**
     * æŸ¥è¯¢æ´¾è­¦ç®¡ç†åˆ—表
     *
     * @param ardDispatchPolice æ´¾è­¦ç®¡ç†
     * @return æ´¾è­¦ç®¡ç†é›†åˆ
     */
    public List<ArdDispatchPolice> selectArdDispatchPoliceList(ArdDispatchPolice ardDispatchPolice);
    /**
     * æ–°å¢žæ´¾è­¦ç®¡ç†
     *
     * @param ardDispatchPolice æ´¾è­¦ç®¡ç†
     * @return ç»“æžœ
     */
    public int insertArdDispatchPolice(ArdDispatchPolice ardDispatchPolice);
    /**
     * ä¿®æ”¹æ´¾è­¦ç®¡ç†
     *
     * @param ardDispatchPolice æ´¾è­¦ç®¡ç†
     * @return ç»“æžœ
     */
    public int updateArdDispatchPolice(ArdDispatchPolice ardDispatchPolice);
    /**
     * æ‰¹é‡åˆ é™¤æ´¾è­¦ç®¡ç†
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ´¾è­¦ç®¡ç†ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteArdDispatchPoliceByIds(String[] ids);
    /**
     * åˆ é™¤æ´¾è­¦ç®¡ç†ä¿¡æ¯
     *
     * @param id æ´¾è­¦ç®¡ç†ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteArdDispatchPoliceById(String id);
}
ard-work/src/main/java/com/ruoyi/dispatch/service/impl/ArdDispatchPoliceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,138 @@
package com.ruoyi.dispatch.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.dispatch.domain.ArdDispatchPoliceUser;
import com.ruoyi.dispatch.mapper.ArdDispatchPoliceMapper;
import com.ruoyi.dispatch.domain.ArdDispatchPolice;
import com.ruoyi.dispatch.service.IArdDispatchPoliceService;
import javax.annotation.Resource;
/**
 * æ´¾è­¦ç®¡ç†Service业务层处理
 *
 * @author ard
 * @date 2023-08-21
 */
@Service
public class ArdDispatchPoliceServiceImpl implements IArdDispatchPoliceService {
    @Resource
    private ArdDispatchPoliceMapper ardDispatchPoliceMapper;
    /**
     * æŸ¥è¯¢æ´¾è­¦ç®¡ç†
     *
     * @param id æ´¾è­¦ç®¡ç†ä¸»é”®
     * @return æ´¾è­¦ç®¡ç†
     */
    @Override
    public ArdDispatchPolice selectArdDispatchPoliceById(String id) {
        return ardDispatchPoliceMapper.selectArdDispatchPoliceById(id);
    }
    /**
     * æŸ¥è¯¢æ´¾è­¦ç®¡ç†åˆ—表
     *
     * @param ardDispatchPolice æ´¾è­¦ç®¡ç†
     * @return æ´¾è­¦ç®¡ç†
     */
    @Override
    public List<ArdDispatchPolice> selectArdDispatchPoliceList(ArdDispatchPolice ardDispatchPolice) {
        return ardDispatchPoliceMapper.selectArdDispatchPoliceList(ardDispatchPolice);
    }
    /**
     * æ–°å¢žæ´¾è­¦ç®¡ç†
     *
     * @param ardDispatchPolice æ´¾è­¦ç®¡ç†
     * @return ç»“æžœ
     */
    @Transactional
    @Override
    public int insertArdDispatchPolice(ArdDispatchPolice ardDispatchPolice) {
        ardDispatchPolice.setId(IdUtils.simpleUUID());
        ardDispatchPolice.setUserId(SecurityUtils.getUserId());
        ardDispatchPolice.setCreateBy(SecurityUtils.getUsername());
        ardDispatchPolice.setCreateTime(DateUtils.getNowDate());
        int rows = ardDispatchPoliceMapper.insertArdDispatchPolice(ardDispatchPolice);
        insertArdDispatchPoliceUser(ardDispatchPolice);
        return rows;
    }
    /**
     * ä¿®æ”¹æ´¾è­¦ç®¡ç†
     *
     * @param ardDispatchPolice æ´¾è­¦ç®¡ç†
     * @return ç»“æžœ
     */
    @Transactional
    @Override
    public int updateArdDispatchPolice(ArdDispatchPolice ardDispatchPolice) {
        ardDispatchPolice.setUpdateBy(SecurityUtils.getUsername());
        ardDispatchPolice.setUpdateTime(DateUtils.getNowDate());
        ardDispatchPoliceMapper.deleteArdDispatchPoliceUserByDispatchId(ardDispatchPolice.getId())
        ;
        insertArdDispatchPoliceUser(ardDispatchPolice);
        return ardDispatchPoliceMapper.updateArdDispatchPolice(ardDispatchPolice);
    }
    /**
     * æ‰¹é‡åˆ é™¤æ´¾è­¦ç®¡ç†
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ´¾è­¦ç®¡ç†ä¸»é”®
     * @return ç»“æžœ
     */
    @Transactional
    @Override
    public int deleteArdDispatchPoliceByIds(String[] ids) {
        ardDispatchPoliceMapper.deleteArdDispatchPoliceUserByDispatchIds(ids);
        return ardDispatchPoliceMapper.deleteArdDispatchPoliceByIds(ids);
    }
    /**
     * åˆ é™¤æ´¾è­¦ç®¡ç†ä¿¡æ¯
     *
     * @param id æ´¾è­¦ç®¡ç†ä¸»é”®
     * @return ç»“æžœ
     */
    @Transactional
    @Override
    public int deleteArdDispatchPoliceById(String id) {
        ardDispatchPoliceMapper.deleteArdDispatchPoliceUserByDispatchId(id);
        return ardDispatchPoliceMapper.deleteArdDispatchPoliceById(id);
    }
    /**
     * æ–°å¢žæ´¾è­¦å…³è”用户信息
     *
     * @param ardDispatchPolice æ´¾è­¦ç®¡ç†å¯¹è±¡
     */
    public void insertArdDispatchPoliceUser(ArdDispatchPolice ardDispatchPolice) {
        List<String> ardDispatchPoliceUserList = ardDispatchPolice.getArdDispatchPoliceUserList();
        String id = ardDispatchPolice.getId();
        if (StringUtils.isNotNull(ardDispatchPoliceUserList)) {
            List<ArdDispatchPoliceUser> list = new ArrayList<ArdDispatchPoliceUser>();
            for (String userId : ardDispatchPoliceUserList) {
                ArdDispatchPoliceUser ardDispatchPoliceUser=new ArdDispatchPoliceUser();
                ardDispatchPoliceUser.setUserId(userId);
                ardDispatchPoliceUser.setDispatchId(id);
                list.add(ardDispatchPoliceUser);
            }
            if (list.size() > 0) {
                ardDispatchPoliceMapper.batchArdDispatchPoliceUser(list);
            }
        }
    }
}
ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java
@@ -1,7 +1,5 @@
package com.ruoyi.scheduling.domian;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
ard-work/src/main/java/com/ruoyi/utils/forest/UavClient.java
@@ -17,7 +17,7 @@
    @Post(IP + "${url}")
    String POST(@DataVariable("url") String url,  @Header("x-auth-token")  String token, @JSONBody String body);
    @Post(IP + "${url}")
    @Delete(IP + "${url}")
    String DELETE(@DataVariable("url") String url,  @Header("x-auth-token") String token, @JSONBody String body);
ard-work/src/main/resources/mapper/alarmpoints/ArdAlarmpointsWellMapper.xml
@@ -70,7 +70,7 @@
    <select id="selectArdAlarmpointsWellList" parameterType="ArdAlarmpointsWell" resultMap="ArdAlarmpointsWellResult">
        <include refid="selectArdAlarmpointsWellVo"/>
        <where>
            <if test="wellId != null  and wellId != ''">and c.well_id = #{wellId}</if>
            <if test="wellId != null  and wellId != ''">and c.well_id like ('%${wellId}%')</if>
            <if test="wellNumber != null  and wellNumber != ''">and c.well_number = #{wellNumber}</if>
            <if test="userId != null  and userId != ''">and c.user_id = #{userId}</if>
            <if test="deptId != null ">and (c.dept_id = #{deptId} OR c.dept_id IN ( SELECT t.dept_id FROM sys_dept t
ard-work/src/main/resources/mapper/dispatch/ArdDispatchPoliceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,159 @@
<?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.ruoyi.dispatch.mapper.ArdDispatchPoliceMapper">
    <resultMap type="ArdDispatchPolice" id="ArdDispatchPoliceResult">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="longitude" column="longitude"/>
        <result property="latitude" column="latitude"/>
        <result property="deptId" column="dept_id"/>
        <result property="userId" column="user_id"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <!-- å­æŸ¥è¯¢ï¼Œå…³è” ard_dispatch_police_user è¡¨ -->
        <collection property="ardDispatchPoliceUserList" ofType="java.lang.String" select="getUserIdsByMainTableId"
                    column="id"/>
    </resultMap>
    <select id="getUserIdsByMainTableId" resultType="java.lang.String">
        SELECT user_id
        FROM ard_dispatch_police_user
        WHERE dispatch_id = #{id}
    </select>
    <resultMap id="ArdDispatchPoliceArdDispatchPoliceUserResult" type="ArdDispatchPolice"
               extends="ArdDispatchPoliceResult">
        <collection property="ardDispatchPoliceUserList" notNullColumn="sub_dispatch_id" javaType="java.util.List"
                    resultMap="ArdDispatchPoliceUserResult"/>
    </resultMap>
    <resultMap type="ArdDispatchPoliceUser" id="ArdDispatchPoliceUserResult">
        <result property="dispatchId" column="sub_dispatch_id"/>
        <result property="userId" column="sub_user_id"/>
    </resultMap>
    <sql id="selectArdDispatchPoliceVo">
        SELECT ID,
               NAME,
               longitude,
               latitude,
               dept_id,
               user_id,
               create_by,
               create_time,
               update_by,
               update_time
        FROM ard_dispatch_police
    </sql>
    <select id="selectArdDispatchPoliceList" parameterType="ArdDispatchPolice" resultMap="ArdDispatchPoliceResult">
        <include refid="selectArdDispatchPoliceVo"/>
        <where>
            <if test="name != null  and name != ''">and name like '%'||#{name}||'%'</if>
            <if test="longitude != null ">and longitude = #{longitude}</if>
            <if test="latitude != null ">and latitude = #{latitude}</if>
            <if test="deptId != null ">and dept_id = #{deptId}</if>
            <if test="userId != null  and userId != ''">and user_id = #{userId}</if>
        </where>
    </select>
    <select id="selectArdDispatchPoliceById" parameterType="String"
            resultMap="ArdDispatchPoliceArdDispatchPoliceUserResult">
        select a.id,
               a.name,
               a.longitude,
               a.latitude,
               a.dept_id,
               a.user_id,
               a.create_by,
               a.create_time,
               a.update_by,
               a.update_time,
               b.dispatch_id as sub_dispatch_id,
               b.user_id     as sub_user_id
        from ard_dispatch_police a
                 left join ard_dispatch_police_user b on b.dispatch_id = a.id
        where a.id = #{id}
    </select>
    <insert id="insertArdDispatchPolice" parameterType="ArdDispatchPolice">
        insert into ard_dispatch_police
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="name != null">name,</if>
            <if test="longitude != null">longitude,</if>
            <if test="latitude != null">latitude,</if>
            <if test="deptId != null">dept_id,</if>
            <if test="userId != null">user_id,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="name != null">#{name},</if>
            <if test="longitude != null">#{longitude},</if>
            <if test="latitude != null">#{latitude},</if>
            <if test="deptId != null">#{deptId},</if>
            <if test="userId != null">#{userId},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
        </trim>
    </insert>
    <update id="updateArdDispatchPolice" parameterType="ArdDispatchPolice">
        update ard_dispatch_police
        <trim prefix="SET" suffixOverrides=",">
            <if test="name != null">name = #{name},</if>
            <if test="longitude != null">longitude = #{longitude},</if>
            <if test="latitude != null">latitude = #{latitude},</if>
            <if test="deptId != null">dept_id = #{deptId},</if>
            <if test="userId != null">user_id = #{userId},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteArdDispatchPoliceById" parameterType="String">
        delete
        from ard_dispatch_police
        where id = #{id}
    </delete>
    <delete id="deleteArdDispatchPoliceByIds" parameterType="String">
        delete from ard_dispatch_police where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
    <delete id="deleteArdDispatchPoliceUserByDispatchIds" parameterType="String">
        delete from ard_dispatch_police_user where dispatch_id in
        <foreach item="dispatchId" collection="array" open="(" separator="," close=")">
            #{dispatchId}
        </foreach>
    </delete>
    <delete id="deleteArdDispatchPoliceUserByDispatchId" parameterType="String">
        delete
        from ard_dispatch_police_user
        where dispatch_id = #{dispatchId}
    </delete>
    <insert id="batchArdDispatchPoliceUser">
        insert into ard_dispatch_police_user( dispatch_id, user_id) values
        <foreach item="item" index="index" collection="list" separator=",">
            ( #{item.dispatchId}, #{item.userId})
        </foreach>
    </insert>
</mapper>
ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml
@@ -18,5 +18,6 @@
    </settings>
    <typeAliases>
        <package name="com.ruoyi.*.*.domain"/> <!--替换成你的项目的实体类的路径(这个配置对于项目来说没有作用,仅仅是写给IDEA上安装的 MyBatis æ’件看的,防止标红)-->
        <package name="com.ruoyi.*.domain"/>
    </typeAliases>
</configuration>