|
@ -29,9 +29,11 @@ import org.springframework.stereotype.Service; |
|
|
import org.dromara.productManagement.domain.bo.ContractualTasksBo; |
|
|
import org.dromara.productManagement.domain.bo.ContractualTasksBo; |
|
|
import org.dromara.productManagement.service.IContractualTasksService; |
|
|
import org.dromara.productManagement.service.IContractualTasksService; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
import org.dromara.productManagement.utils.MyHttpUtils; |
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
import java.io.IOException; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 合同任务Service业务层处理 |
|
|
* 合同任务Service业务层处理 |
|
@ -218,5 +220,78 @@ public class ContractualTasksServiceImpl extends AbstractTaskProcessor<Contractu |
|
|
return entity.getId(); |
|
|
return entity.getId(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 启动合同审查任务 |
|
|
|
|
|
* |
|
|
|
|
|
* @param request 审查请求数据 |
|
|
|
|
|
* @return 审查结果 |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
|
|
|
public Map<String, Object> startContractReview(StartContractReviewRequest request) throws Exception { |
|
|
|
|
|
FileProcessResult fileProcessResult = processFile(Long.valueOf(request.getOssId())); |
|
|
|
|
|
String filePath = fileProcessResult.getFilePath(); |
|
|
|
|
|
String fileName = fileProcessResult.getFileName(); |
|
|
|
|
|
// 1. 参数验证
|
|
|
|
|
|
if (request.getOssId() == null || request.getOssId().trim().isEmpty()) { |
|
|
|
|
|
throw new IllegalArgumentException("文件ID不能为空"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 3. 创建合同任务记录
|
|
|
|
|
|
ContractualTasks contractTask = new ContractualTasks(); |
|
|
|
|
|
contractTask.setOssId(Long.valueOf(request.getOssId())); |
|
|
|
|
|
contractTask.setTaskName(TaskEnum.ContractTask.CONTRACT_REVIEW.getValue()); |
|
|
|
|
|
contractTask.setDocumentName(fileName); |
|
|
|
|
|
contractTask.setTaskType(TaskEnum.TaskType.CONTRACT_REVIEW.getValue()); |
|
|
|
|
|
contractTask.setProgressStatus("PENDING"); |
|
|
|
|
|
String position = request.getReviewData().getSubstantive().getPosition(); |
|
|
|
|
|
String contractPartyRole; |
|
|
|
|
|
switch (position) { |
|
|
|
|
|
case "party-a": |
|
|
|
|
|
contractPartyRole = "甲方"; |
|
|
|
|
|
break; |
|
|
|
|
|
case "neutral": |
|
|
|
|
|
contractPartyRole = "中立"; |
|
|
|
|
|
break; |
|
|
|
|
|
case "party-b": |
|
|
|
|
|
contractPartyRole = "乙方"; |
|
|
|
|
|
break; |
|
|
|
|
|
default: |
|
|
|
|
|
contractPartyRole = "中立"; |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
request.getReviewData().getSubstantive().setPosition(contractPartyRole); |
|
|
|
|
|
contractTask.setContractPartyRole(contractPartyRole); |
|
|
|
|
|
// 4. 将reviewData序列化并保存到review_data字段
|
|
|
|
|
|
ObjectMapper objectMapper = new ObjectMapper(); |
|
|
|
|
|
String reviewDataJson = objectMapper.writeValueAsString(request.getReviewData()); |
|
|
|
|
|
contractTask.setReviewData(reviewDataJson); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 5. 保存到数据库
|
|
|
|
|
|
if (!saveTaskEntity(contractTask)) { |
|
|
|
|
|
throw new RuntimeException("保存合同任务失败"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 6. 调用Python接口启动任务
|
|
|
|
|
|
// String pythonUrl = "http://localhost:5000/api/contract/review";
|
|
|
|
|
|
// MyHttpUtils.sendTaskStartMessage(
|
|
|
|
|
|
// pythonUrl,
|
|
|
|
|
|
// contractTask.getId(),
|
|
|
|
|
|
// contractTask.getTaskName(),
|
|
|
|
|
|
// filePath,
|
|
|
|
|
|
// 1L
|
|
|
|
|
|
// );
|
|
|
|
|
|
|
|
|
|
|
|
// 7. 立即返回任务创建成功信息
|
|
|
|
|
|
Map<String, Object> result = new HashMap<>(); |
|
|
|
|
|
result.put("success", true); |
|
|
|
|
|
result.put("message", "合同审查任务已创建,正在后台处理"); |
|
|
|
|
|
result.put("taskId", contractTask.getId()); |
|
|
|
|
|
result.put("taskName", contractTask.getTaskName()); |
|
|
|
|
|
result.put("status", "PENDING"); |
|
|
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|