package com.ruoyi.tms.service.impl;
|
|
import java.math.BigDecimal;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.util.IdUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.ruoyi.common.annotation.Excel;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.core.domain.model.SysUserImport;
|
import com.ruoyi.common.core.redis.RedisCache;
|
import com.ruoyi.common.enums.SystemDataNoEnum;
|
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.utils.DateUtils;
|
import javax.annotation.Resource;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.file.DownloadExportUtil;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.system.service.ISysDictDataService;
|
import com.ruoyi.system.service.ISysUserService;
|
import com.ruoyi.system.service.ISystemDataNoService;
|
import com.ruoyi.tms.domain.*;
|
import com.ruoyi.tms.domain.vo.*;
|
import com.ruoyi.tms.mapper.*;
|
import com.ruoyi.tms.service.*;
|
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.common.core.text.Convert;
|
|
/**
|
* 调度单管理Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2025-11-04
|
*/
|
@Service
|
@Transactional(rollbackFor = Exception.class)
|
public class TmsDispatchOrderServiceImpl extends BaseService<TmsDispatchOrderMapper, TmsDispatchOrder> implements ITmsDispatchOrderService
|
{
|
protected final Logger logger = LoggerFactory.getLogger(getClass());
|
@Resource
|
private TmsDispatchOrderMapper tmsDispatchOrderMapper;
|
@Autowired
|
ISystemDataNoService systemDataNoService;
|
@Autowired
|
private ISysUserService userService;
|
@Autowired
|
private ITmsDriverDispatchService tmsDriverDispatchService;
|
@Autowired
|
private ITmsDispatchOrderLogService tmsDispatchOrderLogService;
|
@Resource
|
private TmsQuoteDetailMapper tmsQuoteDetailMapper;
|
|
@Resource
|
private TmsQuotePlanMapper tmsQuotePlanMapper;
|
|
@Autowired
|
private RedisCache redisCache;
|
|
@Autowired
|
ITmsFinanceService tmsFinanceService;
|
@Autowired
|
private ITmsFinanceDetailService tmsFinanceDetailService;
|
@Autowired
|
private ITmsQuoteFeeService tmsQuoteFeeService;
|
|
@Autowired
|
ISysDictDataService sysDictDataService;
|
|
@Autowired
|
private ITmsReceivableFeeService tmsReceivableFeeService;
|
@Autowired
|
private ITmsReceivableFeeItemService tmsReceivableFeeItemService;
|
@Autowired
|
private TmsDriverDispatchServiceImpl tmsDriverDispatchServiceImpl;
|
@Resource
|
private TmsLoadingServiceProviderMapper tmsLoadingServiceProviderMapper;
|
@Resource
|
private TmsServiceProviderMapper tmsServiceProviderMapper;
|
@Resource
|
private TmsCustomsServiceProviderMapper tmsCustomsServiceProviderMapper;
|
@Resource
|
private TmsTripMapper tmsTripMapper;
|
@Resource
|
private TmsPayableFeeMapper tmsPayableFeeMapper;
|
@Resource
|
private TmsPayableFeeItemMapper tmsPayableFeeItemMapper;
|
@Resource
|
private TmsProjectMapper tmsProjectMapper;
|
|
@Resource
|
TransportRouteViMapper transportRouteViMapper;
|
|
@Resource
|
private TmsDriverMapper tmsDriverMapper;
|
@Resource
|
private TmsVehicleMapper tmsVehicleMapper;
|
@Resource
|
private TmsConsignorMapper tmsConsignorMapper;
|
|
@Resource
|
private TmsContainerMapper tmsContainerMapper;
|
|
@Resource
|
private TmsShelfMapper tmsShelfMapper;
|
|
@Autowired
|
private ITmsDispatchOrderImportLogService tmsDispatchOrderImportLogService;
|
|
|
/**
|
* 查询调度单管理
|
*
|
* @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.setConfirmTime(DateUtils.getNowDate());
|
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.setOkTime(DateUtils.getNowDate());
|
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);
|
tmsDispatchOrderNew.setAccountsReceivableStatus(0);
|
tmsDispatchOrderNew.setAccountsPayableStatus(0);
|
|
|
|
int i = insertTmsDispatchOrder(tmsDispatchOrderNew);
|
if (i > 0){
|
return AjaxResult.success("操作成功");
|
}
|
return AjaxResult.error("操作失败");
|
}
|
|
@Override
|
public AjaxResult dropHook(Integer id) {
|
TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(id);
|
if (tmsDispatchOrder == null){
|
return AjaxResult.error("未找到该数据");
|
}
|
tmsDriverDispatchService.update(
|
null,
|
new LambdaUpdateWrapper<TmsDriverDispatch>()
|
.eq(TmsDriverDispatch::getDispatchId, tmsDispatchOrder.getId())
|
.eq(TmsDriverDispatch::getDriverId, tmsDispatchOrder.getMainDriverId())
|
.set(TmsDriverDispatch::getStatus, 1)
|
);
|
|
tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
|
.eq(TmsDispatchOrder::getId, tmsDispatchOrder.getId())
|
.set(TmsDispatchOrder::getStatus, 6)
|
);
|
return AjaxResult.success("操作成功");
|
}
|
|
@Override
|
public AjaxResult close(Integer id) {
|
TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(id);
|
if (tmsDispatchOrder == null){
|
return AjaxResult.error("未找到该数据");
|
}
|
if (tmsDispatchOrder.getIsfk() == 0){
|
return AjaxResult.success();
|
}
|
TmsTrip tmsTrip = tmsTripMapper.selectOne(new LambdaQueryWrapper<TmsTrip>().eq(TmsTrip::getDispatchOrderId, id)
|
.eq(TmsTrip::getTripType, 0)
|
.orderByDesc(TmsTrip::getId)
|
.last("limit 1")
|
);
|
|
if (tmsTrip != null){
|
return AjaxResult.error("该调度单状态为【在途】,且司机于【"+DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", tmsTrip.getTripTime())+"】已发车,不允许作废,如需取消行程," +
|
"请通知司机操作返空即可。");
|
}
|
return AjaxResult.success("操作成功");
|
}
|
|
@Override
|
public AjaxResult connectHang(TmsDriverDispatch driverDispatch) {
|
TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(driverDispatch.getDispatchId());
|
if (tmsDispatchOrder == null){
|
return AjaxResult.error("未找到该数据");
|
}
|
driverDispatch.setStatus(2);
|
tmsDriverDispatchService.insertTmsDriverDispatch(driverDispatch);
|
return AjaxResult.success();
|
}
|
|
@Override
|
public AjaxResult closeOrder(TmsDispatchOrder order) {
|
TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(order.getId());
|
if (tmsDispatchOrder == null){
|
return AjaxResult.error("未找到该数据");
|
}
|
AjaxResult close = close(tmsDispatchOrder.getId());
|
if (close.isSuccess()){
|
tmsDispatchOrder.setStatus(5);
|
tmsDispatchOrder.setCloseBy(SecurityUtils.getUsername());
|
tmsDispatchOrder.setCloseTime(DateUtils.getNowDate());
|
tmsDispatchOrder.setCloseRemark(tmsDispatchOrder.getCloseRemark());
|
tmsDispatchOrder.setCloseWhy(tmsDispatchOrder.getCloseWhy());
|
int result = tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
|
|
if (result > 0) {
|
TmsDispatchOrderLog log = new TmsDispatchOrderLog();
|
log.setHeadId(tmsDispatchOrder.getId());
|
log.setCreateBy(SecurityUtils.getUsername());
|
log.setCreateTime(DateUtils.getNowDate());
|
log.setNode("作废调度单");
|
tmsDispatchOrderLogService.insertTmsDispatchOrderLog(log);
|
}
|
|
return AjaxResult.success("操作成功");
|
}else{
|
return close;
|
}
|
}
|
|
//填写委托报关信息
|
@Override
|
public int customsOrder(List<TmsDispatchOrder> tmsDispatchOrders) {
|
int totalResult = 0;
|
for (TmsDispatchOrder tmsDispatchOrder : tmsDispatchOrders) {
|
int result = tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
|
.eq(TmsDispatchOrder::getId, tmsDispatchOrder.getId())
|
.set(TmsDispatchOrder::getCustomsServiceProviderId, tmsDispatchOrder.getCustomsServiceProviderId())
|
.set(TmsDispatchOrder::getCustomsServiceProviderName, tmsDispatchOrder.getCustomsServiceProviderName())
|
);
|
totalResult += result;
|
|
if (result > 0) {
|
TmsDispatchOrderLog log = new TmsDispatchOrderLog();
|
log.setHeadId(tmsDispatchOrder.getId());
|
log.setCreateBy(SecurityUtils.getUsername());
|
log.setCreateTime(DateUtils.getNowDate());
|
log.setNode("填写委托报关信息");
|
|
tmsDispatchOrderLogService.insertTmsDispatchOrderLog(log);
|
}
|
}
|
return totalResult;
|
}
|
|
//填写委托装卸信息
|
@Override
|
public int loadingOrder(List<TmsDispatchOrder> tmsDispatchOrders) {
|
int totalResult = 0;
|
for (TmsDispatchOrder tmsDispatchOrder : tmsDispatchOrders) {
|
int result = tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
|
.eq(TmsDispatchOrder::getId, tmsDispatchOrder.getId())
|
.set(TmsDispatchOrder::getLoadingServiceProviderId, tmsDispatchOrder.getLoadingServiceProviderId())
|
.set(TmsDispatchOrder::getLoadingServiceProviderName, tmsDispatchOrder.getLoadingServiceProviderName())
|
);
|
totalResult += result;
|
|
if (result > 0) {
|
TmsDispatchOrderLog log = new TmsDispatchOrderLog();
|
log.setHeadId(tmsDispatchOrder.getId());
|
log.setCreateBy(SecurityUtils.getUsername());
|
log.setCreateTime(DateUtils.getNowDate());
|
log.setNode("填写委托装卸信息");
|
|
tmsDispatchOrderLogService.insertTmsDispatchOrderLog(log);
|
}
|
}
|
return totalResult;
|
}
|
|
@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,6,7));
|
List<DriverDispatchVo> 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(2,3,5));
|
// vo.setInTdoStatusList(Arrays.asList(1, 2));
|
List<DriverDispatchVo> driverDispatchVos = tmsDispatchOrderMapper.selectAssignedItineraryList(vo);
|
if (driverDispatchVos != null && !driverDispatchVos.isEmpty()){
|
driverDispatchVos.forEach(item ->{
|
item.setStatusStr("完成行程");
|
});
|
}
|
|
|
return AjaxResult.success(driverDispatchVos);
|
}
|
|
@Override
|
public Map<String, Object> assignedItineraryLogListPage(Integer pageNum, Integer pageSize) {
|
Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId());
|
Map<String, Object> result = new HashMap<>();
|
if (deviceId == null) {
|
result.put("rows", Collections.emptyList());
|
result.put("total", 0);
|
return result;
|
}
|
|
DriverDispatchVo vo = new DriverDispatchVo();
|
vo.setDriverId(deviceId);
|
// vo.setInStatusList(Arrays.asList(3, 5));
|
|
// 先查总数
|
List<DriverDispatchVo> allList = tmsDispatchOrderMapper.selectAssignedItineraryList(vo);
|
int total = allList != null ? allList.size() : 0;
|
|
// 手动分页(SQL 已加 ORDER BY)
|
int fromIndex = (pageNum - 1) * pageSize;
|
List<DriverDispatchVo> pageList;
|
if (allList == null || fromIndex >= total) {
|
pageList = Collections.emptyList();
|
} else {
|
int toIndex = Math.min(fromIndex + pageSize, total);
|
pageList = allList.subList(fromIndex, toIndex);
|
}
|
|
if (!pageList.isEmpty()) {
|
pageList.forEach(item -> item.setStatusStr("完成行程"));
|
}
|
|
result.put("rows", pageList);
|
result.put("total", total);
|
return result;
|
}
|
|
@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<TmsDispatchOrder> 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);
|
});
|
}
|
|
@Override
|
public void importTemplate(String exportKey) {
|
String fileName = ExcelUtil.encodeFileName("tmsDispatchOrderDataTemplate");
|
DownloadExportUtil.deleteDownloadFile(redisCache, exportKey, "0");
|
|
try {
|
|
ExcelUtil<TmsDispatchOrderImport> excelUtil = new ExcelUtil<>(TmsDispatchOrderImport.class);
|
excelUtil.initialize("tmsDispatchOrderDataTemplate", null, Excel.Type.EXPORT);
|
|
TmsDispatchOrderImport tmsDispatchOrderImport = new TmsDispatchOrderImport();
|
tmsDispatchOrderImport.setProjectName("XXX项目");
|
tmsDispatchOrderImport.setTransportLine("广东省/珠海市/香洲区->香港特别行政区");
|
tmsDispatchOrderImport.setRequiredVehicleTypes("10T");
|
tmsDispatchOrderImport.setOrderType("基础订单");
|
tmsDispatchOrderImport.setIsCustoms("是");
|
tmsDispatchOrderImport.setIsLoad("是");
|
tmsDispatchOrderImport.setIsUrgent("是");
|
tmsDispatchOrderImport.setOrderTime(DateUtils.getNowDate());
|
tmsDispatchOrderImport.setLatestDeparture(DateUtils.getNowDate());
|
tmsDispatchOrderImport.setLatestArrival(DateUtils.getNowDate());
|
tmsDispatchOrderImport.setOperationMode("是");
|
tmsDispatchOrderImport.setCommissionModel("一日游");
|
tmsDispatchOrderImport.setMainDriverName("张三");
|
tmsDispatchOrderImport.setLicensePlate("粤C12345");
|
tmsDispatchOrderImport.setShipperRegionLabel("ZXH202512110002");
|
tmsDispatchOrderImport.setReceiverRegionLabel("ZXH202512110001");
|
|
excelUtil.exportExcel(Collections.singletonList(tmsDispatchOrderImport));
|
excelUtil.finishExport(fileName);
|
|
// 设置下载完成状态
|
DownloadExportUtil.setDownloadFile(redisCache, exportKey, fileName);
|
logger.info("Export completed for key: {}, file: {}", exportKey, fileName);
|
} catch (Exception e) {
|
logger.error("Export failed for key: {}, error: {}", exportKey, e.getMessage(), e);
|
DownloadExportUtil.deleteDownloadFile(redisCache, exportKey, "1"); // 设置失败状态
|
throw e;
|
}
|
}
|
|
private String verRequired(int line,TmsDispatchOrderImport tmsDispatchOrderImport){
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getProjectName())){
|
return "第 "+line+" 行 项目名称 不能为空!";
|
}
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getTransportLine())){
|
return "第 "+line+" 行 运输线路 不能为空!";
|
}
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getRequiredVehicleTypes())){
|
return "第 "+line+" 行 下单车型 不能为空!";
|
}
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getOrderType())){
|
return "第 "+line+" 行 订单类型 不能为空!";
|
}
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getIsCustoms())){
|
return "第 "+line+" 行 委托报关 不能为空!";
|
}
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getIsLoad())){
|
return "第 "+line+" 行 委托装卸 不能为空!";
|
}
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getIsUrgent())){
|
return "第 "+line+" 行 是否紧急 不能为空!";
|
}
|
|
if (tmsDispatchOrderImport.getOrderTime() == null){
|
return "第 "+line+" 行 下单时间 不能为空!";
|
}
|
if (tmsDispatchOrderImport.getLatestArrival() == null){
|
return "第 "+line+" 行 要求最晚到达时间 不能为空!";
|
}
|
|
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getOperationMode())){
|
return "第 "+line+" 行 是否是自营车队 不能为空!";
|
}
|
if ("0".equals(tmsDispatchOrderImport.getOperationMode())){
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getCommissionModel())){
|
throw new ServiceException("第"+line+"行自营车队必填提成模式!");
|
}
|
}
|
if ("1".equals(tmsDispatchOrderImport.getOperationMode())){
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getVehicleProviderName())){
|
throw new ServiceException("第"+line+"行 非自营车队 必填车辆服务商名称!");
|
}
|
}
|
|
|
if ( StringUtils.isEmpty(tmsDispatchOrderImport.getProjectName())){
|
return "第 "+line+" 行 下单时间 不能为空!";
|
}
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getMainDriverName())){
|
return "第 "+line+" 行 主驾驶员 不能为空!";
|
}
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getLicensePlate())){
|
return "第 "+line+" 行 车牌号 不能为空!";
|
}
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getShipperRegionLabel())){
|
return "第 "+line+" 行 装货点编码 不能为空!";
|
}
|
if (StringUtils.isEmpty(tmsDispatchOrderImport.getReceiverRegionLabel())){
|
return "第 "+line+" 行 卸货地编码 不能为空!";
|
}
|
|
return null;
|
|
}
|
|
|
@Override
|
public String importData(List<TmsDispatchOrderImport> list) {
|
|
if (StringUtils.isNull(list) || list.isEmpty())
|
{
|
throw new ServiceException("导入调度单数据不能为空!");
|
}
|
int failureNum = 0;
|
StringBuilder successMsg = new StringBuilder();
|
StringBuilder failureMsg = new StringBuilder();
|
StringBuilder failureDescription = new StringBuilder();
|
int line = 1;
|
|
// 创建导入日志对象
|
TmsDispatchOrderImportLog importLog = new TmsDispatchOrderImportLog();
|
importLog.setImportTime(DateUtils.getNowDate());
|
importLog.setFileName("调度单导入文件"); // 这里需要根据实际情况获取文件名
|
importLog.setOperator(SecurityUtils.getUsername());
|
importLog.setCreateBy(SecurityUtils.getUsername());
|
importLog.setCreateTime(DateUtils.getNowDate());
|
|
for (TmsDispatchOrderImport tmsDispatchOrderImport : list){
|
try
|
{
|
String s = verRequired(line, tmsDispatchOrderImport);
|
if (s != null){
|
throw new ServiceException(s);
|
}
|
TmsDispatchOrder tmsDispatchOrder = new TmsDispatchOrder();
|
String projectName = tmsDispatchOrderImport.getProjectName();
|
|
TmsProject tmsProject = tmsProjectMapper.selectOne(new LambdaQueryWrapper<TmsProject>().
|
eq(TmsProject::getProjectName, projectName)
|
.last("limit 1"));
|
if (tmsProject == null){
|
throw new ServiceException("第"+line+"行项目不存在!");
|
}
|
|
TransportRouteVi transportRouteVi = transportRouteViMapper.selectOne(new LambdaQueryWrapper<TransportRouteVi>()
|
.eq(TransportRouteVi::getTransportRoute, tmsDispatchOrderImport.getTransportLine())
|
.eq(TransportRouteVi::getProjectId, tmsProject.getId())
|
.eq(TransportRouteVi::getCustomerId, tmsProject.getRelatedCustomerId())
|
.eq(TransportRouteVi::getVehicleType, tmsDispatchOrderImport.getRequiredVehicleTypes())
|
.last("limit 1")
|
);
|
|
if (transportRouteVi == null){
|
throw new ServiceException("第"+line+"行线路信息不存在!");
|
}
|
|
tmsDispatchOrder.setQuoteDetailId(transportRouteVi.getQuoteDetailId());
|
tmsDispatchOrder.setTransportLine(transportRouteVi.getTransportRoute());
|
tmsDispatchOrder.setStartRegionCode(transportRouteVi.getStartRegionCode());
|
tmsDispatchOrder.setEndRegionCode(transportRouteVi.getEndRegionCode());
|
tmsDispatchOrder.setProjectName(transportRouteVi.getProjectName());
|
tmsDispatchOrder.setProjectId(transportRouteVi.getProjectId());
|
|
// 关联客户
|
tmsDispatchOrder.setCustomerId(transportRouteVi.getCustomerId());
|
tmsDispatchOrder.setCustomerName(transportRouteVi.getCustomerFullName());
|
tmsDispatchOrder.setCustomerCode(transportRouteVi.getCustomerCode());
|
|
tmsDispatchOrder.setContractId(transportRouteVi.getContractId());
|
tmsDispatchOrder.setContractName(transportRouteVi.getContractName());
|
|
tmsDispatchOrder.setRequiredVehicleTypes(tmsDispatchOrderImport.getRequiredVehicleTypes());
|
tmsDispatchOrder.setQuotePlanId(transportRouteVi.getQuotePlanId());
|
|
tmsDispatchOrder.setOrderType(Integer.valueOf(tmsDispatchOrderImport.getOrderType()));
|
tmsDispatchOrder.setIsCustoms(Integer.valueOf(tmsDispatchOrderImport.getIsCustoms()));
|
tmsDispatchOrder.setIsLoad(Integer.valueOf(tmsDispatchOrderImport.getIsLoad()));
|
tmsDispatchOrder.setIsUrgent(Integer.valueOf(tmsDispatchOrderImport.getIsUrgent()));
|
tmsDispatchOrder.setOrderTime(tmsDispatchOrderImport.getOrderTime());
|
tmsDispatchOrder.setLatestDeparture(tmsDispatchOrderImport.getLatestDeparture());
|
tmsDispatchOrder.setLatestArrival(tmsDispatchOrderImport.getLatestArrival());
|
tmsDispatchOrder.setOperationMode(Integer.valueOf(tmsDispatchOrderImport.getOperationMode()));
|
if (tmsDispatchOrder.getOperationMode() == 0){
|
tmsDispatchOrder.setCommissionModel(Integer.valueOf(tmsDispatchOrderImport.getCommissionModel()));
|
} else {
|
|
TmsServiceProvider tmsServiceProvider = tmsServiceProviderMapper.selectOne(new LambdaQueryWrapper<TmsServiceProvider>().
|
eq(TmsServiceProvider::getServiceName,
|
tmsDispatchOrderImport.getVehicleProviderName())
|
.last("limit 1")
|
);
|
if (tmsServiceProvider == null){
|
throw new ServiceException("第"+line+"行车辆服务商不存在!");
|
}
|
tmsDispatchOrder.setVehicleProviderId(tmsServiceProvider.getId());
|
tmsDispatchOrder.setVehicleProviderName(tmsServiceProvider.getServiceName());
|
}
|
TmsDriver tmsDriver = tmsDriverMapper.selectOne(new LambdaQueryWrapper<TmsDriver>().
|
eq(TmsDriver::getDriverName, tmsDispatchOrderImport.getMainDriverName())
|
.last("limit 1")
|
);
|
if (tmsDriver == null){
|
throw new ServiceException("第"+line+"行主驾驶员不存在!");
|
}
|
|
tmsDispatchOrder.setMainDriverId(tmsDriver.getId());
|
tmsDispatchOrder.setMainDriverName(tmsDriver.getDriverName());
|
if (!StringUtils.isEmpty(tmsDispatchOrderImport.getAssistantDriverName())){
|
|
TmsDriver tmsDriver1 = tmsDriverMapper.selectOne(new LambdaQueryWrapper<TmsDriver>().
|
eq(TmsDriver::getDriverName, tmsDispatchOrderImport.getAssistantDriverName())
|
.last("limit 1")
|
);
|
if (tmsDriver1 != null){
|
tmsDispatchOrder.setAssistantDriverId(tmsDriver1.getId());
|
tmsDispatchOrder.setAssistantDriverName(tmsDriver1.getDriverName());
|
}
|
|
}
|
|
|
TmsVehicle tmsVehicle = tmsVehicleMapper.selectOne(new LambdaQueryWrapper<TmsVehicle>()
|
.eq(TmsVehicle::getLicensePlate, tmsDispatchOrderImport.getLicensePlate())
|
.last("limit 1")
|
);
|
if (tmsVehicle == null){
|
throw new ServiceException("第"+line+"行车牌号不存在!");
|
}
|
|
tmsDispatchOrder.setVehicleId(tmsVehicle.getId());
|
tmsDispatchOrder.setLicensePlate(tmsVehicle.getLicensePlate());
|
tmsDispatchOrder.setActualVehicleType(tmsVehicle.getVehicleType());
|
|
TmsConsignor shipper = tmsConsignorMapper.selectOne(new LambdaQueryWrapper<TmsConsignor>()
|
.eq(TmsConsignor::getConsignorCode,
|
tmsDispatchOrderImport.getShipperRegionLabel())
|
.eq(TmsConsignor::getCustomerId, tmsDispatchOrder.getCustomerId())
|
.last("limit 1")
|
);
|
|
if (shipper == null){
|
throw new ServiceException("第"+line+"行装货点不存在!");
|
}
|
tmsDispatchOrder.setShipperId(shipper.getId());
|
tmsDispatchOrder.setShipperName(shipper.getConsignorName());
|
tmsDispatchOrder.setShipperRegionLabel(shipper.getRegionLabel());
|
tmsDispatchOrder.setShipperAddress(shipper.getAddressDetail());
|
tmsDispatchOrder.setShipperMobile(shipper.getContactPhone());
|
tmsDispatchOrder.setShipperRegionCode(shipper.getRegion());
|
|
|
TmsConsignor receiver = tmsConsignorMapper.selectOne(new LambdaQueryWrapper<TmsConsignor>()
|
.eq(TmsConsignor::getConsignorCode,
|
tmsDispatchOrderImport.getReceiverRegionLabel())
|
.eq(TmsConsignor::getCustomerId, tmsDispatchOrder.getCustomerId())
|
.last("limit 1")
|
);
|
if (receiver == null){
|
throw new ServiceException("第"+line+"行卸货地不存在!");
|
}
|
tmsDispatchOrder.setReceiverId(receiver.getId());
|
tmsDispatchOrder.setReceiverName(receiver.getConsignorName());
|
tmsDispatchOrder.setReceiverRegionLabel(receiver.getRegionLabel());
|
tmsDispatchOrder.setReceiverAddress(receiver.getAddressDetail());
|
tmsDispatchOrder.setReceiverMobile(receiver.getContactPhone());
|
tmsDispatchOrder.setReceiverRegionCode(receiver.getRegion());
|
|
if (!StringUtils.isEmpty(tmsDispatchOrderImport.getContainerNo())){
|
TmsContainer tmsContainer = tmsContainerMapper.selectOne(new LambdaQueryWrapper<TmsContainer>()
|
.eq(TmsContainer::getContainerCode, tmsDispatchOrderImport.getContainerNo())
|
.last("limit 1")
|
);
|
if (tmsContainer == null){
|
throw new ServiceException("第"+line+"行集装箱不存在!");
|
}
|
tmsDispatchOrder.setContainerId(tmsContainer.getId());
|
tmsDispatchOrder.setContainerNo(tmsContainer.getContainerCode());
|
}
|
|
if (!StringUtils.isEmpty(tmsDispatchOrderImport.getShelfCode())){
|
TmsShelf tmsShelf = tmsShelfMapper.selectOne(new LambdaQueryWrapper<TmsShelf>()
|
.eq(TmsShelf::getShelfCode, tmsDispatchOrderImport.getShelfCode())
|
.last("limit 1")
|
);
|
if (tmsShelf == null){
|
throw new ServiceException("第"+line+"行托架不存在!");
|
}
|
tmsDispatchOrder.setShelfId(tmsShelf.getId());
|
tmsDispatchOrder.setShelfCode(tmsShelf.getShelfCode());
|
}
|
String noByKey = systemDataNoService.getNoByKey(SystemDataNoEnum.DL);
|
tmsDispatchOrder.setDispatchNo(noByKey);
|
|
tmsDispatchOrder.setCreateBy(SecurityUtils.getUsername());
|
tmsDispatchOrder.setCreateTime(DateUtils.getNowDate());
|
tmsDispatchOrderMapper.insertTmsDispatchOrder(tmsDispatchOrder);
|
}catch (Exception e) {
|
failureNum++;
|
String msg = "<br/>" + "调度单第"+line+"行导入失败:";
|
failureMsg.append(msg + e.getMessage());
|
|
// 记录失败说明,包含行号和失败原因
|
failureDescription.append("第" + line + "行:" + e.getMessage()).append("\n");
|
|
log.error(msg, e);
|
}finally {
|
line++;
|
}
|
}
|
|
// 设置导入日志的统计信息
|
importLog.setSuccessCount(list.size() - failureNum);
|
importLog.setFailureCount(failureNum);
|
importLog.setFailureDescription(failureDescription.toString());
|
|
// 保存导入日志
|
try {
|
tmsDispatchOrderImportLogService.insertTmsDispatchOrderImportLog(importLog);
|
} catch (Exception e) {
|
log.error("保存导入日志失败:", e);
|
}
|
|
if (failureNum > 0)
|
{
|
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
|
throw new ServiceException(failureMsg.toString());
|
}
|
else
|
{
|
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + list.size() + " 条");
|
}
|
|
return successMsg.toString() ;
|
}
|
|
/**
|
* 新增调度单管理
|
*
|
* @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());
|
int result = tmsDispatchOrderMapper.insertTmsDispatchOrder(tmsDispatchOrder);
|
|
if (result > 0) {
|
TmsDispatchOrderLog log = new TmsDispatchOrderLog();
|
log.setHeadId(tmsDispatchOrder.getId());
|
log.setCreateBy(SecurityUtils.getUsername());
|
log.setCreateTime(DateUtils.getNowDate());
|
log.setNode("新增调度单");
|
tmsDispatchOrderLogService.insertTmsDispatchOrderLog(log);
|
}
|
|
return result;
|
}
|
@Override
|
public int insertTmsDispatchOrder2(TmsDispatchOrder tmsDispatchOrder)
|
{
|
String noByKey = systemDataNoService.getNoByKey(SystemDataNoEnum.DL);
|
|
tmsDispatchOrder.setDispatchNo(noByKey);
|
tmsDispatchOrder.setCreateBy("AGENTS");
|
tmsDispatchOrder.setCreateTime(DateUtils.getNowDate());
|
return tmsDispatchOrderMapper.insertTmsDispatchOrder(tmsDispatchOrder);
|
}
|
|
/**
|
* 新增调度单管理[批量]
|
*
|
* @param tmsDispatchOrders 调度单管理
|
* @return 结果
|
*/
|
@Override
|
public int insertTmsDispatchOrderBatch(List<TmsDispatchOrder> 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());
|
int result = tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
|
|
if (result > 0) {
|
TmsDispatchOrderLog log = new TmsDispatchOrderLog();
|
log.setHeadId(tmsDispatchOrder.getId());
|
log.setCreateBy(SecurityUtils.getUsername());
|
log.setCreateTime(DateUtils.getNowDate());
|
log.setNode("编辑调度单");
|
tmsDispatchOrderLogService.insertTmsDispatchOrderLog(log);
|
}
|
|
return result;
|
}
|
@Override
|
public int updateTmsDispatchOrder2(TmsDispatchOrder tmsDispatchOrder)
|
{
|
tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
|
|
tmsDispatchOrder.setUpdateTime(DateUtils.getNowDate());
|
int result = tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
|
|
if (result > 0) {
|
TmsDispatchOrderLog log = new TmsDispatchOrderLog();
|
log.setHeadId(tmsDispatchOrder.getId());
|
log.setCreateBy(SecurityUtils.getUsername());
|
log.setCreateTime(DateUtils.getNowDate());
|
log.setNode("填写实际运输记录");
|
tmsDispatchOrderLogService.insertTmsDispatchOrderLog(log);
|
}
|
|
return result;
|
}
|
|
@Override
|
public int updateTmsDispatchOrder(YpdddjDispatchOrderVo dispatchOrderVo)
|
{
|
return tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
|
.in(TmsDispatchOrder::getDispatchNo,dispatchOrderVo.getDispatchNos())
|
.set(dispatchOrderVo.getShipperId()!=null,TmsDispatchOrder::getShipperId,dispatchOrderVo.getShipperId())
|
.set(StringUtils.isNotEmpty(dispatchOrderVo.getShipperName()),TmsDispatchOrder::getShipperName,dispatchOrderVo.getShipperName())
|
.set(StringUtils.isNotEmpty(dispatchOrderVo.getShipperRegionLabel()),TmsDispatchOrder::getShipperRegionLabel,dispatchOrderVo.getShipperRegionLabel())
|
.set(StringUtils.isNotEmpty(dispatchOrderVo.getShipperAddress()),TmsDispatchOrder::getShipperAddress,dispatchOrderVo.getShipperAddress())
|
.set(StringUtils.isNotEmpty(dispatchOrderVo.getShipperMobile()),TmsDispatchOrder::getShipperMobile,dispatchOrderVo.getShipperMobile())
|
.set(StringUtils.isNotEmpty(dispatchOrderVo.getShipperRegionCode()),TmsDispatchOrder::getShipperRegionCode,dispatchOrderVo.getShipperRegionCode())
|
|
.set(dispatchOrderVo.getReceiverId()!=null,TmsDispatchOrder::getReceiverId,dispatchOrderVo.getReceiverId())
|
.set(StringUtils.isNotEmpty(dispatchOrderVo.getReceiverName()),TmsDispatchOrder::getReceiverName,dispatchOrderVo.getReceiverName())
|
.set(StringUtils.isNotEmpty(dispatchOrderVo.getReceiverRegionLabel()),TmsDispatchOrder::getReceiverRegionLabel,dispatchOrderVo.getReceiverRegionLabel())
|
.set(StringUtils.isNotEmpty(dispatchOrderVo.getReceiverAddress()),TmsDispatchOrder::getReceiverAddress,dispatchOrderVo.getReceiverAddress())
|
.set(StringUtils.isNotEmpty(dispatchOrderVo.getReceiverMobile()),TmsDispatchOrder::getReceiverMobile,dispatchOrderVo.getReceiverMobile())
|
.set(StringUtils.isNotEmpty(dispatchOrderVo.getReceiverRegionCode()),TmsDispatchOrder::getReceiverRegionCode,dispatchOrderVo.getReceiverRegionCode())
|
|
.set(TmsDispatchOrder::getUpdateBy,SecurityUtils.getUsername())
|
.set(TmsDispatchOrder::getUpdateTime,DateUtils.getNowDate())
|
);
|
|
}
|
|
//承运单打印
|
@Override
|
public int printDispatchOrder(TmsDispatchOrder tmsDispatchOrder)
|
{
|
int result = tmsDispatchOrderMapper.update(null,new LambdaUpdateWrapper<TmsDispatchOrder>()
|
.eq(TmsDispatchOrder::getId,tmsDispatchOrder.getId())
|
.set(TmsDispatchOrder::getIsPrint,0)
|
.setSql("print_count = IFNULL(print_count, 0) + 1")
|
.set(TmsDispatchOrder::getPrintTime,new Date())
|
.set(TmsDispatchOrder::getPrintBy,SecurityUtils.getUsername())
|
.set(TmsDispatchOrder::getSixLinkNo,tmsDispatchOrder.getSixLinkNo())
|
.set(TmsDispatchOrder::getPortName,tmsDispatchOrder.getPortName())
|
.set(TmsDispatchOrder::getBillNo,tmsDispatchOrder.getBillNo())
|
.set(TmsDispatchOrder::getTerminalName,tmsDispatchOrder.getTerminalName())
|
.set(TmsDispatchOrder::getCargoName,tmsDispatchOrder.getCargoName())
|
.set(TmsDispatchOrder::getPieceCount,tmsDispatchOrder.getPieceCount())
|
.set(TmsDispatchOrder::getWeight,tmsDispatchOrder.getWeight())
|
.set(TmsDispatchOrder::getContactName,tmsDispatchOrder.getContactName())
|
.set(TmsDispatchOrder::getContactPhone,tmsDispatchOrder.getContactPhone())
|
);
|
|
if (result > 0) {
|
TmsDispatchOrderLog log = new TmsDispatchOrderLog();
|
log.setHeadId(tmsDispatchOrder.getId());
|
log.setCreateBy(SecurityUtils.getUsername());
|
log.setCreateTime(DateUtils.getNowDate());
|
log.setNode("承运单打印");
|
|
tmsDispatchOrderLogService.insertTmsDispatchOrderLog(log);
|
}
|
|
return result;
|
}
|
|
/**
|
* 修改调度单管理[批量]
|
*
|
* @param tmsDispatchOrders 调度单管理
|
* @return 结果
|
*/
|
@Override
|
public int updateTmsDispatchOrderBatch(List<TmsDispatchOrder> 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);
|
}
|
|
@Override
|
public List<TmsDispatchOrder> initGenerate(List<Integer> ids) {
|
List<TmsDispatchOrder> tmsDispatchOrders = tmsDispatchOrderMapper.selectBatchIds(ids);
|
if (tmsDispatchOrders != null && !tmsDispatchOrders.isEmpty()){
|
tmsDispatchOrders.forEach(tmsDispatchOrder -> {
|
|
// 1、是否是外协
|
// tmsDispatchOrder.is
|
|
// 客户ID
|
Integer customerId = tmsDispatchOrder.getCustomerId();
|
|
// 车型
|
String actualVehicleType = tmsDispatchOrder.getActualVehicleType();
|
|
// 运输路线 = 发货地行政区域 + 收货地行政区域
|
String shipperRegionCode = tmsDispatchOrder.getShipperRegionCode();
|
String receiverRegionCode = tmsDispatchOrder.getReceiverRegionCode();
|
if (tmsDispatchOrder.getAccountsReceivableStatus() != null && tmsDispatchOrder.getAccountsReceivableStatus() == 1){
|
TmsQuotePlan tmsQuotePlan = tmsQuotePlanMapper.selectTmsQuotePlanById(tmsDispatchOrder.getCollectionPlanId());
|
tmsDispatchOrder.setCollectionPlanId(tmsQuotePlan.getId());
|
tmsDispatchOrder.setCollectionPlanName(tmsQuotePlan.getPlanName());
|
}else{
|
// 查询应收规则
|
TmsQuoteDetail tmsQuoteDetail = tmsQuoteDetailMapper.selectOne(new LambdaQueryWrapper<TmsQuoteDetail>()
|
.eq(TmsQuoteDetail::getCustomerId, customerId)
|
.eq(TmsQuoteDetail::getVehicleType, actualVehicleType)
|
.eq(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
|
.eq(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
|
.eq(TmsQuoteDetail::getPlanType, 0)
|
.last("limit 1")
|
);
|
if (tmsQuoteDetail != null){
|
TmsQuotePlan tmsQuotePlan = tmsQuotePlanMapper.selectTmsQuotePlanById(tmsQuoteDetail.getQuotePlanId());
|
tmsDispatchOrder.setCollectionPlanId(tmsQuotePlan.getId());
|
tmsDispatchOrder.setCollectionPlanName(tmsQuotePlan.getPlanName());
|
tmsDispatchOrder.setCollectionPlanDetailId(tmsQuoteDetail.getId());
|
tmsDispatchOrder.setCollectionPlanAmount(tmsQuoteDetail.getFreightPrice());
|
}else{
|
tmsDispatchOrder.setAccountsReceivableStatus(2);
|
}
|
}
|
|
if (tmsDispatchOrder.getAccountsPayableStatus() != null && tmsDispatchOrder.getAccountsPayableStatus() == 1){
|
TmsQuotePlan tmsQuotePlan = tmsQuotePlanMapper.selectTmsQuotePlanById(tmsDispatchOrder.getPaymentPlanId());
|
tmsDispatchOrder.setPaymentPlanId(tmsQuotePlan.getId());
|
tmsDispatchOrder.setPaymentPlanName(tmsQuotePlan.getPlanName());
|
}else{
|
// 查询应付规则
|
TmsQuoteDetail tmsQuoteDetail2 = tmsQuoteDetailMapper.selectOne(new LambdaQueryWrapper<TmsQuoteDetail>()
|
.eq(TmsQuoteDetail::getCustomerId, customerId)
|
.eq(TmsQuoteDetail::getVehicleType, actualVehicleType)
|
.eq(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
|
.eq(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
|
.eq(TmsQuoteDetail::getPlanType, 1)
|
.last("limit 1")
|
);
|
|
if (tmsQuoteDetail2 != null){
|
TmsQuotePlan tmsQuotePlan = tmsQuotePlanMapper.selectTmsQuotePlanById(tmsQuoteDetail2.getQuotePlanId());
|
tmsDispatchOrder.setPaymentPlanId(tmsQuotePlan.getId());
|
tmsDispatchOrder.setPaymentPlanName(tmsQuotePlan.getPlanName());
|
tmsDispatchOrder.setPaymentPlanDetailId(tmsQuoteDetail2.getId());
|
tmsDispatchOrder.setPaymentPlanAmount(tmsQuoteDetail2.getFreightPrice());
|
|
}else{
|
tmsDispatchOrder.setAccountsPayableStatus(2);
|
}
|
}
|
|
|
});
|
}
|
return tmsDispatchOrders;
|
}
|
|
@Override
|
public List<TmsDispatchOrder> initYSGenerate(List<Integer> ids) {
|
List<TmsDispatchOrder> tmsDispatchOrders = tmsDispatchOrderMapper.selectBatchIds(ids);
|
if (tmsDispatchOrders != null && !tmsDispatchOrders.isEmpty()){
|
tmsDispatchOrders.forEach(tmsDispatchOrder -> {
|
List<TmsReceivableFeeItem> tmsReceivableFeeItems = new ArrayList<>();
|
if (tmsDispatchOrder.getAccountsReceivableStatus() != null &&
|
tmsDispatchOrder.getAccountsReceivableStatus() == 1){
|
throw new RuntimeException(tmsDispatchOrder.getDispatchNo()+"应收账单已生成,请先作废");
|
}
|
// 客户ID
|
Integer customerId = tmsDispatchOrder.getCustomerId();
|
// 1、是否是自营 0 = 是 1 = 否 获取运费
|
//if(tmsDispatchOrder.getOperationMode().equals(1)){
|
// 非自营需要有运费
|
// 车辆服务商
|
// 实际车型
|
String actualVehicleType = tmsDispatchOrder.getRequiredVehicleTypes();
|
// 出发路线 44,4404,440402,440402102
|
String shipperRegionCode = tmsDispatchOrder.getStartRegionCode();
|
// 目的地路线 81,8100,810000
|
String receiverRegionCode = tmsDispatchOrder.getEndRegionCode();
|
|
// 查询应收规则
|
TmsQuoteDetail tmsQuoteDetail = tmsQuoteDetailMapper.selectOne(new LambdaQueryWrapper<TmsQuoteDetail>()
|
.eq(TmsQuoteDetail::getCustomerId, customerId)
|
.eq(TmsQuoteDetail::getVehicleType, actualVehicleType)
|
.likeRight(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
|
.likeRight(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
|
.eq(TmsQuoteDetail::getPlanType, 0)
|
.last("limit 1")
|
);
|
|
|
|
if (tmsQuoteDetail == null){
|
throw new RuntimeException("调度单"+tmsDispatchOrder.getDispatchNo()+"未维护应收运费报价,请维护数据后再重新生成");
|
}
|
|
if (tmsQuoteDetail.getIsSegmentedInvoice() == 1){
|
TmsReceivableFeeItem tmsReceivableFeeItem = new TmsReceivableFeeItem();
|
tmsReceivableFeeItem.setFeeType(0);
|
tmsReceivableFeeItem.setFeeName("运费");
|
tmsReceivableFeeItem.setTypeId(tmsQuoteDetail.getId());
|
tmsReceivableFeeItem.setRegisterAmount(tmsQuoteDetail.getFreightPrice());
|
tmsReceivableFeeItem.setRegisterTime(tmsDispatchOrder.getConfirmTime());
|
tmsReceivableFeeItem.setCurrency(tmsQuoteDetail.getCurrency());
|
tmsReceivableFeeItem.setRowKey(IdUtil.objectId());
|
tmsReceivableFeeItems.add(tmsReceivableFeeItem);
|
}else{
|
TmsReceivableFeeItem tmsReceivableFeeItemOne = new TmsReceivableFeeItem();
|
tmsReceivableFeeItemOne.setFeeType(0);
|
tmsReceivableFeeItemOne.setFeeName("一段运费");
|
tmsReceivableFeeItemOne.setTypeId(tmsQuoteDetail.getId());
|
tmsReceivableFeeItemOne.setRegisterAmount(tmsQuoteDetail.getSegment1FreightQuote());
|
tmsReceivableFeeItemOne.setRegisterTime(tmsDispatchOrder.getConfirmTime());
|
tmsReceivableFeeItemOne.setCurrency(tmsQuoteDetail.getSegment1Currency());
|
|
tmsReceivableFeeItemOne.setRowKey(IdUtil.objectId());
|
|
tmsReceivableFeeItems.add(tmsReceivableFeeItemOne);
|
|
|
TmsReceivableFeeItem tmsReceivableFeeItemTwo = new TmsReceivableFeeItem();
|
tmsReceivableFeeItemTwo.setFeeType(0);
|
tmsReceivableFeeItemTwo.setFeeName("二段运费");
|
tmsReceivableFeeItemTwo.setTypeId(tmsQuoteDetail.getId());
|
tmsReceivableFeeItemTwo.setRegisterAmount(tmsQuoteDetail.getSegment2FreightQuote());
|
tmsReceivableFeeItemTwo.setRegisterTime(tmsDispatchOrder.getConfirmTime());
|
tmsReceivableFeeItemTwo.setCurrency(tmsQuoteDetail.getSegment2Currency());
|
tmsReceivableFeeItemTwo.setRowKey(IdUtil.objectId());
|
|
tmsReceivableFeeItems.add(tmsReceivableFeeItemTwo);
|
|
}
|
//}
|
// 2、 获取实报实销费用
|
List<TmsFinanceDetail> tmsFinanceDetails = tmsFinanceDetailService.selectTmsFinanceDetailList(new TmsFinanceDetail() {{
|
setDispatchOrderId(tmsDispatchOrder.getId());
|
setStatus(0);
|
}});
|
|
if (tmsFinanceDetails != null && !tmsFinanceDetails.isEmpty()){
|
tmsFinanceDetails.forEach(tmsFinanceDetail -> {
|
TmsReceivableFeeItem tmsReceivableFeeItem = new TmsReceivableFeeItem();
|
tmsReceivableFeeItem.setFeeType(2);
|
|
String feeName = sysDictDataService.selectDictLabel("fee_type", tmsFinanceDetail.getFeeType());
|
tmsReceivableFeeItem.setFeeName(feeName);
|
tmsReceivableFeeItem.setTypeId(tmsFinanceDetail.getId());
|
tmsReceivableFeeItem.setRegisterAmount(tmsFinanceDetail.getActualFeeAmount());
|
tmsReceivableFeeItem.setRegisterTime(tmsFinanceDetail.getUpdateTime());
|
tmsReceivableFeeItem.setCurrency(tmsFinanceDetail.getCurrency());
|
tmsReceivableFeeItem.setRowKey(IdUtil.objectId());
|
|
tmsReceivableFeeItems.add(tmsReceivableFeeItem);
|
});
|
}
|
|
|
// 3、 获取报价费用
|
// tmsDispatchOrder.is
|
List<TmsQuoteFee> tmsQuoteFees = tmsQuoteFeeService.selectTmsQuoteFeeList(new TmsQuoteFee() {{
|
setDispatchId(tmsDispatchOrder.getId());
|
}});
|
|
if (tmsQuoteFees != null && !tmsQuoteFees.isEmpty()){
|
tmsQuoteFees.forEach(item -> {
|
TmsReceivableFeeItem tmsReceivableFeeItem = new TmsReceivableFeeItem();
|
tmsReceivableFeeItem.setFeeType(1);
|
tmsReceivableFeeItem.setFeeName(item.getFreeName());
|
tmsReceivableFeeItem.setTypeId(item.getId());
|
tmsReceivableFeeItem.setRegisterAmount(item.getSum());
|
tmsReceivableFeeItem.setRegisterTime(item.getCreateTime());
|
tmsReceivableFeeItem.setCurrency(item.getCurrency());
|
tmsReceivableFeeItem.setRowKey(IdUtil.objectId());
|
|
tmsReceivableFeeItems.add(tmsReceivableFeeItem);
|
});
|
}
|
|
|
|
tmsDispatchOrder.setTmsReceivableFeeItems(tmsReceivableFeeItems);
|
});
|
}
|
return tmsDispatchOrders;
|
}
|
|
|
@Override
|
public List<TmsPayableFee> initYFGenerate(List<Integer> ids) {
|
List<TmsDispatchOrder> tmsDispatchOrders = tmsDispatchOrderMapper.selectBatchIds(ids);
|
if (tmsDispatchOrders != null && !tmsDispatchOrders.isEmpty()){
|
tmsDispatchOrders.forEach(tmsDispatchOrder -> {
|
List<TmsPayableFeeItem> tmsPayableFeeItems = new ArrayList<>();
|
if (tmsDispatchOrder.getAccountsPayableStatus() != null &&
|
tmsDispatchOrder.getAccountsPayableStatus() == 1){
|
throw new RuntimeException(tmsDispatchOrder.getDispatchNo()+"应付账单已生成,请先作废");
|
}
|
// 客户ID
|
Integer customerId = tmsDispatchOrder.getCustomerId();
|
// 1、是否是自营 0 = 是 1 = 否 获取运费
|
if(tmsDispatchOrder.getOperationMode().equals(1)){
|
// 非自营需要有运费
|
// 车辆服务商
|
Integer vehicleProviderId = tmsDispatchOrder.getVehicleProviderId();
|
// 实际车型
|
String actualVehicleType = tmsDispatchOrder.getActualVehicleType();
|
// 出发路线 44,4404,440402,440402102
|
String shipperRegionCode = tmsDispatchOrder.getStartRegionCode();
|
// 目的地路线 81,8100,810000
|
String receiverRegionCode = tmsDispatchOrder.getEndRegionCode();
|
|
// 查询应收规则
|
TmsQuoteDetail tmsQuoteDetail =
|
tmsQuoteDetailMapper.selectOne(
|
new LambdaQueryWrapper<TmsQuoteDetail>()
|
.eq(TmsQuoteDetail::getVehicleType, actualVehicleType)
|
.likeRight(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
|
.likeRight(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
|
.eq(TmsQuoteDetail::getPlanType, 1)
|
.exists(
|
"SELECT 1 " +
|
"FROM tms_quote_plan tqp " +
|
"WHERE tqp.id = tms_quote_detail.quote_plan_id " +
|
"AND tqp.provider_id = {0} " +
|
"AND tqp.plan_type = 1 " +
|
"AND tqp.provider_type = 0",
|
vehicleProviderId
|
)
|
.last("LIMIT 1")
|
);
|
|
|
|
|
if (tmsQuoteDetail == null){
|
throw new RuntimeException("调度单"+tmsDispatchOrder.getDispatchNo()+"未维护应付运费报价,请维护数据后再重新生成");
|
}
|
TmsPayableFeeItem tmsPayableFeeItem = new TmsPayableFeeItem();
|
tmsPayableFeeItem.setFeeType(0);
|
tmsPayableFeeItem.setFeeName("运费");
|
tmsPayableFeeItem.setTypeId(tmsQuoteDetail.getId());
|
tmsPayableFeeItem.setRegisterAmount(tmsQuoteDetail.getFreightPrice());
|
tmsPayableFeeItem.setRegisterTime(tmsDispatchOrder.getConfirmTime());
|
tmsPayableFeeItem.setCurrency(tmsQuoteDetail.getCurrency());
|
tmsPayableFeeItem.setRowKey(IdUtil.objectId());
|
|
tmsPayableFeeItem.setServiceProviderId(vehicleProviderId);
|
tmsPayableFeeItem.setServiceProviderName(tmsDispatchOrder.getVehicleProviderName());
|
tmsPayableFeeItem.setServiceProviderType("0");
|
|
tmsPayableFeeItems.add(tmsPayableFeeItem);
|
|
}
|
// 2、 获取实报实销费用
|
List<TmsFinanceDetail> tmsFinanceDetails = tmsFinanceDetailService.selectTmsFinanceDetailList(new TmsFinanceDetail() {{
|
setDispatchOrderId(tmsDispatchOrder.getId());
|
setStatus(0);
|
setIsYF(1);
|
}});
|
|
if (tmsFinanceDetails != null && !tmsFinanceDetails.isEmpty()){
|
tmsFinanceDetails.forEach(tmsFinanceDetail -> {
|
TmsPayableFeeItem tmsPayableFeeItem = new TmsPayableFeeItem();
|
tmsPayableFeeItem.setFeeType(2);
|
|
String feeName = sysDictDataService.selectDictLabel("fee_type", tmsFinanceDetail.getFeeType());
|
tmsPayableFeeItem.setFeeName(feeName);
|
tmsPayableFeeItem.setTypeId(tmsFinanceDetail.getId());
|
tmsPayableFeeItem.setRegisterAmount(tmsFinanceDetail.getYfPrice());
|
tmsPayableFeeItem.setRegisterTime(tmsFinanceDetail.getUpdateTime());
|
tmsPayableFeeItem.setCurrency(tmsFinanceDetail.getYfCurrency());
|
tmsPayableFeeItem.setRowKey(IdUtil.objectId());
|
tmsPayableFeeItem.setServiceProviderId(tmsFinanceDetail.getYfServiceProviderId());
|
tmsPayableFeeItem.setServiceProviderName(tmsFinanceDetail.getYfServiceProviderName());
|
tmsPayableFeeItem.setServiceProviderType(tmsFinanceDetail.getYfServiceProviderType());
|
tmsPayableFeeItems.add(tmsPayableFeeItem);
|
});
|
}
|
|
|
// 3、 获取报价费用
|
// tmsDispatchOrder.is
|
List<TmsQuoteFee> tmsQuoteFees = tmsQuoteFeeService.selectTmsQuoteFeeList(new TmsQuoteFee() {{
|
setDispatchId(tmsDispatchOrder.getId());
|
setIsYF(1);
|
}});
|
|
if (tmsQuoteFees != null && !tmsQuoteFees.isEmpty()){
|
tmsQuoteFees.forEach(item -> {
|
TmsPayableFeeItem tmsPayableFeeItem = new TmsPayableFeeItem();
|
tmsPayableFeeItem.setFeeType(1);
|
tmsPayableFeeItem.setFeeName(item.getFreeName());
|
tmsPayableFeeItem.setTypeId(item.getId());
|
tmsPayableFeeItem.setRegisterAmount(item.getYfSum());
|
tmsPayableFeeItem.setRegisterTime(item.getCreateTime());
|
tmsPayableFeeItem.setCurrency(item.getYfCurrency());
|
tmsPayableFeeItem.setRowKey(IdUtil.objectId());
|
|
tmsPayableFeeItem.setServiceProviderId(item.getServiceProviderId());
|
tmsPayableFeeItem.setServiceProviderName(getServiceProviderName(item.getServiceProviderType(),item.getServiceProviderId()));
|
tmsPayableFeeItem.setServiceProviderType(item.getServiceProviderType());
|
|
tmsPayableFeeItems.add(tmsPayableFeeItem);
|
});
|
}
|
tmsDispatchOrder.setTmsPayableFeeItems(tmsPayableFeeItems);
|
});
|
}
|
List<TmsPayableFee> tmsPayableFeeList = new ArrayList<>();
|
if (tmsDispatchOrders != null && !tmsDispatchOrders.isEmpty()){
|
tmsDispatchOrders.forEach(item -> {
|
|
|
List<TmsPayableFeeItem> tmsPayableFeeItems = item.getTmsPayableFeeItems();
|
Map<String, List<TmsPayableFeeItem>> map =
|
tmsPayableFeeItems.stream()
|
.collect(Collectors.groupingBy(cItem ->
|
cItem.getServiceProviderId() + "_" + cItem.getServiceProviderType()
|
));
|
map.forEach((customerId, customerItems) -> {
|
|
TmsPayableFeeItem tmsPayableFeeItem = customerItems.get(0);
|
TmsPayableFee tmsPayableFee = new TmsPayableFee();
|
|
tmsPayableFee.setDispatchId(item.getId());
|
tmsPayableFee.setDispatchNo(item.getDispatchNo());
|
|
tmsPayableFee.setServiceProviderId(tmsPayableFeeItem.getServiceProviderId());
|
tmsPayableFee.setServiceProviderName(tmsPayableFeeItem.getServiceProviderName());
|
tmsPayableFee.setServiceProviderType(tmsPayableFeeItem.getServiceProviderType());
|
|
tmsPayableFee.setProjectId(item.getProjectId());
|
tmsPayableFee.setProjectName(item.getProjectName());
|
|
BigDecimal totalRmbAmount = customerItems.stream()
|
.filter(cItem -> "RMB".equals(cItem.getCurrency()))
|
.map(TmsPayableFeeItem::getRegisterAmount)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
tmsPayableFee.setPayableRmbAmount(totalRmbAmount);
|
|
|
BigDecimal totalHkbAmount = customerItems.stream()
|
.filter(cItem -> "HKD".equals(cItem.getCurrency()))
|
.map(TmsPayableFeeItem::getRegisterAmount)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
tmsPayableFee.setPayableHkbAmount(totalHkbAmount);
|
tmsPayableFee.setDispatchConfirmTime(item.getConfirmTime());
|
tmsPayableFee.setStatus(0);
|
tmsPayableFee.setPayableFeeItems(customerItems);
|
tmsPayableFeeList.add(tmsPayableFee);
|
});
|
|
|
});
|
}
|
|
|
|
|
|
|
return tmsPayableFeeList;
|
}
|
|
@Override
|
public AjaxResult ysGenerateTmsDispatchOrder(List<Integer> ids) {
|
List<TmsDispatchOrder> tmsDispatchOrders = initYSGenerate(ids);
|
List<TmsDispatchOrder> collect1 = tmsDispatchOrders.stream().filter(item -> item.getTmsReceivableFeeItems() == null || item.getTmsReceivableFeeItems().isEmpty()).collect(Collectors.toList());
|
if (!collect1.isEmpty()){
|
String disNos = collect1.stream().map(TmsDispatchOrder::getDispatchNo).collect(Collectors.joining(","));
|
return AjaxResult.error("调度单"+disNos+"未有应收信息");
|
}
|
|
|
|
|
List<TmsDispatchOrder> collect = tmsDispatchOrders.stream().map(item -> {
|
TmsDispatchOrder tmsDispatchOrder = new TmsDispatchOrder();
|
tmsDispatchOrder.setId(item.getId());
|
tmsDispatchOrder.setAccountsReceivableStatus(1);
|
tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
|
return tmsDispatchOrder;
|
}).collect(Collectors.toList());
|
// 1、修改调度
|
tmsDispatchOrderMapper.updateTmsDispatchOrderBatch(collect);
|
|
// 2、生成应收单
|
|
tmsDispatchOrders.stream().forEach(item -> {
|
TmsReceivableFee tmsReceivableFee = new TmsReceivableFee();
|
String noByKey = systemDataNoService.getNoByKey(SystemDataNoEnum.YSFY);
|
|
tmsReceivableFee.setSystemNo(noByKey);
|
tmsReceivableFee.setDispatchId(item.getId());
|
tmsReceivableFee.setDispatchNo(item.getDispatchNo());
|
tmsReceivableFee.setCustomerId(item.getCustomerId());
|
tmsReceivableFee.setCustomerName(item.getCustomerName());
|
tmsReceivableFee.setProjectId(item.getProjectId());
|
tmsReceivableFee.setProjectName(item.getProjectName());
|
|
List<TmsReceivableFeeItem> tmsReceivableFeeItems = item.getTmsReceivableFeeItems();
|
|
|
BigDecimal totalRmbAmount = tmsReceivableFeeItems.stream()
|
.filter(cItem -> "RMB".equals(cItem.getCurrency()))
|
.map(TmsReceivableFeeItem::getRegisterAmount)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
tmsReceivableFee.setReceivableRMBAmount(totalRmbAmount);
|
|
|
BigDecimal totalHkbAmount = tmsReceivableFeeItems.stream()
|
.filter(cItem -> "HKD".equals(cItem.getCurrency()))
|
.map(TmsReceivableFeeItem::getRegisterAmount)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
tmsReceivableFee.setReceivableHKBAmount(totalHkbAmount);
|
|
|
tmsReceivableFee.setDispatchConfirmTime(item.getConfirmTime());
|
tmsReceivableFee.setCostGenerateTime(new Date());
|
tmsReceivableFee.setStatus(0);
|
tmsReceivableFee.setCreateBy(SecurityUtils.getUsername());
|
tmsReceivableFeeService.insertTmsReceivableFee(tmsReceivableFee);
|
|
|
tmsReceivableFeeItems.forEach(kItem -> {
|
kItem.setHeadId(tmsReceivableFee.getId());
|
});
|
tmsReceivableFeeItemService.insertTmsReceivableFeeItemBatch(tmsReceivableFeeItems);
|
});
|
return AjaxResult.success();
|
}
|
@Override
|
public AjaxResult yfGenerateTmsDispatchOrder(List<Integer> ids) {
|
List<TmsPayableFee> tmsPayableFeeList = initYFGenerate(ids);
|
|
Set<Integer> dispatchIds = tmsPayableFeeList.stream().map(TmsPayableFee::getDispatchId).collect(Collectors.toSet());
|
// 1、修改调度
|
tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
|
.in(TmsDispatchOrder::getId, dispatchIds)
|
.set(TmsDispatchOrder::getAccountsPayableStatus, 1)
|
.set(TmsDispatchOrder::getUpdateBy, SecurityUtils.getUsername())
|
.set(TmsDispatchOrder::getUpdateTime, DateUtils.getNowDate())
|
);
|
// 2、生成应收单
|
tmsPayableFeeList.forEach(tmsPayableFee ->{
|
String noByKey = systemDataNoService.getNoByKey(SystemDataNoEnum.YFFY);
|
tmsPayableFee.setSystemNo(noByKey);
|
tmsPayableFee.setCostGenerateTime(new Date());
|
tmsPayableFee.setCreateBy(SecurityUtils.getUsername());
|
tmsPayableFeeMapper.insertTmsPayableFee(tmsPayableFee);
|
List<TmsPayableFeeItem> customerItems = tmsPayableFee.getPayableFeeItems();
|
customerItems.forEach(kItem -> {
|
kItem.setHeadId(tmsPayableFee.getId());
|
});
|
tmsPayableFeeItemMapper.insertTmsPayableFeeItemBatch(customerItems);
|
});
|
return AjaxResult.success();
|
}
|
|
@Override
|
public AjaxResult generateTmsDispatchOrder(List<Integer> ids) {
|
List<TmsDispatchOrder> tmsDispatchOrders = initGenerate(ids);
|
List<TmsDispatchOrder> collect1 = tmsDispatchOrders.stream().filter(item -> item.getIsCustoms() == 0 && item.getCustomsServiceProviderId() == null).collect(Collectors.toList());
|
if (!collect1.isEmpty()){
|
String disNos = collect1.stream().map(TmsDispatchOrder::getDispatchNo).collect(Collectors.joining(","));
|
return AjaxResult.error("调度单"+disNos+"未补充委托报关信息");
|
}
|
List<TmsDispatchOrder> collect2 = tmsDispatchOrders.stream().filter(item -> item.getIsLoad() == 0 && item.getLoadingServiceProviderId() == null).collect(Collectors.toList());
|
if (!collect2.isEmpty()){
|
String disNos = collect2.stream().map(TmsDispatchOrder::getDispatchNo).collect(Collectors.joining(","));
|
return AjaxResult.error("调度单"+disNos+"未补充装卸货信息");
|
}
|
List<TmsDispatchOrder> receivableList = tmsDispatchOrders.stream().filter(item -> item.getAccountsReceivableStatus() == 0).collect(Collectors.toList());
|
if (!receivableList.isEmpty()){
|
List<TmsDispatchOrder> collect = receivableList.stream().map(item -> {
|
TmsDispatchOrder tmsDispatchOrder = new TmsDispatchOrder();
|
tmsDispatchOrder.setId(item.getId());
|
tmsDispatchOrder.setAccountsReceivableStatus(1);
|
tmsDispatchOrder.setCollectionPlanId(item.getCollectionPlanId());
|
tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
|
return tmsDispatchOrder;
|
}).collect(Collectors.toList());
|
// 1、修改调度
|
tmsDispatchOrderMapper.updateTmsDispatchOrderBatch(collect);
|
// 2、生成应收账单
|
List<TmsFinance> tmsFinances = BeanUtil.copyToList(receivableList, TmsFinance.class);
|
tmsFinances.forEach(item ->{
|
item.setSystemCode(systemDataNoService.getNoByKey(SystemDataNoEnum.YSD));
|
item.setPlanName(item.getCollectionPlanName());
|
item.setDispatchId(item.getId());
|
item.setCreateBy(SecurityUtils.getUsername());
|
item.setCreateTime(new Date());
|
item.setUpdateBy(SecurityUtils.getUsername());
|
item.setUpdateTime(new Date());
|
item.setStatus(0);
|
item.setType(0);
|
item.setTotalAmount(item.getCollectionPlanAmount());
|
});
|
tmsFinanceService.insertTmsFinanceYFBatch(tmsFinances);
|
}
|
|
List<TmsDispatchOrder> playList = tmsDispatchOrders.stream().filter(item -> item.getAccountsPayableStatus() == 0).collect(Collectors.toList());
|
if (!playList.isEmpty()){
|
List<TmsDispatchOrder> collect = playList.stream().map(item -> {
|
TmsDispatchOrder tmsDispatchOrder = new TmsDispatchOrder();
|
tmsDispatchOrder.setId(item.getId());
|
tmsDispatchOrder.setAccountsPayableStatus(1);
|
tmsDispatchOrder.setPaymentPlanId(item.getPaymentPlanId());
|
tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
|
return tmsDispatchOrder;
|
}).collect(Collectors.toList());
|
// 1、修改调度
|
tmsDispatchOrderMapper.updateTmsDispatchOrderBatch(collect);
|
// 2、生成应付账单
|
List<TmsFinance> tmsFinances = BeanUtil.copyToList(receivableList, TmsFinance.class);
|
tmsFinances.forEach(item ->{
|
item.setSystemCode(systemDataNoService.getNoByKey(SystemDataNoEnum.YFD));
|
item.setPlanName(item.getPaymentPlanName());
|
item.setDispatchId(item.getId());
|
item.setCreateBy(SecurityUtils.getUsername());
|
item.setCreateTime(new Date());
|
item.setUpdateBy(SecurityUtils.getUsername());
|
item.setUpdateTime(new Date());
|
item.setStatus(0);
|
item.setType(1);
|
item.setTotalAmount(item.getPaymentPlanAmount());
|
});
|
tmsFinanceService.insertTmsFinanceYFBatch(tmsFinances);
|
|
}
|
|
return AjaxResult.success();
|
}
|
|
|
@Override
|
public AjaxResult getServiceProvider(Integer id) {
|
|
TmsDispatchOrder tmsDispatchOrder = tmsDispatchOrderMapper.
|
selectTmsDispatchOrderById(id);
|
List<ServiceProviderVo> serviceProviderVos = new ArrayList<>();
|
if (tmsDispatchOrder != null){
|
|
if (tmsDispatchOrder.getLoadingServiceProviderId() != null){
|
serviceProviderVos.add(new ServiceProviderVo(tmsDispatchOrder.getLoadingServiceProviderId(),
|
tmsDispatchOrder.getLoadingServiceProviderName(),
|
"2"));
|
}
|
if (tmsDispatchOrder.getCustomsServiceProviderId() != null){
|
serviceProviderVos.add(new ServiceProviderVo(tmsDispatchOrder.getCustomsServiceProviderId(),
|
tmsDispatchOrder.getCustomsServiceProviderName(),
|
"1"));
|
}
|
if (tmsDispatchOrder.getVehicleProviderId() != null){
|
serviceProviderVos.add(new ServiceProviderVo(tmsDispatchOrder.getVehicleProviderId(),
|
tmsDispatchOrder.getVehicleProviderName(),
|
"0"));
|
}
|
// 查询
|
List<TmsQuoteFee> tmsQuoteFees = tmsQuoteFeeService.selectTmsQuoteFeeList(new TmsQuoteFee() {{
|
setDispatchId(id);
|
}});
|
if (tmsQuoteFees != null && !tmsQuoteFees.isEmpty()){
|
List<ServiceProviderVo> collect = tmsQuoteFees.stream()
|
.collect(Collectors.collectingAndThen(
|
Collectors.toMap(
|
item -> item.getServiceProviderId() + "_" + item.getServiceProviderType(),
|
item -> new ServiceProviderVo(
|
item.getServiceProviderId(),
|
null,
|
item.getServiceProviderType()
|
),
|
(a, b) -> a
|
),
|
m -> new ArrayList<>(m.values())
|
));
|
|
collect.forEach(item -> {
|
if ("0".equals(item.getServiceProviderType())){
|
TmsServiceProvider tmsServiceProvider = tmsServiceProviderMapper.selectTmsServiceProviderById(item.getServiceProviderId());
|
item.setServiceProviderName(tmsServiceProvider.getServiceName());
|
} else if ("1".equals(item.getServiceProviderType())){
|
TmsCustomsServiceProvider tmsCustomsServiceProvider = tmsCustomsServiceProviderMapper.selectTmsCustomsServiceProviderById(item.getServiceProviderId());
|
item.setServiceProviderName(tmsCustomsServiceProvider.getServiceName());
|
} else if ("2".equals(item.getServiceProviderType())){
|
TmsLoadingServiceProvider tmsLoadingServiceProvider = tmsLoadingServiceProviderMapper.selectTmsLoadingServiceProviderById(item.getServiceProviderId());
|
item.setServiceProviderName(tmsLoadingServiceProvider.getServiceName());
|
}
|
serviceProviderVos.add(item);
|
});
|
ArrayList<ServiceProviderVo> collect1 = serviceProviderVos.stream().collect(Collectors.collectingAndThen(
|
Collectors.toMap(
|
item -> item.getServiceProviderId() + "_" + item.getServiceProviderType(),
|
item -> new ServiceProviderVo(
|
item.getServiceProviderId(),
|
item.getServiceProviderName(),
|
item.getServiceProviderType()
|
),
|
(a, b) -> a
|
),
|
m -> new ArrayList<>(m.values())
|
));
|
return AjaxResult.success(collect1);
|
}
|
}else{
|
return AjaxResult.error("调度单不存在");
|
}
|
return AjaxResult.success();
|
}
|
|
public String getServiceProviderName(String serviceProviderType,Integer serviceProviderId){
|
if ("0".equals(serviceProviderType)){
|
TmsServiceProvider tmsServiceProvider = tmsServiceProviderMapper.selectTmsServiceProviderById(serviceProviderId);
|
return tmsServiceProvider.getServiceName();
|
} else if ("1".equals(serviceProviderType)){
|
TmsCustomsServiceProvider tmsCustomsServiceProvider = tmsCustomsServiceProviderMapper.selectTmsCustomsServiceProviderById(serviceProviderId);
|
return tmsCustomsServiceProvider.getServiceName();
|
} else if ("2".equals(serviceProviderType)){
|
TmsLoadingServiceProvider tmsLoadingServiceProvider = tmsLoadingServiceProviderMapper.selectTmsLoadingServiceProviderById(serviceProviderId);
|
return tmsLoadingServiceProvider.getServiceName();
|
}
|
return null;
|
}
|
|
|
@Override
|
public List<DpDriverDispatchVo> selectDpData() {
|
return tmsDispatchOrderMapper.selectselectDpData();
|
}
|
|
@Override
|
public DpDriverDispatchItemVo selectDataByNo(String no) {
|
return tmsDispatchOrderMapper.selectDataByNo(no);
|
}
|
|
@Override
|
public List<DpItineraryLogVo> selectItineraryLog() {
|
return tmsDispatchOrderMapper.selectItineraryLog();
|
}
|
|
@Override
|
public TmsDispatchOrder getLastLicensePlateByDriverName(String driverName) {
|
return tmsDispatchOrderMapper.selectOne(new LambdaQueryWrapper<TmsDispatchOrder>()
|
.eq(TmsDispatchOrder::getMainDriverName, driverName)
|
.orderByDesc(TmsDispatchOrder::getCreateTime)
|
.last("limit 1")
|
);
|
}
|
}
|