提交 463aca36 authored 作者: liruixin's avatar liruixin

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

Merge remote-tracking branch 'origin/v6.4_transportation_20231110' into v6.4_transportation_20231110
......@@ -17,6 +17,7 @@ import lombok.ToString;
@NoArgsConstructor
public class OrderChildLoadMqParam {
private String childNo; //运单编号
private String childNo; //运单编号
private Integer repeatStatus; //重复状态:0首次 1重复
}
......@@ -17,6 +17,7 @@ import lombok.ToString;
@NoArgsConstructor
public class OrderChildUnloadMqParam {
private String childNo; //运单编号
private String childNo; //运单编号
private Integer repeatStatus; //重复状态:0首次 1重复
}
......@@ -120,8 +120,8 @@ public class AppIntegralRuleVO {
private Integer integralTruck;
@ApiModelProperty(value = "油表上报积分x")
private Integer integralRefuel;
@ApiModelProperty(value = "上报交通拥堵积分x")
private Integer integralTraffic;
// @ApiModelProperty(value = "上报交通拥堵积分x")
// private Integer integralTraffic;
@ApiModelProperty(value = "上报货源地需要排队积分x")
private Integer integralSendAddressWait;
@ApiModelProperty(value = "上报货源地无需排队积分x")
......
......@@ -217,7 +217,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
orderChild.setCancelTime(DateUtils.parseDateTime(now).get());
orderChild.setFinishTime(DateUtils.parseDateTime(now).get());
breakContractDriverRecordService.saveDriverRecordOfOrderChildCancel(orderChild, 0L, "系统");
//保存运单日志数据
orderChildLogService.saveDriverOrderChildLog(orderChild.getChildNo(), OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode(),
OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg(), 0L, "系统");
......
package com.clx.performance.controller.payment;
import com.clx.performance.param.pay.NotifyString;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -19,6 +20,8 @@ import java.util.Objects;
@AllArgsConstructor
public class PayNotifyController {
private final SettlementMqHandlerService settlementMqHandlerService;
@ApiOperation(value = "用户支付完成回调接口", notes = " <br>By:胡宁宁")
@RequestMapping(value = "/userPayNotify", method = RequestMethod.POST)
public Result<Object> userPayNotify(@RequestBody NotifyString notify) {
......@@ -29,9 +32,11 @@ public class PayNotifyController {
if (notify.getCode() != 0) {
// 支付失败处理
log.info("支付失败处理 唯一id {}", notify.getOrderNo());
settlementMqHandlerService.settlementDriverNotify(notify.getOrderNo(),0,notify.getMsg());
} else {
// 支付支付成功处理
log.info(" 支付支付成功处理 唯一id {}", notify.getOrderNo());
settlementMqHandlerService.settlementDriverNotify(notify.getOrderNo(),1,notify.getMsg());
}
Result<Object> ret = new Result<>();
return ret;
......
......@@ -41,6 +41,7 @@ public class IntegralRecordDaoImpl extends BaseDaoImpl<IntegraRecordMapper, Inte
.eq(IntegralRecord::getStatisticsId, statisticsId)
.eq(IntegralRecord::getType, type)
.orderByDesc(IntegralRecord::getCreateTime)
.last("limit 1")
);
}
......
......@@ -7,6 +7,7 @@ import com.clx.performance.dao.settle.SettlementDriverDao;
import com.clx.performance.mapper.settle.SettlementDriverMapper;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
......@@ -47,4 +48,13 @@ public class SettlementDriverDaoImpl extends BaseDaoImpl<SettlementDriverMapper,
query.orderByDesc(SettlementDriver :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(),param.getPageSize()),query);
}
@Override
public Optional<SettlementDriver> getByChildNo(String childNo) {
return Optional.of(childNo)
.map(item -> lQrWrapper()
.eq(SettlementDriver::getChildNo, item)
)
.map(super::getOne);
}
}
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.settle.SettlementDriverMapper;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
/**
......@@ -14,4 +15,7 @@ import com.msl.common.dao.BaseDao;
*/
public interface SettlementDriverDao extends BaseDao<SettlementDriverMapper, SettlementDriver, Integer> {
IPage<SettlementDriver> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param);
Optional<SettlementDriver> getByChildNo(String childNo);
}
......@@ -45,6 +45,7 @@ public class SettlementDriver implements HasKey<Integer> {
private BigDecimal settlementFreight; //结算金额(分)
private Integer invoiceType; //开票标识:1网运单 2普通单
private String settlementPlatform; //结算平台
private String payErrorMsg; //支付失败原因
private Integer status; //状态
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
......@@ -54,4 +55,4 @@ public class SettlementDriver implements HasKey<Integer> {
public Integer gainKey() {
return id;
}
}
\ No newline at end of file
}
......@@ -9,7 +9,7 @@ public interface OrderChildMqService {
void orderChildDriverConfirm(String childNo);
void orderChildLoad(String childNo);
void orderChildUnLoad(String childNo);
void orderChildUnload(String childNo);
void orderChildCancel(String childNo, Integer status, Integer opUserType, Long opUserNo, String opUserName);
......
......@@ -27,8 +27,6 @@ public interface BreakContractDriverRecordService {
void saveDriverRecordOfArriveSendAddressTimeout(OrderChild orderChild, Long createBy, String createName);
void saveDriverRecordOfArriveSendAddress(OrderChild orderChild, Long createBy, String createName);
void saveDriverRecordOfArriveReceiveAddress(OrderChild orderChild, Long createBy, String createName);
......
......@@ -330,7 +330,8 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
List<Integer> finishStatusList = Arrays.asList(OrderChildEnum.Status.UNSETTLE.getCode(), OrderChildEnum.Status.COMPLETE.getCode());
List<Integer> cancelStatusList = Arrays.asList(OrderChildEnum.Status.DRIVER_CANCEL.getCode());;
List<Integer> platformCancelStatusList = Arrays.asList(OrderChildEnum.Status.OWNER_CANCEL.getCode(),
List<Integer> platformCancelStatusList = Arrays.asList(
OrderChildEnum.Status.OWNER_CANCEL.getCode(),
OrderChildEnum.Status.PLATFORM_CANCEL.getCode(),
OrderChildEnum.Status.ARTIFICIAL_CANCEL.getCode()
);
......
......@@ -76,6 +76,7 @@ public class OrderChildMqServiceImpl implements OrderChildMqService {
public void orderChildLoad(String childNo) {
OrderChildLoadMqParam mq = new OrderChildLoadMqParam();
mq.setChildNo(childNo);
mq.setRepeatStatus(0);
MqDelay<MqWrapper<OrderChildLoadMqParam>> delay = new MqDelay<>(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.ORDER_CHILD_LOAD_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
......@@ -84,9 +85,10 @@ public class OrderChildMqServiceImpl implements OrderChildMqService {
}
@Override
public void orderChildUnLoad(String childNo) {
public void orderChildUnload(String childNo) {
OrderChildUnloadMqParam mq = new OrderChildUnloadMqParam();
mq.setChildNo(childNo);
mq.setRepeatStatus(0);
MqDelay<MqWrapper<OrderChildUnloadMqParam>> delay = new MqDelay<>(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.ORDER_CHILD_UNLOAD_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
......
......@@ -543,9 +543,6 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_SEND.getCode(),
OrderChildLogEnum.Type.ARRIVE_SEND.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 保存违约记录
breakContractDriverRecordService.saveDriverRecordOfArriveSendAddress(orderChild, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 发送mq (到达货源地)
orderChildMqService.orderChildArriveSendAddress(orderChild.getChildNo());
......@@ -721,6 +718,9 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildDao.updateLoad(orderChild);
orderChildImageDao.batchSaveEntity(imageList);
// 发送mq 装车
orderChildMqService.orderChildLoad(orderChild.getChildNo());
}
private void updateReload(OrderChildLoadParam param, OrderChild orderChild, OrderGoods orderGoods) {
......@@ -850,6 +850,9 @@ public class OrderChildServiceImpl implements OrderChildService {
//释放车辆
goodsOrderTruckRecordComponent.releaseDriverCard(orderChild.getOrderGoodsNo(), orderChild.getTruckNo());
// 发送mq 卸车
orderChildMqService.orderChildUnload(orderChild.getChildNo());
}
private void updateReUnload(OrderChildUnloadParam param, OrderChild orderChild) {
......
......@@ -87,7 +87,7 @@ public class PaymentServiceImpl implements PaymentService {
log.info("发起支付请求日志 {}", payUserDTO);
Result<Object> notify = (Result<Object>) postRequest(mslPaymentConfig.getHost()+ PERFORMANCE_PAY_CLX_PAYMENT.getUrl(), JSON.toJSONString(payUserDTO));
log.info("支付返回日志 {}", notify);
if (notify == null) {
if (notify == null || notify.getCode() != 0) {
//FEGIN返回null
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "支付服务返回异常");
}
......
......@@ -184,43 +184,7 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive
record.setBreakContractPartyType(BreakContractRecordEnum.BreakContractPartyType.DRIVER.getCode());
record.setBreakNo(breakNoGenerate());
record.setFigure(figure);
record.setRemark("取消运单");
record.setChildNo(orderChild.getChildNo());
record.setTruckNo(orderChild.getTruckNo());
record.setTruckOwnUserNo(orderChild.getTruckOwnUserNo());
record.setTruckOwnName(orderChild.getTruckOwnName());
record.setDriverUserNo(orderChild.getDriverUserNo());
record.setDriverName(orderChild.getDriverName());
record.setCreateBy(0L);
record.setCreateName("系统");
breakContractDriverRecordDao.saveEntity(record);
// 发送mq (违约记录新增)
breakContractMqService.driverRecordAdd(record.getId());
}
@Override
public void saveDriverRecordOfArriveSendAddress(OrderChild orderChild, Long createBy, String createName) {
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if (!orderChild.getArriveSendTime().isAfter(orderGoods.getLastArriveSendTime())) {return;}
BreakContractDriverRule rule = breakContractDriverRuleDao.getEntityByKey(1).orNull();
if (rule == null) {return;}
BreakContractDriverRuleVO breakContractDriverRuleVO = JSON.parseObject(rule.getRuleJson(), BreakContractDriverRuleVO.class);
// 费用计算
BigDecimal figure = arriveSendAddressFigureCalc(orderChild, orderGoods, breakContractDriverRuleVO);
BreakContractDriverRecord record = new BreakContractDriverRecord();
record.setTriggerType(BreakContractRecordEnum.TriggerType.SYSTEM.getCode());
record.setBreakContractPartyType(BreakContractRecordEnum.BreakContractPartyType.DRIVER.getCode());
record.setBreakNo(breakNoGenerate());
record.setFigure(figure);
record.setRemark("到达货源地超时");
record.setRemark("到达货源地超时取消");
record.setChildNo(orderChild.getChildNo());
record.setTruckNo(orderChild.getTruckNo());
......@@ -316,15 +280,7 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive
return money.movePointRight(2);
}
/**
* 费用计算 (到达货源地超时)
*/
private BigDecimal arriveSendAddressFigureCalc(OrderChild orderChild, OrderGoods orderGoods, BreakContractDriverRuleVO rule){
long time = com.clx.performance.utils.LocalDateTimeUtils.betweenSecond(orderGoods.getLastArriveSendTime(), orderChild.getArriveSendTime());
BigDecimal money = BigDecimal.valueOf(time).divide(BigDecimal.valueOf(3600), 2, RoundingMode.HALF_UP).multiply(rule.getSendAddressRule().getFigurePerHour()).setScale(2, RoundingMode.HALF_UP);
return money.movePointRight(2);
}
/**
* 费用计算 (到达目的地超时)
......
......@@ -146,7 +146,7 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler
// 车主
if (Objects.equals(settlement.getBreakContractPartyType(), BreakContractSettlementDriverEnum.BreakContractPartyType.DRIVER.getCode())){
payService.driverPay(settlement.getSettlementNo(), settlement.getTruckOwnUserNo(), settlement.getFigure().intValue());
payService.driverPay(settlement.getSettlementNo(), settlement.getTruckOwnUserNo(), settlement.getFigure().negate().intValue());
}
// 平台
else if (Objects.equals(settlement.getBreakContractPartyType(), BreakContractSettlementDriverEnum.BreakContractPartyType.PLATFORM.getCode())) {
......
......@@ -68,6 +68,8 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
// 保存违约记录
breakContractDriverRecordService.saveDriverRecordOfArriveSendAddressTimeout(orderChild, 0L, "系统");
orderChildFinish(orderChild.getChildNo());
// 发送mq (运单取消)
orderChildMqService.orderChildCancel(orderChild.getChildNo(), OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode(), UserTypeEnum.SYSTEM.getCode(), 0L, "系统");
......
......@@ -360,7 +360,7 @@ public class CollectLineReportServiceImpl implements CollectLineReportService {
AppIntegralRuleVO ruleInfo = integralRuleService.getRuleInfo();
// 报存积分
integralRecordService.addDriverReportRecord(ruleInfo, collectLineReport.getTruckNo(), IntegralRecordEnum.Type.REPORT_ABNORMAL.getValue(),
ruleInfo.getDriverReportRule().getIntegralQuality(), IntegralRecordEnum.Type.REPORT_ABNORMAL.getMsg());
ruleInfo.getDriverReportRule().getIntegralAbnormal(), IntegralRecordEnum.Type.REPORT_ABNORMAL.getMsg());
}
@Transactional(rollbackFor = Exception.class)
......
......@@ -42,6 +42,8 @@ public class CollectTruckServiceImpl implements CollectTruckService {
CollectTruck truck = collectTruckDao.getByUserNoAndTruckNo(userNo, param.getTruckNo()).orNull();
if (truck == null) {
truck = new CollectTruck();
truck.setUserNo(userNo);
truck.setName(loginUserInfo.getUserName());
truck.setMobile(loginUserInfo.getUserMobile());
......@@ -75,6 +77,7 @@ public class CollectTruckServiceImpl implements CollectTruckService {
CollectTruck truck = collectTruckDao.getByUserNoAndTruckNo(userNo, param.getTruckNo()).orNull();
if (truck == null) {
truck = new CollectTruck();
truck.setUserNo(userNo);
truck.setName(loginUserInfo.getUserName());
truck.setMobile(loginUserInfo.getUserMobile());
......@@ -109,6 +112,7 @@ public class CollectTruckServiceImpl implements CollectTruckService {
CollectTruck truck = collectTruckDao.getByUserNoAndTruckNo(userNo, param.getTruckNo()).orNull();
if (truck == null) {
truck = new CollectTruck();
truck.setUserNo(userNo);
truck.setName(loginUserInfo.getUserName());
truck.setMobile(loginUserInfo.getUserMobile());
......@@ -140,6 +144,7 @@ public class CollectTruckServiceImpl implements CollectTruckService {
Long userNo = loginUserInfo.getUserNo();
CollectTruck truck = collectTruckDao.getByUserNoAndTruckNo(userNo, param.getTruckNo()).orNull();
if (truck == null) {
truck = new CollectTruck();
truck.setUserNo(userNo);
truck.setName(loginUserInfo.getUserName());
truck.setMobile(loginUserInfo.getUserMobile());
......@@ -158,6 +163,7 @@ public class CollectTruckServiceImpl implements CollectTruckService {
Long userNo = loginUserInfo.getUserNo();
CollectTruck truck = collectTruckDao.getByUserNoAndTruckNo(userNo, param.getTruckNo()).orNull();
if (truck == null) {
truck = new CollectTruck();
truck.setUserNo(userNo);
truck.setName(loginUserInfo.getUserName());
truck.setMobile(loginUserInfo.getUserMobile());
......@@ -176,6 +182,7 @@ public class CollectTruckServiceImpl implements CollectTruckService {
Long userNo = loginUserInfo.getUserNo();
CollectTruck truck = collectTruckDao.getByUserNoAndTruckNo(userNo, param.getTruckNo()).orNull();
if (truck == null) {
truck = new CollectTruck();
truck.setUserNo(userNo);
truck.setName(loginUserInfo.getUserName());
truck.setMobile(loginUserInfo.getUserMobile());
......@@ -194,6 +201,7 @@ public class CollectTruckServiceImpl implements CollectTruckService {
Long userNo = loginUserInfo.getUserNo();
CollectTruck truck = collectTruckDao.getByUserNoAndTruckNo(userNo, param.getTruckNo()).orNull();
if (truck == null) {
truck = new CollectTruck();
truck.setUserNo(userNo);
truck.setName(loginUserInfo.getUserName());
truck.setMobile(loginUserInfo.getUserMobile());
......@@ -212,6 +220,7 @@ public class CollectTruckServiceImpl implements CollectTruckService {
Long userNo = loginUserInfo.getUserNo();
CollectTruck truck = collectTruckDao.getByUserNoAndTruckNo(userNo, param.getTruckNo()).orNull();
if (truck == null) {
truck = new CollectTruck();
truck.setUserNo(userNo);
truck.setName(loginUserInfo.getUserName());
truck.setMobile(loginUserInfo.getUserMobile());
......
......@@ -35,6 +35,7 @@ import com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam;
import com.clx.user.vo.feign.DriverInfoFeignVo;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -125,14 +126,10 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
}
}
//车主结算单自动支付
paySettlementDriver(settlementDriverDetail);
//生成车主结算单
settlementDriverSave(settlementDriverDetail,settlementNo);
//运单状态修改为完成
OrderChild orderChild = orderChildDao.getByChildNo(settlementDriverDetail.getChildNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
orderChild.setStatus(OrderChildEnum.Status.COMPLETE.getCode());
orderChildDao.updateSettlement(orderChild);
//车主结算单自动支付
paySettlementDriver(settlementDriverDetail);
// 更新结算单
settlementOwnerDetail.setSettlementNo(settlementNo);
......@@ -173,11 +170,29 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementDriver.setSettlementFreight(detail.getSettlementFreight());
settlementDriver.setInvoiceType(detail.getInvoiceType());
settlementDriver.setSettlementPlatform(String.valueOf(SettlementPlatformEnum.Platform.MSL.getCode()));
settlementDriver.setStatus(SettlementDriverEnum.Status.SETTLED.getCode());
settlementDriver.setStatus(SettlementDriverEnum.Status.WAIT_SETTLEMENT.getCode());
settlementDriverDao.saveEntity(settlementDriver);
}
public void settlementDriverNotify(String childNo,Integer payType,String payErrorMsg){
//运单状态修改为完成
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
SettlementDriver settlementDriver = settlementDriverDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if(1 == payType){
orderChild.setStatus(OrderChildEnum.Status.COMPLETE.getCode());
orderChildDao.updateSettlement(orderChild);
settlementDriver.setStatus(SettlementDriverEnum.Status.SETTLED.getCode());
settlementDriverDao.updateEntityByKey(settlementDriver);
}else{
settlementDriver.setPayErrorMsg(payErrorMsg);
settlementDriverDao.updateEntityByKey(settlementDriver);
}
}
/**
* 车主结算单自动支付
*/
......@@ -192,7 +207,15 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
.pwd("noCheckPwd")
.remark(PayRemarkEnum.toString(PayRemarkEnum.FREIGHT_TO_OWNER.getValue()))
.build();
paymentService.paymentWallet(noCheckPwd);
Result result = null;
try{
result = paymentService.paymentWallet(noCheckPwd);
}catch (Exception e){
settlementDriverNotify(detail.getChildNo(),0,e.getMessage());
}
if(Objects.nonNull(result)){
settlementDriverNotify(detail.getChildNo(),0,result.getMsg());
}
}
/**
......
......@@ -9,4 +9,6 @@ public interface SettlementMqHandlerService {
void settlementDetailInvoiceTypeSync(SettlementDetailInvoiceTypeSyncMqParam mq);
void settlementDriverNotify(String childNo,Integer payType,String payErrorMsg);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论