From d7162092ff830d590b7ea18b44edd707324c8c4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 24 Dec 2025 09:02:04 +0800 Subject: [PATCH] =?UTF-8?q?refactor(repository):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=9C=8D=E5=8A=A1=E6=8E=A5=E5=8F=A3=E5=8F=8A?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 AdminMessageServiceImpl.remove 方法中的 sourceId 类型由 Integer 改为 Long,统一接口参数类型 - 修改 IAdminMessageService 接口的 remove 方法签名,确保一致性 - 优化 GongFuTicketCreateEvent 中获取处理人 IDs 的方式,避免转换错误 - GongfuTicketServiceImpl 新增设置 cqm 字段,完善工单创建信息 - 调整 TicketCompleteEvent 中消息子类型为 TicketSolutionAudit,修正业务流程 - 修改 TicketMapper.xml 中多处 SQL 联表查询,新增 t_base_area 表连接 - 新增 TableInfoService 和 TableMetaMapper,提供表结构元数据查询功能 - 修复 TicketSolutionAuditServiceImpl 中调用 adminMessageService.remove 的参数类型不匹配问题 --- .../admin/service/TableInfoService.java | 19 ++++++++++++++++++ .../cfs/event/GongFuTicketCreateEvent.java | 4 ++-- .../gongfu/event/TicketCompleteEvent.java | 2 +- .../repository/mapper/TableMetaMapper.java | 15 ++++++++++++++ .../service/IAdminMessageService.java | 2 +- .../service/impl/AdminMessageServiceImpl.java | 2 +- .../service/impl/GongfuTicketServiceImpl.java | 2 ++ .../impl/TicketSolutionAuditServiceImpl.java | 2 +- .../main/resources/mapper/TicketMapper.xml | 20 ++++++++++++------- 9 files changed, 55 insertions(+), 13 deletions(-) create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/TableInfoService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TableMetaMapper.java diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/TableInfoService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/TableInfoService.java new file mode 100644 index 00000000..90b68dae --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/TableInfoService.java @@ -0,0 +1,19 @@ +package com.nflg.mobilebroken.admin.service; + +import com.nflg.mobilebroken.repository.mapper.TableMetaMapper; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +@Component +public class TableInfoService { + + @Resource + private TableMetaMapper tableMetaMapper; + + public List> getTableColumnInfos(String tableName) { + return tableMetaMapper.getTableColumnMeta(tableName); + } +} diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/GongFuTicketCreateEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/GongFuTicketCreateEvent.java index 6f63ecb5..9334e5b6 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/GongFuTicketCreateEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/GongFuTicketCreateEvent.java @@ -92,7 +92,7 @@ public class GongFuTicketCreateEvent extends ApplicationEvent implements Applica private void sendUserMessage1() { //我的待办 - List handlers = adminUserService.listByIds(Collections.singleton(StrUtil.splitToLong(ticket.getHandle(), ","))); + List handlers = adminUserService.listByIds(Arrays.stream(StrUtil.splitToLong(ticket.getHandle(), ",")).boxed().collect(Collectors.toList())); if (CollectionUtil.isNotEmpty(handlers)) { handlers.forEach(c -> adminMessageService.add( new AdminMessage() @@ -157,7 +157,7 @@ public class GongFuTicketCreateEvent extends ApplicationEvent implements Applica .replace("${handleUser}", "") .replace("${createTime}", toTimeString(ticket.getCreateTime())) .replace("${msg}", subject); - List handlers = adminUserService.listByIds(Collections.singleton(StrUtil.splitToLong(ticket.getHandle(), ","))); + List handlers = adminUserService.listByIds(Arrays.stream(StrUtil.splitToLong(ticket.getHandle(), ",")).boxed().collect(Collectors.toList())); sendEmail(handlers.stream().map(AdminUser::getEmail).collect(Collectors.toSet()), subject, content); } catch (Exception ex) { log.error("邮件发送失败", ex); diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCompleteEvent.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCompleteEvent.java index 96872a1f..0f788ae0 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCompleteEvent.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCompleteEvent.java @@ -79,7 +79,7 @@ public class TicketCompleteEvent extends ApplicationEvent implements Application .setSourceId(ticket.getId()) .setSource(3) .setType(MessageType.WorkOrderAssignment.getState()) - .setSubType(MessageSubType.TicketCompletion.getState()) + .setSubType(MessageSubType.TicketSolutionAudit.getState()) .setIsRead(false) .setCreateTime(LocalDateTime.now())) ); diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TableMetaMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TableMetaMapper.java new file mode 100644 index 00000000..8fe3ce9c --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TableMetaMapper.java @@ -0,0 +1,15 @@ +package com.nflg.mobilebroken.repository.mapper; + +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; + +public interface TableMetaMapper { + + @Select("SELECT COLUMN_NAME as name, COLUMN_COMMENT as comment " + + "FROM information_schema.COLUMNS " + + "WHERE TABLE_NAME = #{tableName}") + List> getTableColumnMeta(@Param("tableName") String tableName); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java index ad91b6bd..9b620d98 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java @@ -31,7 +31,7 @@ public interface IAdminMessageService extends IService { Integer getNotReadMessageCount(Integer userId); - void remove(Integer source, Integer sourceId, Integer userId, Integer subType); + void remove(Integer source, Long sourceId, Integer userId, Integer subType); AdminNotReadMessageCountVO getNotReadMessageCount1(Integer userId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java index edb873d0..b9758ab1 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java @@ -93,7 +93,7 @@ public class AdminMessageServiceImpl extends ServiceImpl() .eq(AdminMessage::getSource, source) .eq(AdminMessage::getSourceId, sourceId) diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketServiceImpl.java index 95610fef..301c6144 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketServiceImpl.java @@ -74,6 +74,7 @@ public class GongfuTicketServiceImpl extends ServiceImpl cqms = deviceTypeService.getCqms(request.getDeviceNo()); GongfuTicket ticket = new GongfuTicket() .setNo(no) .setDeviceNo(request.getDeviceNo()) @@ -86,6 +87,7 @@ public class GongfuTicketServiceImpl extends ServiceImpl SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason - ,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),'') AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName' + ,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),IF(u.type=1,a3.area_name,'')) AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName' ,d.customer_name AS 'customerName',d.agent_name AS 'agentName',IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' ,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed',auc.user_name AS 'cqm' @@ -166,6 +167,7 @@ LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN admin_user au ON t.user_id=au.id LEFT JOIN app_area a2 ON u.area_id=a2.id + LEFT JOIN t_base_area a3 ON u.area_id=a3.id LEFT JOIN device d ON t.device_no=d.device_no and d.data_valid_state=1 LEFT JOIN t_base_device_type dt ON d.device_type=dt.device_type LEFT JOIN dictionary_item di ON d.warranty_state=di.id @@ -179,7 +181,7 @@ SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason - ,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),'') AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName' + ,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),IF(u.type=1,a3.area_name,'')) AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName' ,d.customer_name AS 'customerName',d.agent_name AS 'agentName',IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' ,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',true AS 'followed',auc.user_name AS 'cqm' @@ -212,6 +215,7 @@ LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN admin_user au ON t.user_id=au.id LEFT JOIN app_area a2 ON u.area_id=a2.id + LEFT JOIN t_base_area a3 ON u.area_id=a3.id INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1 LEFT JOIN device d ON t.device_no=d.device_no and d.data_valid_state=1 LEFT JOIN t_base_device_type dt ON d.device_type=dt.device_type @@ -225,7 +229,7 @@ SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason - ,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),'') AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName' + ,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),IF(u.type=1,a3.area_name,'')) AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName' ,d.customer_name AS 'customerName',d.agent_name AS 'agentName',IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' ,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',true AS 'followed',auc.user_name AS 'cqm' @@ -268,6 +273,7 @@ LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN admin_user au ON t.user_id=au.id LEFT JOIN app_area a2 ON u.area_id=a2.id + LEFT JOIN t_base_area a3 ON u.area_id=a3.id INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1 AND tf.favorites_id=#{favouritesId}