From d636afaa9cab61a36250a319b32de3da924590a3 Mon Sep 17 00:00:00 2001 From: yangjun <1173114630@qq.com> Date: Wed, 9 Jul 2025 17:32:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=8C=87=E4=BB=A4=E5=90=8C=E6=AD=A5=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SysDepartController.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java index 6d230cf..b1e3804 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java @@ -3,20 +3,26 @@ package org.jeecg.modules.system.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.config.TenantContext; import org.jeecg.common.constant.CacheConstant; import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.ImportExcelUtil; import org.jeecg.common.util.RedisUtil; import org.jeecg.common.util.oConvertUtils; import org.jeecg.config.mybatis.MybatisPlusSaasConfig; +import org.jeecg.modules.system.entity.SysDataSource; import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.model.DepartIdModel; @@ -742,4 +748,17 @@ public class SysDepartController { } + + @AutoLog(value = "机构列表-分页列表查询") + @GetMapping(value = "/list") + public Result list( SysDepart sysDepart, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "8") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDepart, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = sysDepartService.page(page, queryWrapper); + return Result.ok(pageList); + } + } From 1fdb860d1dbb0273b768888156b643061af841bd Mon Sep 17 00:00:00 2001 From: yangjun <1173114630@qq.com> Date: Fri, 11 Jul 2025 08:37:49 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=B7=A5=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../orgapplyinfo/entity/OrgApplyInfo.java | 11 +++ .../WorkOrderMQExceptionHandler.java | 28 ++++++++ .../listener/WorkOrderMQListener.java | 50 ++++++++++++++ .../main/java/com/nu/dto/WorkOrderMQDto.java | 67 +++++++++++++++++++ 4 files changed, 156 insertions(+) create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/workorder/exceptionhandler/WorkOrderMQExceptionHandler.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/workorder/listener/WorkOrderMQListener.java create mode 100644 nursing-unit-common/src/main/java/com/nu/dto/WorkOrderMQDto.java diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfo.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfo.java index 76d9474..babdaa4 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfo.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfo.java @@ -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; + + } diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/workorder/exceptionhandler/WorkOrderMQExceptionHandler.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/workorder/exceptionhandler/WorkOrderMQExceptionHandler.java new file mode 100644 index 0000000..401b0c5 --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/workorder/exceptionhandler/WorkOrderMQExceptionHandler.java @@ -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); +// } + } + +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/workorder/listener/WorkOrderMQListener.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/workorder/listener/WorkOrderMQListener.java new file mode 100644 index 0000000..7ec3e59 --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/workorder/listener/WorkOrderMQListener.java @@ -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); + } + + } + +} diff --git a/nursing-unit-common/src/main/java/com/nu/dto/WorkOrderMQDto.java b/nursing-unit-common/src/main/java/com/nu/dto/WorkOrderMQDto.java new file mode 100644 index 0000000..c6db6e2 --- /dev/null +++ b/nursing-unit-common/src/main/java/com/nu/dto/WorkOrderMQDto.java @@ -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; +}