添加平台构建工单

This commit is contained in:
yangjun 2025-07-11 08:37:49 +08:00
parent d636afaa9c
commit 1fdb860d1d
4 changed files with 156 additions and 0 deletions

View File

@ -242,4 +242,15 @@ public class OrgApplyInfo implements Serializable {
@ApiModelProperty(value = "加盟时间")
private java.util.Date franchiseTime;
private java.lang.String replyContent;
private java.lang.String replyFile;
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date replyTime;
private java.lang.String handleBy;
@Dict(dicCode = "work_order_status")
private java.lang.String workOrderStatus;
private java.lang.String workOrderId;
}

View File

@ -0,0 +1,28 @@
package com.nu.mq.workorder.exceptionhandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.AmqpRejectAndDontRequeueException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.listener.api.RabbitListenerErrorHandler;
import org.springframework.amqp.rabbit.support.ListenerExecutionFailedException;
import org.springframework.stereotype.Component;
@Slf4j
@Component("workOrderMQErrorHandler")
public class WorkOrderMQExceptionHandler implements RabbitListenerErrorHandler {
@Override
public Object handleError(Message message, org.springframework.messaging.Message<?> message1, ListenerExecutionFailedException e) {
log.error("MQ消息处理失败 | 消息体: {} | 异常原因: {}", new String(message.getBody()), e.getCause().getMessage());
// 根据异常类型选择处理策略
// if (isRetryable(e)) {
// // 可重试异常抛出异常触发重试
// throw e;
// } else {
// 不可恢复异常拒绝消息且不重新入队
throw new AmqpRejectAndDontRequeueException("消息处理失败且禁止重试", e);
// }
}
}

View File

@ -0,0 +1,50 @@
package com.nu.mq.workorder.listener;
import com.nu.dto.WorkOrderMQDto;
import com.nu.modules.orgapplyinfo.entity.OrgApplyInfo;
import com.nu.modules.orgapplyinfo.service.IOrgApplyInfoService;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class WorkOrderMQListener {
@Autowired
private IOrgApplyInfoService orgApplyInfoService;
/**
* 工单回执
*/
@AutoLog(value = "工单-工单回执")
@RabbitListener(
bindings = @QueueBinding(
value = @Queue(name = "nu.workOrder.reply"),
exchange = @Exchange(name = "nu.workOrder.reply", type = ExchangeTypes.DIRECT),
key = "nu.workOrder.reply"
),
errorHandler = "workOrderMQErrorHandler"
)
public void handleNuBaseInfoSyncMessageStatus(WorkOrderMQDto workOrderMQDto) {
log.info("接收到工单回复");
log.info("工单回复: {}", workOrderMQDto);
OrgApplyInfo orgApplyInfo = orgApplyInfoService.getById(workOrderMQDto.getOrgId());
if(orgApplyInfo != null){
orgApplyInfo.setReplyContent(workOrderMQDto.getReplyContent());
orgApplyInfo.setReplyFile(workOrderMQDto.getReplyFile());
orgApplyInfo.setReplyTime(workOrderMQDto.getReplyTime());
orgApplyInfo.setHandleBy(workOrderMQDto.getHandleBy());
orgApplyInfo.setWorkOrderStatus("2");
orgApplyInfo.setWorkOrderId(workOrderMQDto.getId());
orgApplyInfoService.updateById(orgApplyInfo);
}
}
}

View File

@ -0,0 +1,67 @@
package com.nu.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: 工单表
* @Author: zmy
* @Date: 2025-07-08
* @Version: V1.0
*/
@Data
public class WorkOrderMQDto implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
private String id;
/**区分同一工单用nu_word_order.id*/
private String pkId;
/**机构ID*/
private String orgId;
/**机构编码(可能不存在)*/
private String orgCode;
/**机构名称*/
private String orgName;
/**平台类型pc wechat pad*/
private String platType;
/**标题*/
private String title;
/**描述*/
private String content;
/**附件*/
private String filePath;
/**状态 0待接收 1处理中 3已解决 4工单异常 5外部原因*/
private String status;
/**创建人*/
private String createBy;
/**创建时间*/
private Date createTime;
/**回复内容*/
private String replyContent;
/**回复附件*/
private String replyFile;
/**回复时间*/
private Date replyTime;
/**处理人*/
private String handleBy;
/**工单提交人联系电话*/
private String tel;
/**工单提交人邮件地址*/
private String email;
/**状态 1平台构建*/
private String workType;
}