package com.ard.route.service.impl;
|
|
import java.util.List;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.ard.common.core.domain.entity.SysUser;
|
import com.ard.common.utils.DateUtils;
|
import com.ard.common.utils.SecurityUtils;
|
import com.ard.common.utils.uuid.IdUtils;
|
import com.ard.route.domain.route.ArdRouteMission;
|
import com.ard.route.domain.route.ArdRoutePoint;
|
import com.ard.route.mapper.ArdRoutePointMapper;
|
import com.ard.route.websocket.utils.MiWebSocketUtils;
|
import com.ard.system.mapper.SysUserMapper;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.ard.route.mapper.ArdRouteMissionMapper;
|
import com.ard.route.service.IArdRouteMissionService;
|
|
|
/**
|
* 航线任务Service业务层处理
|
*
|
* @author xia
|
* @date 2026-01-20
|
*/
|
@Service
|
@Slf4j
|
public class ArdRouteMissionServiceImpl implements IArdRouteMissionService {
|
|
@Autowired
|
private ArdRouteMissionMapper ardRouteMissionMapper;
|
|
@Autowired
|
private ArdRoutePointMapper ardRoutePointMapper;
|
|
@Autowired
|
private SysUserMapper sysUserMapper;
|
|
/**
|
* 查询航线任务
|
*
|
* @param id 航线任务主键
|
* @return 航线任务
|
*/
|
@Override
|
public ArdRouteMission selectArdRouteMissionById(String id) {
|
ArdRouteMission ardRouteMission = ardRouteMissionMapper.selectArdRouteMissionById(id);
|
ardRouteMission.setMissionDetailList(getMissionDetailList(id));
|
return ardRouteMission;
|
}
|
|
/**
|
* 查询航线任务列表
|
*
|
* @param ardRouteMission 航线任务
|
* @return 航线任务
|
*/
|
@Override
|
public List<ArdRouteMission> selectArdRouteMissionList(ArdRouteMission ardRouteMission) {
|
List<ArdRouteMission> list = ardRouteMissionMapper.selectArdRouteMissionList(ardRouteMission);
|
for (ArdRouteMission routeMission : list) {
|
routeMission.setMissionDetailList(getMissionDetailList(routeMission.getId()));
|
}
|
return list;
|
}
|
|
private List<ArdRoutePoint> getMissionDetailList(String missionId) {
|
return ardRoutePointMapper.selectArdRoutePointByMissionId(missionId);
|
}
|
|
/**
|
* 新增航线任务
|
*
|
* @param ardRouteMission 航线任务
|
* @return 结果
|
*/
|
@Override
|
public int insertArdRouteMission(ArdRouteMission ardRouteMission) {
|
ardRouteMission.setId(IdUtils.simpleUUID());
|
ardRouteMission.setExecuteStatus("0");
|
ardRouteMission.setIsRead("0");
|
ardRouteMission.setCreateTime(DateUtils.getNowDate());
|
ardRouteMission.setIssuerName(getUserName(ardRouteMission.getIssuerId()));
|
dataProcessingRoutePoint(ardRouteMission.getMissionDetailList(),ardRouteMission.getId());
|
try {
|
log.debug("给用户{}定时推送,航线任务信息", ardRouteMission.getIssuerName());
|
MiWebSocketUtils.sendMessage(ardRouteMission.getIssuerId(),JSON.toJSONString(ardRouteMission));
|
} catch (Exception e) {
|
log.error("Error sending message to session {}", ardRouteMission.getIssuerName(), e);
|
}
|
return ardRouteMissionMapper.insertArdRouteMission(ardRouteMission);
|
}
|
|
/**
|
* 修改航线任务
|
*
|
* @param ardRouteMission 航线任务
|
* @return 结果
|
*/
|
@Override
|
public int updateArdRouteMission(ArdRouteMission ardRouteMission) {
|
ardRouteMission.setUpdateTime(DateUtils.getNowDate());
|
ardRouteMission.setIssuerName(getUserName(ardRouteMission.getIssuerId()));
|
// 删除航线任务航点
|
ardRoutePointMapper.deleteArdRoutePointByMissionId(ardRouteMission.getId());
|
// 重新插入航线任务航点
|
dataProcessingRoutePoint(ardRouteMission.getMissionDetailList(),ardRouteMission.getId());
|
return ardRouteMissionMapper.updateArdRouteMission(ardRouteMission);
|
}
|
|
// 获取用户名称
|
private String getUserName(Long userId) {
|
SysUser sysUser = sysUserMapper.selectUserById(userId);
|
return sysUser.getUserName();
|
}
|
|
/**
|
* 航线任务航点对象数据加工
|
*/
|
private void dataProcessingRoutePoint(List<ArdRoutePoint> missionDetailList,String missionId){
|
for (ArdRoutePoint missionDetail : missionDetailList) {
|
missionDetail.setMissionId(missionId);
|
}
|
ardRoutePointMapper.insertArdRoutePointS(missionDetailList);
|
}
|
|
/**
|
* 批量删除航线任务
|
*
|
* @param ids 需要删除的航线任务主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteArdRouteMissionByIds(String[] ids) {
|
// 删除航线任务航点
|
ardRoutePointMapper.deleteArdRoutePointByMissionId(ids[0]);
|
return ardRouteMissionMapper.deleteArdRouteMissionByIds(ids);
|
}
|
|
/**
|
* 删除航线任务信息
|
*
|
* @param id 航线任务主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteArdRouteMissionById(String id) {
|
ardRoutePointMapper.deleteArdRoutePointByMissionId(id);
|
return ardRouteMissionMapper.deleteArdRouteMissionById(id);
|
}
|
|
/**
|
* 修改航线任务状态
|
*
|
* @param id 航线任务主键
|
* @param status 状态类型
|
* @return 结果
|
*/
|
@Override
|
public int updateArdRouteMissionStatus(String id, String status) {
|
ArdRouteMission ardRouteMission = new ArdRouteMission();
|
ardRouteMission.setId(id);
|
ardRouteMission.setExecuteStatus(status);
|
ardRouteMission.setExecuteName(SecurityUtils.getUsername());
|
ardRouteMission.setExecuteTime(DateUtils.getNowDate());
|
ardRouteMission.setUpdateTime(DateUtils.getNowDate());
|
return ardRouteMissionMapper.updateArdRouteMission(ardRouteMission);
|
}
|
|
/**
|
* 批量修改航线任务已读状态
|
*
|
* @param ids 主键集合
|
* @param isRead 已读状态
|
* @return 结果
|
*/
|
@Override
|
public int updateIsRead(String[] ids, String isRead) {
|
return ardRouteMissionMapper.updateIsRead(ids,isRead);
|
}
|
|
}
|