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); } }