提交 8c98b8d3 authored 作者: liuhaiquan's avatar liuhaiquan

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

......@@ -22,7 +22,7 @@ public enum OrderGoodsTruckBindEnum {
;
private final int code;
private final Integer code;
private final String name;
public static Optional<Status> getByCode(int code) {
......
package com.clx.performance.param.pay;
import com.msl.common.enums.ResultEnum;
/**
......@@ -9,7 +8,7 @@ import com.msl.common.enums.ResultEnum;
* @date 2017年6月01日
* @description
*/
public class NotifyString extends PayResult<String> {
public class NotifyString extends Result<String> {
/** 支付操作 参考<MessageTypeEnum> */
private Integer action;
/** 交易单号 */
......@@ -22,7 +21,7 @@ public class NotifyString extends PayResult<String> {
public NotifyString(){
super();
}
public NotifyString(PayResult<String> ret){
public NotifyString(Result<String> ret){
this.setCode(ret.getCode());
this.setMsg(ret.getMsg());
this.setData(ret.getData());
......
package com.clx.performance.param.pay;
import com.fasterxml.jackson.annotation.JsonIgnore;
/**
*
* 类: Result
* 描述:接口返回结果类
* @author wangjf
* 时间:2017年3月23日下午3:46:50
* 版本:v1.0
* 修改人:wangjf
*/
public class Result<T> {
private Integer code; // 返回结果代码,0为成功
/**
* 返回结果代码
* 0为成功 ,其他代码请参照代码文档
* @return
*/
public Integer getCode() {
return code;
}
private Long total;//总共记录数
private Integer pageNum;//总共页数
/**
* 0代表成功,其他代码请参考《返回值说明文档》
* 请务必按规定填写!
* @param code 结果代码
*/
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
/**
* 错误消息,接口中的错误处理,请务必填写错误消息<br/>
* 当成功时消息应为“success”
* @param msg 错误消息
*/
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
private String msg;
private T data;
/**
* 默认code = 0,<br/>
* msg = "success"
*/
public Result() {
this.code = 0;
this.msg = "success";
}
/**
* 默认code = 0,
* msg = "success",<br/>
* 当成功返回结果时,可使用此方法,直接将返回结果填写即可
* @param data ,返回结果
*/
public Result(T data) {
this.code = 0;
this.msg = "success";
this.data = data;
}
/**
* 查询列表返回成功
* @param data
* @param pageNum
* @param total
*/
public Result(T data, Integer pageNum, Long total) {
this.code = 0;
this.msg = "success";
this.data = data;
this.pageNum = pageNum;
this.total = total;
}
/**
* 产生错误时,需要在枚举中拼接自定义返回的内容
* @param e
* @param msg
*/
public Result(ResultEnum e, String msg) {
this.code = e.getCode();
this.msg = String.format(e.getMsg(), msg);
}
/**
* 产生错误时,可以使用此构造方法,在new时直接填写错误代码及消息即可
* @param code
* @param msg
*/
public Result(Integer code,String msg) {
this.code = code;
this.msg = msg;
}
public Result(Integer code,String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
@JsonIgnore
public void setResultEnum(ResultEnum e){
this.code = e.getCode();
this.msg = e.getMsg();
}
public Result(ResultEnum e) {
this.code = e.getCode();
this.msg = e.getMsg();
}
public Result(T data, ResultEnum e) {
this.code = e.getCode();
this.msg = e.getMsg();
this.data = data;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
@Override
public String toString() {
return "Result [code=" + code + ", msg=" + msg + ", data=" + data + "]";
}
/**
* 是否成功
* @return
*/
public boolean succeed() {
return code != null && code == ResultCodeEnum.SUCCESS.getCode();
}
}
package com.clx.performance.param.pay;
public enum ResultCodeEnum implements ResultEnum {
SUCCESS(0, "success"),
FAIL(1, "服务繁忙"),
THIRDPARTY(2,"调用第三方接口参数错误"),
HTTPERROR(3,"HTTP请求异常"),
ILLEGAL_PARAMETER(4, "非法参数"),
SYSTEM_ERROR(5, "系统异常"),
REQUEST_TOO_OFTEN(6, "请勿频繁点击"),
MASSAGE_SERVICE_ERROR(7, "消息服务繁忙"),
ORDER_COMPLETE(8, "订单已经处理过了"),
DATA_SYNC_ERROR(9, "数据同步异常"),
MQ_ERROR(10, "消息队列异常"),
NO_LOGIN(100, "没有登录"),
NO_OPERATING_AUTHORIZATION(101, "没有权限"),
FEGIN_NULL(102, "FEGIN返回null"),
FEGIN_ERROR(103, "fegin调用繁忙"),
EVALUATION_INFORMATION_NULL(104, "评价信息不能为空"),
SUBJECT_TO_BE_EVALUATED_NULL(105, "被评价主体不能为空"),
EVALUATION_TYPE_ERROR(106, "评价类型错误"),
EVALUATION_SCORE_ERROR(107, "评价分值错误"),
LABEL_OR_CONTENT_NULL(108, "差评时必须有标签或者内容"),
CHILD_NO_NULL(109, "运单号不能为空"),
REDIS_LOCK_ERROR(110, "锁异常"),
VERIFICATION_CODE_ERROR(111, "验证码错误"),
VERIFICATION_CODE_COUNT_ERROR(112, "验证码输入错误次数过多,请重新获取"),
ACCOUNT_LOCKED_TTL_ERROR(113, "账号已锁定,请%s分钟之后再试"),
ACCOUNT_PWD_ERROR(114, "密码错误,还可尝试%s次,超过将锁定"),
PRODUCT_TYPE_ERROR(115, "产品线参数错误"),
;
// 成员变量
private String msg;
private int code;
// 构造方法
private ResultCodeEnum(int code, String msg) {
this.msg = msg;
this.code = code;
}
// 普通方法
public static String getMsg(int code) {
for (ResultCodeEnum c : ResultCodeEnum.values()) {
if (c.getCode() == code) {
return c.msg;
}
}
return null;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
package com.clx.performance.param.pay;
public interface ResultEnum {
String getMsg();
int getCode();
}
......@@ -13,7 +13,6 @@ 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;
......@@ -61,14 +60,4 @@ public class OrderChildFeignController {
return Result.ok(feignOrderChildService.getLineStatistics(sendSystemAddressId, receiveSystemAddressId));
}
@ApiOperation(value = "运单取消/到达最晚拉运时间 同步最后一车", notes = "<br>By:刘海泉")
@RequestMapping(value = "/syncLastTruck", method = RequestMethod.GET)
Result<?> syncLastTruck(@RequestParam("orderNo") @NotBlank(message = "订单编号不能为空") String orderNo){
return lastTruckService.syncLastTruckChild4OrderTrigger(orderNo);
}
}
......@@ -50,6 +50,7 @@ public class OwnerBreakContractSettlementOwnerController {
public Result<PageData<PageCarrierBreakContractSettlementOwnerVO>> pageOwnerBreakContractSettlementOwnerList(@RequestBody PageCarrierBreakContractSettlementOwnerParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
param.setOwnerUserNo(loginUserInfo.getUserNo());
System.out.println(param);
IPage<PageCarrierBreakContractSettlementOwnerVO> page = breakContractSettlementOwnerService.pageCarrierBreakContractSettlementOwnerList(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
......
......@@ -52,7 +52,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
IPage<PageCarrierOrderChildVO> pageCarrierOrderChildList(PageCarrierOrderChildParam param);
Optional<List<OrderChild>> getOrderChildInfoByOrderGoodsNo(String childNo);
Optional<List<OrderChild>> getOrderChildInfoByOrderGoodsNo(String orderGoodsNo);
OrderChild getGoingLatestOrderChild(Long driverUserNo);
......@@ -75,7 +75,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
int countCompleteByTruckNoAndPayFinishTime(@Param("truckNo") String truckNo,
@Param("beginTime")String beginTime,
@Param("endTime")String endTime,
@Param("confirmTime")String confirmTime,
@Param("list")List<String> orderGoodsNoList
);
......@@ -153,5 +152,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
BigDecimal getLastDriverFreightByTransportLine(Integer sendSystemAddressId, Integer receiveSystemAddressId);
OrderChild findLastTruckChildByCreateTime(String orderNo);
OrderChild getOrderCompleteLastTruck(String orderNo);
Long haveArriveReceiveChild(String orderNo);
}
......@@ -129,6 +129,8 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return update(lUdWrapper()
.eq(OrderChild::getId, item.getId())
.set(OrderChild::getStatus, item.getStatus())
.set(OrderChild::getFinishTime, item.getFinishTime())
.set(OrderChild::getSettleTime, item.getSettleTime())
);
}
......@@ -259,12 +261,11 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
}
@Override
public int countCompleteByTruckNoAndPayFinishTime(String truckNo, String beginTime, String endTime, String confirmTime, List<String> orderGoodsNoList) {
public int countCompleteByTruckNoAndPayFinishTime(String truckNo, String beginTime, String endTime, List<String> orderGoodsNoList) {
return (int)count(lQrWrapper()
.eq(OrderChild::getTruckNo, truckNo)
.ge(OrderChild::getPayTime, beginTime)
.lt(OrderChild::getPayTime, endTime)
.le(OrderChild::getConfirmTime, confirmTime)
.ge(OrderChild::getConfirmTime, beginTime)
.le(OrderChild::getConfirmTime, endTime)
.ge(OrderChild::getStatus, OrderChildEnum.Status.UNSETTLE.getCode())
.le(OrderChild::getStatus, OrderChildEnum.Status.COMPLETE.getCode())
.in(OrderChild::getOrderGoodsNo, orderGoodsNoList)
......@@ -457,6 +458,7 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper<>();
query.eq(OrderChild :: getSendSystemAddressId,sendSystemAddressId);
query.eq(OrderChild :: getReceiveSystemAddressId,receiveSystemAddressId);
query.le(OrderChild::getStatus, OrderChildEnum.Status.COMPLETE.getCode());
query.orderByDesc(OrderChild :: getCreateTime);
query.last("limit 1");
OrderChild child = baseMapper.selectOne(query);
......@@ -467,11 +469,21 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
}
@Override
public OrderChild findLastTruckChildByCreateTime(String orderNo) {
public OrderChild getOrderCompleteLastTruck(String orderNo) {
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper<>();
query.eq(OrderChild :: getOrderNo,orderNo);
query.orderByDesc(OrderChild ::getCreateTime);
query.eq(OrderChild ::getOrderNo,orderNo);
query.ge(OrderChild :: getStatus,OrderChildEnum.Status.ARRIVE_SEND.getCode());
query.le(OrderChild :: getStatus,OrderChildEnum.Status.COMPLETE.getCode());
query.orderByDesc(OrderChild :: getArriveReceiveTime);
query.last("limit 1");
return baseMapper.selectOne(query);
}
@Override
public Long haveArriveReceiveChild(String orderNo) {
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper<>();
query.eq(OrderChild ::getOrderNo,orderNo);
query.lt(OrderChild :: getStatus,OrderChildEnum.Status.ARRIVE_RECEIVE.getCode());
return baseMapper.selectCount(query);
}
}
......@@ -25,6 +25,7 @@ public class OrderChildLogDaoImpl extends BaseDaoImpl<OrderChildLogMapper, Order
, OrderChildLogEnum.Type.LOAD.getCode(), OrderChildLogEnum.Type.UNLOAD.getCode()
, OrderChildLogEnum.Type.DRIVER_CANCEL.getCode(), OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode()
, OrderChildLogEnum.Type.OWNER_CANCEL.getCode(), OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode()
, OrderChildLogEnum.Type.ARTIFICIAL_CANCEL.getCode()).groupBy(OrderChildLog::getType));
, OrderChildLogEnum.Type.ARTIFICIAL_CANCEL.getCode(), OrderChildLogEnum.Type.COMPLETE.getCode())
.groupBy(OrderChildLog::getType).orderByAsc(OrderChildLog::getId));
}
}
......@@ -50,6 +50,9 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
return Optional.ofNullable(getOne(lQrWrapper()
.eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.eq(OrderGoodsTruckBind::getTruckNo, truckNo)
.in(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode(),
OrderGoodsTruckBindEnum.Status.GET.getCode()
)
));
}
......@@ -112,6 +115,9 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
.or()
.eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.GET.getCode())
.or()
.eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.SUCCESS.getCode())
);
}
......@@ -136,6 +142,7 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
query.in(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode(),
OrderGoodsTruckBindEnum.Status.GET.getCode(), OrderGoodsTruckBindEnum.Status.SUCCESS.getCode());
query.orderByDesc(OrderGoodsTruckBind :: getCreateTime);
query.groupBy(OrderGoodsTruckBind::getTruckNo);
return baseMapper.selectList(query);
}
......
......@@ -4,6 +4,7 @@ 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.enums.OrderEnum;
import com.clx.order.enums.SyncPlatformEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO;
......@@ -95,14 +96,29 @@ public class OrderChildDtsListener {
OpenCallBackClient client = new OpenCallBackClient(mslAppConfig.getUrl(),mslAppConfig.getAppId(),mslAppConfig.getSecret());
Result<?> result = client.encryptPost(JSON.toJSONString(after),after.topic());
log.info("运单信息同步,运单编号:{},响应结果:{}",after.getChildNo(),JSON.toJSONString(result));
syncLastTruck(orderInfoFeign,after);
}
}
public void syncLastTruck(FeignOrderVO orderInfoFeign,OrderChildMessage after){
//当运单状态为到达目的地之后的状态时候,需要判断最后一车的逻辑
if(after.getStatus() >= OrderChildEnum.Status.ARRIVE_RECEIVE.getCode() && after.getStatus() <= OrderChildEnum.Status.COMPLETE.getCode()){
OrderChild child = lastTruckService.getLastTruckChild(after.getOrderNo());
OrderChild child;
if(Objects.equals(orderInfoFeign.getOrderStatus(), OrderEnum.Status.COMPLETED.getCode()) ||
Objects.equals(orderInfoFeign.getOrderStatus(), OrderEnum.Status.SUCCESS.getCode())) { //订单变成已完成 || 已完结 (不存在司机可以取消的运单)
OrderEnum.Status byCode = OrderEnum.Status.getByCode(orderInfoFeign.getOrderStatus());
log.info("订单号:{},运单号:{},订单状态:{},开始查询最后一车运单===========" ,orderInfoFeign.getOrderNo(),after.getChildNo(),
Objects.nonNull(byCode)?byCode.getName():"未知状态");
child = lastTruckService.getOrderCompleteLastTruck(after.getOrderNo());
}else{ // 订单除 已完成 || 已完结 外的其他状态
child = lastTruckService.getLastTruckChild(after.getOrderNo());
}
if(Objects.nonNull(child)){
lastTruckService.syncLastTruckChild(child);
}
}
}
}
}
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);
void syncLastTruckChild(OrderChild child);
Result<?> syncLastTruckChild4OrderTrigger(String orderNo);
OrderChild getOrderCompleteLastTruck(String orderNo);
}
......@@ -431,7 +431,6 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
private int orderChildDriverConfirm(IntegralStatistics statistics, AppIntegralRuleVO ruleInfo, OrderChild orderChild){
LocalDateTime dateTimeDayStart = LocalDateTimeUtils.getDayStart();
LocalDateTime dateTimeDayNext = dateTimeDayStart.plusDays(1);
int integralSum = 0;
......@@ -441,10 +440,9 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
List<String> enableOrderNoList = integralOrderDao.getAllOrderNoList();
int finishNum = orderChildDao.countCompleteByTruckNoAndPayFinishTime(orderChild.getTruckNo(),
LocalDateTimeUtils.formatTime(dateTimeDayStart),
LocalDateTimeUtils.formatTime(dateTimeDayNext),
LocalDateTimeUtils.formatTime(orderChild.getConfirmTime()),
enableOrderNoList);
log.info("司机积分,车辆完成量,truckNo:{}, sum:{}", orderChild.getChildNo(), finishNum);
log.info("司机积分,车辆完成量,truckNo:{}, sum:{}", orderChild.getTruckNo(), finishNum);
if (finishNum == 1){
completeNumIntegral = ruleInfo.getOrderChildCompleteRule().getInteger1();
......
......@@ -159,11 +159,7 @@ public class IntegralTruckServiceImpl implements IntegralTruckService {
@Override
public IPage<IntegralTruckVO> driverPageTruckRank(DriverPageIntegralTruckRankParam param) {
// String time = LocalDateTimeUtils.formatTime(LocalDateTimeUtils.getStartWeek().minusDays(7));
// 临时查本周排名
String time = LocalDateTimeUtils.formatTime(LocalDateTimeUtils.getStartWeek());
String time = LocalDateTimeUtils.formatTime(LocalDateTimeUtils.getStartWeek().minusDays(7));
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
......
......@@ -67,29 +67,24 @@ public class LastTruckServiceImpl implements LastTruckService {
* @return
**/
@Override
public Result<?> syncLastTruckChild(OrderChild child) {
public void 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);
@Override
public OrderChild getOrderCompleteLastTruck(String orderNo) {
//判断当前订单下是否存在未到达目的地之前的运单 && 排除掉已取消的运单
Long count = orderChildDao.haveArriveReceiveChild(orderNo);
log.info("已完成/已完结的订单号:{},查询运单状态非取消并且在到达目的地之前的运单数量为:{}",orderNo,count);
if(count == 0 ){
//说明排除已取消的运单后,剩下的所有运单都已经是到达目的地之后的状态,根据到达目的地的时间倒序取出第一条运单作为最后一车
return orderChildDao.getOrderCompleteLastTruck(orderNo);
}
return Result.ok("承运系统提示:承运系统未查询到该订单下的运单信息");
return null;
}
}
......@@ -1273,9 +1273,9 @@ public class OrderChildServiceImpl implements OrderChildService {
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
OrderChildVO result = orderChildStruct.convert(orderChild);
result.setLastArriveSendTime(LocalDateTimeUtils.convertLocalDateTimeToDefaultString(orderGoods.getLastArriveSendTime()));
result.setLastArriveReceiveTime(LocalDateTimeUtils.convertLocalDateTimeToDefaultString(orderGoods.getLastArriveReceiveTime()));
result.setLastLoadTime(LocalDateTimeUtils.convertLocalDateTimeToDefaultString(orderGoods.getLastLoadTime()));
result.setLastArriveSendTime(orderGoods.getLastArriveSendTime()==null? null : LocalDateTimeUtils.convertLocalDateTimeToDefaultString(orderGoods.getLastArriveSendTime()));
result.setLastArriveReceiveTime(orderGoods.getLastArriveReceiveTime()==null? null : LocalDateTimeUtils.convertLocalDateTimeToDefaultString(orderGoods.getLastArriveReceiveTime()));
result.setLastLoadTime(orderGoods.getLastLoadTime()==null? null : LocalDateTimeUtils.convertLocalDateTimeToDefaultString(orderGoods.getLastLoadTime()));
// 磅单
if (Objects.equals(orderChild.getPoundStatus(), OrderChildPoundAuditEnum.Status.REJECT.getCode())) {
......
......@@ -364,7 +364,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
}
String orderGoodsNo = orderGoodsParams.getOrderGoodsNo();
List<OrderChild> orderChildList = orderChildDao.getOrderChildInfoByOrderGoodsNo(orderGoodsNo).get();
List<OrderChild> orderChildList = orderChildDao.selectListByOrderGoodsNo(orderGoodsNo);
boolean pendingOrderWayFlag = CollectionUtils.isNotEmpty(orderChildList);
if (pendingOrderWayFlag) {
......@@ -386,9 +386,15 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
List<OrderGoodsTruckBind> truckBindList = orderGoodsTruckBindDao.selectListByOrderGoodsNo(orderGoodsNo);
List<OrderGoodsTruckBind> getChildList = null;
if (CollectionUtils.isNotEmpty(truckBindList)) {
List<OrderGoodsTruckBind> deleteList = truckBindList.stream().filter(i -> !i.getStatus().equals(OrderGoodsTruckBindEnum.Status.GET.getCode())).collect(Collectors.toList());
//已接单的记录
getChildList = truckBindList.stream().filter(i -> i.getStatus().equals(OrderGoodsTruckBindEnum.Status.GET.getCode())).collect(Collectors.toList());
List<OrderGoodsTruckBind> deleteList = truckBindList.stream().filter(i ->
!i.getStatus().equals(OrderGoodsTruckBindEnum.Status.GET.getCode()) &&
!i.getStatus().equals(OrderGoodsTruckBindEnum.Status.SUCCESS.getCode())
).collect(Collectors.toList());
//已接单的记录和完成的
getChildList = truckBindList.stream().filter(i -> i.getStatus().equals(OrderGoodsTruckBindEnum.Status.GET.getCode())
|| i.getStatus().equals(OrderGoodsTruckBindEnum.Status.SUCCESS.getCode())
)
.collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(deleteList)) {
orderGoodsTruckBindDao.deleteByIds(deleteList.stream().map(OrderGoodsTruckBind::getId).collect(Collectors.toList()));
......@@ -409,7 +415,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
if (CollectionUtil.isNotEmpty(truckList)) {
if (CollectionUtil.isNotEmpty(getChildList)) {
for (OrderGoodsTruckBind bind : getChildList) {
if (!truckList.contains(bind.getTruckNo())) {
if (OrderGoodsTruckBindEnum.Status.SUCCESS.getCode().equals(bind.getStatus()) && !truckList.contains(bind.getTruckNo())) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前取消的车辆已经接单,车牌号为:" + bind.getTruckNo());
} else {
//已存在的记录不需要重新创建绑定记录
......
......@@ -18,6 +18,7 @@ import com.clx.performance.param.pc.payment.PayParam;
import com.clx.performance.param.pc.payment.PayUnitDTO;
import com.clx.performance.param.pc.payment.PayUserDTO;
import com.clx.performance.service.ThirdPartRequestLogService;
import com.google.gson.Gson;
import com.msl.common.dto.HttpDTO;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.exception.ServiceSystemException;
......@@ -92,7 +93,7 @@ public class PaymentServiceImpl implements PaymentService {
log.info("发起支付请求日志 {}", JSON.toJSONString(payUserDTO));
Result<Object> notify = (Result<Object>) postRequest(mslPaymentConfig.getHost()+ PERFORMANCE_PAY_CLX_PAYMENT.getUrl(), JSON.toJSONString(payUserDTO));
log.info("支付返回日志 {}", notify);
if (notify == null || StringUtils.isNotBlank(notify.getMsg())) {
if (notify == null || notify.getCode() != 0) {
//FEGIN返回null
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, notify.getMsg());
}
......@@ -133,7 +134,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 || StringUtils.isNotBlank(notify.getMsg())) {
if (notify == null || notify.getCode() != 0) {
//FEGIN返回null
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, notify.getMsg());
}
......@@ -169,9 +170,11 @@ public class PaymentServiceImpl implements PaymentService {
}))
.peek(dto -> log.info("http请求返回------dto->{}", dto))
.mapTry(dto -> EncryptUtil.decrypt(dto.getData(), TRANSPORT_KEY))
.map(this::covertResult)
.mapWithObj(new TypeReference<Result<Object>>() {
}, this::covertResult)
.peek(result -> thirdPartRequestLogService.updateResult(httpLogId, result))
.filter(Result::succeed)
// .filter(Result::succeed)
.orElseThrow();
} catch (GeneralSecurityException e) {
log.error("解密失败", e);
......@@ -179,9 +182,12 @@ public class PaymentServiceImpl implements PaymentService {
}
}
private <T> Result<?> covertResult(String result) {
return JSON.parseObject(result, Result.class);
private <T> Result<T> covertResult(String result, TypeReference<Result<T>> reference) {
return new Gson().fromJson(result, reference.getType());
}
}
......@@ -21,6 +21,7 @@ import com.clx.performance.service.breakcontract.BreakContractMqHandlerService;
import com.clx.performance.service.breakcontract.BreakContractSettlementLogService;
import com.clx.performance.service.impl.UniqueOrderNumService;
import com.clx.performance.service.payment.PayService;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.utils.LocalDateTimeUtils;
import com.msl.document.api.vo.ContractEvidenceRecordVo;
import lombok.extern.slf4j.Slf4j;
......@@ -129,6 +130,14 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler
breakContractSettlementLogService.saveBreakSettlementLog(settlementNo,
BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getCode(),BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getMsg(),
OrderChildLogEnum.CreateType.PLATFORM.getCode(),record.getCreateBy(),record.getCreateName());
try {
pay(settlement);
}catch (ServiceSystemException e){
settlement.setPayRemark(e.getMessage());
breakContractSettlementDriverDao.updatePayFail(settlement);
}
}
private String settlementNoGenerate() {
......
......@@ -426,8 +426,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
BreakContractOwnerRuleVO.AutoRule autoRule = JSONObject.parseObject(autoRuleJson, BreakContractOwnerRuleVO.AutoRule.class);
BreakContractOwnerRuleVO.OrderCancelRule orderCancelRule = autoRule.getOrderCancelRule();//订单取消规则
//运单状态(包括货主取消)
//运单状态(包括货主取消)
//运单状态
List<Integer> statusList = new ArrayList<>();
statusList.add(OrderChildEnum.Status.CREATED.getCode());
statusList.add(OrderChildEnum.Status.PAY.getCode());
......@@ -438,6 +437,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
statusList.add(OrderChildEnum.Status.ARRIVE_RECEIVE.getCode());
statusList.add(OrderChildEnum.Status.UNLOAD.getCode());
statusList.add(OrderChildEnum.Status.UNSETTLE.getCode());
statusList.add(OrderChildEnum.Status.COMPLETE.getCode());
//由于已经更新了订单状态为货主取消了
if(Objects.equals(cancelType,CancelOrderEnum.Type.NOT_ARRIVE.getCode())){
......@@ -489,8 +489,13 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
BigDecimal noTransitWeight = transportWeight.subtract(deliveredWeight);//未拉运的重量
BigDecimal noTransitFreight = noTransitWeight.multiply(validFreightPrice);//未拉运的费用
BigDecimal totalFreight = deliveredFreight.add(noTransitFreight);//总运费
BigDecimal baseFigure = totalFreight.multiply(orderCancelRule.getAfterRatio()).multiply(cancelWeight)
BigDecimal baseFigure;
if(cancelWeight.compareTo(BigDecimal.ZERO) == 0){//没有取消的吨数
baseFigure = totalFreight.multiply(orderCancelRule.getAfterRatio());//基础违约金
}else{
baseFigure = totalFreight.multiply(orderCancelRule.getAfterRatio()).multiply(cancelWeight)
.divide(transportWeight,2, BigDecimal.ROUND_HALF_UP);//基础违约金
}
//挂单后,车辆违约金
BigDecimal truckFigure = BigDecimal.ZERO;
......
......@@ -24,6 +24,7 @@ import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.payment.PayParam;
import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.PaymentService;
import com.clx.performance.service.impl.UniqueOrderNumService;
import com.clx.performance.service.settle.SettlementLogService;
......@@ -89,6 +90,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Autowired
private OrderChildDao orderChildDao;
@Autowired
private OrderChildLogService orderChildLogService;
@Override
......@@ -183,9 +187,16 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
if(1 == payType){
orderChild.setStatus(OrderChildEnum.Status.COMPLETE.getCode());
orderChild.setSettleTime(LocalDateTime.now());
orderChild.setFinishTime(orderChild.getSettleTime());
orderChildDao.updateSettlement(orderChild);
settlementDriver.setStatus(SettlementDriverEnum.Status.SETTLED.getCode());
settlementDriverDao.updateEntityByKey(settlementDriver);
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.COMPLETE.getCode(),
OrderChildLogEnum.Type.COMPLETE.getMsg(), 0L, "系统");
}else{
settlementDriver.setPayErrorMsg(payErrorMsg);
settlementDriverDao.updateEntityByKey(settlementDriver);
......
......@@ -85,9 +85,6 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode());
if(settlementOwnerDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) == 0){
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode());
}
settlementOwnerDetailDao.saveEntity(settlementOwnerDetail);
......
......@@ -123,6 +123,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
settlementOwnerDao.updateInvoiceStatusById(settlementOwner.getId(),SettlementOwnerEnum.InvoiceStatus.NO_NEED_INVOICE.getCode());
settlementOwnerDetailDao.updateInvoiceStatusBySettlementNo(settlementNo, SettlementOwnerDetailEnum.InvoiceStatus.NO_INVOICE.getCode());
}
if(settlementOwner.getSettlementFreight().compareTo(BigDecimal.ZERO) == 0){
settlementOwnerDetailDao.updateFinalPaymentStatusBySettlementNo(settlementNo, SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode());
}
}
//更新状态
......@@ -280,6 +283,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
fieldList.add(new ExcelField(1, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(2, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(3, "货主编码", "ownerUserNo", 5000));
fieldList.add(new ExcelField(3, "结算方式", "settlementWay", 5000));
fieldList.add(new ExcelField(4, "订单编号", "orderNo", 15000));
fieldList.add(new ExcelField(5, "实际净重", "weight", 5000));
fieldList.add(new ExcelField(6, "实际运费金额", "freight", 5000));
......
package com.clx.performance.sqlProvider;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.param.app.PageOrderChildOfDriverParam;
......@@ -16,7 +15,6 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论