提交 b5b2d61e authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/v6.4_transportation_20231110' into test

......@@ -31,7 +31,7 @@ public enum IntegralRecordEnum {
ORDER_CHILD_PLATFORM_COMPENSATION(25, "平台补偿"),
REPORT_TRUCK_INFO(50, "提交基础信息"),
// REPORT_TRUCK_INFO(50, "提交基础信息"),
REPORT_REFUEL(51, "油表上报"),
REPORT_TRAFFIC(52, "上报交通拥堵"),
REPORT_SEND_ADDRESS_WAIT(53, "上报货源地需要排队"),
......@@ -41,6 +41,12 @@ public enum IntegralRecordEnum {
REPORT_QUALITY(57, "上报煤炭质量问题"),
REPORT_ABNORMAL(58, "上报拉运异常问题"),
REPORT_SEND_ADDRESS_INFO(59, "上报货源地情况"),
REPORT_TRUCK_INFO_OF_UNLOAD_TYPE(61, "提交基础信息"),
REPORT_TRUCK_INFO_OF_AUTO_LOAN(62, "提交基础信息"),
REPORT_TRUCK_INFO_OF_PARK_ADDRESS(63, "提交基础信息"),
;
private Integer value;
......@@ -49,7 +55,6 @@ public enum IntegralRecordEnum {
// 取消
public static final List<Integer> DRIVER_REPORT_lIST = Arrays.asList(
Type.REPORT_TRUCK_INFO.value,
Type.REPORT_REFUEL.value,
Type.REPORT_TRAFFIC.value,
Type.REPORT_SEND_ADDRESS_WAIT.value,
......@@ -60,18 +65,6 @@ public enum IntegralRecordEnum {
Type.REPORT_ABNORMAL.value
);
// 取消
public static final List<Integer> PLATFORM_CANCEL_lIST = Arrays.asList(
Type.REPORT_TRUCK_INFO.value,
Type.REPORT_REFUEL.value,
Type.REPORT_TRAFFIC.value,
Type.REPORT_SEND_ADDRESS_WAIT.value,
Type.REPORT_SEND_ADDRESS_NO_WAIT.value,
Type.REPORT_RECEIVE_ADDRESS_WAIT.value,
Type.REPORT_RECEIVE_ADDRESS_NO_WAIT.value,
Type.REPORT_QUALITY.value,
Type.REPORT_ABNORMAL.value
);
}
......@@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@FeignClient(name = "clx-performance")
......@@ -20,4 +21,11 @@ public interface OrderChildFeign {
Result<OrderChildLineStatisticsVO> lineStatistics(@RequestParam @NotNull(message = "发货地址不可为空") Integer sendSystemAddressId,
@RequestParam @NotNull(message = "收货货地不可为空") Integer receiveSystemAddressId);
@RequestMapping(value = "clx-performance/feign/orderChild/syncLastTruck", method = RequestMethod.GET)
Result<?> syncLastTruck(@RequestParam("orderNo") @NotBlank(message = "订单编号不能为空") String orderNo);
}
......@@ -2,6 +2,7 @@ package com.clx.performance.controller.feign;
import cn.hutool.core.collection.CollectionUtil;
import com.clx.performance.model.OrderChild;
import com.clx.performance.service.LastTruckService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.child.FeignOrderChildService;
import com.clx.performance.vo.pc.child.OrderChildLineStatisticsVO;
......@@ -12,6 +13,7 @@ import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
......@@ -26,6 +28,8 @@ public class OrderChildFeignController {
private final FeignOrderChildService feignOrderChildService;
private final LastTruckService lastTruckService;
@GetMapping({"/getOrderChildTotalByUserNo"})
Integer getTrucksByOrderGoodsNo(@RequestParam("userNo") @NotNull(message = "用户编号不可为空") Long userNo) {
......@@ -58,4 +62,13 @@ public class OrderChildFeignController {
}
@ApiOperation(value = "运单取消/到达最晚拉运时间 同步最后一车", notes = "<br>By:刘海泉")
@RequestMapping(value = "/syncLastTruck", method = RequestMethod.GET)
Result<?> syncLastTruck(@RequestParam("orderNo") @NotBlank(message = "订单编号不能为空") String orderNo){
return lastTruckService.syncLastTruckChild4OrderTrigger(orderNo);
}
}
......@@ -23,6 +23,9 @@ public interface IntegralRecordDao extends BaseDao<IntegraRecordMapper, Integral
Integer sumIntegral(@Param("statisticsId") Integer statisticsId);
IntegralRecord selectByStatisticsIdAndType(@Param("statisticsId") Integer statisticsId, @Param("type") Integer type);
int existByTruckNoAndType(@Param("truckNo") String truckNo, @Param("type") Integer type);
Integer sumByStatisticsIdAndTypes(@Param("statisticsId") Integer statisticsId, @Param("list") List<Integer> typeList);
Integer sumByStatisticsIdAndTypeAndTime(@Param("statisticsId") Integer statisticsId,
......
......@@ -152,4 +152,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<Double> getLossNet(OrderChildReportParam param);
BigDecimal getLastDriverFreightByTransportLine(Integer sendSystemAddressId, Integer receiveSystemAddressId);
OrderChild findLastTruckChildByCreateTime(String orderNo);
}
......@@ -45,6 +45,11 @@ public class IntegralRecordDaoImpl extends BaseDaoImpl<IntegraRecordMapper, Inte
);
}
@Override
public int existByTruckNoAndType(String truckNo, Integer type) {
return baseMapper.existByTruckNoAndType(truckNo, type);
}
@Override
public Integer sumByStatisticsIdAndTypes(Integer statisticsId, List<Integer> typeList) {
return baseMapper.sumByStatisticsIdAndTypes(statisticsId, typeList);
......
......@@ -466,4 +466,13 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
}
return BigDecimal.ZERO;
}
@Override
public OrderChild findLastTruckChildByCreateTime(String orderNo) {
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper<>();
query.eq(OrderChild :: getOrderNo,orderNo);
query.orderByDesc(OrderChild ::getCreateTime);
query.last("limit 1");
return baseMapper.selectOne(query);
}
}
......@@ -133,7 +133,8 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
if(StringUtils.isNotBlank(truckNo)){
query.eq(OrderGoodsTruckBind::getTruckNo, truckNo);
}
query.in(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode(),OrderGoodsTruckBindEnum.Status.GET.getCode());
query.in(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode(),
OrderGoodsTruckBindEnum.Status.GET.getCode(), OrderGoodsTruckBindEnum.Status.SUCCESS.getCode());
query.orderByDesc(OrderGoodsTruckBind :: getCreateTime);
return baseMapper.selectList(query);
}
......
......@@ -54,7 +54,6 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
public boolean updateFinalPaymentStatusBySettlementNo(String settlementNo, Integer finalPaymentStatus){
return update(lUdWrapper()
.eq(SettlementOwnerDetail::getSettlementNo, settlementNo)
.ne(SettlementOwnerDetail::getSettlementFreight, 0)
.set(SettlementOwnerDetail::getFinalPaymentStatus, finalPaymentStatus)
);
}
......
......@@ -99,13 +99,7 @@ public class OrderChildDtsListener {
if(after.getStatus() >= OrderChildEnum.Status.ARRIVE_RECEIVE.getCode() && after.getStatus() <= OrderChildEnum.Status.COMPLETE.getCode()){
OrderChild child = lastTruckService.getLastTruckChild(after.getOrderNo());
if(Objects.nonNull(child)){
OrderChildMessage message = orderChildStruct.convertMessage(child);
message.setLastFlag(ResultStatusEnum.YES.getCode());
log.info("开始同步最后一车的运单,运单编号:{},运单信息:{}",child.getChildNo(),JSON.toJSONString(message));
OpenCallBackClient client2 = new OpenCallBackClient(mslAppConfig.getUrl(),mslAppConfig.getAppId(),mslAppConfig.getSecret());
Result<?> result2 = client2.encryptPost(JSON.toJSONString(message),message.topic());
log.info("结束同步最后一车的运单,运单编号:{},响应结果:{}",child.getChildNo(),JSON.toJSONString(result2));
lastTruckService.syncLastTruckChild(child);
}
}
}
......
......@@ -48,4 +48,7 @@ public interface IntegraRecordMapper extends BaseMapper<IntegralRecord> {
@Param("beginTime")String beginTime,
@Param("endTime")String endTime);
@Select("SELECT IFNULL((SELECT 1 FROM integral_record WHERE truck_no=#{truckNo} and type=#{type} LIMIT 1),0)")
int existByTruckNoAndType(@Param("truckNo") String truckNo, @Param("type") Integer type);
}
\ No newline at end of file
......@@ -12,6 +12,8 @@ public interface IntegralRecordService {
void addDriverReportRecord(AppIntegralRuleVO ruleInfo, String truckNo, Integer type, Integer integral, String remark);
void addDriverTruckReportRecord(AppIntegralRuleVO ruleInfo, String truckNo, Integer type, Integer integral, String remark);
void addPlatformCompensationRecord(String truckNo);
IntegralRecord save(Integer statisticsId, LocalDateTime statisticsDate, String truckNo, Integer type, Integer integral, String remark);
......
package com.clx.performance.service;
import com.clx.performance.model.OrderChild;
import com.msl.common.result.Result;
public interface LastTruckService {
OrderChild getLastTruckChild(String orderNo);
Result<?> syncLastTruckChild(OrderChild child);
Result<?> syncLastTruckChild4OrderTrigger(String orderNo);
}
......@@ -104,6 +104,38 @@ public class IntegralRecordServiceImpl implements IntegralRecordService {
}
@Override
public void addDriverTruckReportRecord(AppIntegralRuleVO ruleInfo, String truckNo, Integer type, Integer integral, String remark) {
String statisticsDate = LocalDateTimeUtils.getWeekStart();
IntegralTruck truck = integralTruckDao.getByTruckNo(truckNo).orNull();
if (truck == null) {return;}
// 查找最新统计
IntegralStatistics statistics = integralStatisticsDao.selectByTruckNoAndStatisticsDate(truckNo, statisticsDate).orNull();
if (statistics == null) {return;}
int exist = integralRecordDao.existByTruckNoAndType(truckNo, type);
if (exist > 0){
log.info("上报积分重复,本次无效, truckNo:{}, type:{}, integral:{}, remark:{}", truckNo, type, integral, remark);
return;
}
// 更新积分
statistics.setIntegral(statistics.getIntegral()+integral);
integralStatisticsDao.updateIntegral(statistics);
truck.setIntegral(statistics.getIntegral());
integralTruckDao.updateIntegral(truck);
// 新增积分记录
IntegralRecord record = save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), type, integral, remark);
// 发送mq (新增积分记录)
integralMqService.integralRecordAdd(record.getStatisticsId(), record.getTruckNo(), record.getType(), record.getIntegral(), record.getRemark());
}
@Override
public void addPlatformCompensationRecord(String truckNo) {
......
......@@ -217,7 +217,7 @@ public class IntegralTruckServiceImpl implements IntegralTruckService {
IntegralRecordEnum.Type.ORDER_CHILD_ARRIVE_SEND_ADDRESS_TIMEOUT_CANCEL.getValue()
);
List<Integer> reportTypeList = Arrays.asList(
IntegralRecordEnum.Type.REPORT_TRUCK_INFO.getValue(),
IntegralRecordEnum.Type.REPORT_REFUEL.getValue(),
IntegralRecordEnum.Type.REPORT_TRAFFIC.getValue(),
IntegralRecordEnum.Type.REPORT_SEND_ADDRESS_WAIT.getValue(),
......@@ -226,7 +226,11 @@ public class IntegralTruckServiceImpl implements IntegralTruckService {
IntegralRecordEnum.Type.REPORT_RECEIVE_ADDRESS_NO_WAIT.getValue(),
IntegralRecordEnum.Type.REPORT_QUALITY.getValue(),
IntegralRecordEnum.Type.REPORT_ABNORMAL.getValue(),
IntegralRecordEnum.Type.REPORT_SEND_ADDRESS_INFO.getValue()
IntegralRecordEnum.Type.REPORT_SEND_ADDRESS_INFO.getValue(),
IntegralRecordEnum.Type.REPORT_TRUCK_INFO_OF_UNLOAD_TYPE.getValue(),
IntegralRecordEnum.Type.REPORT_TRUCK_INFO_OF_AUTO_LOAN.getValue(),
IntegralRecordEnum.Type.REPORT_TRUCK_INFO_OF_PARK_ADDRESS.getValue()
);
for (Map.Entry<String, List<IntegralRecord>> entry : map.entrySet()) {
Integer orderChildCompleteIntegral = 0;
......
package com.clx.performance.service.impl;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.OrderChildMessage;
import com.clx.open.sdk.enums.ResultStatusEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.config.MslAppConfig;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.model.OrderChild;
import com.clx.performance.service.LastTruckService;
import com.clx.performance.struct.OrderChildStruct;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
......@@ -26,6 +33,8 @@ public class LastTruckServiceImpl implements LastTruckService {
private final OrderFeign orderFeign;
private final OrderChildDao orderChildDao;
private final OrderChildStruct orderChildStruct;
private final MslAppConfig mslAppConfig;
/**
* @Author kavin
* @Description 判断最后一车的逻辑
......@@ -51,4 +60,36 @@ public class LastTruckServiceImpl implements LastTruckService {
}
return null;
}
/**
* @Author kavin
* @Description 同步最后一车
* @Param [child]
* @return
**/
@Override
public Result<?> syncLastTruckChild(OrderChild child) {
OrderChildMessage message = orderChildStruct.convertMessage(child);
message.setLastFlag(ResultStatusEnum.YES.getCode());
log.info("开始同步最后一车的运单,运单编号:{},运单信息:{}",child.getChildNo(), JSON.toJSONString(message));
OpenCallBackClient client2 = new OpenCallBackClient(mslAppConfig.getUrl(),mslAppConfig.getAppId(),mslAppConfig.getSecret());
Result<?> result2 = client2.encryptPost(JSON.toJSONString(message),message.topic());
log.info("结束同步最后一车的运单,运单编号:{},响应结果:{}",child.getChildNo(),JSON.toJSONString(result2));
return result2;
}
/**
* @Author kavin
* @Description 订单取消、到达最晚拉运时间 同步最后一车
* @Param [orderNo]
* @return
**/
public Result<?> syncLastTruckChild4OrderTrigger(String orderNo) {
OrderChild child = orderChildDao.findLastTruckChildByCreateTime(orderNo);
log.info("订单取消/到达最晚拉运时间获取最后一车运单,订单号:{} ,获取到的最后一车的运单信息:{}",orderNo,JSON.toJSONString(child));
if(Objects.nonNull(child)){
return syncLastTruckChild(child);
}
return Result.ok("承运系统提示:承运系统未查询到该订单下的运单信息");
}
}
......@@ -1487,7 +1487,7 @@ public class OrderChildServiceImpl implements OrderChildService {
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) <= 0){
//orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoods.getOrderGoodsNo(), OrderGoodsStatusEnum.Status.SUCCESS.getCode());
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoods.getOrderGoodsNo(), OrderGoodsTruckBindEnum.Status.EXPIRE.getCode());
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoods.getOrderGoodsNo(), OrderGoodsTruckBindEnum.Status.SUCCESS.getCode());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo(),orderChild.getTruckNo());
......
......@@ -339,15 +339,13 @@ public class TruckServiceImpl implements TruckService {
Map<String,Integer> truckStatusMap = this.getTruckStatusMap();
List<OrderGoodsTruckListVO> result = new ArrayList<>();
truckList.stream().forEach(item->{
Integer orderedStatus = Objects.equals(OrderGoodsTruckBindEnum.Status.GET.getCode(),item.getStatus())?1:0;
truckList.forEach(item->{
Integer orderedStatus = Objects.equals(OrderGoodsTruckBindEnum.Status.GET.getCode(),item.getStatus())
|| Objects.equals(OrderGoodsTruckBindEnum.Status.SUCCESS.getCode(),item.getStatus())?1:0;
OrderGoodsTruckListVO vo = OrderGoodsTruckListVO.builder().truckNo(item.getTruckNo()).truckLevel("A").
truckUseStatus(truckStatusMap.get(item.getTruckNo())).orderedStatus(orderedStatus).build();
result.add(vo);
});
String orderNo = truckList.get(0).getOrderNo();
GeoResults<RedisGeoCommands.GeoLocation<String>> sortResult = this.vicinityTruckList(orderNo,Integer.MAX_VALUE,Integer.MAX_VALUE);
if(Objects.isNull(sortResult)){
......
......@@ -35,9 +35,7 @@ public class FeignOrderChildServiceImpl implements FeignOrderChildService {
vo.setTimeAvg(timeAvg==null? null : timeAvg/60);
BigDecimal driverFreight = orderChildDao.getLastDriverFreightByTransportLine(sendSystemAddressId, receiveSystemAddressId);
vo.setDriverFreight(driverFreight);
return vo;
}
......
......@@ -66,8 +66,8 @@ public class CollectTruckServiceImpl implements CollectTruckService {
AppIntegralRuleVO ruleInfo = integralRuleService.getRuleInfo();
// 报存积分
integralRecordService.addDriverReportRecord(ruleInfo, truck.getTruckNo(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO.getValue(),
ruleInfo.getDriverReportRule().getIntegralTruck(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO.getMsg());
integralRecordService.addDriverTruckReportRecord(ruleInfo, truck.getTruckNo(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO_OF_UNLOAD_TYPE.getValue(),
ruleInfo.getDriverReportRule().getIntegralTruck(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO_OF_UNLOAD_TYPE.getMsg());
}
@Transactional(rollbackFor = Exception.class)
......@@ -100,8 +100,8 @@ public class CollectTruckServiceImpl implements CollectTruckService {
AppIntegralRuleVO ruleInfo = integralRuleService.getRuleInfo();
// 报存积分
integralRecordService.addDriverReportRecord(ruleInfo, truck.getTruckNo(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO.getValue(),
ruleInfo.getDriverReportRule().getIntegralTruck(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO.getMsg());
integralRecordService.addDriverTruckReportRecord(ruleInfo, truck.getTruckNo(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO_OF_AUTO_LOAN.getValue(),
ruleInfo.getDriverReportRule().getIntegralTruck(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO_OF_AUTO_LOAN.getMsg());
}
......@@ -134,8 +134,8 @@ public class CollectTruckServiceImpl implements CollectTruckService {
AppIntegralRuleVO ruleInfo = integralRuleService.getRuleInfo();
// 报存积分
integralRecordService.addDriverReportRecord(ruleInfo, truck.getTruckNo(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO.getValue(),
ruleInfo.getDriverReportRule().getIntegralTruck(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO.getMsg());
integralRecordService.addDriverTruckReportRecord(ruleInfo, truck.getTruckNo(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO_OF_PARK_ADDRESS.getValue(),
ruleInfo.getDriverReportRule().getIntegralTruck(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO_OF_PARK_ADDRESS.getMsg());
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论