package com.ruoyi.system.service.impl;
|
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.system.domain.SysTaskWelfare;
|
import com.ruoyi.system.domain.vo.TaskCreateVO;
|
import com.ruoyi.system.mapper.SysTaskWelfareMapper;
|
import com.ruoyi.system.service.ISysWelfareTaskService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
|
/**
|
* 福祉车任务服务实现类
|
*
|
* @author ruoyi
|
*/
|
@Service
|
public class SysWelfareTaskServiceImpl implements ISysWelfareTaskService {
|
|
@Autowired
|
private SysTaskWelfareMapper sysTaskWelfareMapper;
|
|
@Override
|
public void saveWelfareInfo(Long taskId, String userName, TaskCreateVO createVO) {
|
SysTaskWelfare welfareInfo = new SysTaskWelfare();
|
welfareInfo.setTaskId(taskId);
|
|
// 设置乘客信息
|
if (createVO.getPassenger() != null) {
|
welfareInfo.setPassengerContact(createVO.getPassenger().getContact());
|
welfareInfo.setPassengerPhone(createVO.getPassenger().getPhone());
|
}
|
|
// 设置地址信息
|
welfareInfo.setPickupAddress(createVO.getStartAddress());
|
welfareInfo.setDestinationAddress(createVO.getEndAddress());
|
|
// 设置GPS坐标
|
welfareInfo.setPickupLongitude(createVO.getDepartureLongitude());
|
welfareInfo.setPickupLatitude(createVO.getDepartureLatitude());
|
welfareInfo.setDestinationLongitude(createVO.getDestinationLongitude());
|
welfareInfo.setDestinationLatitude(createVO.getDestinationLatitude());
|
|
// 设置距离和费用
|
// 优先使用福祉车专用的distance字段,如果没有则使用通用的estimatedDistance
|
BigDecimal serviceDistance = createVO.getDistance() != null ? createVO.getDistance() : createVO.getEstimatedDistance();
|
welfareInfo.setServiceDistance(serviceDistance);
|
welfareInfo.setServicePrice(createVO.getPrice());
|
|
// 系统字段
|
welfareInfo.setCreateTime(DateUtils.getNowDate());
|
welfareInfo.setUpdateTime(DateUtils.getNowDate());
|
welfareInfo.setCreateBy(userName);
|
welfareInfo.setUpdateBy(userName);
|
|
sysTaskWelfareMapper.insertSysTaskWelfare(welfareInfo);
|
}
|
|
@Override
|
public void updateWelfareInfo(Long taskId, TaskCreateVO createVO, String userName) {
|
// 查询现有的扩展信息
|
SysTaskWelfare existingInfo = sysTaskWelfareMapper.selectSysTaskWelfareByTaskId(taskId);
|
if (existingInfo == null) {
|
// 如果不存在,则创建新的
|
existingInfo = new SysTaskWelfare();
|
existingInfo.setTaskId(taskId);
|
existingInfo.setCreateTime(DateUtils.getNowDate());
|
existingInfo.setCreateBy(userName);
|
}
|
|
// 更新乘客信息
|
if (createVO.getPassenger() != null) {
|
if (createVO.getPassenger().getContact() != null) {
|
existingInfo.setPassengerContact(createVO.getPassenger().getContact());
|
}
|
if (createVO.getPassenger().getPhone() != null) {
|
existingInfo.setPassengerPhone(createVO.getPassenger().getPhone());
|
}
|
}
|
|
// 更新地址信息
|
if (createVO.getStartAddress() != null) {
|
existingInfo.setPickupAddress(createVO.getStartAddress());
|
}
|
if (createVO.getEndAddress() != null) {
|
existingInfo.setDestinationAddress(createVO.getEndAddress());
|
}
|
|
// 更新GPS坐标
|
if (createVO.getDepartureLongitude() != null) {
|
existingInfo.setPickupLongitude(createVO.getDepartureLongitude());
|
}
|
if (createVO.getDepartureLatitude() != null) {
|
existingInfo.setPickupLatitude(createVO.getDepartureLatitude());
|
}
|
if (createVO.getDestinationLongitude() != null) {
|
existingInfo.setDestinationLongitude(createVO.getDestinationLongitude());
|
}
|
if (createVO.getDestinationLatitude() != null) {
|
existingInfo.setDestinationLatitude(createVO.getDestinationLatitude());
|
}
|
|
// 更新距离和费用
|
if (createVO.getDistance() != null) {
|
existingInfo.setServiceDistance(createVO.getDistance());
|
} else if (createVO.getEstimatedDistance() != null) {
|
existingInfo.setServiceDistance(createVO.getEstimatedDistance());
|
}
|
if (createVO.getPrice() != null) {
|
existingInfo.setServicePrice(createVO.getPrice());
|
}
|
|
// 系统字段
|
existingInfo.setUpdateTime(DateUtils.getNowDate());
|
existingInfo.setUpdateBy(userName);
|
|
// 执行更新
|
sysTaskWelfareMapper.updateSysTaskWelfare(existingInfo);
|
}
|
|
@Override
|
public SysTaskWelfare getWelfareInfoByTaskId(Long taskId) {
|
return sysTaskWelfareMapper.selectSysTaskWelfareByTaskId(taskId);
|
}
|
|
@Override
|
public int deleteWelfareInfoByTaskId(Long taskId) {
|
return sysTaskWelfareMapper.deleteSysTaskWelfareByTaskId(taskId);
|
}
|
}
|