Browse Source

完成合同审核的优化和调整

ai_300
zhouhaibin 4 days ago
parent
commit
5e49df3b5b
  1. 2
      ruoyi-admin/src/main/resources/application-dev.yml
  2. 6
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualCaseFilesController.java
  3. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualRegulationArticlesController.java
  4. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualRegulationNamesController.java
  5. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTaskChecklistController.java
  6. 4
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTaskResultsController.java
  7. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTaskTypeController.java
  8. 10
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTasksController.java
  9. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java
  10. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTasksController.java
  11. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualTasksMapper.java
  12. 25
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualRegulationNamesServiceImpl.java
  13. 51
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTaskResultsServiceImpl.java
  14. 1
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTasksServiceImpl.java
  15. 5
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksServiceImpl.java

2
ruoyi-admin/src/main/resources/application-dev.yml

@ -108,7 +108,7 @@ spring.data:
# 数据库索引 # 数据库索引
database: 0 database: 0
# redis 密码必须配置 # redis 密码必须配置
# password: root # password: F*Nx=BZli+ZCCI-Fil+3
# 连接超时时间 # 连接超时时间
timeout: 10s timeout: 10s
# 是否开启ssl # 是否开启ssl

6
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualCaseFilesController.java

@ -32,7 +32,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/productManagement/ContractualCaseFiles") @RequestMapping("/contractreview/contractualCaseFiles")
public class ContractualCaseFilesController extends BaseController { public class ContractualCaseFilesController extends BaseController {
private final IContractualCaseFilesService contractualCaseFilesService; private final IContractualCaseFilesService contractualCaseFilesService;
@ -132,9 +132,9 @@ public class ContractualCaseFilesController extends BaseController {
@SaCheckPermission("productManagement:ContractualCaseFiles:query") @SaCheckPermission("productManagement:ContractualCaseFiles:query")
@GetMapping("/view/{id}") @GetMapping("/view/{id}")
public void viewPdf(@NotNull(message = "案例文件ID不能为空") public void viewPdf(@NotNull(message = "案例文件ID不能为空")
@PathVariable Long id, @PathVariable Long id,
HttpServletResponse response) { HttpServletResponse response) {
contractualCaseFilesService.generateCasePdf(id, response); contractualCaseFilesService.generateCasePdf(id, response);
} }
} }

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualRegulationArticlesController.java

@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/productManagement/regulationArticles") @RequestMapping("/contractreview/regulationArticles")
public class ContractualRegulationArticlesController extends BaseController { public class ContractualRegulationArticlesController extends BaseController {
private final IContractualRegulationArticlesService contractualRegulationArticlesService; private final IContractualRegulationArticlesService contractualRegulationArticlesService;

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualRegulationNamesController.java

@ -32,7 +32,7 @@ import org.dromara.productManagement.domain.vo.ContractualRegulationArticlesVo;
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/productManagement/ContractualRegulationNames") @RequestMapping("/contractreview/contractualRegulationNames")
public class ContractualRegulationNamesController extends BaseController { public class ContractualRegulationNamesController extends BaseController {
private final IContractualRegulationNamesService contractualRegulationNamesService; private final IContractualRegulationNamesService contractualRegulationNamesService;

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTaskChecklistController.java

@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/productManagement/ContractualTaskChecklist") @RequestMapping("/contractreview/contractualTaskChecklist")
public class ContractualTaskChecklistController extends BaseController { public class ContractualTaskChecklistController extends BaseController {
private final IContractualTaskChecklistService contractualTaskChecklistService; private final IContractualTaskChecklistService contractualTaskChecklistService;

4
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTaskResultsController.java

@ -23,7 +23,7 @@ import java.util.List;
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/productManagement/ContractualTaskResults") @RequestMapping("/contractreview/contractualTaskResults")
public class ContractualTaskResultsController extends BaseController { public class ContractualTaskResultsController extends BaseController {
private final IContractualTaskResultsService contractualTaskResultsService; private final IContractualTaskResultsService contractualTaskResultsService;
@ -93,4 +93,4 @@ public class ContractualTaskResultsController extends BaseController {
@NotEmpty(message = "值不能为空") @PathVariable("value") String value) { @NotEmpty(message = "值不能为空") @PathVariable("value") String value) {
return toAjax(contractualTaskResultsService.updateResultItemStatus(id, field, value)); return toAjax(contractualTaskResultsService.updateResultItemStatus(id, field, value));
} }
} }

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTaskTypeController.java

@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/productManagement/ContractualTaskType") @RequestMapping("/contractreview/contractualTaskType")
public class ContractualTaskTypeController extends BaseController { public class ContractualTaskTypeController extends BaseController {
private final IContractualTaskTypeService contractualTaskTypeService; private final IContractualTaskTypeService contractualTaskTypeService;

10
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTasksController.java

@ -37,7 +37,7 @@ import org.dromara.productManagement.domain.StartContractReviewRequest;
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/productManagement/ContractualTasks") @RequestMapping("/contractreview/contractualTasks")
public class ContractualTasksController extends BaseController { public class ContractualTasksController extends BaseController {
private final IContractualTasksService contractualTasksService; private final IContractualTasksService contractualTasksService;
@ -147,7 +147,7 @@ public class ContractualTasksController extends BaseController {
/** /**
* 启动合同审查任务 * 启动合同审查任务
* *
* @param request 审查请求数据 * @param request 审查请求数据
*/ */
@PostMapping("/startReview") @PostMapping("/startReview")
@ -157,16 +157,16 @@ public class ContractualTasksController extends BaseController {
if (request.getOssId() == null || request.getOssId().trim().isEmpty()) { if (request.getOssId() == null || request.getOssId().trim().isEmpty()) {
return R.fail("文件ID不能为空"); return R.fail("文件ID不能为空");
} }
if (request.getReviewTypes() == null || request.getReviewTypes().isEmpty()) { if (request.getReviewTypes() == null || request.getReviewTypes().isEmpty()) {
return R.fail("审查类型不能为空"); return R.fail("审查类型不能为空");
} }
// 调用服务层启动审查 // 调用服务层启动审查
Map<String, Object> result = contractualTasksService.startContractReview(request); Map<String, Object> result = contractualTasksService.startContractReview(request);
return R.ok(result); return R.ok(result);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return R.fail("启动合同审查失败: " + e.getMessage()); return R.fail("启动合同审查失败: " + e.getMessage());

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java

@ -32,7 +32,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/productManagement/DocumentTaskResults") @RequestMapping("/documentreview/documentTaskResults")
public class DocumentTaskResultsController extends BaseController { public class DocumentTaskResultsController extends BaseController {
private final IDocumentTaskResultsService documentTaskResultsService; private final IDocumentTaskResultsService documentTaskResultsService;

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTasksController.java

@ -38,7 +38,7 @@ import org.springframework.web.multipart.MultipartFile;
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/productManagement/DocumentTasks") @RequestMapping("/documentreview/documentTasks")
public class DocumentTasksController extends BaseController { public class DocumentTasksController extends BaseController {
private final IDocumentTasksService documentTasksService; private final IDocumentTasksService documentTasksService;

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualTasksMapper.java

@ -14,7 +14,7 @@ import java.util.List;
* @author Lion Li * @author Lion Li
* @date 2024-12-11 * @date 2024-12-11
*/ */
public interface ContractualTasksMapper extends BaseMapperPlus<ContractualTasks, ContractualTasksVo> { public interface ContractualTasksMapper extends BaseMapperPlus<ContractualTasks, ContractualTasksVo> {
/** /**
* 根据任务ID获取详细的合同任务结果 * 根据任务ID获取详细的合同任务结果

25
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualRegulationNamesServiceImpl.java

@ -64,7 +64,6 @@ public class ContractualRegulationNamesServiceImpl implements IContractualRegula
private final ContractualRegulationNamesMapper baseMapper; private final ContractualRegulationNamesMapper baseMapper;
private final ContractualRegulationArticlesMapper articlesMapper; private final ContractualRegulationArticlesMapper articlesMapper;
private final IContractualRegulationArticlesService articlesService;
private final ISysOssService ossService; private final ISysOssService ossService;
private static final Logger log = LoggerFactory.getLogger(ContractualRegulationNamesServiceImpl.class); private static final Logger log = LoggerFactory.getLogger(ContractualRegulationNamesServiceImpl.class);
@ -72,7 +71,7 @@ public class ContractualRegulationNamesServiceImpl implements IContractualRegula
protected String fileRootPath; protected String fileRootPath;
@Value("${chat.chatUrl}") @Value("${chat.chatUrl}")
protected String chatUrl; protected String chatUrl;
// Milvus配置 // Milvus配置
@Value("${milvus.host:10.1.21.250}") @Value("${milvus.host:10.1.21.250}")
private String milvusHost; private String milvusHost;
@ -80,7 +79,7 @@ public class ContractualRegulationNamesServiceImpl implements IContractualRegula
private int milvusPort; private int milvusPort;
@Value("${milvus.collection.name:contractual_regulation_articles}") @Value("${milvus.collection.name:contractual_regulation_articles}")
private String milvusCollectionName; private String milvusCollectionName;
private MilvusServiceClient milvusClient; private MilvusServiceClient milvusClient;
/** /**
@ -255,7 +254,7 @@ public class ContractualRegulationNamesServiceImpl implements IContractualRegula
} }
boolean allSuccess = true; boolean allSuccess = true;
// 逐个删除法规及其相关数据 // 逐个删除法规及其相关数据
for (Long id : ids) { for (Long id : ids) {
try { try {
@ -264,11 +263,11 @@ public class ContractualRegulationNamesServiceImpl implements IContractualRegula
if (!milvusDeleted) { if (!milvusDeleted) {
log.warn("法规ID {} 的Milvus向量数据删除失败,但继续删除其他数据", id); log.warn("法规ID {} 的Milvus向量数据删除失败,但继续删除其他数据", id);
} }
// 2. 删除法规条款(真实删除) // 2. 删除法规条款(真实删除)
int deletedArticles = articlesMapper.realDeleteByRegulationNameId(id); int deletedArticles = articlesMapper.realDeleteByRegulationNameId(id);
log.info("法规ID {} 删除了 {} 条法规条款", id, deletedArticles); log.info("法规ID {} 删除了 {} 条法规条款", id, deletedArticles);
// 3. 删除法规主记录(真实删除) // 3. 删除法规主记录(真实删除)
int deletedRegulation = baseMapper.realDeleteById(id); int deletedRegulation = baseMapper.realDeleteById(id);
if (deletedRegulation > 0) { if (deletedRegulation > 0) {
@ -277,7 +276,7 @@ public class ContractualRegulationNamesServiceImpl implements IContractualRegula
log.warn("删除法规ID {} 失败", id); log.warn("删除法规ID {} 失败", id);
allSuccess = false; allSuccess = false;
} }
} catch (Exception e) { } catch (Exception e) {
log.error("删除法规ID {} 时出错: {}", id, e.getMessage(), e); log.error("删除法规ID {} 时出错: {}", id, e.getMessage(), e);
allSuccess = false; allSuccess = false;
@ -592,7 +591,7 @@ public class ContractualRegulationNamesServiceImpl implements IContractualRegula
} }
return milvusClient; return milvusClient;
} }
/** /**
* 从Milvus中删除法规相关的向量数据 * 从Milvus中删除法规相关的向量数据
*/ */
@ -603,17 +602,17 @@ public class ContractualRegulationNamesServiceImpl implements IContractualRegula
log.warn("Milvus客户端未初始化,跳过向量数据删除"); log.warn("Milvus客户端未初始化,跳过向量数据删除");
return false; return false;
} }
// 构造删除表达式 - 删除指定法规ID的所有向量 // 构造删除表达式 - 删除指定法规ID的所有向量
String deleteExpr = String.format("regulation_name_id == %d", regulationNameId); String deleteExpr = String.format("regulation_name_id == %d", regulationNameId);
DeleteParam deleteParam = DeleteParam.newBuilder() DeleteParam deleteParam = DeleteParam.newBuilder()
.withCollectionName(milvusCollectionName) .withCollectionName(milvusCollectionName)
.withExpr(deleteExpr) .withExpr(deleteExpr)
.build(); .build();
R<MutationResult> response = client.delete(deleteParam); R<MutationResult> response = client.delete(deleteParam);
if (response.getStatus() == R.Status.Success.getCode()) { if (response.getStatus() == R.Status.Success.getCode()) {
MutationResult mutationResponse = response.getData(); MutationResult mutationResponse = response.getData();
long deleteCount = mutationResponse.getDeleteCnt(); long deleteCount = mutationResponse.getDeleteCnt();
@ -623,7 +622,7 @@ public class ContractualRegulationNamesServiceImpl implements IContractualRegula
log.error("从Milvus删除向量数据失败: {}", response.getMessage()); log.error("从Milvus删除向量数据失败: {}", response.getMessage());
return false; return false;
} }
} catch (Exception e) { } catch (Exception e) {
log.error("从Milvus删除向量数据时出错: {}", e.getMessage(), e); log.error("从Milvus删除向量数据时出错: {}", e.getMessage(), e);
return false; return false;

51
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTaskResultsServiceImpl.java

@ -653,6 +653,18 @@ public class ContractualTaskResultsServiceImpl implements IContractualTaskResult
return arrayNode.get(0).asText(); return arrayNode.get(0).asText();
} }
} }
} else if (fieldName.equals("review_points_all")) {
if (jsonNode.has("review_points") && jsonNode.get("review_points").isArray()) {
JsonNode arrayNode = jsonNode.get("review_points");
StringBuilder result = new StringBuilder();
for (int i = 0; i < arrayNode.size(); i++) {
if (i > 0) {
result.append("\n");
}
result.append(arrayNode.get(i).asText());
}
return result.toString();
}
} else if (fieldName.equals("review_content")) { } else if (fieldName.equals("review_content")) {
if (jsonNode.has("review_content") && !jsonNode.get("review_content").isNull()) { if (jsonNode.has("review_content") && !jsonNode.get("review_content").isNull()) {
return jsonNode.get("review_content").asText(); return jsonNode.get("review_content").asText();
@ -675,13 +687,38 @@ public class ContractualTaskResultsServiceImpl implements IContractualTaskResult
} }
XWPFParagraph paragraph = cell.addParagraph(); XWPFParagraph paragraph = cell.addParagraph();
XWPFRun run = paragraph.createRun();
run.setText(text != null ? text : ""); if (text != null && text.contains("\n")) {
run.setFontFamily("Microsoft YaHei"); // 处理包含换行符的文本
run.setFontSize(12); String[] lines = text.split("\n");
for (int i = 0; i < lines.length; i++) {
XWPFRun run = paragraph.createRun();
run.setText(lines[i]);
run.setFontFamily("Microsoft YaHei");
run.setFontSize(12);
if (isHeader) {
run.setBold(true);
}
// 除了最后一行,其他行都添加换行符
if (i < lines.length - 1) {
run.addBreak();
}
}
} else {
// 处理普通文本
XWPFRun run = paragraph.createRun();
run.setText(text != null ? text : "");
run.setFontFamily("Microsoft YaHei");
run.setFontSize(12);
if (isHeader) {
run.setBold(true);
}
}
if (isHeader) { if (isHeader) {
run.setBold(true);
// 设置表头背景色 // 设置表头背景色
cell.setColor("E6E6E6"); cell.setColor("E6E6E6");
} }
@ -729,7 +766,7 @@ public class ContractualTaskResultsServiceImpl implements IContractualTaskResult
// 法规依据标签行(跨两列合并) // 法规依据标签行(跨两列合并)
config.addCellConfig(new CellConfiguration(2, 0).header("法规依据").mergeHorizontal(2)); config.addCellConfig(new CellConfiguration(2, 0).header("法规依据").mergeHorizontal(2));
// 法规依据内容行(跨两列合并) // 法规依据内容行(跨两列合并)
config.addCellConfig(new CellConfiguration(3, 0).field("review_points[0]").mergeHorizontal(2)); config.addCellConfig(new CellConfiguration(3, 0).field("review_points_all").mergeHorizontal(2));
break; break;
case "一致性审查": case "一致性审查":
@ -792,6 +829,8 @@ public class ContractualTaskResultsServiceImpl implements IContractualTaskResult
return formatReviewBasisCombined(item.getReviewBasis()); return formatReviewBasisCombined(item.getReviewBasis());
case "review_points[0]": case "review_points[0]":
return formatReviewBasisField(item.getReviewBasis(), "review_points[0]"); return formatReviewBasisField(item.getReviewBasis(), "review_points[0]");
case "review_points_all":
return formatReviewBasisField(item.getReviewBasis(), "review_points_all");
case "review_content": case "review_content":
return formatReviewBasisField(item.getReviewBasis(), "review_content"); return formatReviewBasisField(item.getReviewBasis(), "review_content");
case "": case "":

1
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTasksServiceImpl.java

@ -127,6 +127,7 @@ public class ContractualTasksServiceImpl extends AbstractTaskProcessor<Contractu
lqw.like(bo.getDocumentName() != null, ContractualTasks::getDocumentName, bo.getDocumentName()); lqw.like(bo.getDocumentName() != null, ContractualTasks::getDocumentName, bo.getDocumentName());
lqw.like(bo.getReviewTypes() != null, ContractualTasks::getReviewTypes, bo.getReviewTypes()); lqw.like(bo.getReviewTypes() != null, ContractualTasks::getReviewTypes, bo.getReviewTypes());
lqw.eq(bo.getProgressStatus() != null, ContractualTasks::getProgressStatus, bo.getProgressStatus()); lqw.eq(bo.getProgressStatus() != null, ContractualTasks::getProgressStatus, bo.getProgressStatus());
lqw.orderByDesc(ContractualTasks::getCreateTime);
return lqw; return lqw;
} }

5
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksServiceImpl.java

@ -1,5 +1,6 @@
package org.dromara.productManagement.service.impl; package org.dromara.productManagement.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -14,6 +15,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.productManagement.common.service.AbstractTaskProcessor; import org.dromara.productManagement.common.service.AbstractTaskProcessor;
import org.dromara.productManagement.domain.*; import org.dromara.productManagement.domain.*;
import org.dromara.productManagement.enums.TaskEnum; import org.dromara.productManagement.enums.TaskEnum;
@ -134,6 +136,9 @@ public class DocumentTasksServiceImpl extends AbstractTaskProcessor<DocumentTask
if (taskNames != null && !taskNames.isEmpty()) { if (taskNames != null && !taskNames.isEmpty()) {
lqw.in(DocumentTasks::getTaskName, taskNames); lqw.in(DocumentTasks::getTaskName, taskNames);
} }
if (!StpUtil.hasRole("superadmin")) {
lqw.eq(DocumentTasks::getCreateBy, LoginHelper.getUserId());
}
lqw.like(StringUtils.isNotBlank(bo.getDocumentName()), DocumentTasks::getDocumentName, bo.getDocumentName()); lqw.like(StringUtils.isNotBlank(bo.getDocumentName()), DocumentTasks::getDocumentName, bo.getDocumentName());
lqw.eq(StringUtils.isNotBlank(bo.getProgressStatus()), DocumentTasks::getProgressStatus, bo.getProgressStatus()); lqw.eq(StringUtils.isNotBlank(bo.getProgressStatus()), DocumentTasks::getProgressStatus, bo.getProgressStatus());
lqw.orderByDesc(DocumentTasks::getCreateTime); lqw.orderByDesc(DocumentTasks::getCreateTime);

Loading…
Cancel
Save