提交 6df86396 authored 作者: aiqingguo's avatar aiqingguo

司机积分定时任务、运单完成积分统计

上级 ef2ad721
package com.clx.performance.param.mq;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 积分货单新增
* @Date: 2023-10-13 11:02:01
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class IntegralOrderAddMqParam {
@ApiModelProperty(value = "货单编号", example = "1000000000000")
private String orderGoodsNo;
@ApiModelProperty(value = "发货地址id", example = "1")
private Integer sendAddressId;
@ApiModelProperty(value = "发货地址", example = "北京")
private String sendAddress;
@ApiModelProperty(value = "收货地址id", example = "2")
private Integer receiveAddressId;
@ApiModelProperty(value = "收货地址", example = "上海")
private String receiveAddress;
@ApiModelProperty(value = "货单类型:1优质单 2普通单 3流水单 4支援单", example = "上海")
private Integer orderType;
}
......@@ -24,7 +24,7 @@ public class IntegralOrderVO {
@ApiModelProperty(value = "id", example = "1")
private Integer id;
@ApiModelProperty(value = "货单编号", example = "1000000000000")
private String orderNo;
private String orderGoodsNo;
@ApiModelProperty(value = "发货地址id", example = "1")
private Integer sendAddressId;
@ApiModelProperty(value = "发货地址", example = "北京")
......
......@@ -61,6 +61,18 @@ public class RabbitOrderIntegralConfig {
return BindingBuilder.bind(integralTruckAddQueue()).to(integralDefaultExchange()).with(RabbitKeyIntegralConstants.INTEGRAL_TRUCK_ADD_ROUTING_KEY);
}
/**
* 积分车辆新增
*/
@Bean
public Queue integralOrderGoodsAddQueue() {
return new Queue(RabbitKeyIntegralConstants.INTEGRAL_ORDER_GOODS_ADD_QUEUE);
}
@Bean
public Binding integralOrderGoodsAddQueueBinding() {
return BindingBuilder.bind(integralOrderGoodsAddQueue()).to(integralDefaultExchange()).with(RabbitKeyIntegralConstants.INTEGRAL_ORDER_GOODS_ADD_ROUTING_KEY);
}
/**
* 积分记录新增
*/
......
......@@ -39,6 +39,12 @@ public class RabbitKeyIntegralConstants {
public static final String INTEGRAL_TRUCK_ADD_QUEUE = PREFIX +"truck.add"+QUEUE;
public static final String INTEGRAL_TRUCK_ADD_ROUTING_KEY = PREFIX +"truck.add"+QUEUE_ROUTING_KEY;
/**
* 新增积分货单
*/
public static final String INTEGRAL_ORDER_GOODS_ADD_QUEUE = PREFIX +"orderGoods.add"+QUEUE;
public static final String INTEGRAL_ORDER_GOODS_ADD_ROUTING_KEY = PREFIX +"orderGoods.add"+QUEUE_ROUTING_KEY;
/**
* 新增积分记录
*/
......
......@@ -5,9 +5,12 @@ import com.clx.performance.mapper.IntegralOrderMapper;
import com.clx.performance.model.IntegralOrder;
import com.clx.performance.param.pc.pageIntegralOrderParam;
import com.clx.performance.vo.pc.IntegralOrderVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author: aiqinguo
* @Description: 积分货单
......@@ -20,4 +23,8 @@ public interface IntegralOrderDao extends BaseDao<IntegralOrderMapper, IntegralO
IPage<IntegralOrderVO> pageByParam(pageIntegralOrderParam param);
List<String> getAllOrderNoList();
Optional<IntegralOrder> getByOrderGoodsNo(String orderGoodsNo);
}
......@@ -22,4 +22,9 @@ public interface IntegralRecordDao extends BaseDao<IntegraRecordMapper, Integral
IntegralRecord selectByStatisticsIdAndType(@Param("statisticsId") Integer statisticsId, @Param("type") Integer type);
Integer sumByStatisticsIdAndTypeAndTime(@Param("statisticsId") Integer statisticsId,
@Param("type") Integer type,
@Param("beginTime")String beginTime,
@Param("endTime")String endTime);
}
......@@ -14,6 +14,7 @@ import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
......@@ -66,4 +67,10 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> getOrderChildByOrderNo(String orderNo);
boolean updateArriveSendAddress(OrderChild orderChild);
int countCompleteByTruckNoAndPayFinishTime(@Param("truckNo") String truckNo,
@Param("beginTime")String beginTime,
@Param("endTime")String endTime,
@Param("list")List<String> orderNoList
);
}
......@@ -7,9 +7,12 @@ import com.clx.performance.mapper.IntegralOrderMapper;
import com.clx.performance.model.IntegralOrder;
import com.clx.performance.param.pc.pageIntegralOrderParam;
import com.clx.performance.vo.pc.IntegralOrderVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @Author: aiqinguo
* @Description: 积分货单
......@@ -30,4 +33,19 @@ public class IntegralOrderDaoImpl extends BaseDaoImpl<IntegralOrderMapper, Integ
return baseMapper.pageByParam(Page.of(param.getPage(), param.getPageSize()), param);
}
@Override
public List<String> getAllOrderNoList() {
return baseMapper.getAllOrderNoList();
}
@Override
public Optional<IntegralOrder> getByOrderGoodsNo(String orderGoodsNo) {
return Optional.of(orderGoodsNo)
.map(item -> lQrWrapper()
.eq(IntegralOrder::getOrderGoodsNo, item)
)
.map(super::getOne);
}
}
......@@ -40,4 +40,9 @@ public class IntegralRecordDaoImpl extends BaseDaoImpl<IntegraRecordMapper, Inte
.eq(IntegralRecord::getType, type));
}
@Override
public Integer sumByStatisticsIdAndTypeAndTime(Integer statisticsId, Integer type, String beginTime, String endTime) {
return baseMapper.sumByStatisticsIdAndTypeAndTime(statisticsId, type, beginTime, endTime);
}
}
......@@ -80,7 +80,7 @@ public class IntegralTruckDaoImpl extends BaseDaoImpl<IntegralTruckMapper, Integ
public List<IntegralTruck> selectListByTime(String beginTime, String endTime) {
return list(lQrWrapper()
.ge(IntegralTruck::getCreateTime, beginTime)
.le(IntegralTruck::getCreateTime, endTime));
.lt(IntegralTruck::getCreateTime, endTime));
}
}
......@@ -226,6 +226,18 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
}
@Override
public int countCompleteByTruckNoAndPayFinishTime(String truckNo, String beginTime, String endTime, List<String> orderNoList) {
return (int)count(lQrWrapper()
.eq(OrderChild::getTruckNo, truckNo)
.ge(OrderChild::getPayTime, beginTime)
.le(OrderChild::getPayTime, endTime)
.ge(OrderChild::getStatus, OrderChildEnum.Status.CREATED.getCode())
.le(OrderChild::getStatus, OrderChildEnum.Status.COMPLETE.getCode())
.in(OrderChild::getOrderNo, orderNoList)
);
}
@Override
public List<OrderChild> getOrderChildByOrderNo(String orderNo) {
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper();
......
......@@ -29,8 +29,8 @@ public class IntegralJob {
* 下周车辆初始化 (周日)
* @Scheduled(cron = "0 0 22 ? * 7")
*/
@XxlJob("favoriteStatusSyncTask")
public void favoriteStatusSyncTask() {
@XxlJob("nextWeekTruckInit")
public void nextWeekTruckInit() {
jobHandlerService.handler("司机积分-下周车辆初始化", integralJobHandlerService::nextWeekTruckInit);
}
......
......@@ -36,7 +36,7 @@ public class IntegralDelayListener {
}
void process(MqDelay mq){
Message message = MessageBuilder.withBody(JSON.toJSONString(mq).getBytes()).build();
Message message = MessageBuilder.withBody(JSON.toJSONString(mq.getData()).getBytes()).build();
rabbitTemplate.send(mq.getExchange(), mq.getRouterKey(), message);
}
......
package com.clx.performance.listener;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.constant.RabbitKeyIntegralConstants;
import com.clx.performance.param.mq.IntegralOrderAddMqParam;
import com.clx.performance.service.IntegralMqHandlerService;
import com.clx.performance.utils.MqWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 积分货单新增 mq
* @Date: 2023-10-13 11:32:08
* @Version: 1.0
*/
@Slf4j
@Component
public class IntegralOrderGoodsAddListener {
@Autowired
private IntegralMqHandlerService integralMqHandlerService;
@RabbitListener(queues = RabbitKeyIntegralConstants.INTEGRAL_ORDER_GOODS_ADD_QUEUE)
public void process(Message message) {
try{
log.info("司机积分-新增货单, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<IntegralOrderAddMqParam>>(){}).getData());
}catch (Exception e){
log.info("司机积分-新增货单 失败",e);
}
}
private void process(IntegralOrderAddMqParam mq){
integralMqHandlerService.orderGoodsAdd(mq);
}
public static void main(String[] args) {
String a = "{\"data\":{\"data\":{\"orderType\":1,\"receiveAddressId\":2,\"receiveAddress\":\"收货地址\",\"orderGoodsNo\":\"PT2023092100031\",\"sendAddressId\":1,\"sendAddress\":\"发货地址\"},\"createTime\":\"2023-10-13 15:27:05\"},\"exchange\":\"clx-performance.integral.default.exchange\",\"routerKey\":\"clx-performance.integral.orderGoods.add.routing.key\"}";
}
}
package com.clx.performance.listener;
import com.clx.order.enums.OrderEnum;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.IntegralMqService;
import com.msl.common.base.Optional;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -22,6 +22,9 @@ public class RabbitOrderGoodsStatusOnHandler {
@Autowired
private OrderGoodsDao orderGoodsDao;
@Autowired
private IntegralMqService integralMqService;
@RabbitListener(queues = RabbitKeyConstants.ORDER_GOODS_ON_DEAD_QUEUE)
public void onMessage(String message) {
log.info("处理货单状态由已挂单变为挂弹中监听器执行,货单ID为{}", message);
......@@ -37,6 +40,12 @@ public class RabbitOrderGoodsStatusOnHandler {
if (OrderGoodsStatusEnum.Status.CREATED.getCode().equals(orderGoods.getOrderGoodsStatus())) {
log.info("处理货单状态由已挂单变为挂单中监听器执行,从状态{}-----变更为{}", orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.PAYING.getName());
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoods.getOrderGoodsNo(), OrderGoodsStatusEnum.Status.PAYING.getCode());
// 添加积分货单
integralMqService.orderGoodsAdd(orderGoods.getOrderGoodsNo(),
orderGoods.getSendAddressId(), orderGoods.getSendAddressShorter(),
orderGoods.getReceiveAddressId(), orderGoods.getReceiveAddressShorter());
}
}
}
......@@ -10,6 +10,7 @@ import com.clx.performance.sqlProvider.IntegralTruckSqlProvider;
import com.clx.performance.vo.pc.IntegralRecordVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
/**
......@@ -25,7 +26,13 @@ public interface IntegraRecordMapper extends BaseMapper<IntegralRecord> {
/**
* @see IntegralRecordSqlProvider#pageByParam(com.baomidou.mybatisplus.extension.plugins.pagination.Page, com.clx.performance.param.pc.pageIntegralStatisticsDetailParam)
*/
@SelectProvider(type = IntegralTruckSqlProvider.class, method = "pageByParam")
@SelectProvider(type = IntegralRecordSqlProvider.class, method = "pageByParam")
IPage<IntegralRecordVO> pageByParam(@Param("page") Page<IntegralRecordVO> page, @Param("param") pageIntegralStatisticsDetailParam param);
@Select("select sum(integral) from integral_record where statistics_id = #{statisticsId} and type = #{type} and create_time >= #{beginTime} and create_time < #{endTime}")
Integer sumByStatisticsIdAndTypeAndTime(@Param("statisticsId") Integer statisticsId,
@Param("type") Integer type,
@Param("beginTime")String beginTime,
@Param("endTime")String endTime);
}
\ No newline at end of file
......@@ -13,6 +13,8 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import java.util.List;
/**
* @Author: aiqinguo
* @Description: 积分货单
......@@ -32,7 +34,10 @@ public interface IntegralOrderMapper extends BaseMapper<IntegralOrder> {
/**
* @see IntegralOrderSqlProvider#pageByParam(com.baomidou.mybatisplus.extension.plugins.pagination.Page, com.clx.performance.param.pc.pageIntegralOrderParam)
*/
@SelectProvider(type = IntegralTruckSqlProvider.class, method = "pageByParam")
@SelectProvider(type = IntegralOrderSqlProvider.class, method = "pageByParam")
IPage<IntegralOrderVO> pageByParam(@Param("page") Page<IntegralOrderVO> page, @Param("param") pageIntegralOrderParam param);
@Select("select order_no from integral_order ")
List<String> getAllOrderNoList();
}
\ No newline at end of file
......@@ -28,7 +28,7 @@ public interface IntegralStatisticsMapper extends BaseMapper<IntegralStatistics>
/**
* @see IntegralStatisticsSqlProvider#pageByParam(com.baomidou.mybatisplus.extension.plugins.pagination.Page, com.clx.performance.param.pc.PageIntegralStatisticsParam)
*/
@SelectProvider(type = IntegralTruckSqlProvider.class, method = "pageByParam")
@SelectProvider(type = IntegralStatisticsSqlProvider.class, method = "pageByParam")
IPage<IntegralStatisticsVO> pageByParam(@Param("page") Page<IntegralStatisticsVO> page, @Param("param") PageIntegralStatisticsParam param);
/**
......
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.model.IntegralTruck;
import com.clx.performance.param.pc.PageIntegralTruckParam;
import com.clx.performance.param.pc.PageIntegralTruckRankParam;
import com.clx.performance.sqlProvider.IntegralTruckSqlProvider;
import com.clx.performance.vo.pc.IntegralTruckVO;
import org.apache.ibatis.annotations.Mapper;
......
......@@ -18,6 +18,7 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import java.util.List;
@Mapper
......@@ -46,4 +47,5 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
@Select("select count(1) from order_child where order_goods_no = #{orderGoodsNo} and status < 110")
int countValidByOrderGoodsNo(String orderGoodsNo);
}
\ No newline at end of file
......@@ -74,6 +74,7 @@ public class OrderChild implements HasKey<Integer> {
private LocalDateTime payTime; //支付时间(抢单时间)
private LocalDateTime arriveSendTime; //到达货源地时间
private LocalDateTime loadTime; //装车时间
private LocalDateTime arriveReceiveTime; //到达目的地时间
private LocalDateTime unloadTime; //卸车时间
private LocalDateTime settleTime; //结算时间
private LocalDateTime cancelTime; //取消时间
......
package com.clx.performance.service;
import com.clx.performance.model.IntegralTruck;
import com.clx.performance.utils.LocalDateTimeUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class IntegralJobHandlerService {
public interface IntegralJobHandlerService {
void nextWeekTruckInit();
@Autowired
private IntegralMqService integralMqService;
void weekTruckStatistics();
void weekTruckStatistics(IntegralTruck truck);
/**
* 下周车辆初始化
*/
public void nextWeekTruckInit(){
// 发送mq (下周车辆初始化)
integralMqService.nextWeekTruckInit(LocalDateTimeUtils.getWeekStart());
}
/**
* 车辆周统计 (结算上周积分)
*/
public void weekTruckStatistics(){
// 发送mq (下周车辆初始化)
integralMqService.weekTruckStatistics(LocalDateTimeUtils.getWeekStart());
}
public void weekTruckStatistics(IntegralTruck truck){
// 发送mq (下周车辆初始化)
integralMqService.weekTruckStatistics(LocalDateTimeUtils.getWeekStart(), truck.getTruckNo());
}
/**
* 车辆保护取消
*/
public void truckProtectionCancel(IntegralTruck truck){
// 发送mq (车辆保护取消)
integralMqService.truckProtectionCancel(LocalDateTimeUtils.getWeekStart(), truck.getTruckNo());
}
void truckProtectionCancel(IntegralTruck truck);
}
......@@ -5,6 +5,7 @@ import com.clx.performance.param.mq.*;
public interface IntegralMqHandlerService {
void truckAdd(IntegralTuckAddMqParam mq);
void orderGoodsAdd(IntegralOrderAddMqParam mq);
void recordAdd(IntegralRecordAddMqParam mq);
......
......@@ -4,6 +4,10 @@ public interface IntegralMqService {
void truckAdd(Integer statisticsId, String truckNo);
void orderGoodsAdd(String orderGoodsNo,
Integer sendAddressId, String sendAddress,
Integer receiveAddressId, String receiveAddress);
void integralRecordAdd(Integer statisticsId, String truckNo, Integer type, Integer integral, String remark);
void nextWeekTruckInit(String statisticsDate);
......
package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.*;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
......@@ -36,6 +37,7 @@ public interface OrderChildService {
void updateLoadAndUnloadAgain(OrderChildLoadAndUnloadAgainParam param);
void updateDriverConfirm(OrderChildDriverConfirmParam param);
void updateSettlement(OrderChild orderChild);
void updateDriverCancel(OrderChildDriverCancelParam param);
void updateCarrierCancel(OrderChildCarrierCancelParam param);
......
package com.clx.performance.service.impl;
import com.clx.performance.model.IntegralTruck;
import com.clx.performance.service.IntegralJobHandlerService;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.utils.LocalDateTimeUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class IntegralJobHandlerServiceImpl implements IntegralJobHandlerService {
@Autowired
private IntegralMqService integralMqService;
/**
* 下周车辆初始化
*/
@Override
public void nextWeekTruckInit(){
// 发送mq (下周车辆初始化)
integralMqService.nextWeekTruckInit(LocalDateTimeUtils.getWeekStart());
}
/**
* 车辆周统计 (结算上周积分)
*/
@Override
public void weekTruckStatistics(){
// 发送mq (下周车辆初始化)
integralMqService.weekTruckStatistics(LocalDateTimeUtils.getWeekStart());
}
@Override
public void weekTruckStatistics(IntegralTruck truck){
// 发送mq (下周车辆初始化)
integralMqService.weekTruckStatistics(LocalDateTimeUtils.getWeekStart(), truck.getTruckNo());
}
/**
* 车辆保护取消
*/
@Override
public void truckProtectionCancel(IntegralTruck truck){
// 发送mq (车辆保护取消)
integralMqService.truckProtectionCancel(LocalDateTimeUtils.getWeekStart(), truck.getTruckNo());
}
}
......@@ -2,11 +2,9 @@ package com.clx.performance.service.impl;
import com.alibaba.fastjson.JSON;
import com.clx.performance.constant.RabbitKeyIntegralConstants;
import com.clx.performance.param.mq.IntegralNextWeekTruckInitMqParam;
import com.clx.performance.param.mq.IntegralOrderChildFinishMqParam;
import com.clx.performance.param.mq.IntegralTruckProtectionCancelMqParam;
import com.clx.performance.param.mq.IntegralWeekTruckStatisticsMqParam;
import com.clx.performance.param.mq.*;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.utils.MqDelay;
import com.clx.performance.utils.MqWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
......@@ -38,7 +36,7 @@ public class IntegralMqServiceImpl implements IntegralMqService {
@Override
public void truckAdd(Integer statisticsId, String truckNo){
// IntegralTuckAddMQ mq = new IntegralTuckAddMQ();
// IntegralTuckAddMqParam mq = new IntegralTuckAddMqParam();
// mq.setStatisticsId(statisticsId);
// mq.setTruckNo(truckNo);
// Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(mq)).getBytes()).build();
......@@ -49,13 +47,36 @@ public class IntegralMqServiceImpl implements IntegralMqService {
}
/**
* 新增货单 (performance)
*/
@Override
public void orderGoodsAdd(String orderGoodsNo,
Integer sendAddressId, String sendAddress,
Integer receiveAddressId, String receiveAddress){
IntegralOrderAddMqParam mq = new IntegralOrderAddMqParam();
mq.setOrderGoodsNo(orderGoodsNo);
mq.setOrderType(1);
mq.setSendAddressId(sendAddressId);
mq.setSendAddress(sendAddress);
mq.setReceiveAddressId(receiveAddressId);
mq.setReceiveAddress(receiveAddress);
MqDelay<MqWrapper<IntegralOrderAddMqParam>> delay = new MqDelay<>(RabbitKeyIntegralConstants.DEFAULT_EXCHANGE, RabbitKeyIntegralConstants.INTEGRAL_ORDER_GOODS_ADD_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyIntegralConstants.DEFAULT_EXCHANGE, RabbitKeyIntegralConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
/**
* 新增积分记录 (performance)
*/
@Override
public void integralRecordAdd(Integer statisticsId, String truckNo, Integer type, Integer integral, String remark){
// IntegralRecordAddMQ mq = new IntegralRecordAddMQ();
// IntegralRecordAddMqParam mq = new IntegralRecordAddMqParam();
// mq.setStatisticsId(statisticsId);
// mq.setTruckNo(truckNo);
// mq.setType(type);
......@@ -130,8 +151,10 @@ public class IntegralMqServiceImpl implements IntegralMqService {
IntegralOrderChildFinishMqParam mq = new IntegralOrderChildFinishMqParam();
mq.setChildNo(childNo);
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(mq)).getBytes()).build();
rabbitTemplate.send(RabbitKeyIntegralConstants.DEFAULT_EXCHANGE, RabbitKeyIntegralConstants.INTEGRAL_ORDER_CHILD_FINISH_ROUTING_KEY, message);
MqDelay<MqWrapper<IntegralOrderChildFinishMqParam>> delay = new MqDelay<>(RabbitKeyIntegralConstants.DEFAULT_EXCHANGE, RabbitKeyIntegralConstants.INTEGRAL_ORDER_CHILD_FINISH_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyIntegralConstants.DEFAULT_EXCHANGE, RabbitKeyIntegralConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
......
......@@ -29,16 +29,7 @@ public class IntegralStatisticsServiceImpl implements IntegralStatisticsService
private final IntegralRecordDao integralRecordDao;
private IntegralTruckDao integralTruckDao;
/**
* 新手积分计算
*/
@Override
public int protectionIntegralCalc(String statisticsDate){
int day = diffDay(statisticsDate, LocalDateTimeUtils.getStringDayStart());
if (day >= 7) {return 0;}
return (7-day)*30;
}
@Override
public IPage<IntegralStatisticsVO> pageStatisticsList(PageIntegralStatisticsParam param) {
......@@ -63,6 +54,17 @@ public class IntegralStatisticsServiceImpl implements IntegralStatisticsService
}
/**
* 新手积分计算
*/
@Override
public int protectionIntegralCalc(String statisticsDate){
int day = diffDay(statisticsDate, LocalDateTimeUtils.getStringDayStart());
if (day >= 7) {return 0;}
return (7-day)*30;
}
@Override
public int protectionIntegralCalc(String createTime, String statisticsDate){
int day = diffDay(LocalDateTimeUtils.getStringDayStart(createTime), statisticsDate);
......
......@@ -23,10 +23,7 @@ import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderChildPoundLogService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.*;
import com.clx.performance.struct.*;
import com.clx.performance.utils.gd.GdService;
import com.clx.performance.utils.spring.ApplicationContextUtils;
......@@ -93,6 +90,8 @@ public class OrderChildServiceImpl implements OrderChildService {
private final OrderFeign orderFeign;
private final RedissonClient redissonClient;
private final IntegralMqService integralMqService;
@Override
public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) {
......@@ -894,6 +893,27 @@ public class OrderChildServiceImpl implements OrderChildService {
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(),
OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 结算
updateSettlement(orderChild);
}
@Override
public void updateSettlement(OrderChild orderChild) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
String childNo = orderChild.getChildNo();
orderChild.setStatus(OrderChildEnum.Status.UNSETTLE.getCode());
orderChildDao.updateDriverConfirm(orderChild);
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(),
OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 运单结束
orderChildFinish(orderChild);
}
@Override
......@@ -958,6 +978,9 @@ public class OrderChildServiceImpl implements OrderChildService {
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CANCEL.getCode(),
OrderChildLogEnum.Type.DRIVER_CANCEL.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 运单结束
orderChildFinish(orderChild);
}
@Override
......@@ -1011,6 +1034,20 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildLogService.saveCarrierOrderChildLog(childNo, OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode(),
OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg(), loginUserInfo.getUserNo(),
loginUserInfo.getUserName());
// 运单结束
orderChildFinish(orderChild);
}
/**
* 运单结束
*/
private void orderChildFinish(OrderChild orderChild){
// 运单结束 统计积分
integralMqService.orderChildFinish(orderChild.getChildNo());
}
@Override
......@@ -1137,6 +1174,7 @@ public class OrderChildServiceImpl implements OrderChildService {
return result;
}
/**
* 更新货单数据
*/
......
......@@ -19,8 +19,8 @@ public class IntegralStatisticsSqlProvider {
FROM("integral_statistics");
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("statistics_date >= #{param.beginTime}");}
if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("statistics_date <= #{param.endTime}");}
ORDER_BY("truck_no asc, statistics_date desc, integral desc ");
}}.toString();
......
......@@ -2,9 +2,11 @@ package com.clx.performance.sqlProvider;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.pc.PageIntegralTruckParam;
import com.clx.performance.param.pc.PageIntegralTruckRankParam;
import com.clx.performance.vo.pc.IntegralTruckVO;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.jdbc.SQL;
import java.util.Objects;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论