Sfoglia il codice sorgente

20251210 生成驳导函

lrj 4 giorni fa
parent
commit
c5ef7aa792

+ 1 - 0
src/main/java/cn/cslg/pas/mapper/ReportAffairMapper.java

@@ -34,5 +34,6 @@ public interface ReportAffairMapper extends BaseMapper<ReportAffair> {
     public List<OralTrailVO> queryOralTrailList(@Param("projectId") Integer projectId, @Param("casePhaseId") Integer casePhaseId);
 
     public List<ReportAffair> queryReportAffairList(@Param("projectId") Integer projectId);
+    public List<ReportAffair> queryShouldNoticeAffair(Integer projectId);
 
 }

+ 1 - 1
src/main/java/cn/cslg/pas/service/dify/GenerateInstructionService.java

@@ -97,7 +97,7 @@ public class GenerateInstructionService {
 
     public String getMainClaimContent(Integer mainFlag, String claim) {
         if (mainFlag <= num_lower.length) {
-            claim = "第" + DataUtils.numberToChinese(mainFlag) + "方面,本申请提供" + claim;
+            claim = "第" + DataUtils.numberToChinese(mainFlag+1) + "方面,本申请提供" + claim;
         }
         // 正则表达式模式(注意 Java 中需要双反斜杠转义)
         return claim; // 未找到匹配时返回空字符串

+ 19 - 5
src/main/java/cn/cslg/pas/service/dify/GenerateRejectionService.java

@@ -152,6 +152,7 @@ public class GenerateRejectionService {
                                 line = line.substring(prefixToRemove.length());
                             }
                             try {
+
                                 JSONObject jsonObject = JSON.parseObject(line);
                                 String sessionConversationId = jsonObject.get("conversation_id").toString();
                                 String event = jsonObject.get("event").toString();
@@ -173,9 +174,11 @@ public class GenerateRejectionService {
                                                 List<JSONObject> publicNos = getPubilcNos(object);
                                                 saveContent(confessionSession, publicNos);
                                                 generateDoc(generateRejectionDTO, confessionSessionId, object, publicNos);
+                                            }else {
+                                                saveContent(confessionSession, dataObject);
                                             }
                                         } catch (Exception e) {
-
+                                            e.printStackTrace();
                                         }
                                     }
 
@@ -186,6 +189,7 @@ public class GenerateRejectionService {
                             emitter.next(line); // 将每行数据发送到 Flux
                         }
                     } catch (IOException e) {
+                        e.printStackTrace();
                         emitter.error(e);
                     } finally {
                         businessCompleted.set(true);
@@ -232,7 +236,7 @@ public class GenerateRejectionService {
             List<String> tem = cn.cslg.pas.common.utils.StringUtils.changeStringToString(item, "\r?\n+|<br>+");
             rejectionAnalysis.addAll(tem);
         }
-        map.put("rejection_analysis",rejectionAnalysis);
+        map.put("rejection_analysis", rejectionAnalysis);
         List<JSONObject> reviewFileList = new ArrayList<>();
         List<JSONObject> reviewFiles = object.getJSONArray("review_files");
         for (JSONObject jsonObject : reviewFiles) {
@@ -249,9 +253,9 @@ public class GenerateRejectionService {
                     sign = "和";
                 }
                 if (itemPublicNosStr != null) {
-                    itemPublicNosStr = itemPublicNosStr + sign + "对比文件" + pIndex + "("+pPublicNo+")";
+                    itemPublicNosStr = itemPublicNosStr + sign + "对比文件" + pIndex + "(" + pPublicNo + ")";
                 } else {
-                    itemPublicNosStr = "对比文件" + pIndex + "("+pPublicNo+")";
+                    itemPublicNosStr = "对比文件" + pIndex + "(" + pPublicNo + ")";
                 }
             }
             JSONObject obj = new JSONObject();
@@ -361,7 +365,17 @@ public class GenerateRejectionService {
         String reJson = JSON.toJSONString(contentObject);
         confessionSessionMapper.updateSingleField(confessionSessionId, "content", reJson);
     }
-
+    public void saveContent(ConfessionSession confessionSession, JSONObject jsonObject) {
+        Integer confessionSessionId = confessionSession.getId();
+        String content = confessionSession.getContent();
+        JSONObject contentObject = new JSONObject();
+        if (content != null && !content.trim().equals("")) {
+            contentObject = JSON.parseObject(content);
+        }
+        contentObject.put("dify_result", jsonObject);
+        String reJson = JSON.toJSONString(contentObject);
+        confessionSessionMapper.updateSingleField(confessionSessionId, "content", reJson);
+    }
     public void loadPatentList(List<JSONObject> jsonObjects) {
         for (JSONObject jsonObject : jsonObjects) {
             String publicNo = jsonObject.getString("publicNo");

+ 94 - 0
src/main/java/cn/cslg/pas/service/quartzService/SysReportNoticeJobService.java

@@ -0,0 +1,94 @@
+package cn.cslg.pas.service.quartzService;
+
+import cn.cslg.pas.common.core.base.Cycle;
+import cn.cslg.pas.common.model.report.QueryMatchCasePersonDTO;
+import cn.cslg.pas.common.model.report.QueryMatchCasePersonVO;
+import cn.cslg.pas.common.utils.DateUtils2;
+import cn.cslg.pas.common.utils.utilVO.CheckDateConditionVO;
+import cn.cslg.pas.domain.business.ImportTaskCondition;
+import cn.cslg.pas.domain.business.PatentProject;
+import cn.cslg.pas.domain.business.ReportAffair;
+import cn.cslg.pas.domain.business.ReportProject;
+import cn.cslg.pas.domain.report.MatchCasePerson;
+import cn.cslg.pas.mapper.ReportAffairMapper;
+import cn.cslg.pas.service.MailSendService;
+import cn.cslg.pas.service.business.ImportTaskConditionService;
+import cn.cslg.pas.service.business.ImportTaskService;
+import cn.cslg.pas.service.business.PatentProjectService;
+import cn.cslg.pas.service.business.ReportProjectService;
+import cn.cslg.pas.service.report.MatchCasePersonService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import org.quartz.DisallowConcurrentExecution;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@DisallowConcurrentExecution
+@RequiredArgsConstructor
+@Service
+public class SysReportNoticeJobService extends QuartzJobBean {
+    private final ImportTaskConditionService importTaskConditionService;
+    private final ImportTaskService importTaskService;
+    private final PatentProjectService patentProjectService;
+    private final MailSendService mailSendService;
+    private final ReportProjectService reportProjectService;
+    private final ReportAffairMapper reportAffairMapper;
+    private final MatchCasePersonService matchCasePersonService;
+
+    @Override
+    public void executeInternal(JobExecutionContext context) throws JobExecutionException {
+
+        mailSendService.sendSysCycleStartEmail("报告节点监控开始");
+        System.out.println("task start");
+        this.reportNotice();
+
+    }
+
+
+    public void reportNotice() {
+        Long current = 1l;
+        Long size = 0l;
+        IPage<ReportProject> reportProjectIPage = reportProjectService.page(new Page<>(1, 10));
+        Long total = reportProjectIPage.getTotal();
+        Long page = total / size;
+        if (page % size != 0) {
+            page += 1;
+        }
+        while (current <= page) {
+            try {
+                IPage<ReportProject> reportProjectIPage1 = reportProjectService.page(new Page<>(1, 10));
+                List<ReportProject> reportProjects = reportProjectIPage1.getRecords();
+                for (ReportProject reportProject : reportProjects) {
+
+                    Integer projectId = reportProject.getProjectId();
+                    List<ReportAffair> reportAffairs = reportAffairMapper.queryShouldNoticeAffair(projectId);
+                    if (reportAffairs != null && reportAffairs.size() > 0) {
+                        ReportAffair reportAffair = reportAffairs.get(0);
+                        QueryMatchCasePersonDTO queryMatchCasePersonDTO = new QueryMatchCasePersonDTO();
+                        queryMatchCasePersonDTO.setReportId(projectId);
+                        List<QueryMatchCasePersonVO> queryMatchCasePersonVOS = matchCasePersonService.getReportMatchCasePerson(queryMatchCasePersonDTO);
+                    }
+                }
+                current += 1;
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public void sendEmail(Integer project,ReportAffair reportAffair, List<QueryMatchCasePersonVO> queryMatchCasePersonVOS){
+
+    }
+
+}
+
+

BIN
src/main/resources/file/reportTemple/rejection.docx


+ 6 - 0
src/main/resources/mapper/ReportAffairMapper.xml

@@ -142,4 +142,10 @@
         where project_id = #{projectId} and evidence_risk_response != '' and evidence_risk_response is not null
         ORDER BY occurred_time DESC,id DESC
     </select>
+    <select id="queryShouldNoticeAffair" resultType="cn.cslg.pas.domain.business.ReportAffair">
+        select *
+        from report_affair
+        where  id in (select  id  from report_affair_case_phase where cal_official_deadline is not null ) and  project_id=#{projectId}
+        ORDER BY occurred_time DESC
+    </select>
 </mapper>