diff --git a/ruoyi-admin/src/main/resources/fonts/msyh.ttc b/ruoyi-admin/src/main/resources/fonts/msyh.ttc new file mode 100644 index 0000000..ea174b2 Binary files /dev/null and b/ruoyi-admin/src/main/resources/fonts/msyh.ttc differ diff --git a/ruoyi-admin/src/main/resources/fonts/msyhbd.ttc b/ruoyi-admin/src/main/resources/fonts/msyhbd.ttc new file mode 100644 index 0000000..ac4e4a6 Binary files /dev/null and b/ruoyi-admin/src/main/resources/fonts/msyhbd.ttc differ diff --git a/ruoyi-admin/src/main/resources/fonts/msyhl.ttc b/ruoyi-admin/src/main/resources/fonts/msyhl.ttc new file mode 100644 index 0000000..b9ddfd0 Binary files /dev/null and b/ruoyi-admin/src/main/resources/fonts/msyhl.ttc differ diff --git a/zaojiaManagement/zaojia-productManagement/pom.xml b/zaojiaManagement/zaojia-productManagement/pom.xml index 8b0dd9d..c270600 100644 --- a/zaojiaManagement/zaojia-productManagement/pom.xml +++ b/zaojiaManagement/zaojia-productManagement/pom.xml @@ -103,6 +103,19 @@ org.dromara ruoyi-system + + + com.vladsch.flexmark + flexmark-all + 0.64.8 + + + + + org.xhtmlrenderer + flying-saucer-pdf + 9.1.22 + diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/common/service/BaseTaskService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/common/service/BaseTaskService.java new file mode 100644 index 0000000..91ea915 --- /dev/null +++ b/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 { + + + 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 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 taskNames, T bo, String taskType) { + taskNames.forEach(taskName -> { + ModelPrompts modelPrompts = modelPromptsMapper.selectOne(Wrappers.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.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 taskNames, BaseTaskBo bo, FileProcessResult fileResult, String taskType); + protected Boolean processTaskItems(List 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 buildQueryWrapper(DocumentTasksBo bo) { + LambdaQueryWrapper 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 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) { + // 默认空实现 + } +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTasksController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTasksController.java index f702d9b..398aaf8 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTasksController.java +++ b/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") @GetMapping("/list") - public TableDataInfo list(ContractualTasksBo bo, PageQuery pageQuery) { + public TableDataInfo list(ContractualTasksBo bo, PageQuery pageQuery) { return contractualTasksService.queryPageList(bo, pageQuery); } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java index e8f42d2..6bb2b4f 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java @@ -112,4 +112,16 @@ public class DocumentTaskResultsController extends BaseController { @PathVariable String[] ids) { 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); + } } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ModelUserPromptssettingController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ModelUserPromptssettingController.java index cdbae99..75596fa 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ModelUserPromptssettingController.java +++ b/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") @GetMapping("/getInfoByuserId") - public R getInfoByuserId() { + public R getInfoByuserId( String taskType) { Long userId = LoginHelper.getUserId(); - return R.ok(modelUserPromptssettingService.queryByuserId(userId)); + return R.ok(modelUserPromptssettingService.queryByuserId(userId, taskType)); } } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/SchemEvaluationController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/SchemEvaluationController.java new file mode 100644 index 0000000..b5fc891 --- /dev/null +++ b/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 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 list = schemEvaluationService.queryList(bo); +// ExcelUtil.exportExcel(list, "方案评价任务", SchemEvaluationVo.class, response); +// } + + /** + * 获取方案评价任务详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("productManagement:SchemEvaluation:query") + @GetMapping("/{id}") + public R 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 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 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 remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(schemEvaluationService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/TenderTaskController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/TenderTaskController.java new file mode 100644 index 0000000..e8fd016 --- /dev/null +++ b/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 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 list = tenderTaskService.queryList(bo); +// ExcelUtil.exportExcel(list, "招标审核任务", TenderTaskVo.class, response); + } + + /** + * 获取招标审核任务详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("productManagement:TenderTask:query") + @GetMapping("/{id}") + public R 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 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 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 remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(tenderTaskService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTaskSupplement.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTaskSupplement.java new file mode 100644 index 0000000..5c48fc8 --- /dev/null +++ b/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; + + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskChild.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskChild.java index b06efd6..7c3bdc3 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskChild.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskChild.java @@ -8,6 +8,7 @@ import java.util.Date; public class DocumentTaskChild { private Long id; private String taskName; + private String taskType; private String taskId; private Long ossId; private Date estimatedCompletionTime; diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskResults.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskResults.java index 5562c22..d1ec8a2 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskResults.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskResults.java @@ -36,6 +36,10 @@ public class DocumentTaskResults extends TenantEntity { * 任务结果 */ private String result; + /** + * 任务结果json + */ + private String resultJson; /** * diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasks.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasks.java index 950e16c..46e88d7 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasks.java +++ b/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 taskType; /** * 后台任务id */ diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissions.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissions.java index ba04fdb..a7635b3 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissions.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissions.java @@ -1,5 +1,8 @@ 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 com.baomidou.mybatisplus.annotation.*; import lombok.Data; @@ -48,10 +51,14 @@ public class DocumentTasksPermissions extends TenantEntity { private Long priority; /** - * 任务种类 + * 任务名称 + */ + private String taskName; + /** + * 任务类型 */ - private String taskType; + private String taskType; /** * 删除标志 diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissionsDetail.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissionsDetail.java index b4e315e..4b415eb 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissionsDetail.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasksPermissionsDetail.java @@ -1,5 +1,8 @@ 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 com.baomidou.mybatisplus.annotation.*; import lombok.Data; @@ -38,8 +41,13 @@ public class DocumentTasksPermissionsDetail extends TenantEntity { private Long remainingDocumentCount; /** - * 任务种类 + * 任务名称 */ + private String taskName; + /** + * 任务类型 + */ + private String taskType; /** diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPrompts.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPrompts.java index 9d92725..885fac6 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPrompts.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPrompts.java @@ -1,7 +1,10 @@ package org.dromara.productManagement.domain; +import com.alibaba.excel.annotation.ExcelProperty; import org.dromara.common.encrypt.annotation.EncryptField; 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 com.baomidou.mybatisplus.annotation.*; import lombok.Data; @@ -39,7 +42,11 @@ public class ModelPrompts extends TenantEntity { */ @EncryptField(algorithm = AlgorithmType.SM4, password = "c7746c89a780c27eda14a2f9b3097c8f") private String taskName; + /** + * 任务类型 + */ + private String taskType; /** * 模型所属区域 */ diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPromptsHistory.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPromptsHistory.java index 8b834ab..b2e3986 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPromptsHistory.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPromptsHistory.java @@ -1,5 +1,8 @@ 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 com.baomidou.mybatisplus.annotation.*; import lombok.Data; @@ -41,7 +44,10 @@ public class ModelPromptsHistory extends TenantEntity { * 模型任务名称 */ private String taskName; - + /** + * 任务类型 + */ + private String taskType; /** * 模型所属区域 */ diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelUserPromptssetting.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelUserPromptssetting.java index 54a5ba2..c502394 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelUserPromptssetting.java +++ b/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 taskType; /** * 用户id */ private Long userId; /** - * + * */ @TableLogic private String delFlag; /** - * + * */ @Version private String version; diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/SchemEvaluation.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/SchemEvaluation.java new file mode 100644 index 0000000..2287359 --- /dev/null +++ b/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; + + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/TenderTask.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/TenderTask.java new file mode 100644 index 0000000..29e2fc6 --- /dev/null +++ b/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; + + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/BaseTaskBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/BaseTaskBo.java new file mode 100644 index 0000000..2f55eaa --- /dev/null +++ b/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; +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTaskSupplementBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTaskSupplementBo.java new file mode 100644 index 0000000..3e5de35 --- /dev/null +++ b/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; + + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTasksBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTasksBo.java index f822383..b290912 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTasksBo.java +++ b/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 com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.productManagement.domain.DocumentTasks; /** * 合同任务业务对象 contractual_tasks @@ -21,47 +22,48 @@ import com.fasterxml.jackson.annotation.JsonFormat; */ @Data @EqualsAndHashCode(callSuper = true) -@AutoMapper(target = ContractualTasks.class, reverseConvertGenerate = false) -public class ContractualTasksBo extends BaseEntity { +@AutoMapper(target = DocumentTasks.class, reverseConvertGenerate = false) +public class ContractualTasksBo extends BaseTaskBo { /** * */ 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; } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTaskResultsBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTaskResultsBo.java index 684b1e5..06eee1c 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTaskResultsBo.java +++ b/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; + /** + * 任务结果json + **/ + private String resultJson; } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksBo.java index 8b220a9..d3fa3a0 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksBo.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksBo.java @@ -24,52 +24,13 @@ import com.fasterxml.jackson.annotation.JsonFormat; @Data @EqualsAndHashCode(callSuper = true) @AutoMapper(target = DocumentTasks.class, reverseConvertGenerate = false) -public class DocumentTasksBo extends BaseEntity { +public class DocumentTasksBo extends BaseTaskBo { /** * 主键 */ 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; diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksPermissionsBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksPermissionsBo.java index 340dd5e..5e70162 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksPermissionsBo.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksPermissionsBo.java @@ -1,5 +1,8 @@ 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.common.mybatis.core.domain.BaseEntity; 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 }) - private List taskTypeList; + private List taskNameList; } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksPermissionsDetailBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksPermissionsDetailBo.java index 6aaa5e8..f85583b 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksPermissionsDetailBo.java +++ b/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 }) private Long remainingDocumentCount; - /** * 任务种类 */ @NotBlank(message = "任务种类不能为空", groups = { AddGroup.class, EditGroup.class }) + private String taskName; + /** + * 任务类型 + */ + private String taskType; diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsBo.java index 5822a58..ec3331c 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsBo.java +++ b/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 }) private String taskName; - + /** + * 模型任务类型 + */ + private String taskType; /** * 模型所属区域 */ diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsHistoryBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsHistoryBo.java index f12de7b..bcda409 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsHistoryBo.java +++ b/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 taskType; /** * 模型所属区域 diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelUserPromptssettingBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelUserPromptssettingBo.java index 9516d5f..7c8ad38 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelUserPromptssettingBo.java +++ b/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 }) private Long userId; - + /** + * 任务类型 + */ + private String taskType; } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/SchemEvaluationBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/SchemEvaluationBo.java new file mode 100644 index 0000000..5080a7b --- /dev/null +++ b/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; + + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/TenderTaskBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/TenderTaskBo.java new file mode 100644 index 0000000..bf04f73 --- /dev/null +++ b/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; + + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/BaseTaskVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/BaseTaskVo.java new file mode 100644 index 0000000..57db8d4 --- /dev/null +++ b/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; +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTaskSupplementVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTaskSupplementVo.java new file mode 100644 index 0000000..76027fe --- /dev/null +++ b/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; + + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTasksVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTasksVo.java index f0762ac..29c127e 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTasksVo.java +++ b/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 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 com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -25,7 +28,7 @@ import java.util.Date; @Data @ExcelIgnoreUnannotated @AutoMapper(target = ContractualTasks.class) -public class ContractualTasksVo implements Serializable { +public class ContractualTasksVo extends BaseTaskVo implements Serializable { @Serial private static final long serialVersionUID = 1L; @@ -34,58 +37,11 @@ public class ContractualTasksVo implements Serializable { * */ @ExcelProperty(value = "") - private Long 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 id; /** - * 任务时长 + * 合同角色 */ - private String taskDuration; - @ExcelProperty(value = "跟新时间") - private Date updateTime; - @ExcelProperty(value = "上传时间") - private Date createTime; + @ExcelProperty(value = "合同角色") + private String contractPartyRole; } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksPermissionsDetailVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksPermissionsDetailVo.java index 65ca66e..6a1fabe 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksPermissionsDetailVo.java +++ b/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) - @ExcelDictFormat(dictType = "document_task") + private String taskName; + /** + * 任务类型 + */ + @ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "task_type") private String taskType; - private Date updateTime; } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksPermissionsVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksPermissionsVo.java index f86ec3f..6b590ac 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksPermissionsVo.java +++ b/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) - @ExcelDictFormat(dictType = "document_task") + private String taskName; + /** + * 任务类型 + */ + @ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "task_type") private String taskType; - /** * 任务列表 */ - private List taskTypeList; + private List taskNameList; } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksVo.java index b3d4e3b..8f03265 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksVo.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksVo.java @@ -25,64 +25,12 @@ import java.util.Date; @Data @ExcelIgnoreUnannotated @AutoMapper(target = DocumentTasks.class) -public class DocumentTasksVo implements Serializable { +public class DocumentTasksVo extends BaseTaskVo implements Serializable { @Serial private static final long serialVersionUID = 1L; @ExcelProperty(value = "主键") 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; } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsHistoryVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsHistoryVo.java index 0032099..9393dab 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsHistoryVo.java +++ b/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) - @ExcelDictFormat(dictType = "document_task") private String taskName; - + /** + * 任务类型 + */ + @ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "task_type") + private String taskType; /** * 模型所属区域 */ diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsVo.java index 33da280..c47aa7b 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsVo.java +++ b/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) - @ExcelDictFormat(dictType = "document_task") private String taskName; - + /** + * 任务类型 + */ + @ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "task_type") + private String taskType; /** * 模型所属区域 */ diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelUserPromptssettingVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelUserPromptssettingVo.java index bb50ac4..0613be3 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelUserPromptssettingVo.java +++ b/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") private Long userId; - + /** + * 任务类型 + */ + private String taskType; } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/SchemEvaluationVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/SchemEvaluationVo.java new file mode 100644 index 0000000..9f4071b --- /dev/null +++ b/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; + + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/TenderTaskVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/TenderTaskVo.java new file mode 100644 index 0000000..151aa35 --- /dev/null +++ b/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; + + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/enums/TaskEnum.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/enums/TaskEnum.java new file mode 100644 index 0000000..7250a67 --- /dev/null +++ b/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; + } + } +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualTaskSupplementMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualTaskSupplementMapper.java new file mode 100644 index 0000000..79eb2c3 --- /dev/null +++ b/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 { +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTasksPermissionsMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTasksPermissionsMapper.java index bb6303b..9f2350e 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTasksPermissionsMapper.java +++ b/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 */ public interface DocumentTasksPermissionsMapper extends BaseMapperPlus { - DocumentTasksPermissionsVo selectDocumentPermissionsByUserIdAndTaskType(@Param("userId") Long userId,@Param("taskType") String taskType); + DocumentTasksPermissionsVo selectDocumentPermissionsByUserIdAndTaskName(@Param("userId") Long userId,@Param("taskName") String taskName); } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/SchemEvaluationMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/SchemEvaluationMapper.java new file mode 100644 index 0000000..cbef56d --- /dev/null +++ b/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 { + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/TenderTaskMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/TenderTaskMapper.java new file mode 100644 index 0000000..f9fe611 --- /dev/null +++ b/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 { + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTaskSupplementService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTaskSupplementService.java new file mode 100644 index 0000000..f0f0e59 --- /dev/null +++ b/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 queryPageList(ContractualTaskSupplementBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的合同任务额外字段 + 列表 + * + * @param bo 查询条件 + * @return 合同任务额外字段 + 列表 + */ + List 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 ids, Boolean isValid); + /** + * 根据合同id查询合同方角色 + * @param id + * @return + */ + String queryContractPartyRole(String id); +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTasksService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTasksService.java index 2becf65..8718e2c 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTasksService.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTasksService.java @@ -1,10 +1,9 @@ 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.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.productManagement.domain.vo.ContractualTasksVo; import org.dromara.productManagement.domain.vo.DocumentTasksVo; import java.io.IOException; @@ -17,7 +16,7 @@ import java.util.List; * @author Lion Li * @date 2024-12-11 */ -public interface IContractualTasksService { +public interface IContractualTasksService { /** * 查询合同任务 @@ -34,7 +33,7 @@ public interface IContractualTasksService { * @param pageQuery 分页参数 * @return 合同任务分页列表 */ - TableDataInfo queryPageList(ContractualTasksBo bo, PageQuery pageQuery); + TableDataInfo queryPageList(ContractualTasksBo bo, PageQuery pageQuery); /** * 查询符合条件的合同任务列表 @@ -68,4 +67,5 @@ public interface IContractualTasksService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTaskResultsService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTaskResultsService.java index b862a18..b23c6c0 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTaskResultsService.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTaskResultsService.java @@ -1,5 +1,6 @@ package org.dromara.productManagement.service; +import jakarta.servlet.http.HttpServletResponse; import org.dromara.productManagement.domain.vo.DocumentTaskResultsVo; import org.dromara.productManagement.domain.bo.DocumentTaskResultsBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -67,4 +68,6 @@ public interface IDocumentTaskResultsService { Boolean deleteWithValidByIds(Collection ids, Boolean isValid); DocumentTaskResultsVo queryByTaskId(String id); + + void downloadResult(Long[] ids, HttpServletResponse response); } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksPermissionsService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksPermissionsService.java index 3948d65..c09d2e9 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksPermissionsService.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksPermissionsService.java @@ -71,5 +71,5 @@ public interface IDocumentTasksPermissionsService { List getUsersAll(); DocumentTasksPermissionsVo getTasksPermissionsByUserId(Long userId); - void validateUserTaskPermissions(List taskNames, Long userId); + void validateUserTaskPermissions(String taskType,List taskNames, Long userId); } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksService.java index 04924a0..0f464c7 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksService.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksService.java @@ -72,5 +72,4 @@ public interface IDocumentTasksService { int stopTask(Long id); SysOssVo uploadFile(MultipartFile file) throws IOException, InterruptedException; - } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IModelUserPromptssettingService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IModelUserPromptssettingService.java index b977aea..f42247e 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IModelUserPromptssettingService.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IModelUserPromptssettingService.java @@ -66,5 +66,5 @@ public interface IModelUserPromptssettingService { */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); - ModelUserPromptssettingVo queryByuserId(Long userId); + ModelUserPromptssettingVo queryByuserId(Long userId,String taskType); } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/ISchemEvaluationService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/ISchemEvaluationService.java new file mode 100644 index 0000000..8e65f8c --- /dev/null +++ b/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 queryPageList(SchemEvaluationBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的方案评价任务列表 + * + * @param bo 查询条件 + * @return 方案评价任务列表 + */ + List 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 ids, Boolean isValid); +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/ITenderTaskService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/ITenderTaskService.java new file mode 100644 index 0000000..2de52e8 --- /dev/null +++ b/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 queryPageList(TenderTaskBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的招标摘要任务列表 + * + * @param bo 查询条件 + * @return 招标摘要任务列表 + */ + List 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 ids, Boolean isValid); +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTaskSupplementServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTaskSupplementServiceImpl.java new file mode 100644 index 0000000..9915143 --- /dev/null +++ b/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 queryPageList(ContractualTaskSupplementBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的合同任务额外字段 + 列表 + * + * @param bo 查询条件 + * @return 合同任务额外字段 + 列表 + */ + @Override + public List queryList(ContractualTaskSupplementBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(ContractualTaskSupplementBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper 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 ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + @Override + public String queryContractPartyRole(String id) { + + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(ContractualTaskSupplement::getDocumentTasksId, id); + ContractualTaskSupplement contractualTaskSupplement = baseMapper.selectOne(lqw); + if (contractualTaskSupplement == null) { + return null; + } + return contractualTaskSupplement.getContractPartyRole(); + } +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTasksServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTasksServiceImpl.java index f7fd9a8..d4eda82 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTasksServiceImpl.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTasksServiceImpl.java @@ -1,44 +1,38 @@ 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.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.common.satoken.utils.LoginHelper; -import org.dromara.productManagement.domain.DocumentTaskGroup; -import org.dromara.productManagement.domain.DocumentTasks; + +import org.dromara.productManagement.common.service.BaseTaskService; +import org.dromara.productManagement.domain.*; +import org.dromara.productManagement.domain.bo.ContractualTaskSupplementBo; 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.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.IContractualTaskSupplementService; import org.dromara.productManagement.service.IDocumentTasksPermissionsService; import org.dromara.productManagement.service.IDocumentTasksService; -import org.dromara.productManagement.utils.MyHttpUtils; import org.dromara.productManagement.utils.MyTimeUtils; -import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.service.ISysOssService; import org.dromara.system.service.ISysUserService; 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.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.springframework.transaction.annotation.Transactional; -import java.io.File; import java.io.IOException; -import java.io.InputStream; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -47,31 +41,27 @@ import java.util.*; * @author Lion Li * @date 2024-12-11 */ -@RequiredArgsConstructor + @Service -public class ContractualTasksServiceImpl implements IContractualTasksService { +@Transactional +public class ContractualTasksServiceImpl extends BaseTaskService 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 - public DocumentTasksVo queryById(Long id){ - return documentTasksMapper.selectVoById(id); + public DocumentTasksVo queryById(Long id) { + return null; } /** @@ -82,27 +72,51 @@ public class ContractualTasksServiceImpl implements IContractualTasksService { * @return 合同任务分页列表 */ @Override - public TableDataInfo queryPageList(ContractualTasksBo bo, PageQuery pageQuery) { + public TableDataInfo queryPageList(ContractualTasksBo bo, PageQuery pageQuery) { DocumentTasksBo documentTasksBo = new DocumentTasksBo(); BeanUtils.copyProperties(bo, documentTasksBo); - if(bo.getTaskNameList()==null || bo.getTaskNameList().size() == 0){ - String[] list= {"contractReview"}; - documentTasksBo.setTaskNameList(Arrays.asList(list)); - } LambdaQueryWrapper lqw = buildQueryWrapper(documentTasksBo); + lqw.eq(DocumentTasks::getTaskType, TaskEnum.TaskType.CONTRACT_REVIEW.getValue()); + + // 获取 DocumentTasksVo 的分页结果 + Page documentTasksPage = documentTasksMapper.selectVoPage(pageQuery.build(), lqw); + + // 创建新的 ContractualTasksVo 的 Page 对象 + Page result = new Page<>(); + // 复制分页信息 + result.setTotal(documentTasksPage.getTotal()); + result.setSize(documentTasksPage.getSize()); + result.setCurrent(documentTasksPage.getCurrent()); + + // 转换记录列表 + List 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 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); } @@ -116,26 +130,24 @@ public class ContractualTasksServiceImpl implements IContractualTasksService { public List queryList(ContractualTasksBo bo) { DocumentTasksBo documentTasksBo = new 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); } - private LambdaQueryWrapper buildQueryWrapper(DocumentTasksBo bo) { - LambdaQueryWrapper 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 taskNames = bo.getTaskNameList(); - if (taskNames != null && !taskNames.isEmpty()) { - lqw.in(DocumentTasks::getTaskName, taskNames); - } - lqw.orderByDesc(DocumentTasks::getCreateTime); - return lqw; - } +// private LambdaQueryWrapper buildQueryWrapper(DocumentTasksBo bo) { +// LambdaQueryWrapper 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 taskNames = bo.getTaskNameList(); +// lqw.eq(DocumentTasks::getTaskType, TaskEnum.TaskType.CONTRACT_REVIEW.getValue()); +// if (taskNames != null && !taskNames.isEmpty()) { +// lqw.in(DocumentTasks::getTaskName, taskNames); +// } +// lqw.orderByDesc(DocumentTasks::getCreateTime); +// return lqw; +// } /** * 新增合同任务 @@ -145,79 +157,7 @@ public class ContractualTasksServiceImpl implements IContractualTasksService { */ @Override public Boolean insertByBo(ContractualTasksBo bo) throws IOException, InterruptedException { - List taskNames = bo.getTaskNameList(); - 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; + return handleTask(bo, TaskEnum.TaskType.CONTRACT_REVIEW.getValue()); } /** @@ -228,8 +168,8 @@ public class ContractualTasksServiceImpl implements IContractualTasksService { */ @Override public Boolean updateByBo(ContractualTasksBo bo) { - ContractualTasks update = MapstructUtils.convert(bo, ContractualTasks.class); - validEntityBeforeSave(update); + DocumentTasks update = MapstructUtils.convert(bo, DocumentTasks.class); +// validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } @@ -254,4 +194,15 @@ public class ContractualTasksServiceImpl implements IContractualTasksService { } 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); + } + } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTaskResultsServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTaskResultsServiceImpl.java index 82c7bf7..f3e0ce3 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTaskResultsServiceImpl.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTaskResultsServiceImpl.java @@ -1,5 +1,17 @@ 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.StringUtils; 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.toolkit.Wrappers; 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.dromara.productManagement.domain.bo.DocumentTaskResultsBo; import org.dromara.productManagement.domain.vo.DocumentTaskResultsVo; import org.dromara.productManagement.domain.DocumentTaskResults; import org.dromara.productManagement.mapper.DocumentTaskResultsMapper; 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.Map; import java.util.Collection; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; /** * 文档任务结果Service业务层处理 @@ -30,6 +56,8 @@ import java.util.Collection; public class DocumentTaskResultsServiceImpl implements IDocumentTaskResultsService { 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); return baseMapper.selectVoOne(lqw); } + + @Override + public void downloadResult(Long[] ids, HttpServletResponse response) { + try { + // 查询结果 + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(DocumentTaskResults::getDocumentTaskId, ids); + List 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(""" + + + + + + + + %s + + + """, + htmlContent.replace("
", "\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)]*>", ""); + content = content.replaceAll("(?i)]*>", ""); + content = content.replaceAll("(?i)", ""); + + // 移除head部分 + content = content.replaceAll("(?i)[\\s\\S]*?", ""); + + // 移除body标签 + content = content.replaceAll("(?i)]*>", ""); + content = content.replaceAll("(?i)", ""); + // 移除所有font相关的style属性 + content = content.replaceAll("style=\"font:[^\"]*\"", ""); + // 移除空的style属性 + content = content.replaceAll("style=\"\"", ""); + return content.trim(); + } } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsDetailServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsDetailServiceImpl.java index 140ff14..e583261 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsDetailServiceImpl.java +++ b/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.getRemainingDocumentCount() != null, DocumentTasksPermissionsDetail::getRemainingDocumentCount, bo.getRemainingDocumentCount()); lqw.eq(StringUtils.isNotBlank(bo.getTaskType()), DocumentTasksPermissionsDetail::getTaskType, bo.getTaskType()); + lqw.eq(StringUtils.isNotBlank(bo.getTaskName()), DocumentTasksPermissionsDetail::getTaskName, bo.getTaskName()); + return lqw; } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsServiceImpl.java index 9f55715..9597dfa 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsServiceImpl.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsServiceImpl.java @@ -54,7 +54,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis @Override public DocumentTasksPermissionsVo queryById(String id){ DocumentTasksPermissionsVo vo = baseMapper.selectVoById(id); - vo.setTaskTypeList(List.of(vo.getTaskType().split(","))); + vo.setTaskNameList(List.of(vo.getTaskName().split(","))); return vo; } @@ -69,7 +69,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis public TableDataInfo queryPageList(DocumentTasksPermissionsBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page 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); } @@ -93,6 +93,8 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis lqw.eq(bo.getDailyDocumentCount() != null, DocumentTasksPermissions::getDailyDocumentCount, bo.getDailyDocumentCount()); lqw.eq(bo.getPriority() != null, DocumentTasksPermissions::getPriority, bo.getPriority()); 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); return lqw; } @@ -106,7 +108,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis @Override public Boolean insertByBo(DocumentTasksPermissionsBo bo) { DocumentTasksPermissions add = MapstructUtils.convert(bo, DocumentTasksPermissions.class); - add.setTaskType(String.join(",", bo.getTaskTypeList())); + add.setTaskName(String.join(",", bo.getTaskNameList())); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { @@ -124,7 +126,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis @Override public Boolean updateByBo(DocumentTasksPermissionsBo bo) { DocumentTasksPermissions update = MapstructUtils.convert(bo, DocumentTasksPermissions.class); - update.setTaskType(String.join(",", bo.getTaskTypeList())); + update.setTaskName(String.join(",", bo.getTaskNameList())); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } @@ -134,7 +136,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis */ private void validEntityBeforeSave(DocumentTasksPermissions entity){ //TODO 做一些数据校验,如唯一约束 - Arrays.stream(entity.getTaskType().split(",")).forEach(t -> { + Arrays.stream(entity.getTaskName().split(",")).forEach(t -> { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); if (!StrUtil.isBlankIfStr(entity.getUserId())){ lqw.eq(DocumentTasksPermissions::getUserId, entity.getUserId()); @@ -142,14 +144,15 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis if (!StrUtil.isBlankIfStr(entity.getRoleId())){ lqw.eq(DocumentTasksPermissions::getRoleId, entity.getRoleId()); } - lqw.like(DocumentTasksPermissions::getTaskType, t); + lqw.like(DocumentTasksPermissions::getTaskName, t); //id不能相同 if(!StrUtil.isBlankIfStr(entity.getId())){ lqw.ne(DocumentTasksPermissions::getId, entity.getId()); } Long count = baseMapper.selectCount(lqw); if (count > 0 ) { - String label = dictTypeService.getDictLabel("document_task", t); + String taskType = entity.getTaskType(); + String label = dictTypeService.getDictLabel(taskType, t); throw new IllegalArgumentException(label + "已有权限,不能重复添加!"); } }); @@ -190,14 +193,14 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis * @param userId 用户ID */ @Override - public void validateUserTaskPermissions(List taskNames, Long userId) { + public void validateUserTaskPermissions(String taskType,List taskNames, Long userId) { // 如果是超级管理员,则不做权限验证 if (!StpUtil.hasRole("superadmin")) { taskNames.forEach(taskName -> { - DocumentTasksPermissionsVo vo = baseMapper.selectDocumentPermissionsByUserIdAndTaskType(userId, taskName); + DocumentTasksPermissionsVo vo = baseMapper.selectDocumentPermissionsByUserIdAndTaskName(userId, taskName); // 任务是否有权限 - if (vo == null || !vo.getTaskType().contains(taskName)) { - String label = dictTypeService.getDictLabel("document_task", taskName); + if (vo == null || !vo.getTaskName().contains(taskName)) { + String label = dictTypeService.getDictLabel(taskType, taskName); throw new RuntimeException("无权操作[" + label + "],请联系管理员"); } @@ -205,7 +208,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis // 先查询数据库中是否有数据 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(DocumentTasksPermissionsDetail::getUserId, userId); - queryWrapper.eq(DocumentTasksPermissionsDetail::getTaskType, taskName); + queryWrapper.eq(DocumentTasksPermissionsDetail::getTaskName, taskName); DocumentTasksPermissionsDetailVo documentTasksPermissionsDetailVo = documentTasksPermissionsDetailMapper.selectVoOne(queryWrapper); if (documentTasksPermissionsDetailVo != null) { @@ -241,7 +244,8 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis // 没有数据,则新增一条数据 DocumentTasksPermissionsDetail documentTasksPermissionsDetail = new DocumentTasksPermissionsDetail(); documentTasksPermissionsDetail.setUserId(userId); - documentTasksPermissionsDetail.setTaskType(taskName); + documentTasksPermissionsDetail.setTaskName(taskName); + documentTasksPermissionsDetail.setTaskType(vo.getTaskType()); documentTasksPermissionsDetail.setRemainingDocumentCount(vo.getDailyDocumentCount() - 1); documentTasksPermissionsDetailMapper.insert(documentTasksPermissionsDetail); } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksServiceImpl.java index add958c..339acb9 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksServiceImpl.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksServiceImpl.java @@ -1,13 +1,10 @@ package org.dromara.productManagement.service.impl; -import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.io.FileUtil; -import cn.hutool.core.lang.UUID; -import cn.hutool.core.util.IdUtil; + +import lombok.Data; import okhttp3.*; -import org.dromara.common.core.domain.R; 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.StringUtils; 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.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import lombok.RequiredArgsConstructor; -import org.dromara.common.oss.core.OssClient; -import org.dromara.common.oss.factory.OssFactory; -import org.dromara.common.satoken.utils.LoginHelper; + +import org.dromara.productManagement.common.service.BaseTaskService; import org.dromara.productManagement.domain.*; -import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsDetailVo; -import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsVo; +import org.dromara.productManagement.domain.bo.BaseTaskBo; +; +import org.dromara.productManagement.enums.TaskEnum; import org.dromara.productManagement.mapper.*; -import org.dromara.productManagement.service.IDocAiService; import org.dromara.productManagement.service.IDocumentTasksPermissionsService; import org.dromara.productManagement.utils.MyHttpUtils; -import org.dromara.productManagement.utils.MyTimeUtils; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.service.ISysOssService; 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.dromara.productManagement.domain.bo.DocumentTasksBo; import org.dromara.productManagement.domain.vo.DocumentTasksVo; @@ -42,17 +35,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; 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.Map; import java.util.Collection; @@ -63,25 +46,15 @@ import java.util.Collection; * @author Lion Li * @date 2024-10-22 */ -@RequiredArgsConstructor @Service @Transactional -public class DocumentTasksServiceImpl implements IDocumentTasksService { - private final DocumentTasksMapper baseMapper; - private final ModelPromptsMapper modelPromptsMapper; - private final ModelUserPromptssettingMapper modelUserPromptssettingMapper; - private final DocumentTasksPermissionsMapper documentTasksPermissionsMapper; - 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; +public class DocumentTasksServiceImpl extends BaseTaskService implements IDocumentTasksService { + + + public DocumentTasksServiceImpl(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); + } + /** * 查询文档任务 * @@ -90,7 +63,7 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService { */ @Override public DocumentTasksVo queryById(Long id){ - return baseMapper.selectVoById(id); + return super.queryById(id); } /** @@ -106,11 +79,9 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Integer pageSize = pageQuery.getPageSize(); if(pageSize != 5){ - //增加lwd中的一个条件 - List taskNames = bo.getTaskNameList(); - if(taskNames == null ||!taskNames.contains("contractReview")){ - lqw.ne(DocumentTasks::getTaskName,"contractReview"); - } + //==5 查询所有 + //默认查询方案审核类型的 + lqw.eq(DocumentTasks::getTaskType, TaskEnum.TaskType.SCHEME_REVIEW.getValue()); } Page documentTaskGroupPage = baseMapper.selectDocumentTaskGroups(pageQuery.build(), lqw); documentTaskGroupPage.getRecords().forEach(vo -> { @@ -118,21 +89,6 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService { vo.setCreateUser(userService.selectUserById(createBy).getNickName()); }); return TableDataInfo.build(documentTaskGroupPage); -// Page 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 lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } - - private LambdaQueryWrapper buildQueryWrapper(DocumentTasksBo bo) { + @Override + protected LambdaQueryWrapper buildQueryWrapper(DocumentTasksBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(StringUtils.isNotBlank(bo.getTaskName()), DocumentTasks::getTaskName, bo.getTaskName()); @@ -177,110 +133,7 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService { @Override @Transactional public Boolean insertByBo(DocumentTasksBo bo) throws IOException, InterruptedException { - Long userId = LoginHelper.getUserId(); - List taskNames = bo.getTaskNameList(); - //校验所属区域和所属行业是否存在提示词 - taskNames.forEach(taskName -> { - ModelPrompts modelPrompts = modelPromptsMapper.selectOne(Wrappers.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.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; + return handleTask(bo, TaskEnum.TaskType.SCHEME_REVIEW.getValue()); } /** @@ -291,9 +144,6 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService { */ @Override public Boolean updateByBo(DocumentTasksBo bo) { -// DocumentTasks update = MapstructUtils.convert(bo, DocumentTasks.class); -//// validEntityBeforeSave(update); -//// return baseMapper.updateById(update) > 0; List taskNames = bo.getTaskNameList(); boolean flag = false; @@ -401,4 +251,28 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService { SysOssVo upload = ossService.upload(new File(destPath)); return upload; } + +// @Override +// protected Boolean processTaskItems(List 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; +// +// } } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsHistoryServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsHistoryServiceImpl.java index 1a8b560..c44b2c5 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsHistoryServiceImpl.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsHistoryServiceImpl.java @@ -76,6 +76,7 @@ public class ModelPromptsHistoryServiceImpl implements IModelPromptsHistoryServi private LambdaQueryWrapper buildQueryWrapper(ModelPromptsHistoryBo bo) { Map params = bo.getParams(); LambdaQueryWrapper 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.getTaskRegion()), ModelPromptsHistory::getTaskRegion, bo.getTaskRegion()); lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), ModelPromptsHistory::getTaskIndustry, bo.getTaskIndustry()); diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsServiceImpl.java index 93e2848..2a2ad24 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsServiceImpl.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsServiceImpl.java @@ -77,6 +77,7 @@ public class ModelPromptsServiceImpl implements IModelPromptsService { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getId() != null, ModelPrompts::getId, bo.getId()); 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.getTaskIndustry()), ModelPrompts::getTaskIndustry, bo.getTaskIndustry()); return lqw; diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelUserPromptssettingServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelUserPromptssettingServiceImpl.java index 6ff37e4..ca0a9a4 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelUserPromptssettingServiceImpl.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelUserPromptssettingServiceImpl.java @@ -131,9 +131,10 @@ public class ModelUserPromptssettingServiceImpl implements IModelUserPromptssett } @Override - public ModelUserPromptssettingVo queryByuserId(Long userId) { + public ModelUserPromptssettingVo queryByuserId(Long userId , String taskType) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(ModelUserPromptssetting::getUserId, userId); + lqw.eq(ModelUserPromptssetting::getTaskType, taskType); ModelUserPromptssetting modelUserPromptssetting = baseMapper.selectOne(lqw); ModelUserPromptssettingVo modelUserPromptssettingVo = new ModelUserPromptssettingVo(); if (modelUserPromptssetting != null) { diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/SchemEvaluationServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/SchemEvaluationServiceImpl.java new file mode 100644 index 0000000..e4f8172 --- /dev/null +++ b/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 queryPageList(SchemEvaluationBo bo, PageQuery pageQuery) { + DocumentTasksBo documentTasksBo = new DocumentTasksBo(); + BeanUtils.copyProperties(bo, documentTasksBo); + + LambdaQueryWrapper lqw = buildQueryWrapper(documentTasksBo); + lqw.eq(DocumentTasks::getTaskType, TaskEnum.TaskType.SCHEME_EVALUATION.getValue()); + Page 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 queryList(SchemEvaluationBo bo) { + DocumentTasksBo documentTasksBo = new DocumentTasksBo(); + BeanUtils.copyProperties(bo, documentTasksBo); + LambdaQueryWrapper lqw = buildQueryWrapper(documentTasksBo); + return baseMapper.selectVoList(lqw); + } + +// private LambdaQueryWrapper buildQueryWrapper(SchemEvaluationBo bo) { +// Map params = bo.getParams(); +// LambdaQueryWrapper 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 ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/TenderTaskServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/TenderTaskServiceImpl.java new file mode 100644 index 0000000..37238bd --- /dev/null +++ b/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 queryPageList(TenderTaskBo bo, PageQuery pageQuery) { + DocumentTasksBo documentTasksBo = new DocumentTasksBo(); + BeanUtils.copyProperties(bo, documentTasksBo); + LambdaQueryWrapper lqw = buildQueryWrapper(documentTasksBo); + lqw.eq(DocumentTasks::getTaskType, TaskEnum.TaskType.TENDER_REVIEW.getValue()); + Page 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 queryList(TenderTaskBo bo) { + DocumentTasksBo documentTasksBo = new DocumentTasksBo(); + BeanUtils.copyProperties(bo, documentTasksBo); + + return documentTasksService.queryList(documentTasksBo); + } + + private LambdaQueryWrapper buildQueryWrapper(TenderTaskBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper 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 ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualTaskSupplementMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualTaskSupplementMapper.xml new file mode 100644 index 0000000..6f7a969 --- /dev/null +++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualTaskSupplementMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksMapper.xml index 7b6785d..f944b79 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksMapper.xml +++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksMapper.xml @@ -64,6 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT id, task_name, + task_type, task_id, oss_id, estimated_completion_time, diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksPermissionsMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksPermissionsMapper.xml index a8f58e3..5c40dd6 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksPermissionsMapper.xml +++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksPermissionsMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - SELECT * FROM ( SELECT tp.* @@ -19,8 +19,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND p.del_flag = '0' AND p.user_id IS NULL ) AS combined_results - - WHERE combined_results.task_type LIKE CONCAT('%', #{taskType}, '%') + + WHERE combined_results.task_name LIKE CONCAT('%', #{taskName}, '%') ORDER BY user_id DESC, priority DESC LIMIT 1; diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/SchemEvaluationMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/SchemEvaluationMapper.xml new file mode 100644 index 0000000..4457d58 --- /dev/null +++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/SchemEvaluationMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/TenderTaskMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/TenderTaskMapper.xml new file mode 100644 index 0000000..9843cd6 --- /dev/null +++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/TenderTaskMapper.xml @@ -0,0 +1,7 @@ + + + + +