提交 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 { ...@@ -24,7 +24,7 @@ public class IntegralOrderVO {
@ApiModelProperty(value = "id", example = "1") @ApiModelProperty(value = "id", example = "1")
private Integer id; private Integer id;
@ApiModelProperty(value = "货单编号", example = "1000000000000") @ApiModelProperty(value = "货单编号", example = "1000000000000")
private String orderNo; private String orderGoodsNo;
@ApiModelProperty(value = "发货地址id", example = "1") @ApiModelProperty(value = "发货地址id", example = "1")
private Integer sendAddressId; private Integer sendAddressId;
@ApiModelProperty(value = "发货地址", example = "北京") @ApiModelProperty(value = "发货地址", example = "北京")
......
...@@ -61,6 +61,18 @@ public class RabbitOrderIntegralConfig { ...@@ -61,6 +61,18 @@ public class RabbitOrderIntegralConfig {
return BindingBuilder.bind(integralTruckAddQueue()).to(integralDefaultExchange()).with(RabbitKeyIntegralConstants.INTEGRAL_TRUCK_ADD_ROUTING_KEY); 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 { ...@@ -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_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_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; ...@@ -5,9 +5,12 @@ import com.clx.performance.mapper.IntegralOrderMapper;
import com.clx.performance.model.IntegralOrder; import com.clx.performance.model.IntegralOrder;
import com.clx.performance.param.pc.pageIntegralOrderParam; import com.clx.performance.param.pc.pageIntegralOrderParam;
import com.clx.performance.vo.pc.IntegralOrderVO; import com.clx.performance.vo.pc.IntegralOrderVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
* @Description: 积分货单 * @Description: 积分货单
...@@ -20,4 +23,8 @@ public interface IntegralOrderDao extends BaseDao<IntegralOrderMapper, IntegralO ...@@ -20,4 +23,8 @@ public interface IntegralOrderDao extends BaseDao<IntegralOrderMapper, IntegralO
IPage<IntegralOrderVO> pageByParam(pageIntegralOrderParam param); IPage<IntegralOrderVO> pageByParam(pageIntegralOrderParam param);
List<String> getAllOrderNoList();
Optional<IntegralOrder> getByOrderGoodsNo(String orderGoodsNo);
} }
...@@ -22,4 +22,9 @@ public interface IntegralRecordDao extends BaseDao<IntegraRecordMapper, Integral ...@@ -22,4 +22,9 @@ public interface IntegralRecordDao extends BaseDao<IntegraRecordMapper, Integral
IntegralRecord selectByStatisticsIdAndType(@Param("statisticsId") Integer statisticsId, @Param("type") Integer type); 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; ...@@ -14,6 +14,7 @@ import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO; import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
...@@ -66,4 +67,10 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -66,4 +67,10 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> getOrderChildByOrderNo(String orderNo); List<OrderChild> getOrderChildByOrderNo(String orderNo);
boolean updateArriveSendAddress(OrderChild orderChild); 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; ...@@ -7,9 +7,12 @@ import com.clx.performance.mapper.IntegralOrderMapper;
import com.clx.performance.model.IntegralOrder; import com.clx.performance.model.IntegralOrder;
import com.clx.performance.param.pc.pageIntegralOrderParam; import com.clx.performance.param.pc.pageIntegralOrderParam;
import com.clx.performance.vo.pc.IntegralOrderVO; import com.clx.performance.vo.pc.IntegralOrderVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
* @Description: 积分货单 * @Description: 积分货单
...@@ -30,4 +33,19 @@ public class IntegralOrderDaoImpl extends BaseDaoImpl<IntegralOrderMapper, Integ ...@@ -30,4 +33,19 @@ public class IntegralOrderDaoImpl extends BaseDaoImpl<IntegralOrderMapper, Integ
return baseMapper.pageByParam(Page.of(param.getPage(), param.getPageSize()), param); 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 ...@@ -40,4 +40,9 @@ public class IntegralRecordDaoImpl extends BaseDaoImpl<IntegraRecordMapper, Inte
.eq(IntegralRecord::getType, type)); .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 ...@@ -80,7 +80,7 @@ public class IntegralTruckDaoImpl extends BaseDaoImpl<IntegralTruckMapper, Integ
public List<IntegralTruck> selectListByTime(String beginTime, String endTime) { public List<IntegralTruck> selectListByTime(String beginTime, String endTime) {
return list(lQrWrapper() return list(lQrWrapper()
.ge(IntegralTruck::getCreateTime, beginTime) .ge(IntegralTruck::getCreateTime, beginTime)
.le(IntegralTruck::getCreateTime, endTime)); .lt(IntegralTruck::getCreateTime, endTime));
} }
} }
...@@ -226,6 +226,18 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -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 @Override
public List<OrderChild> getOrderChildByOrderNo(String orderNo) { public List<OrderChild> getOrderChildByOrderNo(String orderNo) {
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper(); LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper();
......
...@@ -29,8 +29,8 @@ public class IntegralJob { ...@@ -29,8 +29,8 @@ public class IntegralJob {
* 下周车辆初始化 (周日) * 下周车辆初始化 (周日)
* @Scheduled(cron = "0 0 22 ? * 7") * @Scheduled(cron = "0 0 22 ? * 7")
*/ */
@XxlJob("favoriteStatusSyncTask") @XxlJob("nextWeekTruckInit")
public void favoriteStatusSyncTask() { public void nextWeekTruckInit() {
jobHandlerService.handler("司机积分-下周车辆初始化", integralJobHandlerService::nextWeekTruckInit); jobHandlerService.handler("司机积分-下周车辆初始化", integralJobHandlerService::nextWeekTruckInit);
} }
......
...@@ -36,7 +36,7 @@ public class IntegralDelayListener { ...@@ -36,7 +36,7 @@ public class IntegralDelayListener {
} }
void process(MqDelay mq){ 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); 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; package com.clx.performance.listener;
import com.clx.order.enums.OrderEnum;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderGoodsStatusEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.IntegralMqService;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -22,6 +22,9 @@ public class RabbitOrderGoodsStatusOnHandler { ...@@ -22,6 +22,9 @@ public class RabbitOrderGoodsStatusOnHandler {
@Autowired @Autowired
private OrderGoodsDao orderGoodsDao; private OrderGoodsDao orderGoodsDao;
@Autowired
private IntegralMqService integralMqService;
@RabbitListener(queues = RabbitKeyConstants.ORDER_GOODS_ON_DEAD_QUEUE) @RabbitListener(queues = RabbitKeyConstants.ORDER_GOODS_ON_DEAD_QUEUE)
public void onMessage(String message) { public void onMessage(String message) {
log.info("处理货单状态由已挂单变为挂弹中监听器执行,货单ID为{}", message); log.info("处理货单状态由已挂单变为挂弹中监听器执行,货单ID为{}", message);
...@@ -37,6 +40,12 @@ public class RabbitOrderGoodsStatusOnHandler { ...@@ -37,6 +40,12 @@ public class RabbitOrderGoodsStatusOnHandler {
if (OrderGoodsStatusEnum.Status.CREATED.getCode().equals(orderGoods.getOrderGoodsStatus())) { if (OrderGoodsStatusEnum.Status.CREATED.getCode().equals(orderGoods.getOrderGoodsStatus())) {
log.info("处理货单状态由已挂单变为挂单中监听器执行,从状态{}-----变更为{}", orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.PAYING.getName()); log.info("处理货单状态由已挂单变为挂单中监听器执行,从状态{}-----变更为{}", orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.PAYING.getName());
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoods.getOrderGoodsNo(), OrderGoodsStatusEnum.Status.PAYING.getCode()); 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; ...@@ -10,6 +10,7 @@ import com.clx.performance.sqlProvider.IntegralTruckSqlProvider;
import com.clx.performance.vo.pc.IntegralRecordVO; import com.clx.performance.vo.pc.IntegralRecordVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider; import org.apache.ibatis.annotations.SelectProvider;
/** /**
...@@ -25,7 +26,13 @@ public interface IntegraRecordMapper extends BaseMapper<IntegralRecord> { ...@@ -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) * @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); 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; ...@@ -13,6 +13,8 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider; import org.apache.ibatis.annotations.SelectProvider;
import java.util.List;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
* @Description: 积分货单 * @Description: 积分货单
...@@ -32,7 +34,10 @@ public interface IntegralOrderMapper extends BaseMapper<IntegralOrder> { ...@@ -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) * @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); 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> ...@@ -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) * @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); IPage<IntegralStatisticsVO> pageByParam(@Param("page") Page<IntegralStatisticsVO> page, @Param("param") PageIntegralStatisticsParam param);
/** /**
......
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.model.IntegralTruck; import com.clx.performance.model.IntegralTruck;
import com.clx.performance.param.pc.PageIntegralTruckParam; import com.clx.performance.param.pc.PageIntegralTruckParam;
import com.clx.performance.param.pc.PageIntegralTruckRankParam;
import com.clx.performance.sqlProvider.IntegralTruckSqlProvider; import com.clx.performance.sqlProvider.IntegralTruckSqlProvider;
import com.clx.performance.vo.pc.IntegralTruckVO; import com.clx.performance.vo.pc.IntegralTruckVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
......
...@@ -18,6 +18,7 @@ import org.apache.ibatis.annotations.Param; ...@@ -18,6 +18,7 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider; import org.apache.ibatis.annotations.SelectProvider;
import java.util.List;
@Mapper @Mapper
...@@ -46,4 +47,5 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> { ...@@ -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") @Select("select count(1) from order_child where order_goods_no = #{orderGoodsNo} and status < 110")
int countValidByOrderGoodsNo(String orderGoodsNo); int countValidByOrderGoodsNo(String orderGoodsNo);
} }
\ No newline at end of file
...@@ -74,6 +74,7 @@ public class OrderChild implements HasKey<Integer> { ...@@ -74,6 +74,7 @@ public class OrderChild implements HasKey<Integer> {
private LocalDateTime payTime; //支付时间(抢单时间) private LocalDateTime payTime; //支付时间(抢单时间)
private LocalDateTime arriveSendTime; //到达货源地时间 private LocalDateTime arriveSendTime; //到达货源地时间
private LocalDateTime loadTime; //装车时间 private LocalDateTime loadTime; //装车时间
private LocalDateTime arriveReceiveTime; //到达目的地时间
private LocalDateTime unloadTime; //卸车时间 private LocalDateTime unloadTime; //卸车时间
private LocalDateTime settleTime; //结算时间 private LocalDateTime settleTime; //结算时间
private LocalDateTime cancelTime; //取消时间 private LocalDateTime cancelTime; //取消时间
......
package com.clx.performance.service; package com.clx.performance.service;
import com.clx.performance.model.IntegralTruck; 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 public interface IntegralJobHandlerService {
@Service
public class IntegralJobHandlerService {
void nextWeekTruckInit();
@Autowired void weekTruckStatistics();
private IntegralMqService integralMqService; void weekTruckStatistics(IntegralTruck truck);
void truckProtectionCancel(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());
}
} }
...@@ -5,6 +5,7 @@ import com.clx.performance.param.mq.*; ...@@ -5,6 +5,7 @@ import com.clx.performance.param.mq.*;
public interface IntegralMqHandlerService { public interface IntegralMqHandlerService {
void truckAdd(IntegralTuckAddMqParam mq); void truckAdd(IntegralTuckAddMqParam mq);
void orderGoodsAdd(IntegralOrderAddMqParam mq);
void recordAdd(IntegralRecordAddMqParam mq); void recordAdd(IntegralRecordAddMqParam mq);
......
...@@ -4,6 +4,10 @@ public interface IntegralMqService { ...@@ -4,6 +4,10 @@ public interface IntegralMqService {
void truckAdd(Integer statisticsId, String truckNo); 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 integralRecordAdd(Integer statisticsId, String truckNo, Integer type, Integer integral, String remark);
void nextWeekTruckInit(String statisticsDate); void nextWeekTruckInit(String statisticsDate);
......
package com.clx.performance.service; package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.*; import com.clx.performance.param.app.*;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam; import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam; import com.clx.performance.param.pc.PageCarrierOrderChildParam;
...@@ -36,6 +37,7 @@ public interface OrderChildService { ...@@ -36,6 +37,7 @@ public interface OrderChildService {
void updateLoadAndUnloadAgain(OrderChildLoadAndUnloadAgainParam param); void updateLoadAndUnloadAgain(OrderChildLoadAndUnloadAgainParam param);
void updateDriverConfirm(OrderChildDriverConfirmParam param); void updateDriverConfirm(OrderChildDriverConfirmParam param);
void updateSettlement(OrderChild orderChild);
void updateDriverCancel(OrderChildDriverCancelParam param); void updateDriverCancel(OrderChildDriverCancelParam param);
void updateCarrierCancel(OrderChildCarrierCancelParam 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; ...@@ -2,11 +2,9 @@ package com.clx.performance.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.clx.performance.constant.RabbitKeyIntegralConstants; import com.clx.performance.constant.RabbitKeyIntegralConstants;
import com.clx.performance.param.mq.IntegralNextWeekTruckInitMqParam; import com.clx.performance.param.mq.*;
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.service.IntegralMqService; import com.clx.performance.service.IntegralMqService;
import com.clx.performance.utils.MqDelay;
import com.clx.performance.utils.MqWrapper; import com.clx.performance.utils.MqWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
...@@ -38,7 +36,7 @@ public class IntegralMqServiceImpl implements IntegralMqService { ...@@ -38,7 +36,7 @@ public class IntegralMqServiceImpl implements IntegralMqService {
@Override @Override
public void truckAdd(Integer statisticsId, String truckNo){ public void truckAdd(Integer statisticsId, String truckNo){
// IntegralTuckAddMQ mq = new IntegralTuckAddMQ(); // IntegralTuckAddMqParam mq = new IntegralTuckAddMqParam();
// mq.setStatisticsId(statisticsId); // mq.setStatisticsId(statisticsId);
// mq.setTruckNo(truckNo); // mq.setTruckNo(truckNo);
// Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(mq)).getBytes()).build(); // Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(mq)).getBytes()).build();
...@@ -49,13 +47,36 @@ public class IntegralMqServiceImpl implements IntegralMqService { ...@@ -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) * 新增积分记录 (performance)
*/ */
@Override @Override
public void integralRecordAdd(Integer statisticsId, String truckNo, Integer type, Integer integral, String remark){ 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.setStatisticsId(statisticsId);
// mq.setTruckNo(truckNo); // mq.setTruckNo(truckNo);
// mq.setType(type); // mq.setType(type);
...@@ -130,8 +151,10 @@ public class IntegralMqServiceImpl implements IntegralMqService { ...@@ -130,8 +151,10 @@ public class IntegralMqServiceImpl implements IntegralMqService {
IntegralOrderChildFinishMqParam mq = new IntegralOrderChildFinishMqParam(); IntegralOrderChildFinishMqParam mq = new IntegralOrderChildFinishMqParam();
mq.setChildNo(childNo); mq.setChildNo(childNo);
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(mq)).getBytes()).build(); MqDelay<MqWrapper<IntegralOrderChildFinishMqParam>> delay = new MqDelay<>(RabbitKeyIntegralConstants.DEFAULT_EXCHANGE, RabbitKeyIntegralConstants.INTEGRAL_ORDER_CHILD_FINISH_ROUTING_KEY, new MqWrapper<>(mq));
rabbitTemplate.send(RabbitKeyIntegralConstants.DEFAULT_EXCHANGE, RabbitKeyIntegralConstants.INTEGRAL_ORDER_CHILD_FINISH_ROUTING_KEY, message); 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 ...@@ -29,16 +29,7 @@ public class IntegralStatisticsServiceImpl implements IntegralStatisticsService
private final IntegralRecordDao integralRecordDao; private final IntegralRecordDao integralRecordDao;
private IntegralTruckDao integralTruckDao; 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 @Override
public IPage<IntegralStatisticsVO> pageStatisticsList(PageIntegralStatisticsParam param) { public IPage<IntegralStatisticsVO> pageStatisticsList(PageIntegralStatisticsParam param) {
...@@ -63,6 +54,17 @@ public class IntegralStatisticsServiceImpl implements IntegralStatisticsService ...@@ -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 @Override
public int protectionIntegralCalc(String createTime, String statisticsDate){ public int protectionIntegralCalc(String createTime, String statisticsDate){
int day = diffDay(LocalDateTimeUtils.getStringDayStart(createTime), statisticsDate); int day = diffDay(LocalDateTimeUtils.getStringDayStart(createTime), statisticsDate);
......
...@@ -23,10 +23,7 @@ import com.clx.performance.param.pc.OrderChildCarrierCancelParam; ...@@ -23,10 +23,7 @@ import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam; import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam; import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
import com.clx.performance.param.pc.PagePoundAuditParam; import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.service.OrderChildLogService; import com.clx.performance.service.*;
import com.clx.performance.service.OrderChildPoundLogService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.struct.*; import com.clx.performance.struct.*;
import com.clx.performance.utils.gd.GdService; import com.clx.performance.utils.gd.GdService;
import com.clx.performance.utils.spring.ApplicationContextUtils; import com.clx.performance.utils.spring.ApplicationContextUtils;
...@@ -93,6 +90,8 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -93,6 +90,8 @@ public class OrderChildServiceImpl implements OrderChildService {
private final OrderFeign orderFeign; private final OrderFeign orderFeign;
private final RedissonClient redissonClient; private final RedissonClient redissonClient;
private final IntegralMqService integralMqService;
@Override @Override
public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) { public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) {
...@@ -894,6 +893,27 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -894,6 +893,27 @@ public class OrderChildServiceImpl implements OrderChildService {
// 日志 // 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(),
OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName()); 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 @Override
...@@ -958,6 +978,9 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -958,6 +978,9 @@ public class OrderChildServiceImpl implements OrderChildService {
// 日志 // 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CANCEL.getCode(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CANCEL.getCode(),
OrderChildLogEnum.Type.DRIVER_CANCEL.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName()); OrderChildLogEnum.Type.DRIVER_CANCEL.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 运单结束
orderChildFinish(orderChild);
} }
@Override @Override
...@@ -1011,6 +1034,20 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1011,6 +1034,20 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildLogService.saveCarrierOrderChildLog(childNo, OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode(), orderChildLogService.saveCarrierOrderChildLog(childNo, OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode(),
OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg(), loginUserInfo.getUserNo(), OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg(), loginUserInfo.getUserNo(),
loginUserInfo.getUserName()); loginUserInfo.getUserName());
// 运单结束
orderChildFinish(orderChild);
}
/**
* 运单结束
*/
private void orderChildFinish(OrderChild orderChild){
// 运单结束 统计积分
integralMqService.orderChildFinish(orderChild.getChildNo());
} }
@Override @Override
...@@ -1137,6 +1174,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1137,6 +1174,7 @@ public class OrderChildServiceImpl implements OrderChildService {
return result; return result;
} }
/** /**
* 更新货单数据 * 更新货单数据
*/ */
......
...@@ -19,8 +19,8 @@ public class IntegralStatisticsSqlProvider { ...@@ -19,8 +19,8 @@ public class IntegralStatisticsSqlProvider {
FROM("integral_statistics"); FROM("integral_statistics");
if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("create_time >= #{param.beginTime}");} if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("statistics_date >= #{param.beginTime}");}
if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("create_time <= #{param.endTime}");} if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("statistics_date <= #{param.endTime}");}
ORDER_BY("truck_no asc, statistics_date desc, integral desc "); ORDER_BY("truck_no asc, statistics_date desc, integral desc ");
}}.toString(); }}.toString();
......
...@@ -2,9 +2,11 @@ package com.clx.performance.sqlProvider; ...@@ -2,9 +2,11 @@ package com.clx.performance.sqlProvider;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.pc.PageIntegralTruckParam; import com.clx.performance.param.pc.PageIntegralTruckParam;
import com.clx.performance.param.pc.PageIntegralTruckRankParam;
import com.clx.performance.vo.pc.IntegralTruckVO; import com.clx.performance.vo.pc.IntegralTruckVO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.jdbc.SQL; import org.apache.ibatis.jdbc.SQL;
import java.util.Objects; import java.util.Objects;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论