提交 60cf53c3 authored 作者: 李瑞鑫's avatar 李瑞鑫

Merge branch 'v17.3_youhua_20240615' into dev

# Conflicts: # performance-api/src/main/java/com/clx/performance/feign/PerformanceFeign.java # performance-web/src/main/java/com/clx/performance/controller/temp/TempTraceController.java # performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java # performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java # performance-web/src/main/java/com/clx/performance/mapper/OrderChildMapper.java # performance-web/src/main/java/com/clx/performance/service/OrderGoodsService.java
......@@ -34,9 +34,9 @@ public enum ResultEnum implements com.msl.common.enums.ResultEnum {
VEHICLE_WARN_USER_EXIST(1201, "联系方式已存在"),
VEHICLE_WARN_CONFIG_EXIST(1201, "配置名称已存在"),
VEHICLE_WARN_CONFIG_EXIST(1201, "预警方案名称已存在"),
LINE_WARN_USER_EXIST(1301, "联系方式已存在"),
LINE_WARN_CONFIG_EXIST(1302, "配置名称已存在"),
LINE_WARN_CONFIG_EXIST(1302, "预警方案名称已存在"),
......
package com.clx.performance.feign;
import com.clx.performance.param.app.collect.CollectTruckParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.feign.OrderAdjustTonnageDownParam;
import com.clx.performance.param.pc.OrderCancelFeignParam;
......@@ -144,4 +145,12 @@ public interface PerformanceFeign {
*/
@GetMapping(value = {"clx-performance/feign/platformServiceFee/getPlatformServiceFeeConfig"})
Result<PlatformServiceFeeConfigFeignVO> getPlatformServiceFeeConfig();
/**
* 取消货单
* @param param
* @return
*/
@PostMapping(value = {"clx-performance/feign/orderGoods/cancelOrderGoods"})
Result<Object> cancelOrderGoods(@RequestBody @Validated CancelOrderGoodsParam param);
}
package com.clx.performance.param.feign;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Getter
@Setter
public class CancelOrderGoodsParam {
@NotBlank(message = "订单编号不能为空")
@ApiModelProperty("订单编号")
private String orderNo;
@NotNull(message = "操作人编号不能为空")
@ApiModelProperty("操作人编号")
private Long createBy;
@NotNull(message = "操作人名称不能为空")
@Size(max=32,message = "操作人名称最多输入32个字符")
@ApiModelProperty("操作人名称")
private String createName;
}
package com.clx.performance.controller.feign;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.OrderChildReportParam;
import com.clx.performance.service.OrderGoodsService;
......@@ -56,6 +57,13 @@ public class OrderGoodsFeignController {
return Result.ok();
}
@ApiOperation(value = "取消货单", notes = "<br>By:李瑞新")
@PostMapping({"/cancelOrderGoods"})
Result<Object> cancelOrderGoods(@RequestBody @Validated CancelOrderGoodsParam param) {
orderGoodsService.cancelOrderGoods(param);
return Result.ok();
}
@ApiOperation(value = "更新挂单运费", notes = "<br>By:艾庆国")
@PostMapping(value = {"/updatePendingOrderFright"})
......
package com.clx.performance.controller.temp;
import com.clx.performance.esplus.model.TruckLatestPosESPlus;
import com.clx.performance.dto.gd.GdRouteDTO;
import com.clx.performance.param.mq.trace.TruckTraceSyncMqParam;
import com.clx.performance.param.temp.DriverTraceAddParam;
......@@ -21,11 +22,9 @@ import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.List;
......@@ -134,4 +133,12 @@ public class TempTraceController {
@ApiOperation(value = "获取车辆最新位置信息", notes = "<br>By:刘海泉")
@GetMapping("/getTruckLatestPos")
public Result<TruckLatestPosESPlus> getTruckLatestPos(@RequestParam("truckNo") @NotBlank(message = "车牌号不能为空") String truckNo) {
return Result.ok( truckTraceService.getTruckLatestPos(truckNo));
}
}
......@@ -177,10 +177,10 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
Integer sendSystemAddressId, Integer receiveSystemAddressId,
String beginTime);
MonthInComeAndOrderedVO statisticsTruckMonth(LocalDateTime startTime, LocalDateTime endTime, String truckNo);
List<OrderChild> listByChildNoList(List<String> childNoList);
MonthInComeAndOrderedVO statisticsTruckMonth(LocalDateTime startTime, LocalDateTime endTime, String truckNo);
List<OrderChild> listByChildNoList(List<String> childNoList);
List<OrderChild> listByOrderGoodsNoAndStatus(String orderGoodsNo, List<Integer> statusList);
......
......@@ -101,4 +101,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
void batchUpdateResidueWeight(List<Integer> list, BigDecimal residueWeight);
List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList();
void cancelOrderGoods(String orderNo);
}
......@@ -582,6 +582,7 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return list(lQrWrapper().in(OrderChild :: getChildNo,childNoList));
}
@Override
public List<OrderChild> listByOrderGoodsNoAndStatus(String orderGoodsNo, List<Integer> statusList) {
return list(lQrWrapper()
......
......@@ -284,4 +284,12 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
public List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList() {
return baseMapper.queryProcessFleetOpenTruckList();
}
@Override
public void cancelOrderGoods(String orderNo) {
update(lUdWrapper()
.eq(OrderGoods::getOrderNo, orderNo)
.set(OrderGoods::getOrderGoodsStatus, OrderGoodsStatusEnum.Status.CANCEL.getCode())
);
}
}
package com.clx.performance.esplus.mapper;
import com.clx.performance.esplus.model.TruckLatestPosESPlus;
import org.dromara.easyes.core.kernel.BaseEsMapper;
public interface TruckLastPosESPlusMapper extends BaseEsMapper<TruckLatestPosESPlus> {
}
\ No newline at end of file
package com.clx.performance.esplus.model;
import lombok.Data;
import org.dromara.easyes.annotation.IndexField;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.IndexName;
import org.dromara.easyes.annotation.rely.FieldType;
import org.dromara.easyes.annotation.rely.IdType;
import java.math.BigDecimal;
@Data
@IndexName(value = "clx_truck_latest_pos")
public class TruckLatestPosESPlus {
@IndexId(type= IdType.UUID)
private String id;
@IndexField(fieldType = FieldType.KEYWORD)
private String truckNo; //车辆编号
private BigDecimal angle; //agl
private BigDecimal speed; //速度
private BigDecimal mileage; //里程
private BigDecimal height; //海拔
private BigDecimal[] location; //位置
@IndexField(fieldType = FieldType.DATE)
private String gpsTime; //时间
private String createTime;
}
\ No newline at end of file
......@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyLineWarnConstants;
import com.clx.performance.param.mq.linewarn.LineWarnLineWarnMqParam;
import com.clx.performance.service.linewarn.LineWarnMqHandlerService;
import com.msl.common.exception.ServiceSystemException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
......@@ -31,7 +32,12 @@ public class LineWarnLineWarnListener {
log.info("线路预警-货单预警, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnLineWarnMqParam>>(){}).getData());
}catch (Exception e){
log.info("线路预警-货单预警 失败",e);
if (e instanceof ServiceSystemException){
log.info("线路预警-货单预警 失败, msg:{}", e.getMessage());
}
else {
log.info("线路预警-货单预警 失败", e);
}
}
}
......
......@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyLineWarnConstants;
import com.clx.performance.param.mq.linewarn.LineWarnOrderChildWarnMqParam;
import com.clx.performance.service.linewarn.LineWarnMqHandlerService;
import com.msl.common.exception.ServiceSystemException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
......@@ -31,7 +32,12 @@ public class LineWarnOrderChildWarnListener {
log.info("线路预警-运单异常预警, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnOrderChildWarnMqParam>>(){}).getData());
}catch (Exception e){
log.info("线路预警-运单异常预警 失败",e);
if (e instanceof ServiceSystemException){
log.info("线路预警-运单异常预警 失败, msg:{}", e.getMessage());
}
else {
log.info("线路预警-运单异常预警 失败", e);
}
}
}
......
......@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyLineWarnConstants;
import com.clx.performance.param.mq.linewarn.LineWarnOrderGoodsAddMqParam;
import com.clx.performance.service.linewarn.LineWarnMqHandlerService;
import com.msl.common.exception.ServiceSystemException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
......@@ -31,7 +32,12 @@ public class LineWarnOrderGoodsAddListener {
log.info("线路预警-货单新增, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnOrderGoodsAddMqParam>>(){}).getData());
}catch (Exception e){
log.info("线路预警-货单新增 失败",e);
if (e instanceof ServiceSystemException){
log.info("线路预警-货单新增 失败, msg:{}", e.getMessage());
}
else {
log.info("线路预警-货单新增 失败", e);
}
}
}
......
......@@ -122,6 +122,7 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
@SelectProvider(type = OrderChildSqlProvider.class, method = "statisticsTruckMonth")
MonthInComeAndOrderedVO statisticsTruckMonth(@Param("startTime")LocalDateTime startTime, @Param("endTime")LocalDateTime endTime, @Param("truckNo")String truckNo);
@Select("select sum(if (status>=50, load_net, #{defaultWeight})) from order_child " +
" where order_goods_no=#{orderGoodsNo} and status in(10,20,30,40,50,60,70,80,90,100)")
BigDecimal sumTakeWeightByOrderGoodsNo(String orderGoodsNo, BigDecimal defaultWeight);
......
package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderGoodsLog;
import com.clx.performance.param.pc.OrderGoodsLogParam;
import com.clx.performance.vo.pc.OrderGoodsLogVO;
import java.util.List;
/**
* @author kavin
* Date 2023-10-26
......@@ -13,4 +16,6 @@ public interface OrderGoodsLogService {
void saveLog(String orderGoodsNo,Long userNo,String userName,String type,String remark);
IPage<OrderGoodsLogVO> pageOrderGoodsLog(OrderGoodsLogParam param);
void saveBatchLog(List<OrderGoodsLog> logs);
}
......@@ -5,6 +5,7 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.*;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
......@@ -104,4 +105,6 @@ public interface OrderGoodsService {
void saveBindTruck(DistributionTruckParam param);
void updateFrightPrice(String orderGoodsNo,BigDecimal pendingOrderFreight);
void cancelOrderGoods(CancelOrderGoodsParam param);
}
......@@ -47,4 +47,9 @@ public class OrderGoodsLogServiceImpl implements OrderGoodsLogService {
result.setRecords(orderGoodsLogVOS);
return result;
}
@Override
public void saveBatchLog(List<OrderGoodsLog> logs) {
orderGoodsLogDao.saveBatchList(logs);
}
}
......@@ -27,6 +27,7 @@ import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.model.*;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.*;
import com.clx.performance.service.IntegralMqService;
......@@ -1002,4 +1003,28 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
}
@Override
@Transactional(rollbackFor = Exception.class)
public void cancelOrderGoods(CancelOrderGoodsParam param) {
//取消货单
orderGoodsDao.cancelOrderGoods(param.getOrderNo());
//批量保存货单日志
List<OrderGoods> orderGoodsListByOrderNo = orderGoodsDao.getOrderGoodsListByOrderNo(param.getOrderNo());
List<OrderGoodsLog> orderGoodsLogs = new ArrayList<>();
OrderGoodsLog orderGoodsLog = null;
for(OrderGoods orderGoods:orderGoodsListByOrderNo){
orderGoodsLog = new OrderGoodsLog();
orderGoodsLog.setOrderGoodsNo(orderGoods.getOrderGoodsNo());
orderGoodsLog.setCreateName(param.getCreateName());
orderGoodsLog.setType(OrderGoodsLogsEnum.Type.CANCEL.getName());
orderGoodsLog.setCreateBy(param.getCreateBy());
orderGoodsLog.setRemark("货主发起减吨请求,当前已挂单量超过总拉运量,自动取消");
orderGoodsLogs.add(orderGoodsLog);
}
orderGoodsLogService.saveBatchLog(orderGoodsLogs);
}
}
......@@ -84,8 +84,6 @@ public class LineWarnWeatherWarnServiceImpl implements LineWarnWeatherWarnServic
String weather = gdUtils.getWeather(cityCode);
if (weatherCheck(weather)){
weatherAll = weather;
// 更新
lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig, weather);
}
}
if (feignAddressVO.getReceiveAddress()!=null){
......
......@@ -6,13 +6,17 @@ import com.clx.performance.esplus.model.TruckTraceESPlus;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.vehiclewarn.VehicleWarnChildDao;
import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.esplus.mapper.TruckLastPosESPlusMapper;
import com.clx.performance.esplus.mapper.TruckTraceESPlusMapper;
import com.clx.performance.esplus.model.TruckLatestPosESPlus;
import com.clx.performance.esplus.model.TruckTraceESPlus;
import com.clx.performance.param.mq.trace.TruckTraceSyncMqParam;
import com.clx.performance.service.trace.TruckTraceMqHandlerService;
import com.clx.performance.struct.trace.TruckTraceStruct;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.zjxl.ZjxlGpsService;
import lombok.extern.slf4j.Slf4j;
import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -20,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Slf4j
@Service
......@@ -35,6 +40,12 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic
@Autowired
private TruckTraceESPlusMapper truckTraceESPlusMapper;
@Autowired
TruckLastPosESPlusMapper truckLastPosESPlusMapper;
@Autowired
TruckTraceStruct truckTraceStruct;
@Transactional(rollbackFor = Exception.class)
@Override
......@@ -60,6 +71,20 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic
// 保存
truckTraceESPlusMapper.insertBatch(esList);
//保存车辆最新的位置信息
TruckTraceESPlus trace = esList.get(esList.size() - 1);
TruckLatestPosESPlus truckLatestPos = truckLastPosESPlusMapper.selectOne(
new LambdaEsQueryWrapper<TruckLatestPosESPlus>().eq(TruckLatestPosESPlus::getTruckNo, trace.getTruckNo()));
log.info("通过车牌号:{},查询车辆最新位置信息:{}",trace.getTruckNo(),truckLatestPos);
TruckLatestPosESPlus item = truckTraceStruct.convert2LatestPos(trace);
if(Objects.nonNull(truckLatestPos)){
truckLastPosESPlusMapper.update(item,new LambdaEsQueryWrapper<TruckLatestPosESPlus>().
eq(TruckLatestPosESPlus::getTruckNo, trace.getTruckNo()));
}else{
truckLastPosESPlusMapper.insert(item);
}
}
}
package com.clx.performance.service.impl.trace;
import com.clx.performance.esplus.mapper.DriverTraceESPlusMapper;
import com.clx.performance.esplus.mapper.TruckLastPosESPlusMapper;
import com.clx.performance.esplus.mapper.TruckTraceESPlusMapper;
import com.clx.performance.esplus.model.DriverTraceESPlus;
import com.clx.performance.esplus.model.TruckLatestPosESPlus;
import com.clx.performance.esplus.model.TruckTraceESPlus;
import com.clx.performance.param.temp.DriverTraceAddParam;
import com.clx.performance.param.temp.TruckTraceAddParam;
......@@ -40,6 +42,9 @@ public class TruckTraceServiceImpl implements TruckTraceService {
@Autowired
private DriverTraceESPlusMapper driverTraceESPlusMapper;
@Autowired
TruckLastPosESPlusMapper truckLastPosESPlusMapper;
@Autowired
private TruckTraceStruct truckTraceStruct;
@Autowired
......@@ -414,6 +419,11 @@ public class TruckTraceServiceImpl implements TruckTraceService {
truckTraceESPlusMapper.insertBatch(esList);
}
@Override
public TruckLatestPosESPlus getTruckLatestPos(String truckNo) {
TruckLatestPosESPlus truckLatestPos = truckLastPosESPlusMapper.selectOne(
new LambdaEsQueryWrapper<TruckLatestPosESPlus>().eq(TruckLatestPosESPlus::getTruckNo, truckNo));
log.info("通过车牌号:{},查询车辆最新位置信息:{}",truckNo,truckLatestPos);
return truckLatestPos;
}
}
package com.clx.performance.service.trace;
import com.clx.performance.esplus.model.TruckLatestPosESPlus;
import com.clx.performance.param.temp.DriverTraceAddParam;
import com.clx.performance.param.temp.TruckTraceAddParam;
import com.clx.performance.vo.pc.trace.DriverTraceVO;
......@@ -41,4 +42,8 @@ public interface TruckTraceService {
void saveTruckTrace(String truckNo,Integer size,String gpsTime);
TruckLatestPosESPlus getTruckLatestPos(String truckNo);
}
......@@ -43,7 +43,7 @@ public class LineWarnInfoSqlProvider {
if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("warn_time >= #{param.beginTime}");}
if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("warn_time <= #{param.endTime}");}
ORDER_BY("id desc");
ORDER_BY("warn_time desc, id desc");
}}.toString();
}
......
......@@ -41,10 +41,10 @@ public class VehicleWarnInfoSqlProvider {
if (StringUtils.isNotBlank(param.getSendAddress())) {WHERE("send_address like CONCAT('%',#{param.sendAddress},'%')");}
if (StringUtils.isNotBlank(param.getReceiveAddress())) {WHERE("receive_address like CONCAT('%',#{param.receiveAddress},'%')");}
if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("create_time >= #{param.beginTime}");}
if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("create_time <= #{param.endTime}");}
if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("warn_time >= #{param.beginTime}");}
if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("warn_time <= #{param.endTime}");}
ORDER_BY("id desc");
ORDER_BY("warn_time desc, id desc");
}}.toString();
}
......
......@@ -2,6 +2,7 @@ package com.clx.performance.struct.trace;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.esplus.model.TruckLatestPosESPlus;
import com.clx.performance.esplus.model.TruckTraceESPlus;
import com.clx.performance.vo.pc.trace.DriverTruckTraceVO;
import com.msl.common.utils.DateStructUtil;
......@@ -20,4 +21,7 @@ public interface TruckTraceStruct {
List<DriverTruckTraceVO> convert(List<TruckTraceESPlus> list);
Page<DriverTruckTraceVO> convertPage(IPage<TruckTraceESPlus> page);
TruckLatestPosESPlus convert2LatestPos(TruckTraceESPlus item);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论