package com.ruoyi.tms.service.impl; import java.util.Arrays; import java.util.List; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.enums.SystemDataNoEnum; import com.ruoyi.common.utils.DateUtils; import javax.annotation.Resource; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISystemDataNoService; import com.ruoyi.tms.domain.TmsDriverDispatch; import com.ruoyi.tms.domain.vo.DriverDispatchVo; import com.ruoyi.tms.service.ITmsDriverDispatchService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.stereotype.Service; import org.springframework.scheduling.annotation.Async; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.annotation.DataSource; import com.ruoyi.common.enums.DataSourceType; import com.ruoyi.common.core.service.BaseService; import com.ruoyi.tms.mapper.TmsDispatchOrderMapper; import com.ruoyi.tms.domain.TmsDispatchOrder; import com.ruoyi.tms.service.ITmsDispatchOrderService; import com.ruoyi.common.core.text.Convert; /** * 调度单管理Service业务层处理 * * @author ruoyi * @date 2025-11-04 */ @Service @Transactional(rollbackFor = Exception.class) public class TmsDispatchOrderServiceImpl extends BaseService implements ITmsDispatchOrderService { protected final Logger logger = LoggerFactory.getLogger(getClass()); @Resource private TmsDispatchOrderMapper tmsDispatchOrderMapper; @Autowired ISystemDataNoService systemDataNoService; @Autowired private ISysUserService userService; @Autowired private ITmsDriverDispatchService tmsDriverDispatchService; /** * 查询调度单管理 * * @param id 调度单管理ID * @return 调度单管理 */ @DataSource(DataSourceType.SLAVE) @Override public TmsDispatchOrder selectTmsDispatchOrderById(Integer id) { return tmsDispatchOrderMapper.selectTmsDispatchOrderById(id); } @Override public AjaxResult confirmOrder(Integer id) { TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(id); if (tmsDispatchOrder == null){ return AjaxResult.error("未找到该数据"); } if (tmsDispatchOrder.getStatus() != 0){ return AjaxResult.error("该调度单数据状态异常"); } if (tmsDispatchOrder.getMainDriverId() == null){ return AjaxResult.error("请先选择主驾司机"); } if (tmsDispatchOrder.getVehicleId() == null){ return AjaxResult.error("请先选择车辆"); } tmsDispatchOrder.setStatus(1); tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername()); int i = tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder); TmsDriverDispatch tmsDriverDispatch = new TmsDriverDispatch(); tmsDriverDispatch.setDriverId(tmsDispatchOrder.getMainDriverId()); tmsDriverDispatch.setDispatchId(tmsDispatchOrder.getId()); tmsDriverDispatch.setStatus(0); tmsDriverDispatchService.insertTmsDriverDispatch(tmsDriverDispatch); if (i > 0){ return AjaxResult.success("操作成功"); } return AjaxResult.error("操作失败"); } @Override public AjaxResult okOrder(Integer id) { TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(id); if (tmsDispatchOrder == null){ return AjaxResult.error("未找到该数据"); } if (tmsDispatchOrder.getStatus() != 2){ return AjaxResult.error("该调度单数据状态异常"); } tmsDispatchOrder.setStatus(3); tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername()); int i = tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder); if (i > 0){ return AjaxResult.success("操作成功"); } return AjaxResult.error("操作失败"); } @Override public AjaxResult copyOrder(Integer id) { TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(id); if (tmsDispatchOrder == null){ return AjaxResult.error("未找到该数据"); } TmsDispatchOrder tmsDispatchOrderNew = BeanUtil.copyProperties(tmsDispatchOrder, TmsDispatchOrder.class); tmsDispatchOrderNew.setStatus(0); tmsDispatchOrderNew.setMainDriverId(null); tmsDispatchOrderNew.setMainDriverName(null); tmsDispatchOrderNew.setAssistantDriverId(null); tmsDispatchOrderNew.setAssistantDriverName(null); tmsDispatchOrderNew.setVehicleId(null); tmsDispatchOrderNew.setLicensePlate(null); tmsDispatchOrderNew.setUpdateBy(null); tmsDispatchOrderNew.setId(null); int i = insertTmsDispatchOrder(tmsDispatchOrderNew); if (i > 0){ return AjaxResult.success("操作成功"); } return AjaxResult.error("操作失败"); } @Override public AjaxResult assignedItineraryList() { Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId()); if (deviceId == null){ return AjaxResult.success(); } DriverDispatchVo vo = new DriverDispatchVo(); vo.setDriverId(deviceId); vo.setInStatusList(Arrays.asList(0, 1, 2,4)); vo.setInTdoStatusList(Arrays.asList(1, 2)); List driverDispatchVos = tmsDispatchOrderMapper.selectAssignedItineraryList(vo); if (driverDispatchVos != null && !driverDispatchVos.isEmpty()){ driverDispatchVos.forEach(item ->{ if (item.getTddStatus() == 1 ){ item.setStatusStr("待甩挂"); }else if (item.getTddStatus() == 2){ item.setStatusStr("待接挂"); }else if (item.getStatus() == 1){ item.setStatusStr("待发车"); }else if (item.getStatus() == 2){ item.setStatusStr("在途"); }else { item.setStatusStr("完成行程"); } }); } return AjaxResult.success(driverDispatchVos); } @Override public AjaxResult assignedItineraryLogList() { Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId()); if (deviceId == null){ return AjaxResult.success(); } DriverDispatchVo vo = new DriverDispatchVo(); vo.setDriverId(deviceId); vo.setInStatusList(Arrays.asList(3,5)); // vo.setInTdoStatusList(Arrays.asList(1, 2)); List driverDispatchVos = tmsDispatchOrderMapper.selectAssignedItineraryList(vo); if (driverDispatchVos != null && !driverDispatchVos.isEmpty()){ driverDispatchVos.forEach(item ->{ item.setStatusStr("完成行程"); }); } return AjaxResult.success(driverDispatchVos); } @Override public AjaxResult selectAssignedItineraryDetail(Integer dispatchId) { Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId()); if (deviceId == null){ return AjaxResult.success(); } DriverDispatchVo vo = new DriverDispatchVo(); vo.setDriverId(deviceId); vo.setDispatchId(dispatchId); DriverDispatchVo driverDispatchVo = tmsDispatchOrderMapper.selectAssignedItineraryDetail(vo); if (driverDispatchVo != null){ if (driverDispatchVo.getTddStatus() == 1 ){ driverDispatchVo.setStatusStr("待甩挂"); }else if (driverDispatchVo.getTddStatus() == 2){ driverDispatchVo.setStatusStr("待接挂"); }else if (driverDispatchVo.getStatus() == 1){ driverDispatchVo.setStatusStr("待发车"); }else if (driverDispatchVo.getStatus() == 2){ driverDispatchVo.setStatusStr("在途"); }else{ driverDispatchVo.setStatusStr("完成行程"); } } return AjaxResult.success(driverDispatchVo); } /** * 查询调度单管理 记录数 * * @param tmsDispatchOrder 调度单管理 * @return 调度单管理集合 */ @DataSource(DataSourceType.SLAVE) @Override public int selectTmsDispatchOrderCount(TmsDispatchOrder tmsDispatchOrder) { return tmsDispatchOrderMapper.selectTmsDispatchOrderCount(tmsDispatchOrder); } /** * 查询调度单管理列表 * * @param tmsDispatchOrder 调度单管理 * @return 调度单管理 */ @DataSource(DataSourceType.SLAVE) @Override public List selectTmsDispatchOrderList(TmsDispatchOrder tmsDispatchOrder) { return tmsDispatchOrderMapper.selectTmsDispatchOrderList(tmsDispatchOrder); } /** * 查询调度单管理列表 异步 导出 * * @param tmsDispatchOrder 调度单管理 * @param exportKey 导出功能的唯一标识 * @return 调度单管理集合 */ @DataSource(DataSourceType.SLAVE) @Async @Override public void export(TmsDispatchOrder tmsDispatchOrder,String exportKey) { super.export(TmsDispatchOrder.class,exportKey,"tmsDispatchOrderData",(pageNum)->{ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE); return selectTmsDispatchOrderList(tmsDispatchOrder); }); } /** * 新增调度单管理 * * @param tmsDispatchOrder 调度单管理 * @return 结果 */ @Override public int insertTmsDispatchOrder(TmsDispatchOrder tmsDispatchOrder) { String noByKey = systemDataNoService.getNoByKey(SystemDataNoEnum.DL); tmsDispatchOrder.setDispatchNo(noByKey); tmsDispatchOrder.setCreateBy(SecurityUtils.getUsername()); tmsDispatchOrder.setCreateTime(DateUtils.getNowDate()); return tmsDispatchOrderMapper.insertTmsDispatchOrder(tmsDispatchOrder); } /** * 新增调度单管理[批量] * * @param tmsDispatchOrders 调度单管理 * @return 结果 */ @Override public int insertTmsDispatchOrderBatch(List tmsDispatchOrders) { int rows = tmsDispatchOrderMapper.insertTmsDispatchOrderBatch(tmsDispatchOrders); return rows; } /** * 修改调度单管理 * * @param tmsDispatchOrder 调度单管理 * @return 结果 */ @Override public int updateTmsDispatchOrder(TmsDispatchOrder tmsDispatchOrder) { tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername()); tmsDispatchOrder.setUpdateTime(DateUtils.getNowDate()); return tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder); } /** * 修改调度单管理[批量] * * @param tmsDispatchOrders 调度单管理 * @return 结果 */ @Override public int updateTmsDispatchOrderBatch(List tmsDispatchOrders){ return tmsDispatchOrderMapper.updateTmsDispatchOrderBatch(tmsDispatchOrders); } /** * 删除调度单管理对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteTmsDispatchOrderByIds(String ids) { return deleteTmsDispatchOrderByIds(Convert.toIntArray(ids)); } /** * 删除调度单管理对象 * * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteTmsDispatchOrderByIds(Integer[] ids) { return tmsDispatchOrderMapper.deleteTmsDispatchOrderByIds(ids); } /** * 删除调度单管理信息 * * @param id 调度单管理ID * @return 结果 */ @Override public int deleteTmsDispatchOrderById(Integer id) { return tmsDispatchOrderMapper.deleteTmsDispatchOrderById(id); } }