Browse Source

新增招投标,合同审查,新增字体和其他功能优化

ai_300
zhouhaibin 3 weeks ago
parent
commit
6a0a5c9157
  1. BIN
      ruoyi-admin/src/main/resources/fonts/msyh.ttc
  2. BIN
      ruoyi-admin/src/main/resources/fonts/msyhbd.ttc
  3. BIN
      ruoyi-admin/src/main/resources/fonts/msyhl.ttc
  4. 13
      zaojiaManagement/zaojia-productManagement/pom.xml
  5. 273
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/common/service/BaseTaskService.java
  6. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTasksController.java
  7. 12
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java
  8. 4
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ModelUserPromptssettingController.java
  9. 107
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/SchemEvaluationController.java
  10. 107
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/TenderTaskController.java
  11. 42
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTaskSupplement.java
  12. 1
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskChild.java
  13. 4
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskResults.java
  14. 4
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasks.java
  15. 11
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissions.java
  16. 10
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissionsDetail.java
  17. 7
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPrompts.java
  18. 8
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPromptsHistory.java
  19. 9
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelUserPromptssetting.java
  20. 92
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/SchemEvaluation.java
  21. 93
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/TenderTask.java
  22. 56
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/BaseTaskBo.java
  23. 42
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTaskSupplementBo.java
  24. 70
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTasksBo.java
  25. 4
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTaskResultsBo.java
  26. 41
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksBo.java
  27. 11
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksPermissionsBo.java
  28. 6
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksPermissionsDetailBo.java
  29. 5
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsBo.java
  30. 4
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsHistoryBo.java
  31. 5
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelUserPromptssettingBo.java
  32. 28
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/SchemEvaluationBo.java
  33. 28
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/TenderTaskBo.java
  34. 73
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/BaseTaskVo.java
  35. 50
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTaskSupplementVo.java
  36. 60
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTasksVo.java
  37. 8
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksPermissionsDetailVo.java
  38. 10
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksPermissionsVo.java
  39. 54
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksVo.java
  40. 8
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsHistoryVo.java
  41. 8
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsVo.java
  42. 5
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelUserPromptssettingVo.java
  43. 36
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/SchemEvaluationVo.java
  44. 70
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/TenderTaskVo.java
  45. 96
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/enums/TaskEnum.java
  46. 8
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualTaskSupplementMapper.java
  47. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTasksPermissionsMapper.java
  48. 15
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/SchemEvaluationMapper.java
  49. 15
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/TenderTaskMapper.java
  50. 87
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTaskSupplementService.java
  51. 8
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTasksService.java
  52. 3
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTaskResultsService.java
  53. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksPermissionsService.java
  54. 1
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksService.java
  55. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IModelUserPromptssettingService.java
  56. 70
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/ISchemEvaluationService.java
  57. 70
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/ITenderTaskService.java
  58. 155
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTaskSupplementServiceImpl.java
  59. 249
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTasksServiceImpl.java
  60. 284
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTaskResultsServiceImpl.java
  61. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsDetailServiceImpl.java
  62. 30
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsServiceImpl.java
  63. 220
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksServiceImpl.java
  64. 1
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsHistoryServiceImpl.java
  65. 1
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsServiceImpl.java
  66. 3
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelUserPromptssettingServiceImpl.java
  67. 162
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/SchemEvaluationServiceImpl.java
  68. 166
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/TenderTaskServiceImpl.java
  69. 7
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualTaskSupplementMapper.xml
  70. 1
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksMapper.xml
  71. 6
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksPermissionsMapper.xml
  72. 7
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/SchemEvaluationMapper.xml
  73. 7
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/TenderTaskMapper.xml

BIN
ruoyi-admin/src/main/resources/fonts/msyh.ttc

Binary file not shown.

BIN
ruoyi-admin/src/main/resources/fonts/msyhbd.ttc

Binary file not shown.

BIN
ruoyi-admin/src/main/resources/fonts/msyhl.ttc

Binary file not shown.

13
zaojiaManagement/zaojia-productManagement/pom.xml

@ -103,6 +103,19 @@
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>
<artifactId>ruoyi-system</artifactId> <artifactId>ruoyi-system</artifactId>
</dependency> </dependency>
<!-- Markdown to HTML -->
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-all</artifactId>
<version>0.64.8</version>
</dependency>
<!-- HTML to PDF -->
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.1.22</version>
</dependency>
</dependencies> </dependencies>

273
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/common/service/BaseTaskService.java

@ -0,0 +1,273 @@
package org.dromara.productManagement.common.service;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.service.DictService;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.productManagement.domain.DocumentTasks;
import org.dromara.productManagement.domain.ModelPrompts;
import org.dromara.productManagement.domain.ModelUserPromptssetting;
import org.dromara.productManagement.domain.bo.BaseTaskBo;
import org.dromara.productManagement.domain.bo.DocumentTasksBo;
import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsVo;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.productManagement.enums.TaskEnum;
import org.dromara.productManagement.mapper.DocumentTasksMapper;
import org.dromara.productManagement.mapper.DocumentTasksPermissionsMapper;
import org.dromara.productManagement.mapper.ModelPromptsMapper;
import org.dromara.productManagement.mapper.ModelUserPromptssettingMapper;
import org.dromara.productManagement.service.IDocumentTasksPermissionsService;
import org.dromara.productManagement.service.IDocumentTasksService;
import org.dromara.productManagement.utils.MyHttpUtils;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Value;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* 任务处理抽象基类
*/
@RequiredArgsConstructor
@Data
public abstract class BaseTaskService<T extends BaseTaskBo> {
protected final ISysOssService ossService;
protected final ISysUserService userService;
protected final ModelPromptsMapper modelPromptsMapper;
protected final ModelUserPromptssettingMapper modelUserPromptssettingMapper;
protected final DocumentTasksPermissionsMapper documentTasksPermissionsMapper;
protected final IDocumentTasksPermissionsService documentTasksPermissionsService;
protected final DictService dictTypeService;
protected final DocumentTasksMapper baseMapper;
@Value("${chat.filePath}")
protected String fileRootPath;
@Value("${chat.chatUrl}")
protected String chatUrl;
@Value("${chat.tempfilePath}")
protected String tempfilePath;
/**
* 文件处理结果内部类
*/
@Data
@AllArgsConstructor
protected static class FileProcessResult {
private String fileName;
private String filePath;
}
/**
* 查询任务
*
* @param id 主键
* @return 合同任务
*/
protected DocumentTasksVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 处理任务的抽象方法
*/
protected Boolean handleTask(T bo, String taskType) throws IOException, InterruptedException {
List<String> taskNames = bo.getTaskNameList();
Long userId = LoginHelper.getUserId();
// 校验提示词
validatePrompts(taskNames, bo, taskType);
// 处理用户提示词设置
handleUserPromptsSetting(userId, bo, taskType);
// 验证用户任务权限
documentTasksPermissionsService.validateUserTaskPermissions(taskType,taskNames, userId);
// 处理文件相关操作
FileProcessResult fileResult = processFile(bo.getOssId());
return processTaskItems(taskNames, bo, fileResult, taskType);
}
/**
* 校验提示词
*/
private void validatePrompts(List<String> taskNames, T bo, String taskType) {
taskNames.forEach(taskName -> {
ModelPrompts modelPrompts = modelPromptsMapper.selectOne(Wrappers.<ModelPrompts>lambdaQuery()
.eq(ModelPrompts::getTaskType, taskType)
.eq(ModelPrompts::getTaskName, taskName)
.eq(ModelPrompts::getTaskIndustry, bo.getTaskIndustry())
.eq(ModelPrompts::getTaskRegion, bo.getTaskRegion()));
if(modelPrompts == null) {
String label = dictTypeService.getDictLabel(taskType, taskName);
throw new RuntimeException("任务名称:["+label+"],当前任务所属区域或所属行业不存在模型,请联系管理员配置");
}
});
}
/**
* 处理用户提示词设置
*/
private void handleUserPromptsSetting(Long userId, T bo, String taskType) {
ModelUserPromptssetting promptssetting = modelUserPromptssettingMapper.selectOne(
Wrappers.<ModelUserPromptssetting>lambdaQuery()
.eq(ModelUserPromptssetting::getUserId, userId)
.eq(ModelUserPromptssetting::getTaskType, taskType));
if(promptssetting != null) {
promptssetting.setTaskIndustry(bo.getTaskIndustry());
promptssetting.setTaskRegion(bo.getTaskRegion());
promptssetting.setTaskType(taskType);
modelUserPromptssettingMapper.updateById(promptssetting);
} else {
ModelUserPromptssetting userPromptssetting = new ModelUserPromptssetting();
userPromptssetting.setUserId(userId);
userPromptssetting.setTaskIndustry(bo.getTaskIndustry());
userPromptssetting.setTaskRegion(bo.getTaskRegion());
userPromptssetting.setTaskType(taskType);
modelUserPromptssettingMapper.insert(userPromptssetting);
}
}
/**
* 处理文件操作
*/
protected FileProcessResult processFile(Long ossId) throws IOException, InterruptedException {
SysOssVo fileInfo = ossService.getById(ossId);
String fileName = fileInfo.getOriginalName();
String filePath = fileRootPath + fileInfo.getFileName();
// 处理文件转换
if(!fileName.toLowerCase().endsWith(".docx")) {
filePath = convertToDocx(filePath, fileName);
}
return new FileProcessResult(fileInfo.getOriginalName(), filePath);
}
/**
* 转换文件为docx格式
*/
private String convertToDocx(String filePath, String fileName) throws IOException, InterruptedException {
String parentPath = new File(filePath).getParent();
ProcessBuilder builder = new ProcessBuilder("libreoffice", "--headless", "--convert-to", "docx", filePath, "--outdir", parentPath);
Process process = builder.start();
int completed = process.waitFor();
if (completed != 0) {
InputStream errorStream = process.getErrorStream();
String errorMessage = new String(errorStream.readAllBytes());
process.destroyForcibly();
throw new RuntimeException(fileName + "转docx失败,请检查文件是否正确~ 错误信息: " + errorMessage);
}
process.destroyForcibly();
return getDocxFilePath(filePath);
}
/**
* 获取转换后的docx文件路径
*/
private String getDocxFilePath(String filePath) {
int lastDotIndex = filePath.lastIndexOf('.');
return lastDotIndex == -1 ? filePath + ".docx" : filePath.substring(0, lastDotIndex) + ".docx";
}
/**
* 计算任务优先级
* @param taskName 任务名称
* @return 优先级
*/
protected Long calculatePriority(String taskName) {
// 默认优先级为1
Long priority = 1L;
// 如果不是超级管理员,则获取用户特定的任务优先级
if (!StpUtil.hasRole("superadmin")) {
DocumentTasksPermissionsVo permissionsVo = documentTasksPermissionsMapper
.selectDocumentPermissionsByUserIdAndTaskName(
LoginHelper.getUserId(),
taskName
);
if (permissionsVo != null) {
priority = permissionsVo.getPriority();
}
}
return priority;
}
/**
* 处理具体任务项
*/
// protected abstract Boolean processTaskItems(List<String> taskNames, BaseTaskBo bo, FileProcessResult fileResult, String taskType);
protected Boolean processTaskItems(List<String> taskNames, T bo, FileProcessResult fileResult, String taskType) {
boolean flag = false;
for (String taskName : taskNames) {
DocumentTasks add = MapstructUtils.convert(bo, DocumentTasks.class);
add.setTaskName(taskName);
add.setDocumentName(fileResult.getFileName());
add.setProgressStatus("PENDING");
add.setTaskType(taskType);
// 在插入数据库前调用扩展点
beforeTaskInsert(bo, taskName, fileResult);
flag = baseMapper.insert(add) > 0;
// 在发送消息前调用扩展点
beforeTaskMessageSent(add.getId(), taskName, bo);
Long priority = calculatePriority(taskName);
MyHttpUtils.sendTaskStartMessage(chatUrl + "/back/taskStart",
add.getId(), taskName, fileResult.getFilePath(), priority);
if (!flag) {
throw new RuntimeException("新增文档任务失败");
}
}
return flag;
}
protected LambdaQueryWrapper<DocumentTasks> buildQueryWrapper(DocumentTasksBo bo) {
LambdaQueryWrapper<DocumentTasks> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), DocumentTasks::getTaskIndustry, bo.getTaskIndustry());
lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), DocumentTasks::getTaskRegion, bo.getTaskRegion());
lqw.like(StringUtils.isNotBlank(bo.getDocumentName()), DocumentTasks::getDocumentName, bo.getDocumentName());
lqw.eq(StringUtils.isNotBlank(bo.getProgressStatus()), DocumentTasks::getProgressStatus, bo.getProgressStatus());
List<String> taskNames = bo.getTaskNameList();
if (taskNames != null && !taskNames.isEmpty()) {
lqw.in(DocumentTasks::getTaskName, taskNames);
}
lqw.orderByDesc(DocumentTasks::getCreateTime);
return lqw;
}
/**
* 任务插入数据库前的扩展点
* 子类可以覆盖此方法添加额外逻辑
*/
protected void beforeTaskInsert(T task, String taskName, FileProcessResult fileResult) {
// 默认空实现
}
/**
* 任务消息发送前的扩展点
* 子类可以覆盖此方法添加额外逻辑
*/
protected void beforeTaskMessageSent(Long taskId, String taskName,T bo) {
// 默认空实现
}
}

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

@ -44,7 +44,7 @@ public class ContractualTasksController extends BaseController {
*/ */
@SaCheckPermission("productManagement:ContractualTasks:list") @SaCheckPermission("productManagement:ContractualTasks:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<DocumentTasksVo> list(ContractualTasksBo bo, PageQuery pageQuery) { public TableDataInfo<ContractualTasksVo> list(ContractualTasksBo bo, PageQuery pageQuery) {
return contractualTasksService.queryPageList(bo, pageQuery); return contractualTasksService.queryPageList(bo, pageQuery);
} }

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

@ -112,4 +112,16 @@ public class DocumentTaskResultsController extends BaseController {
@PathVariable String[] ids) { @PathVariable String[] ids) {
return toAjax(documentTaskResultsService.deleteWithValidByIds(List.of(ids), true)); return toAjax(documentTaskResultsService.deleteWithValidByIds(List.of(ids), true));
} }
/**
* 下载文档任务
*
* @param ids 主键串
*/
// @SaCheckPermission("productManagement:DocumentTaskResults:download")
@Log(title = "文档任务", businessType = BusinessType.EXPORT)
@GetMapping("/downloadResult/{ids}")
public void download(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids,HttpServletResponse response) {
documentTaskResultsService.downloadResult(ids,response);
}
} }

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

@ -109,8 +109,8 @@ public class ModelUserPromptssettingController extends BaseController {
*/ */
// @SaCheckPermission("productManagement:ModelUserPromptssetting:query") // @SaCheckPermission("productManagement:ModelUserPromptssetting:query")
@GetMapping("/getInfoByuserId") @GetMapping("/getInfoByuserId")
public R<ModelUserPromptssettingVo> getInfoByuserId() { public R<ModelUserPromptssettingVo> getInfoByuserId( String taskType) {
Long userId = LoginHelper.getUserId(); Long userId = LoginHelper.getUserId();
return R.ok(modelUserPromptssettingService.queryByuserId(userId)); return R.ok(modelUserPromptssettingService.queryByuserId(userId, taskType));
} }
} }

107
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/SchemEvaluationController.java

@ -0,0 +1,107 @@
package org.dromara.productManagement.controller;
import java.io.IOException;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.productManagement.domain.vo.SchemEvaluationVo;
import org.dromara.productManagement.domain.bo.SchemEvaluationBo;
import org.dromara.productManagement.service.ISchemEvaluationService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 方案评价任务
*
* @author Lion Li
* @date 2025-01-03
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/productManagement/SchemEvaluation")
public class SchemEvaluationController extends BaseController {
private final ISchemEvaluationService schemEvaluationService;
/**
* 查询方案评价任务列表
*/
@SaCheckPermission("productManagement:SchemEvaluation:list")
@GetMapping("/list")
public TableDataInfo<DocumentTasksVo> list(SchemEvaluationBo bo, PageQuery pageQuery) {
return schemEvaluationService.queryPageList(bo, pageQuery);
}
/**
* 导出方案评价任务列表
*/
// @SaCheckPermission("productManagement:SchemEvaluation:export")
// @Log(title = "方案评价任务", businessType = BusinessType.EXPORT)
// @PostMapping("/export")
// public void export(SchemEvaluationBo bo, HttpServletResponse response) {
// List<DocumentTasksVo> list = schemEvaluationService.queryList(bo);
// ExcelUtil.exportExcel(list, "方案评价任务", SchemEvaluationVo.class, response);
// }
/**
* 获取方案评价任务详细信息
*
* @param id 主键
*/
@SaCheckPermission("productManagement:SchemEvaluation:query")
@GetMapping("/{id}")
public R<DocumentTasksVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(schemEvaluationService.queryById(id));
}
/**
* 新增方案评价任务
*/
@SaCheckPermission("productManagement:SchemEvaluation:add")
@Log(title = "方案评价任务", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody SchemEvaluationBo bo) throws IOException, InterruptedException {
return toAjax(schemEvaluationService.insertByBo(bo));
}
/**
* 修改方案评价任务
*/
@SaCheckPermission("productManagement:SchemEvaluation:edit")
@Log(title = "方案评价任务", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SchemEvaluationBo bo) {
return toAjax(schemEvaluationService.updateByBo(bo));
}
/**
* 删除方案评价任务
*
* @param ids 主键串
*/
@SaCheckPermission("productManagement:SchemEvaluation:remove")
@Log(title = "方案评价任务", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(schemEvaluationService.deleteWithValidByIds(List.of(ids), true));
}
}

107
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/TenderTaskController.java

@ -0,0 +1,107 @@
package org.dromara.productManagement.controller;
import java.io.IOException;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.productManagement.domain.vo.TenderTaskVo;
import org.dromara.productManagement.domain.bo.TenderTaskBo;
import org.dromara.productManagement.service.ITenderTaskService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 招标审核任务
*
* @author Lion Li
* @date 2024-12-31
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/productManagement/TenderTask")
public class TenderTaskController extends BaseController {
private final ITenderTaskService tenderTaskService;
/**
* 查询招标审核任务列表
*/
@SaCheckPermission("productManagement:TenderTask:list")
@GetMapping("/list")
public TableDataInfo<DocumentTasksVo> list(TenderTaskBo bo, PageQuery pageQuery) {
return tenderTaskService.queryPageList(bo, pageQuery);
}
/**
* 导出招标审核任务列表
*/
@SaCheckPermission("productManagement:TenderTask:export")
@Log(title = "招标审核任务", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(TenderTaskBo bo, HttpServletResponse response) {
// List<DocumentTasksVo> list = tenderTaskService.queryList(bo);
// ExcelUtil.exportExcel(list, "招标审核任务", TenderTaskVo.class, response);
}
/**
* 获取招标审核任务详细信息
*
* @param id 主键
*/
@SaCheckPermission("productManagement:TenderTask:query")
@GetMapping("/{id}")
public R<DocumentTasksVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(tenderTaskService.queryById(id));
}
/**
* 新增招标审核任务
*/
@SaCheckPermission("productManagement:TenderTask:add")
@Log(title = "招标审核任务", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody TenderTaskBo bo) throws IOException, InterruptedException {
return toAjax(tenderTaskService.insertByBo(bo));
}
/**
* 修改招标审核任务
*/
@SaCheckPermission("productManagement:TenderTask:edit")
@Log(title = "招标审核任务", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody TenderTaskBo bo) {
return toAjax(tenderTaskService.updateByBo(bo));
}
/**
* 删除招标审核任务
*
* @param ids 主键串
*/
@SaCheckPermission("productManagement:TenderTask:remove")
@Log(title = "招标审核任务", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(tenderTaskService.deleteWithValidByIds(List.of(ids), true));
}
}

42
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTaskSupplement.java

@ -0,0 +1,42 @@
package org.dromara.productManagement.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
/**
* 合同任务额外字段
对象 contractual_task_supplement
*
* @author Lion Li
* @date 2025-01-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("contractual_task_supplement")
public class ContractualTaskSupplement extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 任务id
*/
private Long documentTasksId;
/**
* 合同角色
*/
private String contractPartyRole;
}

1
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskChild.java

@ -8,6 +8,7 @@ import java.util.Date;
public class DocumentTaskChild { public class DocumentTaskChild {
private Long id; private Long id;
private String taskName; private String taskName;
private String taskType;
private String taskId; private String taskId;
private Long ossId; private Long ossId;
private Date estimatedCompletionTime; private Date estimatedCompletionTime;

4
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskResults.java

@ -36,6 +36,10 @@ public class DocumentTaskResults extends TenantEntity {
* 任务结果 * 任务结果
*/ */
private String result; private String result;
/**
* 任务结果json
*/
private String resultJson;
/** /**
* *

4
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasks.java

@ -33,6 +33,10 @@ public class DocumentTasks extends TenantEntity {
* 任务名称 * 任务名称
*/ */
private String taskName; private String taskName;
/**
* 任务类型
*/
private String taskType;
/** /**
* 后台任务id * 后台任务id
*/ */

11
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissions.java

@ -1,5 +1,8 @@
package org.dromara.productManagement.domain; package org.dromara.productManagement.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.common.tenant.core.TenantEntity; import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
@ -48,10 +51,14 @@ public class DocumentTasksPermissions extends TenantEntity {
private Long priority; private Long priority;
/** /**
* 任务种类 * 任务名称
*/
private String taskName;
/**
* 任务类型
*/ */
private String taskType;
private String taskType;
/** /**
* 删除标志 * 删除标志

10
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissionsDetail.java

@ -1,5 +1,8 @@
package org.dromara.productManagement.domain; package org.dromara.productManagement.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.common.tenant.core.TenantEntity; import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
@ -38,8 +41,13 @@ public class DocumentTasksPermissionsDetail extends TenantEntity {
private Long remainingDocumentCount; private Long remainingDocumentCount;
/** /**
* 任务种类 * 任务名称
*/ */
private String taskName;
/**
* 任务类型
*/
private String taskType; private String taskType;
/** /**

7
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPrompts.java

@ -1,7 +1,10 @@
package org.dromara.productManagement.domain; package org.dromara.productManagement.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.encrypt.annotation.EncryptField; import org.dromara.common.encrypt.annotation.EncryptField;
import org.dromara.common.encrypt.enumd.AlgorithmType; import org.dromara.common.encrypt.enumd.AlgorithmType;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.common.tenant.core.TenantEntity; import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
@ -39,7 +42,11 @@ public class ModelPrompts extends TenantEntity {
*/ */
@EncryptField(algorithm = AlgorithmType.SM4, password = "c7746c89a780c27eda14a2f9b3097c8f") @EncryptField(algorithm = AlgorithmType.SM4, password = "c7746c89a780c27eda14a2f9b3097c8f")
private String taskName; private String taskName;
/**
* 任务类型
*/
private String taskType;
/** /**
* 模型所属区域 * 模型所属区域
*/ */

8
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPromptsHistory.java

@ -1,5 +1,8 @@
package org.dromara.productManagement.domain; package org.dromara.productManagement.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.common.tenant.core.TenantEntity; import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
@ -41,7 +44,10 @@ public class ModelPromptsHistory extends TenantEntity {
* 模型任务名称 * 模型任务名称
*/ */
private String taskName; private String taskName;
/**
* 任务类型
*/
private String taskType;
/** /**
* 模型所属区域 * 模型所属区域
*/ */

9
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelUserPromptssetting.java

@ -41,20 +41,23 @@ public class ModelUserPromptssetting extends TenantEntity {
* 任务类型名称 * 任务类型名称
*/ */
private String taskName; private String taskName;
/**
* 任务类型
*/
private String taskType;
/** /**
* 用户id * 用户id
*/ */
private Long userId; private Long userId;
/** /**
* *
*/ */
@TableLogic @TableLogic
private String delFlag; private String delFlag;
/** /**
* *
*/ */
@Version @Version
private String version; private String version;

92
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/SchemEvaluation.java

@ -0,0 +1,92 @@
package org.dromara.productManagement.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 方案评价任务对象 tender_summary_task
*
* @author Lion Li
* @date 2025-01-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("tender_summary_task")
public class SchemEvaluation extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 模型所属行业
*/
private String taskIndustry;
/**
* 模型所属区域
*/
private String taskRegion;
/**
* 任务名称
*/
private String taskName;
/**
* 文档名称
*/
private String documentName;
/**
* ossid
*/
private Long ossId;
/**
* 预计完成时间
*/
private Date estimatedCompletionTime;
/**
* 当前状态
*/
private String progressStatus;
/**
* 删除标志 0 有效 2删除
*/
@TableLogic
private String delFlag;
/**
* 版本
*/
@Version
private Long version;
/**
* 任务类型
*/
private String taskType;
/**
* python任务id
*/
private String taskId;
}

93
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/TenderTask.java

@ -0,0 +1,93 @@
package org.dromara.productManagement.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import java.io.Serial;
/**
* 招标摘要任务对象 tender_summary_task
*
* @author Lion Li
* @date 2024-12-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("tender_summary_task")
public class TenderTask extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 模型所属行业
*/
private String taskIndustry;
/**
* 模型所属区域
*/
private String taskRegion;
/**
* 任务名称
*/
private String taskName;
/**
* 文档名称
*/
private String documentName;
/**
* ossid
*/
private Long ossId;
/**
* 预计完成时间
*/
private Date estimatedCompletionTime;
/**
* 当前状态
*/
private String progressStatus;
/**
* 删除标志 0 有效 2删除
*/
@TableLogic
private String delFlag;
/**
* 版本
*/
@Version
private Long version;
/**
* 任务类型
*/
private String taskType;
/**
* python任务id
*/
private String taskId;
}

56
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/BaseTaskBo.java

@ -0,0 +1,56 @@
package org.dromara.productManagement.domain.bo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.util.List;
@Data
public class BaseTaskBo extends BaseEntity {
/**
* 模型所属行业
*/
@NotBlank(message = "模型所属行业不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskIndustry;
/**
* 模型所属区域
*/
@NotBlank(message = "模型所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskRegion;
@NotEmpty(message = "任务名称列表不能为空", groups = { AddGroup.class, EditGroup.class })
private List<@NotBlank(message = "任务名称不能为空") String> taskNameList;
/**
*
*/
private String documentName;
/**
*
*/
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Long ossId;
/**
*
*/
private String progressStatus;
/**
* 任务类型
*/
private String taskType;
/**
* 任务名称
*/
private String taskName;
}

42
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTaskSupplementBo.java

@ -0,0 +1,42 @@
package org.dromara.productManagement.domain.bo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.productManagement.domain.ContractualTaskSupplement;
/**
* 合同任务额外字段
业务对象 contractual_task_supplement
*
* @author Lion Li
* @date 2025-01-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ContractualTaskSupplement.class, reverseConvertGenerate = false)
public class ContractualTaskSupplementBo extends BaseEntity {
/**
*
*/
private Long id;
/**
* 任务id
*/
@NotNull(message = "任务id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long documentTasksId;
/**
* 合同角色
*/
@NotBlank(message = "合同角色不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractPartyRole;
}

70
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTasksBo.java

@ -12,6 +12,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.productManagement.domain.DocumentTasks;
/** /**
* 合同任务业务对象 contractual_tasks * 合同任务业务对象 contractual_tasks
@ -21,47 +22,48 @@ import com.fasterxml.jackson.annotation.JsonFormat;
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ContractualTasks.class, reverseConvertGenerate = false) @AutoMapper(target = DocumentTasks.class, reverseConvertGenerate = false)
public class ContractualTasksBo extends BaseEntity { public class ContractualTasksBo extends BaseTaskBo {
/** /**
* *
*/ */
private Long id; private Long id;
/**
* 模型所属行业
*/
@NotBlank(message = "模型所属行业不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskIndustry;
/**
* 模型所属区域
*/
@NotBlank(message = "模型所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskRegion;
/**
* 合同任务名称
*/
private String contractTaskName;
@NotEmpty(message = "任务名称列表不能为空", groups = { AddGroup.class, EditGroup.class })
private List<@NotBlank(message = "任务名称不能为空") String> taskNameList;
/** /**
* * 合同角色
*/
private String documentName;
/**
*
*/
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Long ossId;
/**
*
*/ */
private String progressStatus; @NotBlank(message = "合同角色不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractPartyRole;
// /**
// * 模型所属行业
// */
// @NotBlank(message = "模型所属行业不能为空", groups = { AddGroup.class, EditGroup.class })
// private String taskIndustry;
//
// /**
// * 模型所属区域
// */
// @NotBlank(message = "模型所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
// private String taskRegion;
//
//
// @NotEmpty(message = "任务名称列表不能为空", groups = { AddGroup.class, EditGroup.class })
// private List<@NotBlank(message = "任务名称不能为空") String> taskNameList;
// /**
// *
// */
// private String documentName;
//
// /**
// *
// */
// @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
// private Long ossId;
//
// /**
// *
// */
// private String progressStatus;
} }

4
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTaskResultsBo.java

@ -34,6 +34,10 @@ public class DocumentTaskResultsBo extends BaseEntity {
* 任务结果 * 任务结果
*/ */
private String result; private String result;
/**
* 任务结果json
**/
private String resultJson;
} }

41
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksBo.java

@ -24,52 +24,13 @@ import com.fasterxml.jackson.annotation.JsonFormat;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@AutoMapper(target = DocumentTasks.class, reverseConvertGenerate = false) @AutoMapper(target = DocumentTasks.class, reverseConvertGenerate = false)
public class DocumentTasksBo extends BaseEntity { public class DocumentTasksBo extends BaseTaskBo {
/** /**
* 主键 * 主键
*/ */
private String id; private String id;
/**
* 任务名称
*/
// @NotBlank(message = "任务名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskName;
@NotEmpty(message = "任务名称列表不能为空", groups = { AddGroup.class, EditGroup.class })
private List<@NotBlank(message = "任务名称不能为空") String> taskNameList;
/**
* 文档名称
*/
// @NotBlank(message = "文档名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String documentName;
@NotNull(message = "文档不能为空", groups = { AddGroup.class, EditGroup.class })
private Long ossId;
// /**
// * 预计时间
// */
//// @NotNull(message = "预计时间不能为空", groups = { AddGroup.class, EditGroup.class })
// private Date estimatedCompletionTime;
// /**
// * 后台任务id
// */
// private String taskId;
// /**
// * 状态
// */
//// @NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String progressStatus;
/**
* 模型所属区域
*/
@NotBlank(message = "模型所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskRegion;
/**
* 模型所属行业
*/
@NotBlank(message = "模型所属行业不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskIndustry;

11
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksPermissionsBo.java

@ -1,5 +1,8 @@
package org.dromara.productManagement.domain.bo; package org.dromara.productManagement.domain.bo;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.productManagement.domain.DocumentTasksPermissions; import org.dromara.productManagement.domain.DocumentTasksPermissions;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
@ -53,13 +56,17 @@ public class DocumentTasksPermissionsBo extends BaseEntity {
/** /**
* 任务种类 * 任务种类
*/ */
private String taskType; private String taskName;
/**
* 任务类型
*/
private String taskType;
/** /**
* 任务列表 * 任务列表
*/ */
@NotNull(message = "任务种类不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "任务种类不能为空", groups = { AddGroup.class, EditGroup.class })
private List<String> taskTypeList; private List<String> taskNameList;
} }

6
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksPermissionsDetailBo.java

@ -36,11 +36,15 @@ public class DocumentTasksPermissionsDetailBo extends BaseEntity {
*/ */
@NotNull(message = "剩余文档数不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "剩余文档数不能为空", groups = { AddGroup.class, EditGroup.class })
private Long remainingDocumentCount; private Long remainingDocumentCount;
/** /**
* 任务种类 * 任务种类
*/ */
@NotBlank(message = "任务种类不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "任务种类不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskName;
/**
* 任务类型
*/
private String taskType; private String taskType;

5
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsBo.java

@ -36,7 +36,10 @@ public class ModelPromptsBo extends BaseEntity {
*/ */
@NotBlank(message = "模型任务名称不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "模型任务名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskName; private String taskName;
/**
* 模型任务类型
*/
private String taskType;
/** /**
* 模型所属区域 * 模型所属区域
*/ */

4
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsHistoryBo.java

@ -39,6 +39,10 @@ public class ModelPromptsHistoryBo extends BaseEntity {
* 模型任务名称 * 模型任务名称
*/ */
private String taskName; private String taskName;
/**
* 模型任务类型
*/
private String taskType;
/** /**
* 模型所属区域 * 模型所属区域

5
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelUserPromptssettingBo.java

@ -49,6 +49,9 @@ public class ModelUserPromptssettingBo extends BaseEntity {
*/ */
@NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long userId; private Long userId;
/**
* 任务类型
*/
private String taskType;
} }

28
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/SchemEvaluationBo.java

@ -0,0 +1,28 @@
package org.dromara.productManagement.domain.bo;
import org.dromara.productManagement.domain.DocumentTasks;
import org.dromara.productManagement.domain.SchemEvaluation;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 方案评价任务业务对象 tender_summary_task
*
* @author Lion Li
* @date 2025-01-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = DocumentTasks.class, reverseConvertGenerate = false)
public class SchemEvaluationBo extends BaseTaskBo {
private Long id;
}

28
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/TenderTaskBo.java

@ -0,0 +1,28 @@
package org.dromara.productManagement.domain.bo;
import org.dromara.productManagement.domain.DocumentTasks;
import org.dromara.productManagement.domain.TenderTask;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 招标摘要任务业务对象 tender_summary_task
*
* @author Lion Li
* @date 2024-12-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = DocumentTasks.class, reverseConvertGenerate = false)
public class TenderTaskBo extends BaseTaskBo {
private static final long serialVersionUID = 1L;
private Long id;
}

73
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/BaseTaskVo.java

@ -0,0 +1,73 @@
package org.dromara.productManagement.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import java.util.Date;
@Data
public class BaseTaskVo {
/**
* 任务名称
*/
@ExcelProperty(value = "任务名称", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "scheme_review")
private String taskName;
/**
* 任务类型
*/
@ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "task_type")
private String taskType;
/**
* 模型所属区域
*/
@ExcelProperty(value = "模型所属区域", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "model_region")
private String taskRegion;
/**
* 模型所属行业
*/
@ExcelProperty(value = "模型所属行业", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "model_industry")
private String taskIndustry;
/**
* 文档名称
*/
@ExcelProperty(value = "文档名称")
private String documentName;
/**
* 后台任务id
*/
private String taskId;
/**
* 预计时间
*/
@ExcelProperty(value = "预计时间")
private Date estimatedCompletionTime;
/**
* 状态
*/
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "document_task_status")
private String progressStatus;
/**
* 任务时长
*/
private String taskDuration;
@ExcelProperty(value = "上传时间")
private Date createTime;
/**
* 创建者
*/
private Long createBy;
private String createUser;
@ExcelProperty(value = "更新时间")
private Date updateTime;
}

50
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTaskSupplementVo.java

@ -0,0 +1,50 @@
package org.dromara.productManagement.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.productManagement.domain.ContractualTaskSupplement;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 合同任务额外字段
视图对象 contractual_task_supplement
*
* @author Lion Li
* @date 2025-01-21
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ContractualTaskSupplement.class)
public class ContractualTaskSupplementVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
* 任务id
*/
@ExcelProperty(value = "任务id")
private Long documentTasksId;
/**
* 合同角色
*/
@ExcelProperty(value = "合同角色")
private String contractPartyRole;
}

60
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTasksVo.java

@ -2,6 +2,9 @@ package org.dromara.productManagement.domain.vo;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.productManagement.domain.ContractualTasks; import org.dromara.productManagement.domain.ContractualTasks;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
@ -25,7 +28,7 @@ import java.util.Date;
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@AutoMapper(target = ContractualTasks.class) @AutoMapper(target = ContractualTasks.class)
public class ContractualTasksVo implements Serializable { public class ContractualTasksVo extends BaseTaskVo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -34,58 +37,11 @@ public class ContractualTasksVo implements Serializable {
* *
*/ */
@ExcelProperty(value = "") @ExcelProperty(value = "")
private Long id; private String id;
/**
* 模型所属行业
*/
@ExcelProperty(value = "模型所属行业", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "model_industry")
private String taskIndustry;
/**
* 模型所属区域
*/
@ExcelProperty(value = "模型所属区域", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "model_region")
private String taskRegion;
/**
* 合同任务名称
*/
@ExcelProperty(value = "合同任务名称")
private String contractTaskName;
/**
*
*/
@ExcelProperty(value = "文档名称")
private String documentName;
/**
*
*/
@ExcelProperty(value = "文件id")
private Long ossId;
/**
*
*/
@ExcelProperty(value = "完成情况")
private String progressStatus;
/**
* 创建者
*/
private Long createBy;
@ExcelProperty(value = "提交人")
private String createUser;
/** /**
* 任务时长 * 合同角色
*/ */
private String taskDuration; @ExcelProperty(value = "合同角色")
@ExcelProperty(value = "跟新时间") private String contractPartyRole;
private Date updateTime;
@ExcelProperty(value = "上传时间")
private Date createTime;
} }

8
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksPermissionsDetailVo.java

@ -52,8 +52,12 @@ public class DocumentTasksPermissionsDetailVo implements Serializable {
* 任务种类 * 任务种类
*/ */
@ExcelProperty(value = "任务种类", converter = ExcelDictConvert.class) @ExcelProperty(value = "任务种类", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "document_task") private String taskName;
/**
* 任务类型
*/
@ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "task_type")
private String taskType; private String taskType;
private Date updateTime; private Date updateTime;
} }

10
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksPermissionsVo.java

@ -62,13 +62,17 @@ public class DocumentTasksPermissionsVo implements Serializable {
* 任务种类 * 任务种类
*/ */
@ExcelProperty(value = "任务种类", converter = ExcelDictConvert.class) @ExcelProperty(value = "任务种类", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "document_task") private String taskName;
/**
* 任务类型
*/
@ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "task_type")
private String taskType; private String taskType;
/** /**
* 任务列表 * 任务列表
*/ */
private List<String> taskTypeList; private List<String> taskNameList;
} }

54
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksVo.java

@ -25,64 +25,12 @@ import java.util.Date;
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@AutoMapper(target = DocumentTasks.class) @AutoMapper(target = DocumentTasks.class)
public class DocumentTasksVo implements Serializable { public class DocumentTasksVo extends BaseTaskVo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ExcelProperty(value = "主键") @ExcelProperty(value = "主键")
private String id; private String id;
/**
* 任务名称
*/
@ExcelProperty(value = "任务名称", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "document_task")
private String taskName;
/**
* 文档名称
*/
@ExcelProperty(value = "文档名称")
private String documentName;
/**
* 后台任务id
*/
private String taskId;
/**
* 预计时间
*/
@ExcelProperty(value = "预计时间")
private Date estimatedCompletionTime;
@ExcelProperty(value = "上传时间")
private Date createTime;
/**
* 状态
*/
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "document_task_status")
private String progressStatus;
/**
* 创建者
*/
private Long createBy;
private String createUser;
/**
* 任务时长
*/
private String taskDuration;
@ExcelProperty(value = "更新时间")
private Date updateTime;
/**
* 模型所属区域
*/
@ExcelProperty(value = "模型所属区域", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "model_region")
private String taskRegion;
/**
* 模型所属行业
*/
@ExcelProperty(value = "模型所属行业", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "model_industry")
private String taskIndustry;
} }

8
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsHistoryVo.java

@ -50,9 +50,13 @@ public class ModelPromptsHistoryVo implements Serializable {
* 模型任务名称 * 模型任务名称
*/ */
@ExcelProperty(value = "模型任务名称", converter = ExcelDictConvert.class) @ExcelProperty(value = "模型任务名称", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "document_task")
private String taskName; private String taskName;
/**
* 任务类型
*/
@ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "task_type")
private String taskType;
/** /**
* 模型所属区域 * 模型所属区域
*/ */

8
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsVo.java

@ -44,9 +44,13 @@ public class ModelPromptsVo implements Serializable {
* 模型任务名称 * 模型任务名称
*/ */
@ExcelProperty(value = "模型任务名称", converter = ExcelDictConvert.class) @ExcelProperty(value = "模型任务名称", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "document_task")
private String taskName; private String taskName;
/**
* 任务类型
*/
@ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "task_type")
private String taskType;
/** /**
* 模型所属区域 * 模型所属区域
*/ */

5
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelUserPromptssettingVo.java

@ -59,5 +59,8 @@ public class ModelUserPromptssettingVo implements Serializable {
@ExcelProperty(value = "用户id") @ExcelProperty(value = "用户id")
private Long userId; private Long userId;
/**
* 任务类型
*/
private String taskType;
} }

36
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/SchemEvaluationVo.java

@ -0,0 +1,36 @@
package org.dromara.productManagement.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.productManagement.domain.SchemEvaluation;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 方案评价任务视图对象 tender_summary_task
*
* @author Lion Li
* @date 2025-01-03
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = SchemEvaluation.class)
public class SchemEvaluationVo extends BaseTaskVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private Long id;
}

70
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/TenderTaskVo.java

@ -0,0 +1,70 @@
package org.dromara.productManagement.domain.vo;
import org.dromara.productManagement.domain.TenderTask;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 招标摘要任务视图对象 tender_summary_task
*
* @author Lion Li
* @date 2024-12-31
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = TenderTask.class)
public class TenderTaskVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 模型所属行业
*/
@ExcelProperty(value = "模型所属行业", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "model_industry")
private String taskIndustry;
/**
* 模型所属区域
*/
@ExcelProperty(value = "模型所属区域", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "model_region")
private String taskRegion;
/**
* 任务名称
*/
@ExcelProperty(value = "任务名称")
private String taskName;
/**
* 文档名称
*/
@ExcelProperty(value = "文档名称")
private String documentName;
/**
* ossid
*/
@ExcelProperty(value = "ossid")
private Long ossId;
/**
* 当前状态
*/
@ExcelProperty(value = "当前状态 ", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "document_task_status")
private String progressStatus;
}

96
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/enums/TaskEnum.java

@ -0,0 +1,96 @@
package org.dromara.productManagement.enums;
public class TaskEnum {
public enum TaskType {
SCHEME_REVIEW("scheme_review", "方案审核"),
CONTRACT_REVIEW("contract_review", "合同审核"),
TENDER_REVIEW("tender_review", "招标审核"),
SCHEME_EVALUATION("scheme_evaluation", "方案评价"),
PROJECT_DOCUMENT_REVIEW("project_document_review", "项目文档审核");
private final String value;
private final String label;
TaskType(String value, String label) {
this.value = value;
this.label = label;
}
public String getValue() {
return value;
}
public String getLabel() {
return label;
}
}
// 方案审核子任务枚举
public enum SchemeTask {
DOCUMENT_SIMILARITY("checkRepeatText", "文档相似性检查"),
DOCUMENT_ERROR("checkDocumentError", "文档纠错"),
SCHEME_EVALUATION("schemEvaluation", "方案评价"),
PLACE_CHECK("checkPlaceName", "地名检查"),
COMPANY_CHECK("checkCompanyName", "公司名称检查"),
TITLE_CHECK("checkTitleName", "文档结构检查");
private final String value;
private final String label;
SchemeTask(String value, String label) {
this.value = value;
this.label = label;
}
public String getValue() {
return value;
}
public String getLabel() {
return label;
}
}
// 合同审核子任务枚举
public enum ContractTask {
CONTRACT_REVIEW("contractReview", "合同审核");
private final String value;
private final String label;
ContractTask(String value, String label) {
this.value = value;
this.label = label;
}
public String getValue() {
return value;
}
public String getLabel() {
return label;
}
}
// 招标审核子任务枚举
public enum TenderTask {
TENDER_SUMMARY("tenderSummary", "招标摘要");
private final String value;
private final String label;
TenderTask(String value, String label) {
this.value = value;
this.label = label;
}
public String getValue() {
return value;
}
public String getLabel() {
return label;
}
}
}

8
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualTaskSupplementMapper.java

@ -0,0 +1,8 @@
package org.dromara.productManagement.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.productManagement.domain.ContractualTaskSupplement;
import org.dromara.productManagement.domain.vo.ContractualTaskSupplementVo;
public interface ContractualTaskSupplementMapper extends BaseMapperPlus<ContractualTaskSupplement, ContractualTaskSupplementVo> {
}

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

@ -12,6 +12,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
* @date 2024-11-08 * @date 2024-11-08
*/ */
public interface DocumentTasksPermissionsMapper extends BaseMapperPlus<DocumentTasksPermissions, DocumentTasksPermissionsVo> { public interface DocumentTasksPermissionsMapper extends BaseMapperPlus<DocumentTasksPermissions, DocumentTasksPermissionsVo> {
DocumentTasksPermissionsVo selectDocumentPermissionsByUserIdAndTaskType(@Param("userId") Long userId,@Param("taskType") String taskType); DocumentTasksPermissionsVo selectDocumentPermissionsByUserIdAndTaskName(@Param("userId") Long userId,@Param("taskName") String taskName);
} }

15
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/SchemEvaluationMapper.java

@ -0,0 +1,15 @@
package org.dromara.productManagement.mapper;
import org.dromara.productManagement.domain.SchemEvaluation;
import org.dromara.productManagement.domain.vo.SchemEvaluationVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 方案评价任务Mapper接口
*
* @author Lion Li
* @date 2025-01-03
*/
public interface SchemEvaluationMapper extends BaseMapperPlus<SchemEvaluation, SchemEvaluationVo> {
}

15
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/TenderTaskMapper.java

@ -0,0 +1,15 @@
package org.dromara.productManagement.mapper;
import org.dromara.productManagement.domain.TenderTask;
import org.dromara.productManagement.domain.vo.TenderTaskVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 招标摘要任务Mapper接口
*
* @author Lion Li
* @date 2024-12-31
*/
public interface TenderTaskMapper extends BaseMapperPlus<TenderTask, TenderTaskVo> {
}

87
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTaskSupplementService.java

@ -0,0 +1,87 @@
package org.dromara.productManagement.service;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.productManagement.domain.bo.ContractualTaskSupplementBo;
import org.dromara.productManagement.domain.vo.ContractualTaskSupplementVo;
import java.util.Collection;
import java.util.List;
/**
* 合同任务额外字段
Service接口
*
* @author Lion Li
* @date 2025-01-21
*/
public interface IContractualTaskSupplementService {
/**
* 查询合同任务额外字段
*
* @param id 主键
* @return 合同任务额外字段
*/
ContractualTaskSupplementVo queryById(Long id);
/**
* 分页查询合同任务额外字段
列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 合同任务额外字段
分页列表
*/
TableDataInfo<ContractualTaskSupplementVo> queryPageList(ContractualTaskSupplementBo bo, PageQuery pageQuery);
/**
* 查询符合条件的合同任务额外字段
列表
*
* @param bo 查询条件
* @return 合同任务额外字段
列表
*/
List<ContractualTaskSupplementVo> queryList(ContractualTaskSupplementBo bo);
/**
* 新增合同任务额外字段
*
* @param bo 合同任务额外字段
* @return 是否新增成功
*/
Boolean insertByBo(ContractualTaskSupplementBo bo);
/**
* 修改合同任务额外字段
*
* @param bo 合同任务额外字段
* @return 是否修改成功
*/
Boolean updateByBo(ContractualTaskSupplementBo bo);
/**
* 校验并批量删除合同任务额外字段
信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 根据合同id查询合同方角色
* @param id
* @return
*/
String queryContractPartyRole(String id);
}

8
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTasksService.java

@ -1,10 +1,9 @@
package org.dromara.productManagement.service; package org.dromara.productManagement.service;
import org.dromara.productManagement.domain.DocumentTaskGroup;
import org.dromara.productManagement.domain.vo.ContractualTasksVo;
import org.dromara.productManagement.domain.bo.ContractualTasksBo; import org.dromara.productManagement.domain.bo.ContractualTasksBo;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.productManagement.domain.vo.ContractualTasksVo;
import org.dromara.productManagement.domain.vo.DocumentTasksVo; import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import java.io.IOException; import java.io.IOException;
@ -17,7 +16,7 @@ import java.util.List;
* @author Lion Li * @author Lion Li
* @date 2024-12-11 * @date 2024-12-11
*/ */
public interface IContractualTasksService { public interface IContractualTasksService {
/** /**
* 查询合同任务 * 查询合同任务
@ -34,7 +33,7 @@ public interface IContractualTasksService {
* @param pageQuery 分页参数 * @param pageQuery 分页参数
* @return 合同任务分页列表 * @return 合同任务分页列表
*/ */
TableDataInfo<DocumentTasksVo> queryPageList(ContractualTasksBo bo, PageQuery pageQuery); TableDataInfo<ContractualTasksVo> queryPageList(ContractualTasksBo bo, PageQuery pageQuery);
/** /**
* 查询符合条件的合同任务列表 * 查询符合条件的合同任务列表
@ -68,4 +67,5 @@ public interface IContractualTasksService {
* @return 是否删除成功 * @return 是否删除成功
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
} }

3
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTaskResultsService.java

@ -1,5 +1,6 @@
package org.dromara.productManagement.service; package org.dromara.productManagement.service;
import jakarta.servlet.http.HttpServletResponse;
import org.dromara.productManagement.domain.vo.DocumentTaskResultsVo; import org.dromara.productManagement.domain.vo.DocumentTaskResultsVo;
import org.dromara.productManagement.domain.bo.DocumentTaskResultsBo; import org.dromara.productManagement.domain.bo.DocumentTaskResultsBo;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -67,4 +68,6 @@ public interface IDocumentTaskResultsService {
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
DocumentTaskResultsVo queryByTaskId(String id); DocumentTaskResultsVo queryByTaskId(String id);
void downloadResult(Long[] ids, HttpServletResponse response);
} }

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksPermissionsService.java

@ -71,5 +71,5 @@ public interface IDocumentTasksPermissionsService {
List<SysUserVo> getUsersAll(); List<SysUserVo> getUsersAll();
DocumentTasksPermissionsVo getTasksPermissionsByUserId(Long userId); DocumentTasksPermissionsVo getTasksPermissionsByUserId(Long userId);
void validateUserTaskPermissions(List<String> taskNames, Long userId); void validateUserTaskPermissions(String taskType,List<String> taskNames, Long userId);
} }

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

@ -72,5 +72,4 @@ public interface IDocumentTasksService {
int stopTask(Long id); int stopTask(Long id);
SysOssVo uploadFile(MultipartFile file) throws IOException, InterruptedException; SysOssVo uploadFile(MultipartFile file) throws IOException, InterruptedException;
} }

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IModelUserPromptssettingService.java

@ -66,5 +66,5 @@ public interface IModelUserPromptssettingService {
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
ModelUserPromptssettingVo queryByuserId(Long userId); ModelUserPromptssettingVo queryByuserId(Long userId,String taskType);
} }

70
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/ISchemEvaluationService.java

@ -0,0 +1,70 @@
package org.dromara.productManagement.service;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.productManagement.domain.vo.SchemEvaluationVo;
import org.dromara.productManagement.domain.bo.SchemEvaluationBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
/**
* 方案评价任务Service接口
*
* @author Lion Li
* @date 2025-01-03
*/
public interface ISchemEvaluationService {
/**
* 查询方案评价任务
*
* @param id 主键
* @return 方案评价任务
*/
DocumentTasksVo queryById(Long id);
/**
* 分页查询方案评价任务列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 方案评价任务分页列表
*/
TableDataInfo<DocumentTasksVo> queryPageList(SchemEvaluationBo bo, PageQuery pageQuery);
/**
* 查询符合条件的方案评价任务列表
*
* @param bo 查询条件
* @return 方案评价任务列表
*/
List<DocumentTasksVo> queryList(SchemEvaluationBo bo);
/**
* 新增方案评价任务
*
* @param bo 方案评价任务
* @return 是否新增成功
*/
Boolean insertByBo(SchemEvaluationBo bo) throws IOException, InterruptedException;
/**
* 修改方案评价任务
*
* @param bo 方案评价任务
* @return 是否修改成功
*/
Boolean updateByBo(SchemEvaluationBo bo);
/**
* 校验并批量删除方案评价任务信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

70
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/ITenderTaskService.java

@ -0,0 +1,70 @@
package org.dromara.productManagement.service;
import org.dromara.productManagement.domain.bo.TenderTaskBo;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.productManagement.domain.vo.TenderTaskVo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
/**
* 招标摘要任务Service接口
*
* @author Lion Li
* @date 2024-12-31
*/
public interface ITenderTaskService {
/**
* 查询招标摘要任务
*
* @param id 主键
* @return 招标摘要任务
*/
DocumentTasksVo queryById(Long id);
/**
* 分页查询招标摘要任务列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 招标摘要任务分页列表
*/
TableDataInfo<DocumentTasksVo> queryPageList(TenderTaskBo bo, PageQuery pageQuery);
/**
* 查询符合条件的招标摘要任务列表
*
* @param bo 查询条件
* @return 招标摘要任务列表
*/
List<DocumentTasksVo> queryList(TenderTaskBo bo);
/**
* 新增招标摘要任务
*
* @param bo 招标摘要任务
* @return 是否新增成功
*/
Boolean insertByBo(TenderTaskBo bo) throws IOException, InterruptedException;
/**
* 修改招标摘要任务
*
* @param bo 招标摘要任务
* @return 是否修改成功
*/
Boolean updateByBo(TenderTaskBo bo);
/**
* 校验并批量删除招标摘要任务信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

155
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTaskSupplementServiceImpl.java

@ -0,0 +1,155 @@
package org.dromara.productManagement.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.productManagement.domain.ContractualTaskSupplement;
import org.dromara.productManagement.domain.bo.ContractualTaskSupplementBo;
import org.dromara.productManagement.domain.vo.ContractualTaskSupplementVo;
import org.dromara.productManagement.mapper.ContractualTaskSupplementMapper;
import org.dromara.productManagement.service.IContractualTaskSupplementService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 合同任务额外字段
Service业务层处理
*
* @author Lion Li
* @date 2025-01-21
*/
@RequiredArgsConstructor
@Service
public class ContractualTaskSupplementServiceImpl implements IContractualTaskSupplementService {
private final ContractualTaskSupplementMapper baseMapper;
/**
* 查询合同任务额外字段
*
* @param id 主键
* @return 合同任务额外字段
*/
@Override
public ContractualTaskSupplementVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询合同任务额外字段
列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 合同任务额外字段
分页列表
*/
@Override
public TableDataInfo<ContractualTaskSupplementVo> queryPageList(ContractualTaskSupplementBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<ContractualTaskSupplement> lqw = buildQueryWrapper(bo);
Page<ContractualTaskSupplementVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的合同任务额外字段
列表
*
* @param bo 查询条件
* @return 合同任务额外字段
列表
*/
@Override
public List<ContractualTaskSupplementVo> queryList(ContractualTaskSupplementBo bo) {
LambdaQueryWrapper<ContractualTaskSupplement> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<ContractualTaskSupplement> buildQueryWrapper(ContractualTaskSupplementBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ContractualTaskSupplement> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getDocumentTasksId() != null, ContractualTaskSupplement::getDocumentTasksId, bo.getDocumentTasksId());
lqw.eq(StringUtils.isNotBlank(bo.getContractPartyRole()), ContractualTaskSupplement::getContractPartyRole, bo.getContractPartyRole());
return lqw;
}
/**
* 新增合同任务额外字段
*
* @param bo 合同任务额外字段
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(ContractualTaskSupplementBo bo) {
ContractualTaskSupplement add = MapstructUtils.convert(bo, ContractualTaskSupplement.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改合同任务额外字段
*
* @param bo 合同任务额外字段
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(ContractualTaskSupplementBo bo) {
ContractualTaskSupplement update = MapstructUtils.convert(bo, ContractualTaskSupplement.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(ContractualTaskSupplement entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除合同任务额外字段
信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
@Override
public String queryContractPartyRole(String id) {
LambdaQueryWrapper<ContractualTaskSupplement> lqw = Wrappers.lambdaQuery();
lqw.eq(ContractualTaskSupplement::getDocumentTasksId, id);
ContractualTaskSupplement contractualTaskSupplement = baseMapper.selectOne(lqw);
if (contractualTaskSupplement == null) {
return null;
}
return contractualTaskSupplement.getContractPartyRole();
}
}

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

@ -1,44 +1,38 @@
package org.dromara.productManagement.service.impl; package org.dromara.productManagement.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import jakarta.validation.constraints.NotBlank;
import org.dromara.common.core.service.DictService; import org.dromara.common.core.service.DictService;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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 lombok.RequiredArgsConstructor; import org.dromara.productManagement.common.service.BaseTaskService;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.productManagement.domain.*;
import org.dromara.productManagement.domain.DocumentTaskGroup; import org.dromara.productManagement.domain.bo.ContractualTaskSupplementBo;
import org.dromara.productManagement.domain.DocumentTasks;
import org.dromara.productManagement.domain.bo.DocumentTasksBo; import org.dromara.productManagement.domain.bo.DocumentTasksBo;
import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsVo; import org.dromara.productManagement.domain.vo.ContractualTasksVo;
import org.dromara.productManagement.domain.vo.DocumentTasksVo; import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.productManagement.enums.TaskEnum;
import org.dromara.productManagement.mapper.DocumentTasksMapper; import org.dromara.productManagement.mapper.DocumentTasksMapper;
import org.dromara.productManagement.mapper.DocumentTasksPermissionsMapper; import org.dromara.productManagement.mapper.DocumentTasksPermissionsMapper;
import org.dromara.productManagement.mapper.ModelPromptsMapper;
import org.dromara.productManagement.mapper.ModelUserPromptssettingMapper;
import org.dromara.productManagement.service.IContractualTaskSupplementService;
import org.dromara.productManagement.service.IDocumentTasksPermissionsService; import org.dromara.productManagement.service.IDocumentTasksPermissionsService;
import org.dromara.productManagement.service.IDocumentTasksService; import org.dromara.productManagement.service.IDocumentTasksService;
import org.dromara.productManagement.utils.MyHttpUtils;
import org.dromara.productManagement.utils.MyTimeUtils; import org.dromara.productManagement.utils.MyTimeUtils;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService; import org.dromara.system.service.ISysOssService;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.productManagement.domain.bo.ContractualTasksBo; import org.dromara.productManagement.domain.bo.ContractualTasksBo;
import org.dromara.productManagement.domain.vo.ContractualTasksVo;
import org.dromara.productManagement.domain.ContractualTasks;
import org.dromara.productManagement.mapper.ContractualTasksMapper;
import org.dromara.productManagement.service.IContractualTasksService; import org.dromara.productManagement.service.IContractualTasksService;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
/** /**
@ -47,31 +41,27 @@ import java.util.*;
* @author Lion Li * @author Lion Li
* @date 2024-12-11 * @date 2024-12-11
*/ */
@RequiredArgsConstructor
@Service @Service
public class ContractualTasksServiceImpl implements IContractualTasksService { @Transactional
public class ContractualTasksServiceImpl extends BaseTaskService<ContractualTasksBo> implements IContractualTasksService {
public ContractualTasksServiceImpl(ISysOssService ossService, ISysUserService userService, ModelPromptsMapper modelPromptsMapper, ModelUserPromptssettingMapper modelUserPromptssettingMapper, DocumentTasksPermissionsMapper documentTasksPermissionsMapper, IDocumentTasksPermissionsService documentTasksPermissionsService, DictService dictTypeService, DocumentTasksMapper baseMapper) {
super(ossService, userService, modelPromptsMapper, modelUserPromptssettingMapper, documentTasksPermissionsMapper, documentTasksPermissionsService, dictTypeService, baseMapper);
}
@Autowired
private DocumentTasksMapper documentTasksMapper;
@Autowired
private IDocumentTasksService documentTasksService;
@Autowired
private IContractualTaskSupplementService contractualTaskSupplementService;
private final ContractualTasksMapper baseMapper;
private final ISysOssService ossService;
private final ISysUserService userService;
private final IDocumentTasksService documentTasksService;
private final DocumentTasksMapper documentTasksMapper;
@Value("${chat.chatUrl}")
private String chatUrl;
//根目录地址
@Value("${chat.filePath}")
private String fileRootPath;
@Value("${chat.tempfilePath}")
private String tempfilePath;
/**
* 查询合同任务
*
* @param id 主键
* @return 合同任务
*/
@Override @Override
public DocumentTasksVo queryById(Long id){ public DocumentTasksVo queryById(Long id) {
return documentTasksMapper.selectVoById(id); return null;
} }
/** /**
@ -82,27 +72,51 @@ public class ContractualTasksServiceImpl implements IContractualTasksService {
* @return 合同任务分页列表 * @return 合同任务分页列表
*/ */
@Override @Override
public TableDataInfo<DocumentTasksVo> queryPageList(ContractualTasksBo bo, PageQuery pageQuery) { public TableDataInfo<ContractualTasksVo> queryPageList(ContractualTasksBo bo, PageQuery pageQuery) {
DocumentTasksBo documentTasksBo = new DocumentTasksBo(); DocumentTasksBo documentTasksBo = new DocumentTasksBo();
BeanUtils.copyProperties(bo, documentTasksBo); BeanUtils.copyProperties(bo, documentTasksBo);
if(bo.getTaskNameList()==null || bo.getTaskNameList().size() == 0){
String[] list= {"contractReview"};
documentTasksBo.setTaskNameList(Arrays.asList(list));
}
LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(documentTasksBo); LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(documentTasksBo);
lqw.eq(DocumentTasks::getTaskType, TaskEnum.TaskType.CONTRACT_REVIEW.getValue());
// 获取 DocumentTasksVo 的分页结果
Page<DocumentTasksVo> documentTasksPage = documentTasksMapper.selectVoPage(pageQuery.build(), lqw);
// 创建新的 ContractualTasksVo 的 Page 对象
Page<ContractualTasksVo> result = new Page<>();
// 复制分页信息
result.setTotal(documentTasksPage.getTotal());
result.setSize(documentTasksPage.getSize());
result.setCurrent(documentTasksPage.getCurrent());
// 转换记录列表
List<ContractualTasksVo> contractualTasksVoList = documentTasksPage.getRecords().stream()
.map(documentTasksVo -> {
ContractualTasksVo contractualTasksVo = new ContractualTasksVo();
BeanUtils.copyProperties(documentTasksVo, contractualTasksVo);
//查询合同角色
String contractPartyRole = contractualTaskSupplementService.queryContractPartyRole(documentTasksVo.getId());
contractualTasksVo.setContractPartyRole(contractPartyRole);
// 设置创建用户信息
Long createBy = contractualTasksVo.getCreateBy();
contractualTasksVo.setCreateUser(userService.selectUserById(createBy).getNickName());
// 计算任务持续时间
String formattedDuration = "";
if (!contractualTasksVo.getProgressStatus().equals("PENDING")
&& !contractualTasksVo.getProgressStatus().equals("STARTED")) {
formattedDuration = MyTimeUtils.formatTimeDifference(
contractualTasksVo.getCreateTime(),
contractualTasksVo.getUpdateTime()
);
}
contractualTasksVo.setTaskDuration(formattedDuration);
return contractualTasksVo;
})
.collect(java.util.stream.Collectors.toList());
result.setRecords(contractualTasksVoList);
Page<DocumentTasksVo> result = documentTasksMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(vo -> {
Long createBy = vo.getCreateBy();
vo.setCreateUser(userService.selectUserById(createBy).getNickName());
//计算updateTime 和 createTime之间相差的小时数
// 格式化输出
String formattedDuration="";
if(!vo.getProgressStatus().equals("PENDING")&&!vo.getProgressStatus().equals("STARTED")){
formattedDuration= MyTimeUtils.formatTimeDifference(vo.getCreateTime(), vo.getUpdateTime());
}
vo.setTaskDuration(formattedDuration);
});
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -116,26 +130,24 @@ public class ContractualTasksServiceImpl implements IContractualTasksService {
public List<DocumentTasksVo> queryList(ContractualTasksBo bo) { public List<DocumentTasksVo> queryList(ContractualTasksBo bo) {
DocumentTasksBo documentTasksBo = new DocumentTasksBo(); DocumentTasksBo documentTasksBo = new DocumentTasksBo();
BeanUtils.copyProperties(bo, documentTasksBo); BeanUtils.copyProperties(bo, documentTasksBo);
if(bo.getTaskNameList()==null || bo.getTaskNameList().size() == 0){
String[] list= {"contractReview"};
documentTasksBo.setTaskNameList(Arrays.asList(list));
}
return documentTasksService.queryList(documentTasksBo); return documentTasksService.queryList(documentTasksBo);
} }
private LambdaQueryWrapper<DocumentTasks> buildQueryWrapper(DocumentTasksBo bo) { // private LambdaQueryWrapper<DocumentTasks> buildQueryWrapper(DocumentTasksBo bo) {
LambdaQueryWrapper<DocumentTasks> lqw = Wrappers.lambdaQuery(); // LambdaQueryWrapper<DocumentTasks> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), DocumentTasks::getTaskIndustry, bo.getTaskIndustry()); // lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), DocumentTasks::getTaskIndustry, bo.getTaskIndustry());
lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), DocumentTasks::getTaskRegion, bo.getTaskRegion()); // lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), DocumentTasks::getTaskRegion, bo.getTaskRegion());
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());
List<String> taskNames = bo.getTaskNameList(); // List<String> taskNames = bo.getTaskNameList();
if (taskNames != null && !taskNames.isEmpty()) { // lqw.eq(DocumentTasks::getTaskType, TaskEnum.TaskType.CONTRACT_REVIEW.getValue());
lqw.in(DocumentTasks::getTaskName, taskNames); // if (taskNames != null && !taskNames.isEmpty()) {
} // lqw.in(DocumentTasks::getTaskName, taskNames);
lqw.orderByDesc(DocumentTasks::getCreateTime); // }
return lqw; // lqw.orderByDesc(DocumentTasks::getCreateTime);
} // return lqw;
// }
/** /**
* 新增合同任务 * 新增合同任务
@ -145,79 +157,7 @@ public class ContractualTasksServiceImpl implements IContractualTasksService {
*/ */
@Override @Override
public Boolean insertByBo(ContractualTasksBo bo) throws IOException, InterruptedException { public Boolean insertByBo(ContractualTasksBo bo) throws IOException, InterruptedException {
List<String> taskNames = bo.getTaskNameList(); return handleTask(bo, TaskEnum.TaskType.CONTRACT_REVIEW.getValue());
boolean flag = false;
Long ossId = bo.getOssId();
SysOssVo fileInfo = ossService.getById(ossId);
String fileName = fileInfo.getOriginalName();
String filePath =fileRootPath+fileInfo.getFileName();
String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); // 获取当前时间戳
String parentPath = new File(filePath).getParent();
// 获取文件扩展名
String fileExtension = "";
int lastIndexOfDot = fileName.lastIndexOf('.');
if (lastIndexOfDot != -1) {
fileExtension = fileName.substring(lastIndexOfDot); // 获取文件扩展名
fileName = fileName.substring(0, lastIndexOfDot); // 获取文件名
}
// 拼接新的文件名
String newFileName = fileName + "_" + timestamp + fileExtension;
bo.setDocumentName(fileInfo.getOriginalName());
if (taskNames != null && !taskNames.isEmpty()) {
for (String taskName : taskNames) {
// 创建 DocumentTasks 实体并设置属性
ContractualTasks add = MapstructUtils.convert(bo, ContractualTasks.class);
add.setTaskName(taskName);
// 验证实体并保存
validEntityBeforeSave(add);
if(!fileExtension.contains("docx")){
//文件转换为docx
// ProcessBuilder builder = new ProcessBuilder("unoconv", "-o", parentPath, "-f", "docx", filePath);
ProcessBuilder builder = new ProcessBuilder("libreoffice", "--headless", "--convert-to", "docx",filePath, "--outdir", parentPath);
Process process = builder.start();
int completed = process.waitFor();
if (completed != 0) {
InputStream errorStream = process.getErrorStream();
String errorMessage = new String(errorStream.readAllBytes());
process.destroyForcibly();
String failMsg = fileName + "转docx失败,请检查文件是否正确~ 错误信息: " + errorMessage;
throw new RuntimeException(failMsg);
} else {
process.destroyForcibly();
// 获取文件名部分
int lastDotIndex = filePath.lastIndexOf('.');
if (lastDotIndex == -1) {
// 如果没有扩展名,直接添加 .docx
filePath= filePath + ".docx";
} else {
// 如果有其他扩展名,替换为 .docx
filePath= filePath.substring(0, lastDotIndex) + ".docx";
}
}
}
//参数 add.id,taskName。newFileName;
add.setProgressStatus("PENDING");
DocumentTasks documentTasks = new DocumentTasks();
BeanUtils.copyProperties(add, documentTasks);
flag = documentTasksMapper.insert(documentTasks) > 0;
Long priority=1L;
//获取当前用户的任务优先级
// if(!StpUtil.hasRole("superadmin")){
// DocumentTasksPermissionsVo documentTasksPermissionsVo = documentTasksPermissionsMapper.selectDocumentPermissionsByUserIdAndTaskType(LoginHelper.getUserId(),taskName);
// priority = documentTasksPermissionsVo.getPriority();
// }
MyHttpUtils.sendTaskStartMessage(chatUrl+"/back/taskStart",documentTasks.getId(), taskName, filePath, priority);
if (!flag) {
throw new RuntimeException("新增文档任务失败");
}
}
}
return flag;
} }
/** /**
@ -228,8 +168,8 @@ public class ContractualTasksServiceImpl implements IContractualTasksService {
*/ */
@Override @Override
public Boolean updateByBo(ContractualTasksBo bo) { public Boolean updateByBo(ContractualTasksBo bo) {
ContractualTasks update = MapstructUtils.convert(bo, ContractualTasks.class); DocumentTasks update = MapstructUtils.convert(bo, DocumentTasks.class);
validEntityBeforeSave(update); // validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }
@ -254,4 +194,15 @@ public class ContractualTasksServiceImpl implements IContractualTasksService {
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }
@Override
protected void beforeTaskMessageSent(Long taskId, String taskName,ContractualTasksBo bo) {
String contractPartyRole = bo.getContractPartyRole();
ContractualTaskSupplementBo contractualTaskSupplementBo = new ContractualTaskSupplementBo();
contractualTaskSupplementBo.setDocumentTasksId(taskId);
contractualTaskSupplementBo.setContractPartyRole(contractPartyRole);
contractualTaskSupplementService.insertByBo(contractualTaskSupplementBo);
}
} }

284
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTaskResultsServiceImpl.java

@ -1,5 +1,17 @@
package org.dromara.productManagement.service.impl; package org.dromara.productManagement.service.impl;
import com.lowagie.text.html.simpleparser.StyleSheet;
import com.lowagie.text.pdf.BaseFont;
import com.openhtmltopdf.pdfboxout.PdfRendererBuilder;
import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension;
import com.vladsch.flexmark.ext.tables.TablesExtension;
import com.vladsch.flexmark.html.HtmlRenderer;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.data.MutableDataSet;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
import org.dromara.common.core.service.DictService;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -8,16 +20,30 @@ 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 lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.productManagement.enums.TaskEnum;
import org.dromara.productManagement.service.IDocumentTasksService;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.safety.Safelist;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.productManagement.domain.bo.DocumentTaskResultsBo; import org.dromara.productManagement.domain.bo.DocumentTaskResultsBo;
import org.dromara.productManagement.domain.vo.DocumentTaskResultsVo; import org.dromara.productManagement.domain.vo.DocumentTaskResultsVo;
import org.dromara.productManagement.domain.DocumentTaskResults; import org.dromara.productManagement.domain.DocumentTaskResults;
import org.dromara.productManagement.mapper.DocumentTaskResultsMapper; import org.dromara.productManagement.mapper.DocumentTaskResultsMapper;
import org.dromara.productManagement.service.IDocumentTaskResultsService; import org.dromara.productManagement.service.IDocumentTaskResultsService;
import org.xhtmlrenderer.pdf.ITextRenderer;
import javax.xml.parsers.SAXParser;
import java.io.*;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/** /**
* 文档任务结果Service业务层处理 * 文档任务结果Service业务层处理
@ -30,6 +56,8 @@ import java.util.Collection;
public class DocumentTaskResultsServiceImpl implements IDocumentTaskResultsService { public class DocumentTaskResultsServiceImpl implements IDocumentTaskResultsService {
private final DocumentTaskResultsMapper baseMapper; private final DocumentTaskResultsMapper baseMapper;
private final IDocumentTasksService documentTasksService;
private final DictService dictTypeService;
/** /**
* 查询文档任务结果 * 查询文档任务结果
@ -135,4 +163,260 @@ public class DocumentTaskResultsServiceImpl implements IDocumentTaskResultsServi
lqw.eq(DocumentTaskResults::getDocumentTaskId, id); lqw.eq(DocumentTaskResults::getDocumentTaskId, id);
return baseMapper.selectVoOne(lqw); return baseMapper.selectVoOne(lqw);
} }
@Override
public void downloadResult(Long[] ids, HttpServletResponse response) {
try {
// 查询结果
LambdaQueryWrapper<DocumentTaskResults> lqw = Wrappers.lambdaQuery();
lqw.in(DocumentTaskResults::getDocumentTaskId, ids);
List<DocumentTaskResults> list = baseMapper.selectList(lqw);
if (list.isEmpty()) {
throw new RuntimeException("未找到相关文件");
}
if (list.size() > 1) {
// 多文件压缩下载
DocumentTasksVo documentTasksVo = documentTasksService.queryById(list.get(0).getDocumentTaskId());
String documentName = documentTasksVo.getDocumentName();
String tempDir = System.getProperty("java.io.tmpdir");
String zipFileName = "results_" +documentName + ".zip";
String zipFilePath = tempDir + File.separator + zipFileName;
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
for (DocumentTaskResults result : list) {
documentTasksVo = documentTasksService.queryById(result.getDocumentTaskId());
String resultText = result.getResult();
String taskName = documentTasksVo.getTaskName();
String taskType = documentTasksVo.getTaskType();
String label = dictTypeService.getDictLabel(taskType, taskName);
if (taskName.equals(TaskEnum.SchemeTask.SCHEME_EVALUATION.getValue())) {
resultText = cleanHtml(result.getResult());
}
// 为每个结果创建PDF文件
String pdfFileName = label + "_" + documentName + "_" + ".pdf";
String pdfPath = tempDir + File.separator + pdfFileName;
// 转换Markdown为PDF
convertMarkdownToPdf(resultText, pdfPath);
// 添加到ZIP
addToZip(pdfPath, pdfFileName, zos);
// 删除临时PDF文件
new File(pdfPath).delete();
}
}
// 下载ZIP文件
downloadFile(response, zipFilePath, zipFileName);
// 删除临时ZIP文件
new File(zipFilePath).delete();
} else {
// 单文件下载
DocumentTaskResults result = list.get(0);
DocumentTasksVo documentTasksVo = documentTasksService.queryById(list.get(0).getDocumentTaskId());
String documentName = documentTasksVo.getDocumentName();
String taskName = documentTasksVo.getTaskName();
String taskType = documentTasksVo.getTaskType();
String label = dictTypeService.getDictLabel(taskType, taskName);
String pdfFileName = label + "_" + documentName + "_" + ".pdf";
String tempDir = System.getProperty("java.io.tmpdir");
String pdfPath = tempDir + File.separator + pdfFileName;
String resultText = result.getResult();
if (taskName.equals(TaskEnum.SchemeTask.SCHEME_EVALUATION.getValue())) {
resultText = cleanHtml(result.getResult());
}
// 转换Markdown为PDF
convertMarkdownToPdf(resultText, pdfPath);
// 下载PDF文件
downloadFile(response, pdfPath, pdfFileName);
// 删除临时PDF文件
new File(pdfPath).delete();
}
} catch (Exception e) {
throw new RuntimeException("文件下载失败: " + e.getMessage());
}
}
// Markdown转PDF方法
private void convertMarkdownToPdf(String markdown, String outputPath) throws Exception {
// 使用flexmark-java解析Markdown
// MutableDataSet options = new MutableDataSet();
// Parser parser = Parser.builder(options).build();
// HtmlRenderer renderer = HtmlRenderer.builder(options).build();
// Node document = parser.parse(markdown);
// String htmlContent = renderer.render(document);
MutableDataSet options = new MutableDataSet();
// 启用表格解析
options.set(Parser.EXTENSIONS, Arrays.asList(
TablesExtension.create(),
StrikethroughExtension.create()
));
Parser parser = Parser.builder(options).build();
HtmlRenderer renderer = HtmlRenderer.builder(options)
.extensions(Arrays.asList(
TablesExtension.create(),
StrikethroughExtension.create()
))
.build();
Node document = parser.parse(markdown);
String htmlContent = renderer.render(document);
// 使用 JSoup 清理
Document.OutputSettings settings = new Document.OutputSettings();
settings.prettyPrint(false);
// 配置允许的标签
Safelist safelist = Safelist.relaxed()
// .addTags("em", "strong", "div", "span","br")
// .addAttributes(":all", "style", "class");
.addTags("em", "strong", "div", "span", "br", "table", "thead", "tbody", "tr", "th", "td")
.addAttributes(":all", "style", "class")
.addAttributes("table", "border", "cellpadding", "cellspacing");
htmlContent = Jsoup.clean(htmlContent, "", safelist, settings);
// 使用 NekoHTML 进一步处理
// 创建完整的HTML文档,使用微软雅黑
String html = String.format("""
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<style type="text/css">
body {
font-family: Microsoft YaHei;
line-height: 1.6;
margin: 20px;
font-size: 14px;
}
p { margin: 10px 0; }
pre {
background-color: #f5f5f5;
padding: 10px;
border-radius: 4px;
}
/* 增强表格样式 */
table {
border-collapse: collapse;
width: 100%%;
margin: 10px 0;
table-layout: fixed;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
word-wrap: break-word;
text-align: left;
}
th {
background-color: #f5f5f5;
font-weight: bold;
}
tr:nth-child(even) {
background-color: #fafafa;
}
tr {
page-break-inside: avoid;
}
</style>
</head>
<body>
%s
</body>
</html>
""",
htmlContent.replace("<br>", "\n"));
// 配置Flying Saucer
ITextRenderer pdfRenderer = new ITextRenderer();
// 主要使用微软雅黑,但也加载其他字体作为备选
// 从classpath加载字体
try (InputStream is = getClass().getResourceAsStream("/fonts/msyh.ttc")) {
File tempFont = File.createTempFile("msyh", ".ttc");
FileUtils.copyInputStreamToFile(is, tempFont);
pdfRenderer.getFontResolver().addFont(tempFont.getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
tempFont.deleteOnExit();
}
// 设置文档
pdfRenderer.setDocumentFromString(html);
// 设置输出编码和基础URL
pdfRenderer.getSharedContext().setBaseURL("file:///");
// 布局和创建PDF
pdfRenderer.layout();
try (OutputStream os = new FileOutputStream(outputPath)) {
pdfRenderer.createPDF(os, true);
}
}
// 添加文件到ZIP
private void addToZip(String filePath, String fileName, ZipOutputStream zos) throws IOException {
byte[] buffer = new byte[1024];
try (FileInputStream fis = new FileInputStream(filePath)) {
zos.putNextEntry(new ZipEntry(fileName));
int length;
while ((length = fis.read(buffer)) > 0) {
zos.write(buffer, 0, length);
}
zos.closeEntry();
}
}
// 文件下载方法
private void downloadFile(HttpServletResponse response, String filePath, String fileName) throws IOException {
File file = new File(filePath);
if (!file.exists()) {
throw new RuntimeException("文件不存在");
}
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" +
URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()));
try (FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream()) {
byte[] buffer = new byte[1024];
int i;
while ((i = bis.read(buffer)) != -1) {
os.write(buffer, 0, i);
}
}
}
private String cleanHtml(String content) {
// 移除DOCTYPE和html标签
content = content.replaceAll("(?i)<!DOCTYPE[^>]*>", "");
content = content.replaceAll("(?i)<html[^>]*>", "");
content = content.replaceAll("(?i)</html>", "");
// 移除head部分
content = content.replaceAll("(?i)<head>[\\s\\S]*?</head>", "");
// 移除body标签
content = content.replaceAll("(?i)<body[^>]*>", "");
content = content.replaceAll("(?i)</body>", "");
// 移除所有font相关的style属性
content = content.replaceAll("style=\"font:[^\"]*\"", "");
// 移除空的style属性
content = content.replaceAll("style=\"\"", "");
return content.trim();
}
} }

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsDetailServiceImpl.java

@ -74,6 +74,8 @@ public class DocumentTasksPermissionsDetailServiceImpl implements IDocumentTasks
lqw.eq(bo.getUserId() != null, DocumentTasksPermissionsDetail::getUserId, bo.getUserId()); lqw.eq(bo.getUserId() != null, DocumentTasksPermissionsDetail::getUserId, bo.getUserId());
lqw.eq(bo.getRemainingDocumentCount() != null, DocumentTasksPermissionsDetail::getRemainingDocumentCount, bo.getRemainingDocumentCount()); lqw.eq(bo.getRemainingDocumentCount() != null, DocumentTasksPermissionsDetail::getRemainingDocumentCount, bo.getRemainingDocumentCount());
lqw.eq(StringUtils.isNotBlank(bo.getTaskType()), DocumentTasksPermissionsDetail::getTaskType, bo.getTaskType()); lqw.eq(StringUtils.isNotBlank(bo.getTaskType()), DocumentTasksPermissionsDetail::getTaskType, bo.getTaskType());
lqw.eq(StringUtils.isNotBlank(bo.getTaskName()), DocumentTasksPermissionsDetail::getTaskName, bo.getTaskName());
return lqw; return lqw;
} }

30
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsServiceImpl.java

@ -54,7 +54,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
@Override @Override
public DocumentTasksPermissionsVo queryById(String id){ public DocumentTasksPermissionsVo queryById(String id){
DocumentTasksPermissionsVo vo = baseMapper.selectVoById(id); DocumentTasksPermissionsVo vo = baseMapper.selectVoById(id);
vo.setTaskTypeList(List.of(vo.getTaskType().split(","))); vo.setTaskNameList(List.of(vo.getTaskName().split(",")));
return vo; return vo;
} }
@ -69,7 +69,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
public TableDataInfo<DocumentTasksPermissionsVo> queryPageList(DocumentTasksPermissionsBo bo, PageQuery pageQuery) { public TableDataInfo<DocumentTasksPermissionsVo> queryPageList(DocumentTasksPermissionsBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DocumentTasksPermissions> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<DocumentTasksPermissions> lqw = buildQueryWrapper(bo);
Page<DocumentTasksPermissionsVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<DocumentTasksPermissionsVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(r -> r.setTaskTypeList(List.of(r.getTaskType().split(",")))); result.getRecords().forEach(r -> r.setTaskNameList(List.of(r.getTaskName().split(","))));
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -93,6 +93,8 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
lqw.eq(bo.getDailyDocumentCount() != null, DocumentTasksPermissions::getDailyDocumentCount, bo.getDailyDocumentCount()); lqw.eq(bo.getDailyDocumentCount() != null, DocumentTasksPermissions::getDailyDocumentCount, bo.getDailyDocumentCount());
lqw.eq(bo.getPriority() != null, DocumentTasksPermissions::getPriority, bo.getPriority()); lqw.eq(bo.getPriority() != null, DocumentTasksPermissions::getPriority, bo.getPriority());
lqw.eq(StringUtils.isNotBlank(bo.getTaskType()), DocumentTasksPermissions::getTaskType, bo.getTaskType()); lqw.eq(StringUtils.isNotBlank(bo.getTaskType()), DocumentTasksPermissions::getTaskType, bo.getTaskType());
lqw.like(StringUtils.isNotBlank(bo.getTaskName()), DocumentTasksPermissions::getTaskName, bo.getTaskName());
lqw.orderByAsc(DocumentTasksPermissions::getPriority).orderByDesc(DocumentTasksPermissions::getRoleId); lqw.orderByAsc(DocumentTasksPermissions::getPriority).orderByDesc(DocumentTasksPermissions::getRoleId);
return lqw; return lqw;
} }
@ -106,7 +108,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
@Override @Override
public Boolean insertByBo(DocumentTasksPermissionsBo bo) { public Boolean insertByBo(DocumentTasksPermissionsBo bo) {
DocumentTasksPermissions add = MapstructUtils.convert(bo, DocumentTasksPermissions.class); DocumentTasksPermissions add = MapstructUtils.convert(bo, DocumentTasksPermissions.class);
add.setTaskType(String.join(",", bo.getTaskTypeList())); add.setTaskName(String.join(",", bo.getTaskNameList()));
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
@ -124,7 +126,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
@Override @Override
public Boolean updateByBo(DocumentTasksPermissionsBo bo) { public Boolean updateByBo(DocumentTasksPermissionsBo bo) {
DocumentTasksPermissions update = MapstructUtils.convert(bo, DocumentTasksPermissions.class); DocumentTasksPermissions update = MapstructUtils.convert(bo, DocumentTasksPermissions.class);
update.setTaskType(String.join(",", bo.getTaskTypeList())); update.setTaskName(String.join(",", bo.getTaskNameList()));
validEntityBeforeSave(update); validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }
@ -134,7 +136,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
*/ */
private void validEntityBeforeSave(DocumentTasksPermissions entity){ private void validEntityBeforeSave(DocumentTasksPermissions entity){
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
Arrays.stream(entity.getTaskType().split(",")).forEach(t -> { Arrays.stream(entity.getTaskName().split(",")).forEach(t -> {
LambdaQueryWrapper<DocumentTasksPermissions> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<DocumentTasksPermissions> lqw = Wrappers.lambdaQuery();
if (!StrUtil.isBlankIfStr(entity.getUserId())){ if (!StrUtil.isBlankIfStr(entity.getUserId())){
lqw.eq(DocumentTasksPermissions::getUserId, entity.getUserId()); lqw.eq(DocumentTasksPermissions::getUserId, entity.getUserId());
@ -142,14 +144,15 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
if (!StrUtil.isBlankIfStr(entity.getRoleId())){ if (!StrUtil.isBlankIfStr(entity.getRoleId())){
lqw.eq(DocumentTasksPermissions::getRoleId, entity.getRoleId()); lqw.eq(DocumentTasksPermissions::getRoleId, entity.getRoleId());
} }
lqw.like(DocumentTasksPermissions::getTaskType, t); lqw.like(DocumentTasksPermissions::getTaskName, t);
//id不能相同 //id不能相同
if(!StrUtil.isBlankIfStr(entity.getId())){ if(!StrUtil.isBlankIfStr(entity.getId())){
lqw.ne(DocumentTasksPermissions::getId, entity.getId()); lqw.ne(DocumentTasksPermissions::getId, entity.getId());
} }
Long count = baseMapper.selectCount(lqw); Long count = baseMapper.selectCount(lqw);
if (count > 0 ) { if (count > 0 ) {
String label = dictTypeService.getDictLabel("document_task", t); String taskType = entity.getTaskType();
String label = dictTypeService.getDictLabel(taskType, t);
throw new IllegalArgumentException(label + "已有权限,不能重复添加!"); throw new IllegalArgumentException(label + "已有权限,不能重复添加!");
} }
}); });
@ -190,14 +193,14 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
* @param userId 用户ID * @param userId 用户ID
*/ */
@Override @Override
public void validateUserTaskPermissions(List<String> taskNames, Long userId) { public void validateUserTaskPermissions(String taskType,List<String> taskNames, Long userId) {
// 如果是超级管理员,则不做权限验证 // 如果是超级管理员,则不做权限验证
if (!StpUtil.hasRole("superadmin")) { if (!StpUtil.hasRole("superadmin")) {
taskNames.forEach(taskName -> { taskNames.forEach(taskName -> {
DocumentTasksPermissionsVo vo = baseMapper.selectDocumentPermissionsByUserIdAndTaskType(userId, taskName); DocumentTasksPermissionsVo vo = baseMapper.selectDocumentPermissionsByUserIdAndTaskName(userId, taskName);
// 任务是否有权限 // 任务是否有权限
if (vo == null || !vo.getTaskType().contains(taskName)) { if (vo == null || !vo.getTaskName().contains(taskName)) {
String label = dictTypeService.getDictLabel("document_task", taskName); String label = dictTypeService.getDictLabel(taskType, taskName);
throw new RuntimeException("无权操作[" + label + "],请联系管理员"); throw new RuntimeException("无权操作[" + label + "],请联系管理员");
} }
@ -205,7 +208,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
// 先查询数据库中是否有数据 // 先查询数据库中是否有数据
LambdaQueryWrapper<DocumentTasksPermissionsDetail> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DocumentTasksPermissionsDetail> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DocumentTasksPermissionsDetail::getUserId, userId); queryWrapper.eq(DocumentTasksPermissionsDetail::getUserId, userId);
queryWrapper.eq(DocumentTasksPermissionsDetail::getTaskType, taskName); queryWrapper.eq(DocumentTasksPermissionsDetail::getTaskName, taskName);
DocumentTasksPermissionsDetailVo documentTasksPermissionsDetailVo = documentTasksPermissionsDetailMapper.selectVoOne(queryWrapper); DocumentTasksPermissionsDetailVo documentTasksPermissionsDetailVo = documentTasksPermissionsDetailMapper.selectVoOne(queryWrapper);
if (documentTasksPermissionsDetailVo != null) { if (documentTasksPermissionsDetailVo != null) {
@ -241,7 +244,8 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
// 没有数据,则新增一条数据 // 没有数据,则新增一条数据
DocumentTasksPermissionsDetail documentTasksPermissionsDetail = new DocumentTasksPermissionsDetail(); DocumentTasksPermissionsDetail documentTasksPermissionsDetail = new DocumentTasksPermissionsDetail();
documentTasksPermissionsDetail.setUserId(userId); documentTasksPermissionsDetail.setUserId(userId);
documentTasksPermissionsDetail.setTaskType(taskName); documentTasksPermissionsDetail.setTaskName(taskName);
documentTasksPermissionsDetail.setTaskType(vo.getTaskType());
documentTasksPermissionsDetail.setRemainingDocumentCount(vo.getDailyDocumentCount() - 1); documentTasksPermissionsDetail.setRemainingDocumentCount(vo.getDailyDocumentCount() - 1);
documentTasksPermissionsDetailMapper.insert(documentTasksPermissionsDetail); documentTasksPermissionsDetailMapper.insert(documentTasksPermissionsDetail);
} }

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

@ -1,13 +1,10 @@
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 cn.hutool.core.lang.UUID;
import cn.hutool.core.util.IdUtil; import lombok.Data;
import okhttp3.*; import okhttp3.*;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.service.DictService; import org.dromara.common.core.service.DictService;
import org.dromara.common.core.service.UserService;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -15,23 +12,19 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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 lombok.RequiredArgsConstructor;
import org.dromara.common.oss.core.OssClient; import org.dromara.productManagement.common.service.BaseTaskService;
import org.dromara.common.oss.factory.OssFactory;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.productManagement.domain.*; import org.dromara.productManagement.domain.*;
import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsDetailVo; import org.dromara.productManagement.domain.bo.BaseTaskBo;
import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsVo; ;
import org.dromara.productManagement.enums.TaskEnum;
import org.dromara.productManagement.mapper.*; import org.dromara.productManagement.mapper.*;
import org.dromara.productManagement.service.IDocAiService;
import org.dromara.productManagement.service.IDocumentTasksPermissionsService; import org.dromara.productManagement.service.IDocumentTasksPermissionsService;
import org.dromara.productManagement.utils.MyHttpUtils; import org.dromara.productManagement.utils.MyHttpUtils;
import org.dromara.productManagement.utils.MyTimeUtils;
import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService; import org.dromara.system.service.ISysOssService;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.productManagement.domain.bo.DocumentTasksBo; import org.dromara.productManagement.domain.bo.DocumentTasksBo;
import org.dromara.productManagement.domain.vo.DocumentTasksVo; import org.dromara.productManagement.domain.vo.DocumentTasksVo;
@ -42,17 +35,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
@ -63,25 +46,15 @@ import java.util.Collection;
* @author Lion Li * @author Lion Li
* @date 2024-10-22 * @date 2024-10-22
*/ */
@RequiredArgsConstructor
@Service @Service
@Transactional @Transactional
public class DocumentTasksServiceImpl implements IDocumentTasksService { public class DocumentTasksServiceImpl extends BaseTaskService implements IDocumentTasksService {
private final DocumentTasksMapper baseMapper;
private final ModelPromptsMapper modelPromptsMapper;
private final ModelUserPromptssettingMapper modelUserPromptssettingMapper; public DocumentTasksServiceImpl(ISysOssService ossService, ISysUserService userService, ModelPromptsMapper modelPromptsMapper, ModelUserPromptssettingMapper modelUserPromptssettingMapper, DocumentTasksPermissionsMapper documentTasksPermissionsMapper, IDocumentTasksPermissionsService documentTasksPermissionsService, DictService dictTypeService, DocumentTasksMapper baseMapper) {
private final DocumentTasksPermissionsMapper documentTasksPermissionsMapper; super(ossService, userService, modelPromptsMapper, modelUserPromptssettingMapper, documentTasksPermissionsMapper, documentTasksPermissionsService, dictTypeService, baseMapper);
private final IDocumentTasksPermissionsService documentTasksPermissionsService; }
private final ISysOssService ossService;
private final ISysUserService userService;
private final DictService dictTypeService;
@Value("${chat.chatUrl}")
private String chatUrl;
//根目录地址
@Value("${chat.filePath}")
private String fileRootPath;
@Value("${chat.tempfilePath}")
private String tempfilePath;
/** /**
* 查询文档任务 * 查询文档任务
* *
@ -90,7 +63,7 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
*/ */
@Override @Override
public DocumentTasksVo queryById(Long id){ public DocumentTasksVo queryById(Long id){
return baseMapper.selectVoById(id); return super.queryById(id);
} }
/** /**
@ -106,11 +79,9 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(bo);
Integer pageSize = pageQuery.getPageSize(); Integer pageSize = pageQuery.getPageSize();
if(pageSize != 5){ if(pageSize != 5){
//增加lwd中的一个条件 //==5 查询所有
List<String> taskNames = bo.getTaskNameList(); //默认查询方案审核类型的
if(taskNames == null ||!taskNames.contains("contractReview")){ lqw.eq(DocumentTasks::getTaskType, TaskEnum.TaskType.SCHEME_REVIEW.getValue());
lqw.ne(DocumentTasks::getTaskName,"contractReview");
}
} }
Page<DocumentTaskGroup> documentTaskGroupPage = baseMapper.selectDocumentTaskGroups(pageQuery.build(), lqw); Page<DocumentTaskGroup> documentTaskGroupPage = baseMapper.selectDocumentTaskGroups(pageQuery.build(), lqw);
documentTaskGroupPage.getRecords().forEach(vo -> { documentTaskGroupPage.getRecords().forEach(vo -> {
@ -118,21 +89,6 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
vo.setCreateUser(userService.selectUserById(createBy).getNickName()); vo.setCreateUser(userService.selectUserById(createBy).getNickName());
}); });
return TableDataInfo.build(documentTaskGroupPage); return TableDataInfo.build(documentTaskGroupPage);
// Page<DocumentTasksVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
// result.getRecords().forEach(vo -> {
// Long createBy = vo.getCreateBy();
// vo.setCreateUser(userService.selectUserById(createBy).getNickName());
// //计算updateTime 和 createTime之间相差的小时数
// // 格式化输出
// String formattedDuration="";
// if(!vo.getProgressStatus().equals("PENDING")&&!vo.getProgressStatus().equals("STARTED")){
// formattedDuration= MyTimeUtils.formatTimeDifference(vo.getCreateTime(), vo.getUpdateTime());
// }
// vo.setTaskDuration(formattedDuration);
// });
// return TableDataInfo.build(result);
} }
/** /**
@ -146,8 +102,8 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); return baseMapper.selectVoList(lqw);
} }
@Override
private LambdaQueryWrapper<DocumentTasks> buildQueryWrapper(DocumentTasksBo bo) { protected LambdaQueryWrapper<DocumentTasks> buildQueryWrapper(DocumentTasksBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DocumentTasks> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<DocumentTasks> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getTaskName()), DocumentTasks::getTaskName, bo.getTaskName()); lqw.eq(StringUtils.isNotBlank(bo.getTaskName()), DocumentTasks::getTaskName, bo.getTaskName());
@ -177,110 +133,7 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
@Override @Override
@Transactional @Transactional
public Boolean insertByBo(DocumentTasksBo bo) throws IOException, InterruptedException { public Boolean insertByBo(DocumentTasksBo bo) throws IOException, InterruptedException {
Long userId = LoginHelper.getUserId(); return handleTask(bo, TaskEnum.TaskType.SCHEME_REVIEW.getValue());
List<String> taskNames = bo.getTaskNameList();
//校验所属区域和所属行业是否存在提示词
taskNames.forEach(taskName -> {
ModelPrompts modelPrompts = modelPromptsMapper.selectOne(Wrappers.<ModelPrompts>lambdaQuery()
.eq(ModelPrompts::getTaskName, taskName)
.eq(ModelPrompts::getTaskIndustry, bo.getTaskIndustry())
.eq(ModelPrompts::getTaskRegion, bo.getTaskRegion()));
if(modelPrompts == null){
String label = dictTypeService.getDictLabel("document_task", taskName);
throw new RuntimeException("任务名称:["+label+"],当前任务所属区域或所属行业不存在模型,请联系管理员配置");
}
});
//变更或新增当前角色所属区域和所属行业的配置
//当前任务存在提示词,保存用户个人设置
//先查询数据库中是否有数据
ModelUserPromptssetting promptssetting = modelUserPromptssettingMapper.selectOne(Wrappers.<ModelUserPromptssetting>lambdaQuery()
.eq(ModelUserPromptssetting::getUserId, userId));
if(promptssetting!= null){
//已存在,更新
promptssetting.setTaskIndustry(bo.getTaskIndustry());
promptssetting.setTaskRegion(bo.getTaskRegion());
modelUserPromptssettingMapper.updateById(promptssetting);
}
else{
//不存在,新增
ModelUserPromptssetting userPromptssetting = new ModelUserPromptssetting();
userPromptssetting.setUserId(userId);
userPromptssetting.setTaskIndustry(bo.getTaskIndustry());
userPromptssetting.setTaskRegion(bo.getTaskRegion());
modelUserPromptssettingMapper.insert(userPromptssetting);
}
//验证当前用户是否有任务权限,如果是超级管理员,则不做权限验证
documentTasksPermissionsService.validateUserTaskPermissions(taskNames,userId);
boolean flag = false;
Long ossId = bo.getOssId();
SysOssVo fileInfo = ossService.getById(ossId);
String fileName = fileInfo.getOriginalName();
String filePath =fileRootPath+fileInfo.getFileName();
String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); // 获取当前时间戳
String parentPath = new File(filePath).getParent();
// 获取文件扩展名
String fileExtension = "";
int lastIndexOfDot = fileName.lastIndexOf('.');
if (lastIndexOfDot != -1) {
fileExtension = fileName.substring(lastIndexOfDot); // 获取文件扩展名
fileName = fileName.substring(0, lastIndexOfDot); // 获取文件名
}
// 拼接新的文件名
String newFileName = fileName + "_" + timestamp + fileExtension;
bo.setDocumentName(fileInfo.getOriginalName());
if (taskNames != null && !taskNames.isEmpty()) {
for (String taskName : taskNames) {
// 创建 DocumentTasks 实体并设置属性
DocumentTasks add = MapstructUtils.convert(bo, DocumentTasks.class);
add.setTaskName(taskName);
// 验证实体并保存
validEntityBeforeSave(add);
if(!fileExtension.contains("docx")){
//文件转换为docx
// ProcessBuilder builder = new ProcessBuilder("unoconv", "-o", parentPath, "-f", "docx", filePath);
ProcessBuilder builder = new ProcessBuilder("libreoffice", "--headless", "--convert-to", "docx",filePath, "--outdir", parentPath);
Process process = builder.start();
int completed = process.waitFor();
if (completed != 0) {
InputStream errorStream = process.getErrorStream();
String errorMessage = new String(errorStream.readAllBytes());
process.destroyForcibly();
String failMsg = fileName + "转docx失败,请检查文件是否正确~ 错误信息: " + errorMessage;
throw new RuntimeException(failMsg);
} else {
process.destroyForcibly();
// 获取文件名部分
int lastDotIndex = filePath.lastIndexOf('.');
if (lastDotIndex == -1) {
// 如果没有扩展名,直接添加 .docx
filePath= filePath + ".docx";
} else {
// 如果有其他扩展名,替换为 .docx
filePath= filePath.substring(0, lastDotIndex) + ".docx";
}
}
}
//参数 add.id,taskName。newFileName;
add.setProgressStatus("PENDING");
flag = baseMapper.insert(add) > 0;
Long priority=1L;
//获取当前用户的任务优先级
if(!StpUtil.hasRole("superadmin")){
DocumentTasksPermissionsVo documentTasksPermissionsVo = documentTasksPermissionsMapper.selectDocumentPermissionsByUserIdAndTaskType(LoginHelper.getUserId(),taskName);
priority = documentTasksPermissionsVo.getPriority();
}
MyHttpUtils.sendTaskStartMessage(chatUrl+"/back/taskStart",add.getId(), taskName, filePath, priority);
if (!flag) {
throw new RuntimeException("新增文档任务失败");
}
}
}
return flag;
} }
/** /**
@ -291,9 +144,6 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
*/ */
@Override @Override
public Boolean updateByBo(DocumentTasksBo bo) { public Boolean updateByBo(DocumentTasksBo bo) {
// DocumentTasks update = MapstructUtils.convert(bo, DocumentTasks.class);
//// validEntityBeforeSave(update);
//// return baseMapper.updateById(update) > 0;
List<String> taskNames = bo.getTaskNameList(); List<String> taskNames = bo.getTaskNameList();
boolean flag = false; boolean flag = false;
@ -401,4 +251,28 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
SysOssVo upload = ossService.upload(new File(destPath)); SysOssVo upload = ossService.upload(new File(destPath));
return upload; return upload;
} }
// @Override
// protected Boolean processTaskItems(List<String> taskNames, BaseTaskBo bo, FileProcessResult fileResult, String taskType) {
// boolean flag = false;
// for (String taskName : taskNames) {
// DocumentTasks add = MapstructUtils.convert(bo, DocumentTasks.class);
// add.setTaskName(taskName);
// add.setDocumentName(fileResult.getFileName());
// add.setProgressStatus("PENDING");
// add.setTaskType(taskType);
//
// flag = baseMapper.insert(add) > 0;
//
// Long priority = calculatePriority(taskName);
// MyHttpUtils.sendTaskStartMessage(chatUrl + "/back/taskStart",
// add.getId(), taskName, fileResult.getFilePath(), priority);
//
// if (!flag) {
// throw new RuntimeException("新增文档任务失败");
// }
// }
// return flag;
//
// }
} }

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

@ -76,6 +76,7 @@ public class ModelPromptsHistoryServiceImpl implements IModelPromptsHistoryServi
private LambdaQueryWrapper<ModelPromptsHistory> buildQueryWrapper(ModelPromptsHistoryBo bo) { private LambdaQueryWrapper<ModelPromptsHistory> buildQueryWrapper(ModelPromptsHistoryBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ModelPromptsHistory> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<ModelPromptsHistory> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getTaskType()), ModelPromptsHistory::getTaskType, bo.getTaskType());
lqw.eq(StringUtils.isNotBlank(bo.getTaskName()), ModelPromptsHistory::getTaskName, bo.getTaskName()); lqw.eq(StringUtils.isNotBlank(bo.getTaskName()), ModelPromptsHistory::getTaskName, bo.getTaskName());
lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), ModelPromptsHistory::getTaskRegion, bo.getTaskRegion()); lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), ModelPromptsHistory::getTaskRegion, bo.getTaskRegion());
lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), ModelPromptsHistory::getTaskIndustry, bo.getTaskIndustry()); lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), ModelPromptsHistory::getTaskIndustry, bo.getTaskIndustry());

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

@ -77,6 +77,7 @@ public class ModelPromptsServiceImpl implements IModelPromptsService {
LambdaQueryWrapper<ModelPrompts> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<ModelPrompts> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getId() != null, ModelPrompts::getId, bo.getId()); lqw.eq(bo.getId() != null, ModelPrompts::getId, bo.getId());
lqw.eq(StringUtils.isNotBlank(bo.getTaskName()), ModelPrompts::getTaskName, bo.getTaskName()); lqw.eq(StringUtils.isNotBlank(bo.getTaskName()), ModelPrompts::getTaskName, bo.getTaskName());
lqw.eq(StringUtils.isNotBlank(bo.getTaskType()), ModelPrompts::getTaskType, bo.getTaskType());
lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), ModelPrompts::getTaskRegion, bo.getTaskRegion()); lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), ModelPrompts::getTaskRegion, bo.getTaskRegion());
lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), ModelPrompts::getTaskIndustry, bo.getTaskIndustry()); lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), ModelPrompts::getTaskIndustry, bo.getTaskIndustry());
return lqw; return lqw;

3
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelUserPromptssettingServiceImpl.java

@ -131,9 +131,10 @@ public class ModelUserPromptssettingServiceImpl implements IModelUserPromptssett
} }
@Override @Override
public ModelUserPromptssettingVo queryByuserId(Long userId) { public ModelUserPromptssettingVo queryByuserId(Long userId , String taskType) {
LambdaQueryWrapper<ModelUserPromptssetting> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<ModelUserPromptssetting> lqw = Wrappers.lambdaQuery();
lqw.eq(ModelUserPromptssetting::getUserId, userId); lqw.eq(ModelUserPromptssetting::getUserId, userId);
lqw.eq(ModelUserPromptssetting::getTaskType, taskType);
ModelUserPromptssetting modelUserPromptssetting = baseMapper.selectOne(lqw); ModelUserPromptssetting modelUserPromptssetting = baseMapper.selectOne(lqw);
ModelUserPromptssettingVo modelUserPromptssettingVo = new ModelUserPromptssettingVo(); ModelUserPromptssettingVo modelUserPromptssettingVo = new ModelUserPromptssettingVo();
if (modelUserPromptssetting != null) { if (modelUserPromptssetting != null) {

162
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/SchemEvaluationServiceImpl.java

@ -0,0 +1,162 @@
package org.dromara.productManagement.service.impl;
import org.dromara.common.core.service.DictService;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.productManagement.common.service.BaseTaskService;
import org.dromara.productManagement.domain.DocumentTasks;
import org.dromara.productManagement.domain.bo.BaseTaskBo;
import org.dromara.productManagement.domain.bo.DocumentTasksBo;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.productManagement.enums.TaskEnum;
import org.dromara.productManagement.mapper.*;
import org.dromara.productManagement.service.IDocumentTasksPermissionsService;
import org.dromara.productManagement.utils.MyTimeUtils;
import org.dromara.system.service.ISysOssService;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.productManagement.domain.bo.SchemEvaluationBo;
import org.dromara.productManagement.domain.vo.SchemEvaluationVo;
import org.dromara.productManagement.domain.SchemEvaluation;
import org.dromara.productManagement.service.ISchemEvaluationService;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 方案评价任务Service业务层处理
*
* @author Lion Li
* @date 2025-01-03
*/
@Service
public class SchemEvaluationServiceImpl extends BaseTaskService implements ISchemEvaluationService {
public SchemEvaluationServiceImpl(ISysOssService ossService, ISysUserService userService, ModelPromptsMapper modelPromptsMapper, ModelUserPromptssettingMapper modelUserPromptssettingMapper, DocumentTasksPermissionsMapper documentTasksPermissionsMapper, IDocumentTasksPermissionsService documentTasksPermissionsService, DictService dictTypeService, DocumentTasksMapper baseMapper) {
super(ossService, userService, modelPromptsMapper, modelUserPromptssettingMapper, documentTasksPermissionsMapper, documentTasksPermissionsService, dictTypeService, baseMapper);
}
@Autowired
private DocumentTasksMapper documentTasksMapper;
/**
* 查询方案评价任务
*
* @param id 主键
* @return 方案评价任务
*/
@Override
public DocumentTasksVo queryById(Long id){
return super.queryById(id);
}
/**
* 分页查询方案评价任务列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 方案评价任务分页列表
*/
@Override
public TableDataInfo<DocumentTasksVo> queryPageList(SchemEvaluationBo bo, PageQuery pageQuery) {
DocumentTasksBo documentTasksBo = new DocumentTasksBo();
BeanUtils.copyProperties(bo, documentTasksBo);
LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(documentTasksBo);
lqw.eq(DocumentTasks::getTaskType, TaskEnum.TaskType.SCHEME_EVALUATION.getValue());
Page<DocumentTasksVo> result = documentTasksMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(vo -> {
Long createBy = vo.getCreateBy();
vo.setCreateUser(userService.selectUserById(createBy).getNickName());
// 格式化输出
String formattedDuration="";
if(!vo.getProgressStatus().equals("PENDING")&&!vo.getProgressStatus().equals("STARTED")){
formattedDuration= MyTimeUtils.formatTimeDifference(vo.getCreateTime(), vo.getUpdateTime());
}
vo.setTaskDuration(formattedDuration);
});
return TableDataInfo.build(result);
}
/**
* 查询符合条件的方案评价任务列表
*
* @param bo 查询条件
* @return 方案评价任务列表
*/
@Override
public List<DocumentTasksVo> queryList(SchemEvaluationBo bo) {
DocumentTasksBo documentTasksBo = new DocumentTasksBo();
BeanUtils.copyProperties(bo, documentTasksBo);
LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(documentTasksBo);
return baseMapper.selectVoList(lqw);
}
// private LambdaQueryWrapper<SchemEvaluation> buildQueryWrapper(SchemEvaluationBo bo) {
// Map<String, Object> params = bo.getParams();
// LambdaQueryWrapper<SchemEvaluation> lqw = Wrappers.lambdaQuery();
// lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), SchemEvaluation::getTaskIndustry, bo.getTaskIndustry());
// lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), SchemEvaluation::getTaskRegion, bo.getTaskRegion());
// lqw.like(StringUtils.isNotBlank(bo.getTaskName()), SchemEvaluation::getTaskName, bo.getTaskName());
// lqw.like(StringUtils.isNotBlank(bo.getDocumentName()), SchemEvaluation::getDocumentName, bo.getDocumentName());
// lqw.eq(StringUtils.isNotBlank(bo.getProgressStatus()), SchemEvaluation::getProgressStatus, bo.getProgressStatus());
// return lqw;
// }
/**
* 新增方案评价任务
*
* @param bo 方案评价任务
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(SchemEvaluationBo bo) throws IOException, InterruptedException {
return handleTask(bo, TaskEnum.TaskType.SCHEME_EVALUATION.getValue());
}
/**
* 修改方案评价任务
*
* @param bo 方案评价任务
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(SchemEvaluationBo bo) {
// SchemEvaluation update = MapstructUtils.convert(bo, SchemEvaluation.class);
// validEntityBeforeSave(update);
// return baseMapper.updateById(update) > 0;
return null;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(SchemEvaluation entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除方案评价任务信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

166
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/TenderTaskServiceImpl.java

@ -0,0 +1,166 @@
package org.dromara.productManagement.service.impl;
import org.dromara.common.core.service.DictService;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.productManagement.common.service.BaseTaskService;
import org.dromara.productManagement.domain.DocumentTasks;
import org.dromara.productManagement.domain.TenderTask;
import org.dromara.productManagement.domain.bo.ContractualTasksBo;
import org.dromara.productManagement.domain.bo.DocumentTasksBo;
import org.dromara.productManagement.domain.bo.TenderTaskBo;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.productManagement.domain.vo.TenderTaskVo;
import org.dromara.productManagement.enums.TaskEnum;
import org.dromara.productManagement.mapper.*;
import org.dromara.productManagement.service.IDocumentTasksPermissionsService;
import org.dromara.productManagement.service.IDocumentTasksService;
import org.dromara.productManagement.utils.MyTimeUtils;
import org.dromara.system.service.ISysOssService;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.productManagement.service.ITenderTaskService;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 招标摘要任务Service业务层处理
*
* @author Lion Li
* @date 2024-12-31
*/
@Transactional
@Service
public class TenderTaskServiceImpl extends BaseTaskService implements ITenderTaskService {
public TenderTaskServiceImpl(ISysOssService ossService, ISysUserService userService, ModelPromptsMapper modelPromptsMapper, ModelUserPromptssettingMapper modelUserPromptssettingMapper, DocumentTasksPermissionsMapper documentTasksPermissionsMapper, IDocumentTasksPermissionsService documentTasksPermissionsService, DictService dictTypeService, DocumentTasksMapper baseMapper) {
super(ossService, userService, modelPromptsMapper, modelUserPromptssettingMapper, documentTasksPermissionsMapper, documentTasksPermissionsService, dictTypeService, baseMapper);
}
@Autowired
private DocumentTasksMapper documentTasksMapper;
@Autowired
private IDocumentTasksService documentTasksService;
/**
* 查询招标摘要任务
*
* @param id 主键
* @return 招标摘要任务
*/
@Override
public DocumentTasksVo queryById(Long id) {
return null;
}
/**
* 分页查询招标摘要任务列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 招标摘要任务分页列表
*/
@Override
public TableDataInfo<DocumentTasksVo> queryPageList(TenderTaskBo bo, PageQuery pageQuery) {
DocumentTasksBo documentTasksBo = new DocumentTasksBo();
BeanUtils.copyProperties(bo, documentTasksBo);
LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(documentTasksBo);
lqw.eq(DocumentTasks::getTaskType, TaskEnum.TaskType.TENDER_REVIEW.getValue());
Page<DocumentTasksVo> result = documentTasksMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(vo -> {
Long createBy = vo.getCreateBy();
vo.setCreateUser(userService.selectUserById(createBy).getNickName());
//计算updateTime 和 createTime之间相差的小时数
// 格式化输出
String formattedDuration="";
if(!vo.getProgressStatus().equals("PENDING")&&!vo.getProgressStatus().equals("STARTED")){
formattedDuration= MyTimeUtils.formatTimeDifference(vo.getCreateTime(), vo.getUpdateTime());
}
vo.setTaskDuration(formattedDuration);
});
return TableDataInfo.build(result);
}
/**
* 查询符合条件的招标摘要任务列表
*
* @param bo 查询条件
* @return 招标摘要任务列表
*/
@Override
public List<DocumentTasksVo> queryList(TenderTaskBo bo) {
DocumentTasksBo documentTasksBo = new DocumentTasksBo();
BeanUtils.copyProperties(bo, documentTasksBo);
return documentTasksService.queryList(documentTasksBo);
}
private LambdaQueryWrapper<TenderTask> buildQueryWrapper(TenderTaskBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<TenderTask> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), TenderTask::getTaskIndustry, bo.getTaskIndustry());
lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), TenderTask::getTaskRegion, bo.getTaskRegion());
lqw.like(StringUtils.isNotBlank(bo.getTaskName()), TenderTask::getTaskName, bo.getTaskName());
lqw.like(StringUtils.isNotBlank(bo.getDocumentName()), TenderTask::getDocumentName, bo.getDocumentName());
lqw.eq(bo.getOssId() != null, TenderTask::getOssId, bo.getOssId());
lqw.eq(StringUtils.isNotBlank(bo.getProgressStatus()), TenderTask::getProgressStatus, bo.getProgressStatus());
return lqw;
}
/**
* 新增招标摘要任务
*
* @param bo 招标摘要任务
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(TenderTaskBo bo) throws IOException, InterruptedException {
return handleTask(bo, TaskEnum.TaskType.TENDER_REVIEW.getValue());
}
/**
* 修改招标摘要任务
*
* @param bo 招标摘要任务
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(TenderTaskBo bo) {
TenderTask update = MapstructUtils.convert(bo, TenderTask.class);
validEntityBeforeSave(update);
return null;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(TenderTask entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除招标摘要任务信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

7
zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualTaskSupplementMapper.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.productManagement.mapper.ContractualTaskSupplementMapper">
</mapper>

1
zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksMapper.xml

@ -64,6 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT SELECT
id, id,
task_name, task_name,
task_type,
task_id, task_id,
oss_id, oss_id,
estimated_completion_time, estimated_completion_time,

6
zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksPermissionsMapper.xml

@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.productManagement.mapper.DocumentTasksPermissionsMapper"> <mapper namespace="org.dromara.productManagement.mapper.DocumentTasksPermissionsMapper">
<select id="selectDocumentPermissionsByUserIdAndTaskType" resultType="org.dromara.productManagement.domain.vo.DocumentTasksPermissionsVo"> <select id="selectDocumentPermissionsByUserIdAndTaskName" resultType="org.dromara.productManagement.domain.vo.DocumentTasksPermissionsVo">
SELECT * SELECT *
FROM ( FROM (
SELECT tp.* SELECT tp.*
@ -19,8 +19,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND p.del_flag = '0' AND p.del_flag = '0'
AND p.user_id IS NULL AND p.user_id IS NULL
) AS combined_results ) AS combined_results
<if test="taskType!= null and taskType!= ''"> <if test="taskName!= null and taskName!= ''">
WHERE combined_results.task_type LIKE CONCAT('%', #{taskType}, '%') WHERE combined_results.task_name LIKE CONCAT('%', #{taskName}, '%')
</if> </if>
ORDER BY user_id DESC, priority DESC ORDER BY user_id DESC, priority DESC
LIMIT 1; LIMIT 1;

7
zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/SchemEvaluationMapper.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.productManagement.mapper.SchemEvaluationMapper">
</mapper>

7
zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/TenderTaskMapper.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.productManagement.mapper.TenderTaskMapper">
</mapper>
Loading…
Cancel
Save