Przeglądaj źródła

增加与ai大模型对话

wwh 2 tygodni temu
rodzic
commit
56fc35c1cc

+ 21 - 1
huimv-employment/fe-api/src/main/java/com/huimv/employment/controller/mp/ConversationController.java

@@ -15,6 +15,8 @@ import com.huimv.employment.service.conversation.dto.ConversationMessagePageResp
15
 import com.huimv.employment.service.conversation.dto.ConversationSummaryResponse;
15
 import com.huimv.employment.service.conversation.dto.ConversationSummaryResponse;
16
 import com.huimv.employment.service.draft.DraftService;
16
 import com.huimv.employment.service.draft.DraftService;
17
 import com.huimv.employment.service.draft.dto.McpDraftCalculateResponse;
17
 import com.huimv.employment.service.draft.dto.McpDraftCalculateResponse;
18
+import com.huimv.employment.service.registration.RegistrationBatchService;
19
+import com.huimv.employment.service.registration.dto.RegistrationBatchDetailResponse;
18
 import io.swagger.v3.oas.annotations.Operation;
20
 import io.swagger.v3.oas.annotations.Operation;
19
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
21
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
20
 import io.swagger.v3.oas.annotations.tags.Tag;
22
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -57,15 +59,18 @@ public class ConversationController {
57
     private final ConversationChatService conversationChatService;
59
     private final ConversationChatService conversationChatService;
58
     private final ConversationMessageService conversationMessageService;
60
     private final ConversationMessageService conversationMessageService;
59
     private final DraftService draftService;
61
     private final DraftService draftService;
62
+    private final RegistrationBatchService registrationBatchService;
60
 
63
 
61
     public ConversationController(ConversationService conversationService,
64
     public ConversationController(ConversationService conversationService,
62
                                   ConversationChatService conversationChatService,
65
                                   ConversationChatService conversationChatService,
63
                                   ConversationMessageService conversationMessageService,
66
                                   ConversationMessageService conversationMessageService,
64
-                                  DraftService draftService) {
67
+                                  DraftService draftService,
68
+                                  RegistrationBatchService registrationBatchService) {
65
         this.conversationService = conversationService;
69
         this.conversationService = conversationService;
66
         this.conversationChatService = conversationChatService;
70
         this.conversationChatService = conversationChatService;
67
         this.conversationMessageService = conversationMessageService;
71
         this.conversationMessageService = conversationMessageService;
68
         this.draftService = draftService;
72
         this.draftService = draftService;
73
+        this.registrationBatchService = registrationBatchService;
69
     }
74
     }
70
 
75
 
71
     /**
76
     /**
@@ -126,6 +131,21 @@ public class ConversationController {
126
                 loginUser.getUserId(), conversationId));
131
                 loginUser.getUserId(), conversationId));
127
     }
132
     }
128
 
133
 
134
+    /**
135
+     * 查询指定会话下全部草稿的登记进度。
136
+     */
137
+    @GetMapping("/{id}/drafts/registration-progress")
138
+    @Operation(summary = "按会话查询全部草稿登记进度",
139
+            description = "返回该会话下已确认方案并建有登记批次的草稿进度列表;"
140
+                    + "每个元素结构与 GET /api/v1/mp/registration-batches?draft_id= 一致。"
141
+                    + "尚未确认方案、无批次的草稿自动跳过。仅可查询本企业用户自己的会话。")
142
+    public R<List<RegistrationBatchDetailResponse>> listDraftRegistrationProgress(
143
+            @PathVariable("id") Long conversationId) {
144
+        LoginUser loginUser = requireEnterprise();
145
+        return R.ok(registrationBatchService.listDetailsByConversation(
146
+                loginUser.getUserId(), conversationId));
147
+    }
148
+
129
     /**
149
     /**
130
      * 在已有会话内发起 AI 对话(SSE 流式,流结束后落库)。
150
      * 在已有会话内发起 AI 对话(SSE 流式,流结束后落库)。
131
      */
151
      */

+ 34 - 0
huimv-employment/fe-service/src/main/java/com/huimv/employment/service/registration/RegistrationBatchService.java

@@ -17,6 +17,7 @@ import com.huimv.employment.dao.mapper.FeWorkerRegistrationMapper;
17
 import com.huimv.employment.dao.mapper.FeWorkflowDefinitionMapper;
17
 import com.huimv.employment.dao.mapper.FeWorkflowDefinitionMapper;
18
 import com.huimv.employment.dao.mapper.FeWorkflowStepMapper;
18
 import com.huimv.employment.dao.mapper.FeWorkflowStepMapper;
19
 import com.huimv.employment.service.config.RegistrationQrProperties;
19
 import com.huimv.employment.service.config.RegistrationQrProperties;
20
+import com.huimv.employment.service.conversation.ConversationService;
20
 import com.huimv.employment.service.enterprise.EnterpriseService;
21
 import com.huimv.employment.service.enterprise.EnterpriseService;
21
 import com.huimv.employment.service.registration.dto.RegistrationBatchDetailResponse;
22
 import com.huimv.employment.service.registration.dto.RegistrationBatchDetailResponse;
22
 import com.huimv.employment.service.registration.dto.RegistrationBatchProgressResponse;
23
 import com.huimv.employment.service.registration.dto.RegistrationBatchProgressResponse;
@@ -76,6 +77,7 @@ public class RegistrationBatchService {
76
     private final FeWorkflowDefinitionMapper feWorkflowDefinitionMapper;
77
     private final FeWorkflowDefinitionMapper feWorkflowDefinitionMapper;
77
     private final FeWorkflowStepMapper feWorkflowStepMapper;
78
     private final FeWorkflowStepMapper feWorkflowStepMapper;
78
     private final EnterpriseService enterpriseService;
79
     private final EnterpriseService enterpriseService;
80
+    private final ConversationService conversationService;
79
     private final WeChatMiniAppService weChatMiniAppService;
81
     private final WeChatMiniAppService weChatMiniAppService;
80
     private final RegistrationQrProperties qrProperties;
82
     private final RegistrationQrProperties qrProperties;
81
 
83
 
@@ -86,6 +88,7 @@ public class RegistrationBatchService {
86
                                     FeWorkflowDefinitionMapper feWorkflowDefinitionMapper,
88
                                     FeWorkflowDefinitionMapper feWorkflowDefinitionMapper,
87
                                     FeWorkflowStepMapper feWorkflowStepMapper,
89
                                     FeWorkflowStepMapper feWorkflowStepMapper,
88
                                     EnterpriseService enterpriseService,
90
                                     EnterpriseService enterpriseService,
91
+                                    ConversationService conversationService,
89
                                     WeChatMiniAppService weChatMiniAppService,
92
                                     WeChatMiniAppService weChatMiniAppService,
90
                                     RegistrationQrProperties qrProperties) {
93
                                     RegistrationQrProperties qrProperties) {
91
         this.feRegistrationBatchMapper = feRegistrationBatchMapper;
94
         this.feRegistrationBatchMapper = feRegistrationBatchMapper;
@@ -95,6 +98,7 @@ public class RegistrationBatchService {
95
         this.feWorkflowDefinitionMapper = feWorkflowDefinitionMapper;
98
         this.feWorkflowDefinitionMapper = feWorkflowDefinitionMapper;
96
         this.feWorkflowStepMapper = feWorkflowStepMapper;
99
         this.feWorkflowStepMapper = feWorkflowStepMapper;
97
         this.enterpriseService = enterpriseService;
100
         this.enterpriseService = enterpriseService;
101
+        this.conversationService = conversationService;
98
         this.weChatMiniAppService = weChatMiniAppService;
102
         this.weChatMiniAppService = weChatMiniAppService;
99
         this.qrProperties = qrProperties;
103
         this.qrProperties = qrProperties;
100
     }
104
     }
@@ -180,6 +184,35 @@ public class RegistrationBatchService {
180
         return toDetailResponse(batch, order, draft);
184
         return toDetailResponse(batch, order, draft);
181
     }
185
     }
182
 
186
 
187
+    /**
188
+     * 按会话查询其下全部草稿的登记进度详情。
189
+     * <p>元素结构与 {@link #getDetailByDraftId} 相同;尚未确认方案、无批次的草稿跳过。</p>
190
+     */
191
+    public List<RegistrationBatchDetailResponse> listDetailsByConversation(Long userId, Long conversationId) {
192
+        conversationService.requireOwned(userId, conversationId);
193
+        FeEnterprise enterprise = enterpriseService.findEnterpriseByUserId(userId);
194
+        if (enterprise == null) {
195
+            throw new BizException(ErrorCode.NOT_FOUND, "企业信息不存在");
196
+        }
197
+        List<FeEmploymentDraft> drafts = feEmploymentDraftMapper.selectList(
198
+                new LambdaQueryWrapper<FeEmploymentDraft>()
199
+                        .eq(FeEmploymentDraft::getConversationId, conversationId)
200
+                        .eq(FeEmploymentDraft::getEnterpriseId, enterprise.getId())
201
+                        .orderByAsc(FeEmploymentDraft::getId));
202
+        List<RegistrationBatchDetailResponse> result = new ArrayList<>();
203
+        if (drafts == null || drafts.isEmpty()) {
204
+            return result;
205
+        }
206
+        for (FeEmploymentDraft draft : drafts) {
207
+            try {
208
+                result.add(getDetailByDraftId(userId, draft.getId()));
209
+            } catch (BizException ignored) {
210
+                // 未确认方案或无批次时跳过
211
+            }
212
+        }
213
+        return result;
214
+    }
215
+
183
     /**
216
     /**
184
      * 企业端登记进度详情:按批次主键 ID 或业务编号(如 bat_1)。
217
      * 企业端登记进度详情:按批次主键 ID 或业务编号(如 bat_1)。
185
      */
218
      */
@@ -215,6 +248,7 @@ public class RegistrationBatchService {
215
         String batchNo = batch.getBatchNo();
248
         String batchNo = batch.getBatchNo();
216
 
249
 
217
         RegistrationBatchDetailResponse response = new RegistrationBatchDetailResponse();
250
         RegistrationBatchDetailResponse response = new RegistrationBatchDetailResponse();
251
+        response.setDraftId(draft != null ? draft.getId() : order.getDraftId());
218
         response.setBatchId(batch.getId());
252
         response.setBatchId(batch.getId());
219
         response.setBatchNo(batchNo);
253
         response.setBatchNo(batchNo);
220
         response.setTitle(title);
254
         response.setTitle(title);

+ 12 - 0
huimv-employment/fe-service/src/main/java/com/huimv/employment/service/registration/dto/RegistrationBatchDetailResponse.java

@@ -10,6 +10,10 @@ import java.util.List;
10
 @Schema(description = "登记批次详情(进度管理)")
10
 @Schema(description = "登记批次详情(进度管理)")
11
 public class RegistrationBatchDetailResponse {
11
 public class RegistrationBatchDetailResponse {
12
 
12
 
13
+    @JsonProperty("draft_id")
14
+    @Schema(description = "关联草稿 ID")
15
+    private Long draftId;
16
+
13
     @JsonProperty("batch_id")
17
     @JsonProperty("batch_id")
14
     @Schema(description = "批次主键 ID")
18
     @Schema(description = "批次主键 ID")
15
     private Long batchId;
19
     private Long batchId;
@@ -69,6 +73,14 @@ public class RegistrationBatchDetailResponse {
69
     @Schema(description = "人员列表")
73
     @Schema(description = "人员列表")
70
     private List<RegistrationBatchWorkerItemResponse> workers = new ArrayList<>();
74
     private List<RegistrationBatchWorkerItemResponse> workers = new ArrayList<>();
71
 
75
 
76
+    public Long getDraftId() {
77
+        return draftId;
78
+    }
79
+
80
+    public void setDraftId(Long draftId) {
81
+        this.draftId = draftId;
82
+    }
83
+
72
     public Long getBatchId() {
84
     public Long getBatchId() {
73
         return batchId;
85
         return batchId;
74
     }
86
     }