提交 133d0cdf authored 作者: aiqingguo's avatar aiqingguo

违约

上级 4d6b622f
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
@Getter
@AllArgsConstructor
public enum UserTypeEnum {
OWNER(1, "货主"),
CARRIER(2, "承运端"),
DRIVER(3, "司机");
private final Integer code;
private final String msg;
public static Optional<UserTypeEnum> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
package com.clx.performance.param.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 货主违约规则
* @Date: 2023-10-11 17:30:05
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class BreakContractDriverRecordAddMqParam {
private Integer recordId; //违规记录id
}
package com.clx.performance.param.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 违约计费明细
* @Date: 2023-10-11 17:30:05
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class BreakContractSettlementDetailAddMqParam {
private Integer settlementDetailId; //结算明细id
}
package com.clx.performance.param.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 运单取消
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class OrderChildCancelMqParam {
private String childNo; //运单编号
private Integer status; //运单状态
private Integer opUserType; //操作人类型 1货主 2承运端 3司机
private Long opUserNo; //操作人
private String opUserName; //操作人名称
}
package com.clx.performance.vo.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 到达目的地
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class OrderChildArriveReceiveAddressMqParam {
private String childNo; //运单编号
}
package com.clx.performance.vo.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 新增
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class OrderChildArriveSendAddressMqParam {
private String childNo; //运单编号
}
......@@ -61,4 +61,16 @@ public class RabbitBreakContractConfig {
return BindingBuilder.bind(breakContractOwnerRuleAddQueue()).to(breakContractDefaultExchange()).with(RabbitKeyBreakContractConstants.OWNER_RULE_ADD_ROUTING_KEY);
}
/**
* 司机违约记录新增
*/
@Bean
public Queue breakContractDriverRecordAddQueue() {
return new Queue(RabbitKeyBreakContractConstants.DRIVER_RECORD_ADD_QUEUE);
}
@Bean
public Binding breakContractDriverRecordAddQueueBinding() {
return BindingBuilder.bind(breakContractDriverRecordAddQueue()).to(breakContractDefaultExchange()).with(RabbitKeyBreakContractConstants.DRIVER_RECORD_ADD_ROUTING_KEY);
}
}
......@@ -61,6 +61,30 @@ public class RabbitOrderChildConfig {
return BindingBuilder.bind(orderChildAddQueue()).to(orderChildDefaultExchange()).with(RabbitKeyOrderChildConstants.ORDER_CHILD_ADD_ROUTING_KEY);
}
/**
* 到达货源地
*/
@Bean
public Queue orderChildArriveSendAddressQueue() {
return new Queue(RabbitKeyOrderChildConstants.ORDER_CHILD_ARRIVE_SEND_ADDRESS_QUEUE);
}
@Bean
public Binding orderChildArriveSendAddressQueueBinding() {
return BindingBuilder.bind(orderChildArriveSendAddressQueue()).to(orderChildDefaultExchange()).with(RabbitKeyOrderChildConstants.ORDER_CHILD_ARRIVE_SEND_ADDRESS_ROUTING_KEY);
}
/**
* 到达目的地
*/
@Bean
public Queue orderChildArriveReceiveAddressQueue() {
return new Queue(RabbitKeyOrderChildConstants.ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_QUEUE);
}
@Bean
public Binding orderChildArriveReceiveAddressQueueBinding() {
return BindingBuilder.bind(orderChildArriveReceiveAddressQueue()).to(orderChildDefaultExchange()).with(RabbitKeyOrderChildConstants.ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_ROUTING_KEY);
}
/**
* 司机确认收货
*/
......@@ -73,5 +97,16 @@ public class RabbitOrderChildConfig {
return BindingBuilder.bind(orderChildDriverConfirmQueue()).to(orderChildDefaultExchange()).with(RabbitKeyOrderChildConstants.ORDER_CHILD_DRIVER_CONFIRM_ROUTING_KEY);
}
/**
* 运单取消
*/
@Bean
public Queue orderChildCancelQueue() {
return new Queue(RabbitKeyOrderChildConstants.ORDER_CHILD_CANCEL_QUEUE);
}
@Bean
public Binding orderChildCancelQueueBinding() {
return BindingBuilder.bind(orderChildCancelQueue()).to(orderChildDefaultExchange()).with(RabbitKeyOrderChildConstants.ORDER_CHILD_CANCEL_ROUTING_KEY);
}
}
......@@ -39,4 +39,11 @@ public class RabbitKeyBreakContractConstants {
public static final String OWNER_RULE_ADD_QUEUE = PREFIX +"ownerRule.add"+QUEUE;
public static final String OWNER_RULE_ADD_ROUTING_KEY = PREFIX +"ownerRule.add"+QUEUE_ROUTING_KEY;
/**
* 司机违约记录新增
*/
public static final String DRIVER_RECORD_ADD_QUEUE = PREFIX +"driverRecord.add"+QUEUE;
public static final String DRIVER_RECORD_ADD_ROUTING_KEY = PREFIX +"driverRecord.add"+QUEUE_ROUTING_KEY;
}
......@@ -39,6 +39,18 @@ public class RabbitKeyOrderChildConstants {
public static final String ORDER_CHILD_ADD_QUEUE = PREFIX +"orderChild.add"+QUEUE;
public static final String ORDER_CHILD_ADD_ROUTING_KEY = PREFIX +"orderChild.add"+QUEUE_ROUTING_KEY;
/**
* 到达货源地
*/
public static final String ORDER_CHILD_ARRIVE_SEND_ADDRESS_QUEUE = PREFIX +"orderChild.arriveSendAddress"+QUEUE;
public static final String ORDER_CHILD_ARRIVE_SEND_ADDRESS_ROUTING_KEY = PREFIX +"orderChild.arriveSendAddress"+QUEUE_ROUTING_KEY;
/**
* 到达目的地
*/
public static final String ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_QUEUE = PREFIX +"orderChild.arriveReceiveAddress"+QUEUE;
public static final String ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_ROUTING_KEY = PREFIX +"orderChild.arriveReceiveAddress"+QUEUE_ROUTING_KEY;
/**
* 司机确认
*/
......@@ -51,4 +63,10 @@ public class RabbitKeyOrderChildConstants {
public static final String CHILD_FINISH_QUEUE = PREFIX +"child.finish"+QUEUE;
public static final String CHILD_FINISH_ROUTING_KEY = PREFIX +"child.finish"+QUEUE_ROUTING_KEY;
/**
* 运单取消
*/
public static final String ORDER_CHILD_CANCEL_QUEUE = PREFIX +"orderChild.cancel"+QUEUE;
public static final String ORDER_CHILD_CANCEL_ROUTING_KEY = PREFIX +"orderChild.cancel"+QUEUE_ROUTING_KEY;
}
......@@ -41,4 +41,14 @@ public class TempController {
return Result.ok();
}
@ApiOperation(value = "司机违约结算单完成 (临时接口)", notes = "<br>By:艾庆国")
@RequestMapping(value = "/updateBreakContractDriverSettlementFinish", method = RequestMethod.POST)
public Result<Void> updateBreakContractDriverSettlementFinish(String settlementNo) {
tempService.updateBreakContractDriverSettlementFinish(settlementNo);
return Result.ok();
}
}
......@@ -18,6 +18,8 @@ import com.msl.common.dao.BaseDao;
*/
public interface BreakContractDriverRecordDao extends BaseDao<BreakContractDriverRecordMapper, BreakContractDriverRecord, Integer> {
boolean updateSettlementNo(BreakContractDriverRecord item);
Optional<BreakContractDriverRecord> selectLastLimitTimeByDriverUserNo(Long driverUserNo);
IPage<BreakContractDriverRecordVO> pageByParam(PageBreakContractDriverRecordParam param);
......
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.breakcontract.BreakContractSettlementDriverMapper;
import com.clx.performance.model.breakcontract.BreakContractSettlementDriver;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
/**
......@@ -13,6 +14,9 @@ import com.msl.common.dao.BaseDao;
* Time 16:02
*/
public interface BreakContractSettlementDriverDao extends BaseDao<BreakContractSettlementDriverMapper, BreakContractSettlementDriver, Integer> {
Optional<BreakContractSettlementDriver> selectBySettlementNo(String settlementNo);
IPage<BreakContractSettlementDriver> pageCarrierBreakContractSettlementDriverList(PageCarrierBreakContractSettlementDriverParam param);
}
......@@ -21,6 +21,15 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public class BreakContractDriverRecordDaoImpl extends BaseDaoImpl<BreakContractDriverRecordMapper, BreakContractDriverRecord, Integer> implements BreakContractDriverRecordDao {
@Override
public boolean updateSettlementNo(BreakContractDriverRecord item) {
return update(lUdWrapper()
.eq(BreakContractDriverRecord::getId, item.getId())
.set(BreakContractDriverRecord::getSettlementNo, item.getSettlementNo())
);
}
@Override
public Optional<BreakContractDriverRecord> selectLastLimitTimeByDriverUserNo(Long driverUserNo) {
return Optional.of(driverUserNo)
......
......@@ -8,6 +8,7 @@ import com.clx.performance.dao.breakcontract.BreakContractSettlementDriverDao;
import com.clx.performance.mapper.breakcontract.BreakContractSettlementDriverMapper;
import com.clx.performance.model.breakcontract.BreakContractSettlementDriver;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
......@@ -21,6 +22,15 @@ import java.util.Objects;
*/
@Repository
public class BreakContractSettlementDriverDaoImpl extends BaseDaoImpl<BreakContractSettlementDriverMapper, BreakContractSettlementDriver, Integer> implements BreakContractSettlementDriverDao {
@Override
public Optional<BreakContractSettlementDriver> selectBySettlementNo(String settlementNo) {
return Optional.of(settlementNo)
.map(item -> lQrWrapper()
.eq(BreakContractSettlementDriver::getSettlementNo, item)
)
.map(super::getOne);
}
@Override
public IPage<BreakContractSettlementDriver> pageCarrierBreakContractSettlementDriverList(PageCarrierBreakContractSettlementDriverParam param) {
......
package com.clx.performance.listener.breakcontract;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyBreakContractConstants;
import com.clx.performance.param.mq.BreakContractDriverRecordAddMqParam;
import com.clx.performance.service.breakcontract.BreakContractMqHandlerService;
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-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public class BreakContractDriverRecordAddListener {
@Autowired
private BreakContractMqHandlerService breakContractMqHandlerService;
@RabbitListener(queues = RabbitKeyBreakContractConstants.DRIVER_RECORD_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<BreakContractDriverRecordAddMqParam>>(){}).getData());
}catch (Exception e){
log.info("违约-司机违约记录创建 失败",e);
}
}
private void process(BreakContractDriverRecordAddMqParam mq){
breakContractMqHandlerService.driverRecordAdd(mq);
}
}
package com.clx.performance.listener.child;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyOrderChildConstants;
import com.clx.performance.service.OrderChildMqHandlerService;
import com.clx.performance.vo.mq.OrderChildArriveReceiveAddressMqParam;
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-20 17:39:27
* @Version: 1.0
*/
@Slf4j
@Component
public class OrderChildArriveReceiveAddressListener {
@Autowired
private OrderChildMqHandlerService orderChildMqHandlerService;
@RabbitListener(queues = RabbitKeyOrderChildConstants.ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_QUEUE)
public void process(Message message) {
try{
log.info("运单-到达目的地, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<OrderChildArriveReceiveAddressMqParam>>(){}).getData());
}catch (Exception e){
log.info("运单-到达目的地 失败",e);
}
}
private void process(OrderChildArriveReceiveAddressMqParam mq){
orderChildMqHandlerService.orderChildArriveReceiveAddress(mq);
}
}
package com.clx.performance.listener.child;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyOrderChildConstants;
import com.clx.performance.service.OrderChildMqHandlerService;
import com.clx.performance.vo.mq.OrderChildArriveSendAddressMqParam;
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-20 17:39:27
* @Version: 1.0
*/
@Slf4j
@Component
public class OrderChildArriveSendAddressListener {
@Autowired
private OrderChildMqHandlerService orderChildMqHandlerService;
@RabbitListener(queues = RabbitKeyOrderChildConstants.ORDER_CHILD_ARRIVE_SEND_ADDRESS_QUEUE)
public void process(Message message) {
try{
log.info("运单-到达货源地, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<OrderChildArriveSendAddressMqParam>>(){}).getData());
}catch (Exception e){
log.info("运单-到达货源地 失败",e);
}
}
private void process(OrderChildArriveSendAddressMqParam mq){
orderChildMqHandlerService.orderChildArriveSendAddress(mq);
}
}
package com.clx.performance.listener.child;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyOrderChildConstants;
import com.clx.performance.param.mq.OrderChildCancelMqParam;
import com.clx.performance.service.OrderChildMqHandlerService;
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-20 17:39:27
* @Version: 1.0
*/
@Slf4j
@Component
public class OrderChildCancelListener {
@Autowired
private OrderChildMqHandlerService orderChildMqHandlerService;
@RabbitListener(queues = RabbitKeyOrderChildConstants.ORDER_CHILD_CANCEL_QUEUE)
public void process(Message message) {
try{
log.info("运单-取消, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<OrderChildCancelMqParam>>(){}).getData());
}catch (Exception e){
log.info("运单-取消 失败",e);
}
}
private void process(OrderChildCancelMqParam mq){
orderChildMqHandlerService.orderChildCancel(mq);
}
}
package com.clx.performance.service;
import com.clx.performance.param.mq.OrderChildCancelMqParam;
import com.clx.performance.vo.mq.OrderChildAddMqParam;
import com.clx.performance.vo.mq.OrderChildArriveReceiveAddressMqParam;
import com.clx.performance.vo.mq.OrderChildArriveSendAddressMqParam;
import com.clx.performance.vo.mq.OrderChildDriverConfirmMqParam;
public interface OrderChildMqHandlerService {
void orderChildAdd(OrderChildAddMqParam mq);
void orderChildArriveSendAddress(OrderChildArriveSendAddressMqParam mq);
void orderChildArriveReceiveAddress(OrderChildArriveReceiveAddressMqParam mq);
void orderChildDriverConfirm(OrderChildDriverConfirmMqParam mq);
void orderChildCancel(OrderChildCancelMqParam mq);
}
......@@ -3,7 +3,11 @@ package com.clx.performance.service;
public interface OrderChildMqService {
void orderChildAdd(String childNo);
void orderChildArriveSendAddress(String childNo);
void orderChildArriveReceiveAddress(String childNo);
void orderChildDriverConfirm(String childNo);
void orderChildCancel(String childNo, Integer status, Integer opUserType, Long opUserNo, String opUserName);
}
......@@ -4,4 +4,6 @@ public interface TempService {
void updateInvoiceType(String childNo, Integer InvoiceType);
void updateBreakContractDriverSettlementFinish(String settlementNo);
}
package com.clx.performance.service.breakcontract;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.breakcontract.DriverPageBreakContractDriverRecordParam;
import com.clx.performance.param.pc.breakcontract.carrier.BreakContractDriverRecordAddParam;
import com.clx.performance.param.pc.breakcontract.carrier.PageBreakContractDriverRecordParam;
......@@ -20,4 +21,10 @@ public interface BreakContractDriverRecordService {
IPage<DriverBreakContractDriverRecordVO> driverPageRecord(DriverPageBreakContractDriverRecordParam param);
void saveDriverRecordOfOrderChildCancel(OrderChild orderChild, Long createBy, String createName);
void saveDriverRecordOfArriveSendAddress(OrderChild orderChild, Long createBy, String createName);
void saveDriverRecordOfArriveReceiveAddress(OrderChild orderChild, Long createBy, String createName);
}
package com.clx.performance.service.breakcontract;
import com.clx.performance.param.mq.BreakContractDriverRecordAddMqParam;
import com.clx.performance.param.mq.BreakContractOwnerRuleAddMqParam;
public interface BreakContractMqHandlerService {
void ownerRuleAdd(BreakContractOwnerRuleAddMqParam mq);
void driverRecordAdd(BreakContractDriverRecordAddMqParam mq);
}
......@@ -4,4 +4,6 @@ public interface BreakContractMqService {
void ownerRuleAdd(Integer ruleId);
void driverRecordAdd(Integer recordId);
}
package com.clx.performance.service.impl;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.mq.OrderChildCancelMqParam;
import com.clx.performance.service.OrderChildMqHandlerService;
import com.clx.performance.vo.mq.OrderChildAddMqParam;
import com.clx.performance.vo.mq.OrderChildArriveReceiveAddressMqParam;
import com.clx.performance.vo.mq.OrderChildArriveSendAddressMqParam;
import com.clx.performance.vo.mq.OrderChildDriverConfirmMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class OrderChildMqHandlerServiceImpl implements OrderChildMqHandlerService {
@Autowired
private OrderChildDao orderChildDao;
@Override
public void orderChildAdd(OrderChildAddMqParam mq) {
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
@Override
public void orderChildArriveSendAddress(OrderChildArriveSendAddressMqParam mq) {
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
@Override
public void orderChildArriveReceiveAddress(OrderChildArriveReceiveAddressMqParam mq) {
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
@Override
public void orderChildDriverConfirm(OrderChildDriverConfirmMqParam mq) {
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
@Override
public void orderChildCancel(OrderChildCancelMqParam mq) {
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
}
......@@ -4,8 +4,11 @@ import com.alibaba.fastjson.JSON;
import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyOrderChildConstants;
import com.clx.performance.param.mq.OrderChildCancelMqParam;
import com.clx.performance.service.OrderChildMqService;
import com.clx.performance.vo.mq.OrderChildAddMqParam;
import com.clx.performance.vo.mq.OrderChildArriveReceiveAddressMqParam;
import com.clx.performance.vo.mq.OrderChildArriveSendAddressMqParam;
import com.clx.performance.vo.mq.OrderChildDriverConfirmMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
......@@ -32,6 +35,28 @@ public class OrderChildMqServiceImpl implements OrderChildMqService {
rabbitTemplate.send(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void orderChildArriveSendAddress(String childNo) {
OrderChildArriveSendAddressMqParam mq = new OrderChildArriveSendAddressMqParam();
mq.setChildNo(childNo);
MqDelay<MqWrapper<OrderChildArriveSendAddressMqParam>> delay = new MqDelay<>(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.ORDER_CHILD_ARRIVE_SEND_ADDRESS_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void orderChildArriveReceiveAddress(String childNo) {
OrderChildArriveReceiveAddressMqParam mq = new OrderChildArriveReceiveAddressMqParam();
mq.setChildNo(childNo);
MqDelay<MqWrapper<OrderChildArriveReceiveAddressMqParam>> delay = new MqDelay<>(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void orderChildDriverConfirm(String childNo) {
OrderChildDriverConfirmMqParam mq = new OrderChildDriverConfirmMqParam();
......@@ -43,4 +68,19 @@ public class OrderChildMqServiceImpl implements OrderChildMqService {
rabbitTemplate.send(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void orderChildCancel(String childNo, Integer status, Integer opUserType, Long opUserNo, String opUserName) {
OrderChildCancelMqParam mq = new OrderChildCancelMqParam();
mq.setChildNo(childNo);
mq.setStatus(status);
mq.setOpUserType(opUserType);
mq.setOpUserNo(opUserNo);
mq.setOpUserName(opUserName);
MqDelay<MqWrapper<OrderChildCancelMqParam>> delay = new MqDelay<>(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.ORDER_CHILD_CANCEL_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
}
......@@ -31,6 +31,7 @@ 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.breakcontract.BreakContractDriverRecordService;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
......@@ -113,6 +114,7 @@ public class OrderChildServiceImpl implements OrderChildService {
private final OrderChildMqService orderChildMqService;
private final OwnerInfoService ownerInfoService;
private final BreakContractDriverRecordService breakContractDriverRecordService;
@Override
public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) {
......@@ -310,13 +312,13 @@ public class OrderChildServiceImpl implements OrderChildService {
// 更新出车状态
updateDriverOrderStatusLock(orderChild.getDriverUserNo(), orderChild.getTruckId());
// 发送mq 新增运单
orderChildMqService.orderChildAdd(orderChild.getChildNo());
// 新增日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.CREATED.getCode(),
OrderChildLogEnum.Type.CREATED.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 发送mq 新增运单
orderChildMqService.orderChildAdd(orderChild.getChildNo());
SaveOrderChildVO result = new SaveOrderChildVO();
result.setChildNo(childNo);
return result;
......@@ -478,6 +480,13 @@ public class OrderChildServiceImpl implements OrderChildService {
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_SEND.getCode(),
OrderChildLogEnum.Type.ARRIVE_SEND.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 保存违约记录
breakContractDriverRecordService.saveDriverRecordOfArriveSendAddress(orderChild, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 发送mq (到达货源地)
orderChildMqService.orderChildArriveSendAddress(orderChild.getChildNo());
}
@Override
......@@ -555,6 +564,12 @@ public class OrderChildServiceImpl implements OrderChildService {
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(),
OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 保存违约记录
breakContractDriverRecordService.saveDriverRecordOfArriveReceiveAddress(orderChild, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 发送mq (到达货源地)
orderChildMqService.orderChildArriveReceiveAddress(orderChild.getChildNo());
}
@Override
......@@ -956,13 +971,12 @@ public class OrderChildServiceImpl implements OrderChildService {
// 生成计费单
saveSettlementDetail(orderChild);
// 发送mq 司机确认收货
orderChildMqService.orderChildDriverConfirm(orderChild.getChildNo());
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(),
OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 发送mq 司机确认收货
orderChildMqService.orderChildDriverConfirm(orderChild.getChildNo());
}
@Override
......@@ -1049,6 +1063,13 @@ public class OrderChildServiceImpl implements OrderChildService {
// 运单结束
orderChildFinish(orderChild);
// 保存违约记录
breakContractDriverRecordService.saveDriverRecordOfOrderChildCancel(orderChild, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 发送mq (运单取消)
orderChildMqService.orderChildCancel(orderChild.getChildNo(), orderChild.getStatus(), UserTypeEnum.DRIVER.getCode(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
......@@ -1106,6 +1127,9 @@ public class OrderChildServiceImpl implements OrderChildService {
// 运单结束
orderChildFinish(orderChild);
// 发送mq (运单取消)
orderChildMqService.orderChildCancel(orderChild.getChildNo(), orderChild.getStatus(), UserTypeEnum.DRIVER.getCode(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
/**
......@@ -1909,14 +1933,4 @@ public class OrderChildServiceImpl implements OrderChildService {
return "--";
}
private void takeOrderLimit(){
}
/**
* 运单取消回调
*/
private void orderChildCancelCallback(OrderChild orderChild){
}
}
package com.clx.performance.service.impl;
import com.clx.performance.dao.breakcontract.BreakContractSettlementDriverDao;
import com.clx.performance.enums.BreakContractSettlementDriverEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.model.breakcontract.BreakContractSettlementDriver;
import com.clx.performance.service.TempService;
import com.clx.performance.service.settle.SettlementService;
import lombok.extern.slf4j.Slf4j;
......@@ -13,6 +17,9 @@ public class TempServiceImpl implements TempService {
@Autowired
private SettlementService settlementService;
@Autowired
private BreakContractSettlementDriverDao breakContractSettlementDriverDao;
@Override
public void updateInvoiceType(String childNo, Integer invoiceType) {
......@@ -20,4 +27,10 @@ public class TempServiceImpl implements TempService {
}
@Override
public void updateBreakContractDriverSettlementFinish(String settlementNo) {
BreakContractSettlementDriver settlement = breakContractSettlementDriverDao.selectBySettlementNo(settlementNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
settlement.setSettleStatus(BreakContractSettlementDriverEnum.SettleStatus.YES.getCode());
}
}
......@@ -2,18 +2,32 @@ package com.clx.performance.service.impl.breakcontract;
import com.alibaba.fastjson.JSON;
import com.clx.performance.config.BreakContractConfig;
import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao;
import com.clx.performance.dao.breakcontract.BreakContractOwnerRuleDao;
import com.clx.performance.dao.breakcontract.BreakContractSettlementDriverDao;
import com.clx.performance.dao.breakcontract.BreakContractSettlementDriverDetailDao;
import com.clx.performance.enums.BreakContractSettlementDriverEnum;
import com.clx.performance.enums.BreakContractSettlementLogEnum;
import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.extranal.document.DocumentService;
import com.clx.performance.model.breakcontract.BreakContractDriverRecord;
import com.clx.performance.model.breakcontract.BreakContractOwnerRule;
import com.clx.performance.model.breakcontract.BreakContractSettlementDriver;
import com.clx.performance.model.breakcontract.BreakContractSettlementDriverDetail;
import com.clx.performance.param.mq.BreakContractDriverRecordAddMqParam;
import com.clx.performance.param.mq.BreakContractOwnerRuleAddMqParam;
import com.clx.performance.service.breakcontract.BreakContractMqHandlerService;
import com.clx.performance.service.breakcontract.BreakContractSettlementLogService;
import com.clx.performance.service.impl.UniqueOrderNumService;
import com.msl.common.utils.LocalDateTimeUtils;
import com.msl.document.api.vo.ContractEvidenceRecordVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Map;
@Slf4j
......@@ -22,6 +36,12 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler
@Autowired
private BreakContractOwnerRuleDao breakContractOwnerRuleDao;
@Autowired
private BreakContractDriverRecordDao breakContractDriverRecordDao;
@Autowired
private BreakContractSettlementDriverDetailDao breakContractSettlementDriverDetailDao;
@Autowired
private BreakContractSettlementDriverDao breakContractSettlementDriverDao;
@Autowired
private DocumentService documentService;
......@@ -29,6 +49,11 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler
@Autowired
private BreakContractConfig breakContractConfig;
@Autowired
private BreakContractSettlementLogService breakContractSettlementLogService;
@Autowired
private UniqueOrderNumService uniqueOrderNumService;
@Transactional(rollbackFor = Exception.class)
@Override
public void ownerRuleAdd(BreakContractOwnerRuleAddMqParam mq) {
......@@ -46,4 +71,63 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler
breakContractOwnerRuleDao.updateFile(rule);
}
@Override
public void driverRecordAdd(BreakContractDriverRecordAddMqParam mq) {
BreakContractDriverRecord record = breakContractDriverRecordDao.getEntityByKey(mq.getRecordId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
String settlementNo = settlementNoGenerate();
record.setSettlementNo(settlementNo);
BreakContractSettlementDriverDetail detail = new BreakContractSettlementDriverDetail();
detail.setBreakNo(record.getBreakNo());
detail.setBreakContractPartyType(record.getBreakContractPartyType());
detail.setSettlementNo(settlementNo);
detail.setTruckOwnUserNo(record.getTruckOwnUserNo());
detail.setTruckOwnName(record.getTruckOwnName());
detail.setDriverUserNo(record.getDriverUserNo());
detail.setDriverName(record.getDriverName());
detail.setChildNo(record.getChildNo());
detail.setFigure(record.getFigure());
detail.setBreakContractRemark(record.getRemark());
detail.setCreateBy(record.getCreateBy());
detail.setCreateName(record.getCreateName());
BreakContractSettlementDriver settlement = new BreakContractSettlementDriver();
settlement.setBreakContractPartyType(detail.getBreakContractPartyType());
settlement.setBreakNo(detail.getBreakNo());
settlement.setSettlementNo(detail.getSettlementNo());
settlement.setTruckOwnUserNo(detail.getTruckOwnUserNo());
settlement.setTruckOwnName(detail.getTruckOwnName());
settlement.setDriverUserNo(detail.getDriverUserNo());
settlement.setDriverName(detail.getDriverName());
settlement.setChildNo(detail.getChildNo());
settlement.setFigure(detail.getFigure());
settlement.setBreakContractRemark(detail.getBreakContractRemark());
settlement.setSettleStatus(BreakContractSettlementDriverEnum.SettleStatus.NO.getCode());
settlement.setCreateBy(detail.getCreateBy());
settlement.setCreateName(detail.getCreateName());
settlement.setSettlePlatform(BreakContractSettlementDriverEnum.SettlePlatform.MSL.getCode());
breakContractDriverRecordDao.updateSettlementNo(record);
breakContractSettlementDriverDetailDao.saveEntity(detail);
breakContractSettlementDriverDao.saveEntity(settlement);
//保存结算单日志----创建结算单
breakContractSettlementLogService.saveBreakSettlementLog(settlementNo,
BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getCode(),BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getMsg(),
OrderChildLogEnum.CreateType.PLATFORM.getCode(),record.getCreateBy(),record.getCreateName());
}
private String settlementNoGenerate() {
return "WYJSD"+uniqueOrderNumService.getUniqueOrderNum(
LocalDateTimeUtils.convertLocalDateTimeToString(LocalDateTime.now(), LocalDateTimeUtils.DATE_DAY));
}
}
......@@ -4,9 +4,9 @@ import com.alibaba.fastjson.JSON;
import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyBreakContractConstants;
import com.clx.performance.param.mq.BreakContractDriverRecordAddMqParam;
import com.clx.performance.param.mq.BreakContractOwnerRuleAddMqParam;
import com.clx.performance.service.breakcontract.BreakContractMqService;
import com.clx.performance.service.impl.IntegralMqHandlerServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
......@@ -28,9 +28,6 @@ public class BreakContractMqServiceImpl implements BreakContractMqService {
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private IntegralMqHandlerServiceImpl integralMqHandlerService;
@Override
public void ownerRuleAdd(Integer ruleId) {
......@@ -43,4 +40,17 @@ public class BreakContractMqServiceImpl implements BreakContractMqService {
rabbitTemplate.send(RabbitKeyBreakContractConstants.DEFAULT_EXCHANGE, RabbitKeyBreakContractConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void driverRecordAdd(Integer recordId) {
BreakContractDriverRecordAddMqParam mq = new BreakContractDriverRecordAddMqParam();
mq.setRecordId(recordId);
MqDelay<MqWrapper<BreakContractDriverRecordAddMqParam>> delay = new MqDelay<>(RabbitKeyBreakContractConstants.DEFAULT_EXCHANGE, RabbitKeyBreakContractConstants.DRIVER_RECORD_ADD_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyBreakContractConstants.DEFAULT_EXCHANGE, RabbitKeyBreakContractConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
}
......@@ -400,4 +400,9 @@ public class LocalDateTimeUtils {
public static LocalDateTime getStartWeek(LocalDateTime dateTime) {
return LocalDateTime.of(dateTime.toLocalDate(), LocalTime.MIN).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
}
public static long betweenSecond(LocalDateTime startTime, LocalDateTime endTime){
Duration duration = Duration.between(startTime, endTime);
return duration.getSeconds();
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论