提交 febb1b82 authored 作者: 刘海泉's avatar 刘海泉

Merge remote-tracking branch 'origin/v30.2_break_contract_20241021' into dev_jdk17

# Conflicts: # clx-performance-web/src/main/java/com/clx/performance/config/RabbitBeanConfig.java # clx-performance-web/src/main/java/com/clx/performance/constant/RabbitKeyConstants.java
...@@ -432,6 +432,33 @@ public class RabbitBeanConfig { ...@@ -432,6 +432,33 @@ public class RabbitBeanConfig {
/**
*发送短信通知
*/
@Bean
public Queue sendSmsNoticeQueue() {
return new Queue(RabbitKeyConstants.NOTICE_SEND_SMS_QUEUE,
true, false, false);
}
/**
* 发送短信通知
**/
@Bean
public DirectExchange sendSmsNoticeExchange() {
return new DirectExchange(RabbitKeyConstants.NOTICE_SEND_SMS_QUEUE_EXCHANGE);
}
/**
*发送短信通知
*/
@Bean
public Binding sendSmsNoticeBind() {
return BindingBuilder.bind(sendSmsNoticeQueue()).to(sendSmsNoticeExchange())
.with(RabbitKeyConstants.NOTICE_SEND_SMS_QUEUE_ROUTING_KEY);
}
} }
...@@ -212,4 +212,16 @@ public class RabbitKeyConstants { ...@@ -212,4 +212,16 @@ public class RabbitKeyConstants {
//发送承运端站内信routing_key //发送承运端站内信routing_key
public static final String SEND_CARRIER_INTERNAL_MESSAGE_ROUTING_KEY = "clx_performance.send.carrier.internal.message..routing.key"; public static final String SEND_CARRIER_INTERNAL_MESSAGE_ROUTING_KEY = "clx_performance.send.carrier.internal.message..routing.key";
//保存货单调价记录queue
public static final String NOTICE_SEND_SMS_QUEUE = "clx_performance.notice.send.sms.queue";
//保存货单调价记录exchange
public static final String NOTICE_SEND_SMS_QUEUE_EXCHANGE = "clx_performance.notice.send.sms.exchange";
//保存货单调价记录routing_key
public static final String NOTICE_SEND_SMS_QUEUE_ROUTING_KEY = "clx_performance.notice.send.sms.routing.key";
} }
...@@ -61,6 +61,7 @@ public class OrderChildExceptionReportController { ...@@ -61,6 +61,7 @@ public class OrderChildExceptionReportController {
@Operation(summary = "异常上报详情接口", description = "<br>By:刘海泉") @Operation(summary = "异常上报详情接口", description = "<br>By:刘海泉")
@GetMapping(value = "getExceptionReport") @GetMapping(value = "getExceptionReport")
@UnitCovert(param = false)
public Result<OrderChildExceptionReportVO> getExceptionReport(@RequestParam("id") @NotNull(message = "id不能为空") Integer id) { public Result<OrderChildExceptionReportVO> getExceptionReport(@RequestParam("id") @NotNull(message = "id不能为空") Integer id) {
return Result.ok(orderChildExceptionReportService.getExceptionReport(id)); return Result.ok(orderChildExceptionReportService.getExceptionReport(id));
} }
......
...@@ -4,6 +4,8 @@ import com.clx.performance.mapper.OrderChildExceptionReportOperationLogMapper; ...@@ -4,6 +4,8 @@ import com.clx.performance.mapper.OrderChildExceptionReportOperationLogMapper;
import com.clx.performance.model.OrderChildExceptionReportOperationLog; import com.clx.performance.model.OrderChildExceptionReportOperationLog;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import java.util.List;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
* @Description: 运单日志 * @Description: 运单日志
...@@ -11,4 +13,5 @@ import com.msl.common.dao.BaseDao; ...@@ -11,4 +13,5 @@ import com.msl.common.dao.BaseDao;
* @Version: 1.0 * @Version: 1.0
*/ */
public interface OrderChildExceptionReportOperationLogDao extends BaseDao<OrderChildExceptionReportOperationLogMapper, OrderChildExceptionReportOperationLog, Integer> { public interface OrderChildExceptionReportOperationLogDao extends BaseDao<OrderChildExceptionReportOperationLogMapper, OrderChildExceptionReportOperationLog, Integer> {
List<OrderChildExceptionReportOperationLog> getLogs(String reportNo);
} }
...@@ -38,6 +38,7 @@ public class OrderChildExceptionReportDaoImpl extends BaseDaoImpl<OrderChildExce ...@@ -38,6 +38,7 @@ public class OrderChildExceptionReportDaoImpl extends BaseDaoImpl<OrderChildExce
query.eq(StringUtils.isNotBlank(param.getTruckNoOrMobile()),OrderChildExceptionReport ::getTruckNoOrMobile,param.getTruckNoOrMobile()); query.eq(StringUtils.isNotBlank(param.getTruckNoOrMobile()),OrderChildExceptionReport ::getTruckNoOrMobile,param.getTruckNoOrMobile());
query.ge(StringUtils.isNotBlank(param.getBeginTime()),OrderChildExceptionReport ::getCreateTime,param.getBeginTime()); query.ge(StringUtils.isNotBlank(param.getBeginTime()),OrderChildExceptionReport ::getCreateTime,param.getBeginTime());
query.le(StringUtils.isNotBlank(param.getEndTime()),OrderChildExceptionReport ::getCreateTime,param.getEndTime()); query.le(StringUtils.isNotBlank(param.getEndTime()),OrderChildExceptionReport ::getCreateTime,param.getEndTime());
query.orderByDesc(OrderChildExceptionReport :: getId);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query); return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
} }
} }
package com.clx.performance.dao.impl; package com.clx.performance.dao.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.clx.performance.dao.OrderChildExceptionReportOperationLogDao; import com.clx.performance.dao.OrderChildExceptionReportOperationLogDao;
import com.clx.performance.mapper.OrderChildExceptionReportOperationLogMapper; import com.clx.performance.mapper.OrderChildExceptionReportOperationLogMapper;
import com.clx.performance.model.OrderChildExceptionReportOperationLog; import com.clx.performance.model.OrderChildExceptionReportOperationLog;
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: 运单图片
...@@ -14,4 +17,11 @@ import org.springframework.stereotype.Repository; ...@@ -14,4 +17,11 @@ import org.springframework.stereotype.Repository;
*/ */
@Repository @Repository
public class OrderChildExceptionReportOperationLogDaoImpl extends BaseDaoImpl<OrderChildExceptionReportOperationLogMapper, OrderChildExceptionReportOperationLog, Integer> implements OrderChildExceptionReportOperationLogDao { public class OrderChildExceptionReportOperationLogDaoImpl extends BaseDaoImpl<OrderChildExceptionReportOperationLogMapper, OrderChildExceptionReportOperationLog, Integer> implements OrderChildExceptionReportOperationLogDao {
@Override
public List<OrderChildExceptionReportOperationLog> getLogs(String reportNo) {
LambdaQueryWrapper<OrderChildExceptionReportOperationLog> query = new LambdaQueryWrapper<>();
query.eq(OrderChildExceptionReportOperationLog::getReportNo,reportNo);
query.orderByDesc(OrderChildExceptionReportOperationLog :: getId);
return baseMapper.selectList(query);
}
} }
package com.clx.performance.listener;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.message.OrderInfoMessage;
import com.clx.order.enums.OrderEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.config.ConfiguredOpenProperties;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.vehiclewarn.VehicleWarnUserDao;
import com.clx.performance.model.vehiclewarn.VehicleWarnUser;
import com.clx.performance.param.mq.SendSmsNoticeParam;
import com.msl.common.open.ConfiguredOpenClient;
import com.msl.common.result.Result;
import com.msl.message.sdk.action.MessageAction;
import com.msl.message.sms.api.sms.SmsMessage;
import com.msl.message.sms.api.sms.content.SmsMessageContentImpl;
import com.msl.message.sms.api.sms.recipient.SmsMessageRecipientImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.clx.performance.enums.OrderEnum.Status.*;
import static com.msl.message.sms.api.enums.RecipientTypeEnum.USER_MOBILE;
@Slf4j
@Component
@AllArgsConstructor
public class SendSmsListener {
private final ConfiguredOpenClient configuredOpenClient;
private final ConfiguredOpenProperties properties;
@RabbitListener(queues = RabbitKeyConstants.NOTICE_SEND_SMS_QUEUE)
public void onMessage(Message message) {
try{
log.info("监听到通用发送通知短信,消息内容{}", new String(message.getBody()));
SendSmsNoticeParam messageParam = JSONUtil.toBean(new String(message.getBody()),
new TypeReference<MqWrapper<SendSmsNoticeParam>>() {
},false).getData();
log.info("发送短信的手机号列表:{}",messageParam.getMobileList());
if(CollectionUtils.isEmpty(messageParam.getMobileList())){
return;
}
SmsMessage smsMessage = new SmsMessage();
//设置消息内容
SmsMessageContentImpl smsMessageContent= new SmsMessageContentImpl();
//模版code
smsMessageContent.setCode(messageParam.getCode());
smsMessageContent.setParams(messageParam.getParams());
//设置消息接收人
SmsMessageRecipientImpl smsMessageRecipient = new SmsMessageRecipientImpl();
smsMessageRecipient.setUserType(USER_MOBILE.getCode());
smsMessageRecipient.setTargets(String.join(",", messageParam.getMobileList()));
smsMessage.setContent(smsMessageContent);
smsMessage.setRecipient(smsMessageRecipient);
//从消息中心注册获取的通道key
smsMessage.setAccessKey(properties.getAccessKey());
//向消息中心发送消息
log.info("开始发送消息中心短信,请求参数:{}", JSON.toJSONString(smsMessage));
Result<Object> result = configuredOpenClient.doAction(new MessageAction(smsMessage));
if(result.succeed()){
log.info("结束发送消息中心短信成功,响应结果:{}", JSON.toJSONString(result));
}else{
log.error("结束发送消息中心短信失败,响应结果:{}", JSON.toJSONString(result));
}
}catch (Exception e){
log.info("监听发送通知短信发生异常,异常原因:{}", ExceptionUtils.getStackTrace(e));
}
}
}
package com.clx.performance.service;
import com.clx.performance.enums.SmsTemplateEnum;
import java.util.List;
public interface SendSmsService {
void sendChildWarnConfigSmsNotice(Integer warnTypeCode, SmsTemplateEnum.Type smsTemplateType,
List<String> paramList);
}
...@@ -17,6 +17,8 @@ import com.clx.performance.dao.OrderChildExceptionReportDealLogDao; ...@@ -17,6 +17,8 @@ import com.clx.performance.dao.OrderChildExceptionReportDealLogDao;
import com.clx.performance.dao.OrderChildExceptionReportOperationLogDao; import com.clx.performance.dao.OrderChildExceptionReportOperationLogDao;
import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao; import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao;
import com.clx.performance.enums.*; import com.clx.performance.enums.*;
import com.clx.performance.enums.linewarn.LineWarnConfigEnum;
import com.clx.performance.enums.vehiclewarn.VehicleWarnConfigEnum;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildExceptionReport; import com.clx.performance.model.OrderChildExceptionReport;
import com.clx.performance.model.OrderChildExceptionReportDealLog; import com.clx.performance.model.OrderChildExceptionReportDealLog;
...@@ -26,6 +28,7 @@ import com.clx.performance.param.pc.DealExceptionReportParam; ...@@ -26,6 +28,7 @@ import com.clx.performance.param.pc.DealExceptionReportParam;
import com.clx.performance.param.pc.PageExceptionReportParam; import com.clx.performance.param.pc.PageExceptionReportParam;
import com.clx.performance.param.pc.TransferDriverBreakContractParam; import com.clx.performance.param.pc.TransferDriverBreakContractParam;
import com.clx.performance.service.OrderChildExceptionReportService; import com.clx.performance.service.OrderChildExceptionReportService;
import com.clx.performance.service.SendSmsService;
import com.clx.performance.service.breakcontract.BreakContractDriverRecordService; import com.clx.performance.service.breakcontract.BreakContractDriverRecordService;
import com.clx.performance.struct.OrderChildExceptionReportOperationLogStruct; import com.clx.performance.struct.OrderChildExceptionReportOperationLogStruct;
import com.clx.performance.struct.OrderChildExceptionReportStruct; import com.clx.performance.struct.OrderChildExceptionReportStruct;
...@@ -42,6 +45,7 @@ import com.msl.common.result.Result; ...@@ -42,6 +45,7 @@ import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils; import com.msl.common.utils.DateUtils;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil; import com.msl.user.utils.TokenUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -76,6 +80,7 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio ...@@ -76,6 +80,7 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio
private final OrderChildDao orderChildDao; private final OrderChildDao orderChildDao;
private final BreakContractDriverRecordDao breakContractDriverRecordDao; private final BreakContractDriverRecordDao breakContractDriverRecordDao;
private final OrderChildExceptionReportOperationLogStruct orderChildExceptionReportOperationLogStruct; private final OrderChildExceptionReportOperationLogStruct orderChildExceptionReportOperationLogStruct;
private final SendSmsService sendSmsService;
@Override @Override
public Result<String> smbSyncExceptionReportInfo(SmbSyncExceptionReportInfoAction action) { public Result<String> smbSyncExceptionReportInfo(SmbSyncExceptionReportInfoAction action) {
...@@ -174,6 +179,9 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio ...@@ -174,6 +179,9 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio
report.setStatus(CarrierExceptionReportEnum.Status.WAIT_DEAL.getCode()); report.setStatus(CarrierExceptionReportEnum.Status.WAIT_DEAL.getCode());
orderChildExceptionReportDao.saveEntity(report); orderChildExceptionReportDao.saveEntity(report);
saveOperationLog(report.getReportNo(),CarrierExceptionLogEnum.Type.CREATE,null,null,SyncPlatformEnum.Source.getNameByCode(source)); saveOperationLog(report.getReportNo(),CarrierExceptionLogEnum.Type.CREATE,null,null,SyncPlatformEnum.Source.getNameByCode(source));
//发送预警短信
sendSmsService.sendChildWarnConfigSmsNotice(VehicleWarnConfigEnum.WarnType.EXCEPTION_REPORT_DEAL.getCode(),SmsTemplateEnum.Type.EXCEPTION_REPORT_DEAL,List.of(report.getChildNo()));
return report.getReportNo(); return report.getReportNo();
} }
...@@ -232,13 +240,17 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio ...@@ -232,13 +240,17 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio
if(Objects.equals(param.getDealWay(),ExceptionReportEnum.DealWay.APPEAL.getCode())){ if(Objects.equals(param.getDealWay(),ExceptionReportEnum.DealWay.APPEAL.getCode())){
report.setStatus(CarrierExceptionReportEnum.Status.APPEAL_IN_PROGRESS.getCode()); report.setStatus(CarrierExceptionReportEnum.Status.APPEAL_IN_PROGRESS.getCode());
report.setDealTime(LocalDateTime.now());
report.setDealUserCode(loginUserInfo.getUserNo());
report.setDealUser(loginUserInfo.getUserName());
dealLog = new OrderChildExceptionReportDealLog(); dealLog = new OrderChildExceptionReportDealLog();
dealLog.setReportNo(report.getReportNo()); dealLog.setReportNo(report.getReportNo());
dealLog.setDealWay(param.getDealWay()); dealLog.setDealWay(param.getDealWay());
dealLog.setAppealReason(param.getAppealReason()); dealLog.setAppealReason(param.getAppealReason());
dealLog.setPictureUrl(JSON.toJSONString(param.getPictureUrl())); dealLog.setPictureUrl(JSON.toJSONString(param.getPictureUrl()));
dealLog.setVideoUrl(JSON.toJSONString(param.getVideoUrl())); dealLog.setVideoUrl(JSON.toJSONString(param.getVideoUrl()));
dealLog.setCreateBy(loginUserInfo.getUserNo());
dealLog.setCreateName(loginUserInfo.getUserName());
}else{ }else{
report.setStatus(CarrierExceptionReportEnum.Status.PROCESSED.getCode()); report.setStatus(CarrierExceptionReportEnum.Status.PROCESSED.getCode());
report.setDealTime(LocalDateTime.now()); report.setDealTime(LocalDateTime.now());
...@@ -362,11 +374,14 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio ...@@ -362,11 +374,14 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio
OrderChildExceptionReportDealLog::getReportNo, report.getReportNo()); OrderChildExceptionReportDealLog::getReportNo, report.getReportNo());
if(limitOneByField.isPresent()) { if(limitOneByField.isPresent()) {
OrderChildExceptionReportDealLog dealLog = limitOneByField.get(); OrderChildExceptionReportDealLog dealLog = limitOneByField.get();
vo.setDealWay(dealLog.getDealWay());
vo.setAppealReason(dealLog.getAppealReason());
vo.setCreateName(dealLog.getCreateName());
vo.setAppealTime(DateUtils.formatDateTime(dealLog.getCreateTime()).get());
vo.setAppealPictureUrlList(JSON.parseArray(dealLog.getPictureUrl(),String.class)); vo.setAppealPictureUrlList(JSON.parseArray(dealLog.getPictureUrl(),String.class));
vo.setAppealVideoUrlList(JSON.parseArray(dealLog.getVideoUrl(),String.class)); vo.setAppealVideoUrlList(JSON.parseArray(dealLog.getVideoUrl(),String.class));
} }
List<OrderChildExceptionReportOperationLog> list = orderChildExceptionReportOperationLogDao.listByField( List<OrderChildExceptionReportOperationLog> list = orderChildExceptionReportOperationLogDao.getLogs(report.getReportNo());
OrderChildExceptionReportOperationLog::getReportNo, report.getReportNo());
List<OrderChildExceptionReportOperationLogVO> logs = orderChildExceptionReportOperationLogStruct.convertList(list); List<OrderChildExceptionReportOperationLogVO> logs = orderChildExceptionReportOperationLogStruct.convertList(list);
vo.setOperationLogs(logs); vo.setOperationLogs(logs);
return vo; return vo;
...@@ -379,17 +394,19 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio ...@@ -379,17 +394,19 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio
if(Objects.equals(report.getStatus(),CarrierExceptionReportEnum.Status.PROCESSED.getCode()) if(Objects.equals(report.getStatus(),CarrierExceptionReportEnum.Status.PROCESSED.getCode())
&& Objects.equals(report.getDealResult(),ExceptionReportEnum.DealResult.CARRIER_BREAK_CONTRACT.getCode())){ && Objects.equals(report.getDealResult(),ExceptionReportEnum.DealResult.CARRIER_BREAK_CONTRACT.getCode())){
//创建司机违约记录
saveDriverBreakContractRecord(report,param.getReason());
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
report.setTransferDriverBreakContract(1);
report.setBreakContractReason(param.getReason());
orderChildExceptionReportDao.updateEntityByKey(report);
saveOperationLog(report.getReportNo(),CarrierExceptionLogEnum.Type.TRANSFER_DRIVER_BREAK_CONTRACT,null,loginUserInfo.getUserNo(),
loginUserInfo.getUserName());
}else{
throw new ServiceSystemException(ResultEnum.DATA_ERROR); throw new ServiceSystemException(ResultEnum.DATA_ERROR);
} }
//创建司机违约记录
saveDriverBreakContractRecord(report);
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
report.setTransferDriverBreakContract(1);
report.setBreakContractReason(param.getReason());
orderChildExceptionReportDao.updateEntityByKey(report);
saveOperationLog(report.getReportNo(),CarrierExceptionLogEnum.Type.TRANSFER_DRIVER_BREAK_CONTRACT,null,loginUserInfo.getUserNo(),
loginUserInfo.getUserName());
} }
public void saveOperationLog(String reportNo, CarrierExceptionLogEnum.Type type,String result,Long createBy,String createName){ public void saveOperationLog(String reportNo, CarrierExceptionLogEnum.Type type,String result,Long createBy,String createName){
...@@ -402,7 +419,7 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio ...@@ -402,7 +419,7 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio
orderChildExceptionReportOperationLogDao.saveEntity(operationLog); orderChildExceptionReportOperationLogDao.saveEntity(operationLog);
} }
public void saveDriverBreakContractRecord(OrderChildExceptionReport report){ public void saveDriverBreakContractRecord(OrderChildExceptionReport report,String reason){
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo(); Long userNo = loginUserInfo.getUserNo();
LocalDateTime time = LocalDateTime.now(); LocalDateTime time = LocalDateTime.now();
...@@ -419,12 +436,12 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio ...@@ -419,12 +436,12 @@ public class OrderChildExceptionReportServiceImpl implements OrderChildExceptio
record.setDriverUserNo(orderChild.getDriverUserNo()); record.setDriverUserNo(orderChild.getDriverUserNo());
record.setDriverName(orderChild.getDriverName()); record.setDriverName(orderChild.getDriverName());
record.setFigure(report.getDeductionAmount()); record.setFigure(report.getDeductionAmount());
record.setExceptionCategory(record.getExceptionCategory()); record.setExceptionCategory(report.getExceptionCategory());
record.setExceptionType(record.getExceptionType()); record.setExceptionType(report.getExceptionType());
record.setExceptionReportNo(report.getReportNo()); record.setExceptionReportNo(report.getReportNo());
record.setPictureUrl(record.getPictureUrl()); record.setPictureUrl(report.getPictureUrlJson());
record.setVideoUrl(record.getVideoUrl()); record.setVideoUrl(report.getVideoUrlJson());
record.setRemark(report.getBreakContractReason()); record.setRemark(reason);
record.setCreateBy(userNo); record.setCreateBy(userNo);
record.setCreateName(loginUserInfo.getUserName()); record.setCreateName(loginUserInfo.getUserName());
record.setCreateTime(time); record.setCreateTime(time);
......
package com.clx.performance.service.impl;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.dao.vehiclewarn.VehicleWarnUserDao;
import com.clx.performance.enums.SmsTemplateEnum;
import com.clx.performance.model.vehiclewarn.VehicleWarnUser;
import com.clx.performance.param.mq.SendSmsNoticeParam;
import com.clx.performance.service.SendSmsService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
import static com.clx.performance.constant.RabbitKeyConstants.NOTICE_SEND_SMS_QUEUE_EXCHANGE;
import static com.clx.performance.constant.RabbitKeyConstants.NOTICE_SEND_SMS_QUEUE_ROUTING_KEY;
/**
* @ClassName SendSmsServiceImpl
* @Description
* @Author kavin
* @Date 2024/11/6 10:14
* @Version 1.0
*/
@Service
@Slf4j
@AllArgsConstructor
public class SendSmsServiceImpl implements SendSmsService {
private final RabbitTemplate rabbitTemplate;
private final VehicleWarnUserDao vehicleWarnUserDao;
@Override
public void sendChildWarnConfigSmsNotice(Integer warnTypeCode, SmsTemplateEnum.Type smsTemplateType,
List<String> paramList){
String params = replaceContent(smsTemplateType.getParam(), paramList);
List<String> targets = getTargets(warnTypeCode);
SendSmsNoticeParam param = new SendSmsNoticeParam();
param.setCode(smsTemplateType.getCode());
param.setMobileList(targets);
param.setParams(JSON.parseObject(params));
log.info("开始运单预警通知配置短信消息,短信模版code:{},请求参数:{}",smsTemplateType.getCode(),JSON.toJSONString(param));
Message body = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(param)).getBytes()).build();
rabbitTemplate.send(NOTICE_SEND_SMS_QUEUE_EXCHANGE,NOTICE_SEND_SMS_QUEUE_ROUTING_KEY, body);
log.info("结束运单预警通知配置短信消息,短信模版code:{},", smsTemplateType.getCode());
}
private List<String> getTargets(int code){
return vehicleWarnUserDao.listAllEnable()
.stream()
.filter(item -> JSONUtil.toList(item.getWarnTypeJson(), Integer.class).contains(code))
.map(VehicleWarnUser::getMobile).collect(Collectors.toList());
}
//构建站内信中的内容,替换变量
private static String replaceContent(String content,List<String> list){
int listSize = 0;
int times = countCharTimes(content, "%s");
if(CollectionUtils.isNotEmpty(list)){
listSize = list.size();
}
if(times != listSize){
log.error("替换的变量和字符串中需要的变量数量不一致");
return null;
}
return String.format(content, list.toArray());
}
//查找字符在字符串出现的次数
public static int countCharTimes(String mainStr,String subStr){
// 声明一个要返回的变量
int count = 0;
// 声明一个初始的下标,从初始位置开始查找
int index = 0;
// 获取主数据的长度
int mainStrLength = mainStr.length();
// 获取要查找的数据长度
int subStrLength = subStr.length();
// 如果要查找的数据长度大于主数据的长度则返回0
if (subStrLength > mainStrLength){
return 0;
}
// 循环使用indexOf查找出现的下标,如果出现一次则count++
while ((index = mainStr.indexOf(subStr, index)) != -1) {
count++;
index += subStrLength;
}
return count;
}
}
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum SmsTemplateEnum {
;
@Getter
@AllArgsConstructor
public enum Type {
EXCEPTION_REPORT_DEAL("childExceptionReportDeal", "异常上报处理","{childNo:%s}"),
;
private final String code;
private final String msg;
private final String param;
}
}
...@@ -22,7 +22,7 @@ public enum VehicleWarnConfigEnum { ...@@ -22,7 +22,7 @@ public enum VehicleWarnConfigEnum {
LOAD_TIMEOUT(7, "运单-装车超时"), LOAD_TIMEOUT(7, "运单-装车超时"),
UNLOAD_TIMEOUT(8, "运单-卸车超时"), UNLOAD_TIMEOUT(8, "运单-卸车超时"),
DELAY(9, "运单-运单延误"), DELAY(9, "运单-运单延误"),
EXCEPTION_REPORT_DEAL(10, "异常上报处理"),
; ;
private final Integer code; private final Integer code;
......
package com.clx.performance.param.mq;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
import java.util.Map;
/**
* @ClassName SendSmsNoticeParam
* @Description
* @Author kavin
* @Date 2024/11/6 10:21
* @Version 1.0
*/
@Setter
@Getter
public class SendSmsNoticeParam {
//短信模版code码
private String code;
//发送手机号列表
private List<String> mobileList;
//短信模版参数
private Map<String, Object> params;
}
...@@ -115,7 +115,7 @@ public class OrderChildExceptionReportVO { ...@@ -115,7 +115,7 @@ public class OrderChildExceptionReportVO {
private String transferDriverBreakContractMsg; private String transferDriverBreakContractMsg;
public String transferDriverBreakContractMsg(){ public String getTransferDriverBreakContractMsg(){
if(Objects.nonNull(transferDriverBreakContract)){ if(Objects.nonNull(transferDriverBreakContract)){
return "是"; return "是";
}else{ }else{
...@@ -136,7 +136,8 @@ public class OrderChildExceptionReportVO { ...@@ -136,7 +136,8 @@ public class OrderChildExceptionReportVO {
@Schema(description="处理方式 1:同意扣罚 2:申诉")
private Integer dealWay;
@Schema(description="申诉时间") @Schema(description="申诉时间")
private String appealTime; private String appealTime;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论