提交 9386e379 authored 作者: 艾庆国's avatar 艾庆国

线路预警

上级 7fe9e576
package com.clx.performance.param.mq.linewarn;
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 LineWarnOrderChildWarnMqParam {
private String orderGoodsNo;
private String childNo;
}
...@@ -57,4 +57,10 @@ public class RabbitKeyLineWarnConstants { ...@@ -57,4 +57,10 @@ public class RabbitKeyLineWarnConstants {
public static final String LINE_WARN_LINE_REPORT_QUEUE = PREFIX +"lineWarn.lineReport"+QUEUE; public static final String LINE_WARN_LINE_REPORT_QUEUE = PREFIX +"lineWarn.lineReport"+QUEUE;
public static final String LINE_WARN_LINE_REPORT_ROUTING_KEY = PREFIX +"lineWarn.lineReport"+QUEUE_ROUTING_KEY; public static final String LINE_WARN_LINE_REPORT_ROUTING_KEY = PREFIX +"lineWarn.lineReport"+QUEUE_ROUTING_KEY;
/**
* 运单异常
*/
public static final String LINE_WARN_ORDER_CHILD_WARN_QUEUE = PREFIX +"lineWarn.orderChildWarn"+QUEUE;
public static final String LINE_WARN_ORDER_CHILD_WARN_ROUTING_KEY = PREFIX +"lineWarn.orderChildWarn"+QUEUE_ROUTING_KEY;
} }
package com.clx.performance.controller.temp; package com.clx.performance.controller.temp;
import com.clx.performance.service.linewarn.LineWarnMqService;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -18,6 +20,8 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -18,6 +20,8 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping(value="/temp/lineWarn") @RequestMapping(value="/temp/lineWarn")
public class TempLineWarnController { public class TempLineWarnController {
@Autowired
private LineWarnMqService lineWarnMqService;
@ApiOperation(value = "test", notes = "<br>By:艾庆国") @ApiOperation(value = "test", notes = "<br>By:艾庆国")
@PostMapping("/test") @PostMapping("/test")
...@@ -26,5 +30,12 @@ public class TempLineWarnController { ...@@ -26,5 +30,12 @@ public class TempLineWarnController {
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "运单异常", notes = "<br>By:艾庆国")
@PostMapping("/orderChildWarn")
public Result orderChildWarn(String orderGoodsNo, String childNo) {
lineWarnMqService.orderChildWarn(orderGoodsNo, childNo);
return Result.ok();
}
} }
package com.clx.performance.listener.linewarn;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyLineWarnConstants;
import com.clx.performance.param.mq.linewarn.LineWarnOrderChildWarnMqParam;
import com.clx.performance.service.linewarn.LineWarnMqHandlerService;
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 16:34:40
* @Version: 1.0
*/
@Slf4j
@Component
public class LineWarnOrderChildWarnListener {
@Autowired
private LineWarnMqHandlerService lineWarnMqHandlerService;
@RabbitListener(queues = RabbitKeyLineWarnConstants.LINE_WARN_ORDER_CHILD_WARN_QUEUE)
public void process(Message message) {
try{
log.info("线路预警-运单异常预警, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnOrderChildWarnMqParam>>(){}).getData());
}catch (Exception e){
log.info("线路预警-运单异常预警 失败",e);
}
}
private void process(LineWarnOrderChildWarnMqParam mq){
lineWarnMqHandlerService.orderChildWarn(mq);
}
}
...@@ -12,6 +12,7 @@ import com.clx.performance.model.OrderGoods; ...@@ -12,6 +12,7 @@ import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.linewarn.LineWarnOrderGoods; import com.clx.performance.model.linewarn.LineWarnOrderGoods;
import com.clx.performance.param.mq.linewarn.LineWarnLineWarnMqParam; import com.clx.performance.param.mq.linewarn.LineWarnLineWarnMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnNoticeMqParam; import com.clx.performance.param.mq.linewarn.LineWarnNoticeMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnOrderChildWarnMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnOrderGoodsAddMqParam; import com.clx.performance.param.mq.linewarn.LineWarnOrderGoodsAddMqParam;
import com.clx.performance.service.linewarn.*; import com.clx.performance.service.linewarn.*;
import com.clx.performance.utils.LocalDateTimeUtils; import com.clx.performance.utils.LocalDateTimeUtils;
...@@ -134,12 +135,7 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService { ...@@ -134,12 +135,7 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService {
log.info("天气预警异常,msg:{}", e.getMessage()); log.info("天气预警异常,msg:{}", e.getMessage());
} }
// 运单异常
try{
lineWarnOrderChildWarnService.orderChildWarn(orderGoods, lineWarnCommonInfo);
}catch (Exception e){
log.info("运单异常异常,msg:{}", e.getMessage());
}
// 拥堵预警 // 拥堵预警
try { try {
...@@ -162,4 +158,19 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService { ...@@ -162,4 +158,19 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService {
} }
@Override
public void orderChildWarn(LineWarnOrderChildWarnMqParam mq) {
LineWarnOrderGoods lineWarnOrderGoods = lineWarnOrderGoodsDao
.getByOrderGoodsNo(mq.getOrderGoodsNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
OrderGoods orderGoods = orderGoodsDao
.getByOrderGoodsNo(mq.getOrderGoodsNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
// 运单异常
try{
lineWarnOrderChildWarnService.orderChildWarn(orderGoods);
}catch (Exception e){
log.info("运单异常异常,msg:{}", e.getMessage());
}
}
} }
...@@ -4,10 +4,7 @@ import com.alibaba.fastjson.JSON; ...@@ -4,10 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.clx.performance.common.MqDelay; import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper; import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyLineWarnConstants; import com.clx.performance.constant.RabbitKeyLineWarnConstants;
import com.clx.performance.param.mq.linewarn.LineWarnLineReportMqParam; import com.clx.performance.param.mq.linewarn.*;
import com.clx.performance.param.mq.linewarn.LineWarnLineWarnMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnNoticeMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnOrderGoodsAddMqParam;
import com.clx.performance.service.linewarn.LineWarnMqService; import com.clx.performance.service.linewarn.LineWarnMqService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
...@@ -73,4 +70,18 @@ public class LineWarnMqServiceImpl implements LineWarnMqService { ...@@ -73,4 +70,18 @@ public class LineWarnMqServiceImpl implements LineWarnMqService {
RabbitKeyLineWarnConstants.DEFAULT_DELAY_ROUTING_KEY, message); RabbitKeyLineWarnConstants.DEFAULT_DELAY_ROUTING_KEY, message);
} }
@Override
public void orderChildWarn(String orderGoodsNo, String childNo) {
LineWarnOrderChildWarnMqParam mq = new LineWarnOrderChildWarnMqParam();
mq.setOrderGoodsNo(orderGoodsNo);
mq.setChildNo(childNo);
MqDelay delay = new MqDelay<>(RabbitKeyLineWarnConstants.DEFAULT_EXCHANGE,
RabbitKeyLineWarnConstants.LINE_WARN_ORDER_CHILD_WARN_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyLineWarnConstants.DEFAULT_EXCHANGE,
RabbitKeyLineWarnConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
} }
package com.clx.performance.service.impl.linewarn; package com.clx.performance.service.impl.linewarn;
import com.clx.performance.dto.linewarn.LineWarnCommonInfoDTO; import com.clx.performance.dao.linewarn.LineWarnConfigDao;
import com.clx.performance.dao.linewarn.LineWarnInfoDao;
import com.clx.performance.enums.linewarn.LineWarnConfigEnum;
import com.clx.performance.enums.linewarn.LineWarnInfoEnum;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.linewarn.LineWarnConfig;
import com.clx.performance.model.linewarn.LineWarnInfo;
import com.clx.performance.service.linewarn.LineWarnCommonService;
import com.clx.performance.service.linewarn.LineWarnOrderChildWarnService; import com.clx.performance.service.linewarn.LineWarnOrderChildWarnService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
@Slf4j @Slf4j
@Service @Service
public class LineWarnOrderChildWarnServiceImpl implements LineWarnOrderChildWarnService { public class LineWarnOrderChildWarnServiceImpl implements LineWarnOrderChildWarnService {
@Autowired
private LineWarnConfigDao lineWarnConfigDao;
@Autowired
private LineWarnInfoDao lineWarnInfoDao;
@Autowired
private LineWarnCommonService lineWarnCommonService;
@Override @Override
public void orderChildWarn(OrderGoods orderGoods, LineWarnCommonInfoDTO lineWarnCommonInfo) { public void orderChildWarn(OrderGoods orderGoods) {
List<LineWarnConfig> lineWarnConfigList = lineWarnConfigDao
.listByWarnType(LineWarnConfigEnum.WarnType.UNLOAD.getCode());
if (lineWarnConfigList.isEmpty()) {return;}
for (LineWarnConfig item : lineWarnConfigList) {
doOrderChildWarn(orderGoods, item);
}
} }
private void doOrderChildWarn(OrderGoods orderGoods, LineWarnConfig lineWarnConfig){
LineWarnInfo lineWarnInfo = lineWarnInfoDao
.findByOrderGoodsNoAndWarnConfigId(orderGoods.getOrderGoodsNo(), lineWarnConfig.getId()).orNull();
if (lineWarnInfo != null
&& Objects.equals(lineWarnInfo.getStatus(), LineWarnInfoEnum.Status.RESOLVE.getCode())){
return;
}
// 更新
lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig);
}
} }
...@@ -2,6 +2,7 @@ package com.clx.performance.service.linewarn; ...@@ -2,6 +2,7 @@ package com.clx.performance.service.linewarn;
import com.clx.performance.param.mq.linewarn.LineWarnLineWarnMqParam; import com.clx.performance.param.mq.linewarn.LineWarnLineWarnMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnNoticeMqParam; import com.clx.performance.param.mq.linewarn.LineWarnNoticeMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnOrderChildWarnMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnOrderGoodsAddMqParam; import com.clx.performance.param.mq.linewarn.LineWarnOrderGoodsAddMqParam;
public interface LineWarnMqHandlerService { public interface LineWarnMqHandlerService {
...@@ -12,4 +13,5 @@ public interface LineWarnMqHandlerService { ...@@ -12,4 +13,5 @@ public interface LineWarnMqHandlerService {
void notice(LineWarnNoticeMqParam mq); void notice(LineWarnNoticeMqParam mq);
void orderChildWarn(LineWarnOrderChildWarnMqParam mq);
} }
...@@ -10,4 +10,6 @@ public interface LineWarnMqService { ...@@ -10,4 +10,6 @@ public interface LineWarnMqService {
void lineReport(Integer sendSystemAddressId, Integer receiveSystemAddressId, void lineReport(Integer sendSystemAddressId, Integer receiveSystemAddressId,
Integer reportType, Integer estimatedTravelTime); Integer reportType, Integer estimatedTravelTime);
void orderChildWarn(String orderGoodsNo, String childNo);
} }
package com.clx.performance.service.linewarn; package com.clx.performance.service.linewarn;
import com.clx.performance.dto.linewarn.LineWarnCommonInfoDTO;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
public interface LineWarnOrderChildWarnService { public interface LineWarnOrderChildWarnService {
void orderChildWarn(OrderGoods orderGoods, LineWarnCommonInfoDTO lineWarnCommonInfo); void orderChildWarn(OrderGoods orderGoods);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论