Browse Source

新增模型提示词,提示词历史记录,模型权限管理,用户与提示词类型绑定

ai_300
zhouhaibin 2 months ago
parent
commit
fcdb4459e7
  1. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocAiController.java
  2. 25
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTasksController.java
  3. 106
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ModelPromptsController.java
  4. 116
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ModelPromptsHistoryController.java
  5. 116
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ModelUserPromptssettingController.java
  6. 15
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTasks.java
  7. 99
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPrompts.java
  8. 103
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelPromptsHistory.java
  9. 63
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ModelUserPromptssetting.java
  10. 30
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/DocumentTasksBo.java
  11. 93
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsBo.java
  12. 89
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelPromptsHistoryBo.java
  13. 54
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ModelUserPromptssettingBo.java
  14. 4
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksPermissionsDetailVo.java
  15. 28
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTasksVo.java
  16. 113
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsHistoryVo.java
  17. 107
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelPromptsVo.java
  18. 63
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ModelUserPromptssettingVo.java
  19. 15
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ModelPromptsHistoryMapper.java
  20. 15
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ModelPromptsMapper.java
  21. 15
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ModelUserPromptssettingMapper.java
  22. 1
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksPermissionsService.java
  23. 4
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksService.java
  24. 75
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IModelPromptsHistoryService.java
  25. 68
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IModelPromptsService.java
  26. 70
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IModelUserPromptssettingService.java
  27. 16
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocAiServiceImpl.java
  28. 78
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksPermissionsServiceImpl.java
  29. 284
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksServiceImpl.java
  30. 159
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsHistoryServiceImpl.java
  31. 166
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelPromptsServiceImpl.java
  32. 148
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ModelUserPromptssettingServiceImpl.java
  33. 77
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/utils/MyHttpUtils.java
  34. 44
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/utils/MyTimeUtils.java
  35. 7
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ModelPromptsHistoryMapper.xml
  36. 7
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ModelPromptsMapper.xml
  37. 7
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ModelUserPromptssettingMapper.xml

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

@ -17,7 +17,7 @@ import java.io.IOException;
*/
@RequiredArgsConstructor
@RestController
@RequestMapping("/productManagement/docAi1")
@RequestMapping("/productManagement/docAi")
@Validated
public class DocAiController {

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

@ -7,7 +7,10 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.system.domain.vo.SysOssUploadVo;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -23,6 +26,7 @@ import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.productManagement.domain.bo.DocumentTasksBo;
import org.dromara.productManagement.service.IDocumentTasksService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/**
* 文档任务
@ -42,7 +46,7 @@ public class DocumentTasksController extends BaseController {
/**
* 查询文档任务列表
*/
// @SaCheckPermission("productManagement:DocumentTasks:list")
@SaCheckPermission("productManagement:DocumentTasks:list")
@GetMapping("/list")
public TableDataInfo<DocumentTasksVo> list(DocumentTasksBo bo, PageQuery pageQuery) {
return documentTasksService.queryPageList(bo, pageQuery);
@ -51,7 +55,7 @@ public class DocumentTasksController extends BaseController {
/**
* 导出文档任务列表
*/
// @SaCheckPermission("productManagement:DocumentTasks:export")
@SaCheckPermission("productManagement:DocumentTasks:export")
@Log(title = "文档任务", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(DocumentTasksBo bo, HttpServletResponse response) {
@ -64,7 +68,7 @@ public class DocumentTasksController extends BaseController {
*
* @param id 主键
*/
// @SaCheckPermission("productManagement:DocumentTasks:query")
@SaCheckPermission("productManagement:DocumentTasks:query")
@GetMapping("/{id}")
public R<DocumentTasksVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
@ -74,7 +78,7 @@ public class DocumentTasksController extends BaseController {
/**
* 新增文档任务
*/
// @SaCheckPermission("productManagement:DocumentTasks:add")
@SaCheckPermission("productManagement:DocumentTasks:add")
@Log(title = "文档任务", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
@ -85,7 +89,7 @@ public class DocumentTasksController extends BaseController {
/**
* 修改文档任务
*/
// @SaCheckPermission("productManagement:DocumentTasks:edit")
@SaCheckPermission("productManagement:DocumentTasks:edit")
@Log(title = "文档任务", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
@ -98,7 +102,7 @@ public class DocumentTasksController extends BaseController {
*
* @param ids 主键串
*/
// @SaCheckPermission("productManagement:DocumentTasks:remove")
@SaCheckPermission("productManagement:DocumentTasks:remove")
@Log(title = "文档任务", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@ -109,4 +113,13 @@ public class DocumentTasksController extends BaseController {
public R<Void> stop(@NotNull(message = "主键不能为空") @PathVariable Long id) {
return toAjax(documentTasksService.stopTask(id));
}
@PostMapping(value = "/back/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<SysOssUploadVo> uploadFile(@RequestPart(name = "file") MultipartFile file) throws IOException, InterruptedException {
SysOssVo oss = documentTasksService.uploadFile(file);
SysOssUploadVo uploadVo = new SysOssUploadVo();
uploadVo.setUrl(oss.getUrl());
uploadVo.setFileName(oss.getOriginalName());
uploadVo.setOssId(oss.getOssId().toString());
return R.ok(uploadVo);
}
}

106
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ModelPromptsController.java

@ -0,0 +1,106 @@
package org.dromara.productManagement.controller;
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.common.encrypt.annotation.ApiEncrypt;
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.ModelPromptsVo;
import org.dromara.productManagement.domain.bo.ModelPromptsBo;
import org.dromara.productManagement.service.IModelPromptsService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 模型提示词
*
* @author Lion Li
* @date 2024-12-05
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/productManagement/ModelPrompts")
public class ModelPromptsController extends BaseController {
private final IModelPromptsService modelPromptsService;
/**
* 查询模型提示词列表
*/
@SaCheckPermission("productManagement:ModelPrompts:list")
@GetMapping("/list")
public TableDataInfo<ModelPromptsVo> list(ModelPromptsBo bo, PageQuery pageQuery) {
return modelPromptsService.queryPageList(bo, pageQuery);
}
/**
* 导出模型提示词列表
*/
@SaCheckPermission("productManagement:ModelPrompts:export")
@Log(title = "模型提示词", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ModelPromptsBo bo, HttpServletResponse response) {
List<ModelPromptsVo> list = modelPromptsService.queryList(bo);
ExcelUtil.exportExcel(list, "模型提示词", ModelPromptsVo.class, response);
}
/**
* 获取模型提示词详细信息
*
* @param id 主键
*/
@SaCheckPermission("productManagement:ModelPrompts:query")
@GetMapping("/{id}")
public R<ModelPromptsVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(modelPromptsService.queryById(id));
}
/**
* 新增模型提示词
*/
@SaCheckPermission("productManagement:ModelPrompts:add")
@Log(title = "模型提示词", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ModelPromptsBo bo) {
return toAjax(modelPromptsService.insertByBo(bo));
}
/**
* 修改模型提示词
*/
@SaCheckPermission("productManagement:ModelPrompts:edit")
@Log(title = "模型提示词", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ModelPromptsBo bo) {
return toAjax(modelPromptsService.updateByBo(bo));
}
/**
* 删除模型提示词
*
* @param ids 主键串
*/
@SaCheckPermission("productManagement:ModelPrompts:remove")
@Log(title = "模型提示词", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(modelPromptsService.deleteWithValidByIds(List.of(ids), true));
}
}

116
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ModelPromptsHistoryController.java

@ -0,0 +1,116 @@
package org.dromara.productManagement.controller;
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.common.encrypt.annotation.ApiEncrypt;
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.ModelPromptsHistoryVo;
import org.dromara.productManagement.domain.bo.ModelPromptsHistoryBo;
import org.dromara.productManagement.service.IModelPromptsHistoryService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 模型提示词历史记录
*
* @author Lion Li
* @date 2024-12-05
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/productManagement/ModelPromptsHistory")
public class ModelPromptsHistoryController extends BaseController {
private final IModelPromptsHistoryService modelPromptsHistoryService;
/**
* 查询模型提示词历史记录列表
*/
@SaCheckPermission("productManagement:ModelPromptsHistory:list")
@GetMapping("/list")
public TableDataInfo<ModelPromptsHistoryVo> list(ModelPromptsHistoryBo bo, PageQuery pageQuery) {
return modelPromptsHistoryService.queryPageList(bo, pageQuery);
}
/**
* 导出模型提示词历史记录列表
*/
@SaCheckPermission("productManagement:ModelPromptsHistory:export")
@Log(title = "模型提示词历史记录", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ModelPromptsHistoryBo bo, HttpServletResponse response) {
List<ModelPromptsHistoryVo> list = modelPromptsHistoryService.queryList(bo);
ExcelUtil.exportExcel(list, "模型提示词历史记录", ModelPromptsHistoryVo.class, response);
}
/**
* 获取模型提示词历史记录详细信息
*
* @param id 主键
*/
@SaCheckPermission("productManagement:ModelPromptsHistory:query")
@GetMapping("/{id}")
public R<ModelPromptsHistoryVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(modelPromptsHistoryService.queryById(id));
}
/**
* 新增模型提示词历史记录
*/
@SaCheckPermission("productManagement:ModelPromptsHistory:add")
@Log(title = "模型提示词历史记录", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ModelPromptsHistoryBo bo) {
return toAjax(modelPromptsHistoryService.insertByBo(bo));
}
/**
* 修改模型提示词历史记录
*/
@SaCheckPermission("productManagement:ModelPromptsHistory:edit")
@Log(title = "模型提示词历史记录", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ModelPromptsHistoryBo bo) {
return toAjax(modelPromptsHistoryService.updateByBo(bo));
}
/**
* 删除模型提示词历史记录
*
* @param ids 主键串
*/
@SaCheckPermission("productManagement:ModelPromptsHistory:remove")
@Log(title = "模型提示词历史记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(modelPromptsHistoryService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 修改模型提示词历史记录
*/
@SaCheckPermission("productManagement:ModelPromptsHistory:restore")
@Log(title = "模型提示词历史记录", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PostMapping("/restore/{id}")
public R<Void> restore(@Validated(EditGroup.class) @PathVariable Long id) {
return toAjax(modelPromptsHistoryService.restoreByid(id));
}
}

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

@ -0,0 +1,116 @@
package org.dromara.productManagement.controller;
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.common.satoken.utils.LoginHelper;
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.ModelUserPromptssettingVo;
import org.dromara.productManagement.domain.bo.ModelUserPromptssettingBo;
import org.dromara.productManagement.service.IModelUserPromptssettingService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 模型提示词用户配置
*
* @author Lion Li
* @date 2024-12-06
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/productManagement/ModelUserPromptssetting")
public class ModelUserPromptssettingController extends BaseController {
private final IModelUserPromptssettingService modelUserPromptssettingService;
/**
* 查询模型提示词用户配置列表
*/
@SaCheckPermission("productManagement:ModelUserPromptssetting:list")
@GetMapping("/list")
public TableDataInfo<ModelUserPromptssettingVo> list(ModelUserPromptssettingBo bo, PageQuery pageQuery) {
return modelUserPromptssettingService.queryPageList(bo, pageQuery);
}
/**
* 导出模型提示词用户配置列表
*/
@SaCheckPermission("productManagement:ModelUserPromptssetting:export")
@Log(title = "模型提示词用户配置", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ModelUserPromptssettingBo bo, HttpServletResponse response) {
List<ModelUserPromptssettingVo> list = modelUserPromptssettingService.queryList(bo);
ExcelUtil.exportExcel(list, "模型提示词用户配置", ModelUserPromptssettingVo.class, response);
}
/**
* 获取模型提示词用户配置详细信息
*
* @param id 主键
*/
@SaCheckPermission("productManagement:ModelUserPromptssetting:query")
@GetMapping("/{id}")
public R<ModelUserPromptssettingVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(modelUserPromptssettingService.queryById(id));
}
/**
* 新增模型提示词用户配置
*/
@SaCheckPermission("productManagement:ModelUserPromptssetting:add")
@Log(title = "模型提示词用户配置", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ModelUserPromptssettingBo bo) {
return toAjax(modelUserPromptssettingService.insertByBo(bo));
}
/**
* 修改模型提示词用户配置
*/
@SaCheckPermission("productManagement:ModelUserPromptssetting:edit")
@Log(title = "模型提示词用户配置", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ModelUserPromptssettingBo bo) {
return toAjax(modelUserPromptssettingService.updateByBo(bo));
}
/**
* 删除模型提示词用户配置
*
* @param ids 主键串
*/
@SaCheckPermission("productManagement:ModelUserPromptssetting:remove")
@Log(title = "模型提示词用户配置", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(modelUserPromptssettingService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 根据用户id获取模型提示词用户配置详细信息
*
*/
// @SaCheckPermission("productManagement:ModelUserPromptssetting:query")
@GetMapping("/getInfoByuserId")
public R<ModelUserPromptssettingVo> getInfoByuserId() {
Long userId = LoginHelper.getUserId();
return R.ok(modelUserPromptssettingService.queryByuserId(userId));
}
}

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

@ -27,12 +27,16 @@ public class DocumentTasks extends TenantEntity {
* id
*/
@TableId(value = "id")
private String id;
private Long id;
/**
* 任务名称
*/
private String taskName;
/**
* 后台任务id
*/
private String taskId;
/**
* 文档名称
@ -62,5 +66,14 @@ public class DocumentTasks extends TenantEntity {
@Version
private Long version;
/**
* 模型所属区域
*/
private String taskRegion;
/**
* 模型所属行业
*/
private String taskIndustry;
}

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

@ -0,0 +1,99 @@
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.io.Serial;
/**
* 用于存储模型提示词对象 model_prompts
*
* @author Lion Li
* @date 2024-12-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("model_prompts")
public class ModelPrompts extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 任务角色描述
*/
private String taskRoleDesc;
/**
* 模型任务名称
*/
private String taskName;
/**
* 模型所属区域
*/
private String taskRegion;
/**
* 模型所属行业
*/
private String taskIndustry;
/**
* 任务背景
*/
private String context;
/**
* 任务描述
*/
private String description;
/**
* 任务流程
*/
private String workflow;
/**
* 输出说明
*/
private String outputDesc;
/**
* 注意事项
*/
private String cautions;
/**
* 模型版本
*/
private String modelVersion;
/**
* 备注
*/
private String note;
/**
*
*/
@TableLogic
private String delFlag;
/**
*
*/
@Version
private String version;
}

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

@ -0,0 +1,103 @@
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.io.Serial;
/**
* 模型提示词历史记录对象 model_prompts_history
*
* @author Lion Li
* @date 2024-12-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("model_prompts_history")
public class ModelPromptsHistory extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 提示词id
*/
private Long promptId;
/**
* 任务角色描述
*/
private String taskRoleDesc;
/**
* 模型任务名称
*/
private String taskName;
/**
* 模型所属区域
*/
private String taskRegion;
/**
* 模型所属行业
*/
private String taskIndustry;
/**
* 任务背景
*/
private String context;
/**
* 任务描述
*/
private String description;
/**
* 任务流程
*/
private String workflow;
/**
* 输出说明
*/
private String outputDesc;
/**
* 注意事项
*/
private String cautions;
/**
* 模型版本
*/
private String modelVersion;
/**
* 备注
*/
private String note;
/**
*
*/
@TableLogic
private String delFlag;
/**
*
*/
@Version
private String version;
}

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

@ -0,0 +1,63 @@
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.io.Serial;
/**
* 模型提示词用户配置对象 model_user_promptssetting
*
* @author Lion Li
* @date 2024-12-06
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("model_user_promptssetting")
public class ModelUserPromptssetting 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;
/**
* 用户id
*/
private Long userId;
/**
*
*/
@TableLogic
private String delFlag;
/**
*
*/
@Version
private String version;
}

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

@ -1,5 +1,7 @@
package org.dromara.productManagement.domain.bo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.productManagement.domain.DocumentTasks;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
@ -42,17 +44,33 @@ public class DocumentTasksBo extends BaseEntity {
@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;
/**
* 预计时间
* 模型所属区域
*/
// @NotNull(message = "预计时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date estimatedCompletionTime;
@NotBlank(message = "模型所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskRegion;
/**
* 状态
* 模型所属行业
*/
// @NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String progressStatus;
@NotBlank(message = "模型所属行业不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskIndustry;
}

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

@ -0,0 +1,93 @@
package org.dromara.productManagement.domain.bo;
import org.dromara.productManagement.domain.ModelPrompts;
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.*;
/**
* 用于存储模型提示词业务对象 model_prompts
*
* @author Lion Li
* @date 2024-12-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ModelPrompts.class, reverseConvertGenerate = false)
public class ModelPromptsBo extends BaseEntity {
/**
* id
*/
private Long id;
/**
* 任务角色描述
*/
@NotBlank(message = "任务角色描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskRoleDesc;
/**
* 模型任务名称
*/
@NotBlank(message = "模型任务名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskName;
/**
* 模型所属区域
*/
@NotBlank(message = "模型所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskRegion;
/**
* 模型所属行业
*/
@NotBlank(message = "模型所属行业不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskIndustry;
/**
* 任务背景
*/
@NotBlank(message = "任务背景不能为空", groups = { AddGroup.class, EditGroup.class })
private String context;
/**
* 任务描述
*/
@NotBlank(message = "任务描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String description;
/**
* 任务流程
*/
private String workflow;
/**
* 输出说明
*/
@NotBlank(message = "输出说明不能为空", groups = { AddGroup.class, EditGroup.class })
private String outputDesc;
/**
* 注意事项
*/
private String cautions;
/**
* 模型版本
*/
private String modelVersion;
/**
* 备注
*/
private String note;
}

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

@ -0,0 +1,89 @@
package org.dromara.productManagement.domain.bo;
import org.dromara.productManagement.domain.ModelPromptsHistory;
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.*;
/**
* 模型提示词历史记录业务对象 model_prompts_history
*
* @author Lion Li
* @date 2024-12-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ModelPromptsHistory.class, reverseConvertGenerate = false)
public class ModelPromptsHistoryBo extends BaseEntity {
/**
* id
*/
private Long id;
/**
* 提示词id
*/
private Long promptId;
/**
* 任务角色描述
*/
private String taskRoleDesc;
/**
* 模型任务名称
*/
private String taskName;
/**
* 模型所属区域
*/
private String taskRegion;
/**
* 模型所属行业
*/
private String taskIndustry;
/**
* 任务背景
*/
private String context;
/**
* 任务描述
*/
private String description;
/**
* 任务流程
*/
private String workflow;
/**
* 输出说明
*/
private String outputDesc;
/**
* 注意事项
*/
private String cautions;
/**
* 模型版本
*/
private String modelVersion;
/**
* 备注
*/
private String note;
}

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

@ -0,0 +1,54 @@
package org.dromara.productManagement.domain.bo;
import org.dromara.productManagement.domain.ModelUserPromptssetting;
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.*;
/**
* 模型提示词用户配置业务对象 model_user_promptssetting
*
* @author Lion Li
* @date 2024-12-06
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ModelUserPromptssetting.class, reverseConvertGenerate = false)
public class ModelUserPromptssettingBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 模型所属行业
*/
@NotBlank(message = "模型所属行业不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskIndustry;
/**
* 模型所属区域
*/
@NotBlank(message = "模型所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskRegion;
/**
* 任务类型名称
*/
@NotBlank(message = "任务类型(名称)不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskName;
/**
* 用户id
*/
@NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long userId;
}

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

@ -1,5 +1,7 @@
package org.dromara.productManagement.domain.vo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.productManagement.domain.DocumentTasksPermissionsDetail;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@ -53,5 +55,5 @@ public class DocumentTasksPermissionsDetailVo implements Serializable {
@ExcelDictFormat(dictType = "document_task")
private String taskType;
private Date updateTime;
}

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

@ -43,7 +43,10 @@ public class DocumentTasksVo implements Serializable {
*/
@ExcelProperty(value = "文档名称")
private String documentName;
/**
* 后台任务id
*/
private String taskId;
/**
* 预计时间
*/
@ -58,5 +61,28 @@ public class DocumentTasksVo implements Serializable {
@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;
}

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

@ -0,0 +1,113 @@
package org.dromara.productManagement.domain.vo;
import org.dromara.productManagement.domain.ModelPromptsHistory;
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;
/**
* 模型提示词历史记录视图对象 model_prompts_history
*
* @author Lion Li
* @date 2024-12-05
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ModelPromptsHistory.class)
public class ModelPromptsHistoryVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 提示词id
*/
@ExcelProperty(value = "提示词id")
private Long promptId;
/**
* 任务角色描述
*/
@ExcelProperty(value = "任务角色描述")
private String taskRoleDesc;
/**
* 模型任务名称
*/
@ExcelProperty(value = "模型任务名称", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "document_task")
private String taskName;
/**
* 模型所属区域
*/
@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 context;
/**
* 任务描述
*/
@ExcelProperty(value = "任务描述")
private String description;
/**
* 任务流程
*/
@ExcelProperty(value = "任务流程")
private String workflow;
/**
* 输出说明
*/
@ExcelProperty(value = "输出说明")
private String outputDesc;
/**
* 注意事项
*/
@ExcelProperty(value = "注意事项")
private String cautions;
/**
* 模型版本
*/
@ExcelProperty(value = "模型版本")
private String modelVersion;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String note;
}

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

@ -0,0 +1,107 @@
package org.dromara.productManagement.domain.vo;
import org.dromara.productManagement.domain.ModelPrompts;
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;
/**
* 用于存储模型提示词视图对象 model_prompts
*
* @author Lion Li
* @date 2024-12-05
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ModelPrompts.class)
public class ModelPromptsVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 任务角色描述
*/
@ExcelProperty(value = "任务角色描述")
private String taskRoleDesc;
/**
* 模型任务名称
*/
@ExcelProperty(value = "模型任务名称", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "document_task")
private String taskName;
/**
* 模型所属区域
*/
@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 context;
/**
* 任务描述
*/
@ExcelProperty(value = "任务描述")
private String description;
/**
* 任务流程
*/
@ExcelProperty(value = "任务流程")
private String workflow;
/**
* 输出说明
*/
@ExcelProperty(value = "输出说明")
private String outputDesc;
/**
* 注意事项
*/
@ExcelProperty(value = "注意事项")
private String cautions;
/**
* 模型版本
*/
@ExcelProperty(value = "模型版本")
private String modelVersion;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String note;
}

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

@ -0,0 +1,63 @@
package org.dromara.productManagement.domain.vo;
import org.dromara.productManagement.domain.ModelUserPromptssetting;
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;
/**
* 模型提示词用户配置视图对象 model_user_promptssetting
*
* @author Lion Li
* @date 2024-12-06
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ModelUserPromptssetting.class)
public class ModelUserPromptssettingVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 模型所属行业
*/
@ExcelProperty(value = "模型所属行业")
private String taskIndustry;
/**
* 模型所属区域
*/
@ExcelProperty(value = "模型所属区域")
private String taskRegion;
/**
* 任务类型名称
*/
@ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "名=称")
private String taskName;
/**
* 用户id
*/
@ExcelProperty(value = "用户id")
private Long userId;
}

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

@ -0,0 +1,15 @@
package org.dromara.productManagement.mapper;
import org.dromara.productManagement.domain.ModelPromptsHistory;
import org.dromara.productManagement.domain.vo.ModelPromptsHistoryVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 模型提示词历史记录Mapper接口
*
* @author Lion Li
* @date 2024-12-05
*/
public interface ModelPromptsHistoryMapper extends BaseMapperPlus<ModelPromptsHistory, ModelPromptsHistoryVo> {
}

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

@ -0,0 +1,15 @@
package org.dromara.productManagement.mapper;
import org.dromara.productManagement.domain.ModelPrompts;
import org.dromara.productManagement.domain.vo.ModelPromptsVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 用于存储模型提示词Mapper接口
*
* @author Lion Li
* @date 2024-12-05
*/
public interface ModelPromptsMapper extends BaseMapperPlus<ModelPrompts, ModelPromptsVo> {
}

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

@ -0,0 +1,15 @@
package org.dromara.productManagement.mapper;
import org.dromara.productManagement.domain.ModelUserPromptssetting;
import org.dromara.productManagement.domain.vo.ModelUserPromptssettingVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 模型提示词用户配置Mapper接口
*
* @author Lion Li
* @date 2024-12-06
*/
public interface ModelUserPromptssettingMapper extends BaseMapperPlus<ModelUserPromptssetting, ModelUserPromptssettingVo> {
}

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

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

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

@ -4,6 +4,8 @@ import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.productManagement.domain.bo.DocumentTasksBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.system.domain.vo.SysOssVo;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.Collection;
@ -68,4 +70,6 @@ public interface IDocumentTasksService {
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
int stopTask(Long id);
SysOssVo uploadFile(MultipartFile file) throws IOException, InterruptedException;
}

75
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IModelPromptsHistoryService.java

@ -0,0 +1,75 @@
package org.dromara.productManagement.service;
import org.dromara.productManagement.domain.vo.ModelPromptsHistoryVo;
import org.dromara.productManagement.domain.bo.ModelPromptsHistoryBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 模型提示词历史记录Service接口
*
* @author Lion Li
* @date 2024-12-05
*/
public interface IModelPromptsHistoryService {
/**
* 查询模型提示词历史记录
*
* @param id 主键
* @return 模型提示词历史记录
*/
ModelPromptsHistoryVo queryById(Long id);
/**
* 分页查询模型提示词历史记录列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 模型提示词历史记录分页列表
*/
TableDataInfo<ModelPromptsHistoryVo> queryPageList(ModelPromptsHistoryBo bo, PageQuery pageQuery);
/**
* 查询符合条件的模型提示词历史记录列表
*
* @param bo 查询条件
* @return 模型提示词历史记录列表
*/
List<ModelPromptsHistoryVo> queryList(ModelPromptsHistoryBo bo);
/**
* 新增模型提示词历史记录
*
* @param bo 模型提示词历史记录
* @return 是否新增成功
*/
Boolean insertByBo(ModelPromptsHistoryBo bo);
/**
* 修改模型提示词历史记录
*
* @param bo 模型提示词历史记录
* @return 是否修改成功
*/
Boolean updateByBo(ModelPromptsHistoryBo bo);
/**
* 校验并批量删除模型提示词历史记录信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 根据id恢复模型提示词历史记录
*
* @param id 模型提示词历史记录id
* @return 是否恢复成功
*/
int restoreByid(Long id);
}

68
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IModelPromptsService.java

@ -0,0 +1,68 @@
package org.dromara.productManagement.service;
import org.dromara.productManagement.domain.vo.ModelPromptsVo;
import org.dromara.productManagement.domain.bo.ModelPromptsBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 用于存储模型提示词Service接口
*
* @author Lion Li
* @date 2024-12-05
*/
public interface IModelPromptsService {
/**
* 查询用于存储模型提示词
*
* @param id 主键
* @return 用于存储模型提示词
*/
ModelPromptsVo queryById(Long id);
/**
* 分页查询用于存储模型提示词列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 用于存储模型提示词分页列表
*/
TableDataInfo<ModelPromptsVo> queryPageList(ModelPromptsBo bo, PageQuery pageQuery);
/**
* 查询符合条件的用于存储模型提示词列表
*
* @param bo 查询条件
* @return 用于存储模型提示词列表
*/
List<ModelPromptsVo> queryList(ModelPromptsBo bo);
/**
* 新增用于存储模型提示词
*
* @param bo 用于存储模型提示词
* @return 是否新增成功
*/
Boolean insertByBo(ModelPromptsBo bo);
/**
* 修改用于存储模型提示词
*
* @param bo 用于存储模型提示词
* @return 是否修改成功
*/
Boolean updateByBo(ModelPromptsBo bo);
/**
* 校验并批量删除用于存储模型提示词信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

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

@ -0,0 +1,70 @@
package org.dromara.productManagement.service;
import org.dromara.productManagement.domain.vo.ModelUserPromptssettingVo;
import org.dromara.productManagement.domain.bo.ModelUserPromptssettingBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 模型提示词用户配置Service接口
*
* @author Lion Li
* @date 2024-12-06
*/
public interface IModelUserPromptssettingService {
/**
* 查询模型提示词用户配置
*
* @param id 主键
* @return 模型提示词用户配置
*/
ModelUserPromptssettingVo queryById(Long id);
/**
* 分页查询模型提示词用户配置列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 模型提示词用户配置分页列表
*/
TableDataInfo<ModelUserPromptssettingVo> queryPageList(ModelUserPromptssettingBo bo, PageQuery pageQuery);
/**
* 查询符合条件的模型提示词用户配置列表
*
* @param bo 查询条件
* @return 模型提示词用户配置列表
*/
List<ModelUserPromptssettingVo> queryList(ModelUserPromptssettingBo bo);
/**
* 新增模型提示词用户配置
*
* @param bo 模型提示词用户配置
* @return 是否新增成功
*/
Boolean insertByBo(ModelUserPromptssettingBo bo);
/**
* 修改模型提示词用户配置
*
* @param bo 模型提示词用户配置
* @return 是否修改成功
*/
Boolean updateByBo(ModelUserPromptssettingBo bo);
/**
* 校验并批量删除模型提示词用户配置信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
ModelUserPromptssettingVo queryByuserId(Long userId);
}

16
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocAiServiceImpl.java

@ -3,6 +3,7 @@ package org.dromara.productManagement.service.impl;
import org.dromara.common.core.domain.R;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.productManagement.service.IDocAiService;
import org.dromara.system.domain.vo.SysOssVo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@ -27,8 +28,8 @@ import org.dromara.common.sse.utils.ExecuteSSEUtil;
@Service
public class DocAiServiceImpl implements IDocAiService {
@Value("${chat.filePath}")
private String chatFilePath;
@Value("${chat.tempfilePath}")
private String tempfilePath;
@Value("${chat.chatUrl}")
private String chatUrl;
@ -84,8 +85,8 @@ public class DocAiServiceImpl implements IDocAiService {
}
@Override
public R<String> uploadFile(MultipartFile file, String originalFilename) throws IOException, InterruptedException {
String destDir = chatFilePath;
public R<String> uploadFile(MultipartFile file,String originalFilename) throws IOException, InterruptedException {
String destDir = tempfilePath;
if (originalFilename == null) {
throw new IllegalArgumentException("文件名不能为空");
}
@ -95,7 +96,8 @@ public class DocAiServiceImpl implements IDocAiService {
FileUtil.writeFromStream(file.getInputStream(), destFile);
if (!originalFilename.endsWith(".docx")) {
ProcessBuilder builder = new ProcessBuilder("unoconv", "-o", destDir, "-f", "docx", destFile.getAbsolutePath());
// ProcessBuilder builder = new ProcessBuilder("unoconv", "-o", destDir, "-f", "docx", destFile.getAbsolutePath());
ProcessBuilder builder = new ProcessBuilder("libreoffice", "--headless", "--convert-to", "docx",destFile.getAbsolutePath(),"--outdir",destDir );
Process process = builder.start();
int completed = process.waitFor();
if (completed != 0) {
@ -114,10 +116,12 @@ public class DocAiServiceImpl implements IDocAiService {
return R.fail("文件上传失败", "文件上传失败");
}
return R.ok("ok", "uploads/" + originalFilename);
}
@Override
public String uploadFileByStream(InputStream inputStream, String originalFilename,String url) throws IOException, InterruptedException {
String destDir = chatFilePath;
//方法已经弃用
String destDir = tempfilePath;
if (originalFilename == null) {
throw new IllegalArgumentException("文件名不能为空");
}

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

@ -1,5 +1,6 @@
package org.dromara.productManagement.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.StrUtil;
import org.dromara.common.core.service.DictService;
import org.dromara.common.core.utils.MapstructUtils;
@ -10,10 +11,14 @@ 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.DocumentTasksPermissionsDetail;
import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsDetailVo;
import org.dromara.productManagement.mapper.DocumentTasksPermissionsDetailMapper;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.mapper.SysUserMapper;
import org.dromara.system.service.ISysDictTypeService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.dromara.productManagement.domain.bo.DocumentTasksPermissionsBo;
import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsVo;
@ -21,10 +26,9 @@ import org.dromara.productManagement.domain.DocumentTasksPermissions;
import org.dromara.productManagement.mapper.DocumentTasksPermissionsMapper;
import org.dromara.productManagement.service.IDocumentTasksPermissionsService;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
/**
* 文档任务权限Service业务层处理
@ -39,6 +43,7 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
private final DocumentTasksPermissionsMapper baseMapper;
private final SysUserMapper userMapper;
private final DictService dictTypeService;
private final DocumentTasksPermissionsDetailMapper documentTasksPermissionsDetailMapper;
/**
* 查询文档任务权限
@ -178,4 +183,69 @@ public class DocumentTasksPermissionsServiceImpl implements IDocumentTasksPermis
// return documentTasksPermissionsVo;
return null;
}
/**
* 验证当前用户是否有任务权限并处理任务数量超限的情况
*
* @param taskNames 任务名称列表
* @param userId 用户ID
*/
@Override
public void validateUserTaskPermissions(List<String> taskNames, Long userId) {
// 如果是超级管理员,则不做权限验证
if (!StpUtil.hasRole("superadmin")) {
taskNames.forEach(taskName -> {
DocumentTasksPermissionsVo vo = baseMapper.selectDocumentPermissionsByUserIdAndTaskType(userId, taskName);
// 任务是否有权限
if (vo == null || !vo.getTaskType().contains(taskName)) {
String label = dictTypeService.getDictLabel("document_task", taskName);
throw new RuntimeException("无权操作[" + label + "],请联系管理员");
}
// 任务是否数量超限
// 先查询数据库中是否有数据
LambdaQueryWrapper<DocumentTasksPermissionsDetail> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DocumentTasksPermissionsDetail::getUserId, userId);
queryWrapper.eq(DocumentTasksPermissionsDetail::getTaskType, taskName);
DocumentTasksPermissionsDetailVo documentTasksPermissionsDetailVo = documentTasksPermissionsDetailMapper.selectVoOne(queryWrapper);
if (documentTasksPermissionsDetailVo != null) {
// 判断日期是否是第二天
Date updateTime = documentTasksPermissionsDetailVo.getUpdateTime();
// 将 updateTime 转换为 LocalDate
LocalDate updateDate = updateTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
// 获取当前日期
LocalDate today = LocalDate.now();
// 判断 updateDate 和 today 是否为同一天
if (!updateDate.isEqual(today)) {
// updateTime 不是同一天
documentTasksPermissionsDetailVo.setRemainingDocumentCount(vo.getDailyDocumentCount() - 1);
DocumentTasksPermissionsDetail detail = new DocumentTasksPermissionsDetail();
BeanUtils.copyProperties(documentTasksPermissionsDetailVo, detail);
documentTasksPermissionsDetailMapper.updateById(detail);
} else {
// updateTime 同一天
if (documentTasksPermissionsDetailVo.getRemainingDocumentCount() <= 0) {
// 超限
String label = dictTypeService.getDictLabel("document_task", taskName);
throw new RuntimeException("任务[" + label + "]数量超限,请联系管理员");
} else {
// 数量减1
documentTasksPermissionsDetailVo.setRemainingDocumentCount(documentTasksPermissionsDetailVo.getRemainingDocumentCount() - 1);
DocumentTasksPermissionsDetail detail = new DocumentTasksPermissionsDetail();
BeanUtils.copyProperties(documentTasksPermissionsDetailVo, detail);
documentTasksPermissionsDetailMapper.updateById(detail);
}
}
} else {
// 没有数据,则新增一条数据
DocumentTasksPermissionsDetail documentTasksPermissionsDetail = new DocumentTasksPermissionsDetail();
documentTasksPermissionsDetail.setUserId(userId);
documentTasksPermissionsDetail.setTaskType(taskName);
documentTasksPermissionsDetail.setRemainingDocumentCount(vo.getDailyDocumentCount() - 1);
documentTasksPermissionsDetailMapper.insert(documentTasksPermissionsDetail);
}
});
}
}
}

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

@ -1,8 +1,11 @@
package org.dromara.productManagement.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.io.FileUtil;
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,29 +18,41 @@ 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.domain.DocumentTasksPermissionsDetail;
import org.dromara.productManagement.domain.ModelPrompts;
import org.dromara.productManagement.domain.ModelUserPromptssetting;
import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsDetailVo;
import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsVo;
import org.dromara.productManagement.mapper.DocumentTasksPermissionsDetailMapper;
import org.dromara.productManagement.mapper.DocumentTasksPermissionsMapper;
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;
import org.dromara.productManagement.domain.DocumentTasks;
import org.dromara.productManagement.mapper.DocumentTasksMapper;
import org.dromara.productManagement.service.IDocumentTasksService;
import org.springframework.transaction.annotation.Transactional;
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;
@ -53,15 +68,21 @@ import java.util.Collection;
@Service
@Transactional
public class DocumentTasksServiceImpl implements IDocumentTasksService {
private final OkHttpClient client = new OkHttpClient.Builder().build();
private final DocumentTasksMapper baseMapper;
private final ModelPromptsMapper modelPromptsMapper;
private final ModelUserPromptssettingMapper modelUserPromptssettingMapper;
private final DocumentTasksPermissionsMapper documentTasksPermissionsMapper;
private final DocumentTasksPermissionsDetailMapper documentTasksPermissionsDetailMapper;
private final IDocumentTasksPermissionsService documentTasksPermissionsService;
private final ISysOssService ossService;
private final IDocAiService docAiService;
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;
/**
* 查询文档任务
*
@ -84,7 +105,20 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
public TableDataInfo<DocumentTasksVo> queryPageList(DocumentTasksBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(bo);
Page<DocumentTasksVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(vo -> {
Long createBy = vo.getCreateBy();
vo.setCreateUser(userService.selectUserById(createBy).getNickName());
//计算updateTime 和 createTime之间相差的小时数
// 格式化输出
String formattedDuration="";
if(!vo.getProgressStatus().equals("PENDING")&&!vo.getProgressStatus().equals("STARTED")){
formattedDuration= MyTimeUtils.formatTimeDifference(vo.getCreateTime(), vo.getUpdateTime());
}
vo.setTaskDuration(formattedDuration);
});
return TableDataInfo.build(result);
}
/**
@ -109,8 +143,11 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
lqw.in(DocumentTasks::getTaskName, taskNames);
}
lqw.like(StringUtils.isNotBlank(bo.getDocumentName()), DocumentTasks::getDocumentName, bo.getDocumentName());
lqw.eq(bo.getEstimatedCompletionTime() != null, DocumentTasks::getEstimatedCompletionTime, bo.getEstimatedCompletionTime());
lqw.eq(StringUtils.isNotBlank(bo.getProgressStatus()), DocumentTasks::getProgressStatus, bo.getProgressStatus());
lqw.orderByDesc(DocumentTasks::getCreateTime);
if(taskNames == null ||!taskNames.contains("contractReview")){
lqw.ne(DocumentTasks::getTaskName,"contractReview");
}
return lqw;
}
@ -123,70 +160,58 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
@Override
@Transactional
public Boolean insertByBo(DocumentTasksBo bo) throws IOException, InterruptedException {
Long userId = LoginHelper.getUserId();
List<String> taskNames = bo.getTaskNameList();
//验证当前用户是否有任务权限,如果是超级管理员,则不做权限验证
if(!StpUtil.hasRole("superadmin")){
taskNames.forEach(taskName -> {
Long userId = LoginHelper.getUserId();
DocumentTasksPermissionsVo vo = documentTasksPermissionsMapper.selectDocumentPermissionsByUserIdAndTaskType(userId, taskName);
//任务是否有权限
if(vo == null || !vo.getTaskType().contains(taskName)){
String label = dictTypeService.getDictLabel("document_task", taskName);
throw new RuntimeException("无权操作["+label+"],请联系管理员");
}
//任务是否数量超限
//先查询数据库中是否有数据
LambdaQueryWrapper<DocumentTasksPermissionsDetail> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DocumentTasksPermissionsDetail::getUserId, userId);
queryWrapper.eq(DocumentTasksPermissionsDetail::getTaskType, taskName);
DocumentTasksPermissionsDetailVo documentTasksPermissionsDetailVo = documentTasksPermissionsDetailMapper.selectVoOne(queryWrapper);
if(documentTasksPermissionsDetailVo != null ){
if( documentTasksPermissionsDetailVo.getRemainingDocumentCount()<=0){
//超限
String label = dictTypeService.getDictLabel("document_task", taskName);
throw new RuntimeException("任务["+label+"]数量超限,请联系管理员");
}else{
//数量减1
DocumentTasksPermissionsDetail detail = new DocumentTasksPermissionsDetail();
documentTasksPermissionsDetailVo.setRemainingDocumentCount(documentTasksPermissionsDetailVo.getRemainingDocumentCount()-1);
BeanUtils.copyProperties(documentTasksPermissionsDetailVo,detail);
documentTasksPermissionsDetailMapper.updateById(detail);
}
}
if(documentTasksPermissionsDetailVo==null){
//没有数据,则新增一条数据
DocumentTasksPermissionsDetail documentTasksPermissionsDetail = new DocumentTasksPermissionsDetail();
documentTasksPermissionsDetail.setUserId(userId);
documentTasksPermissionsDetail.setTaskType(taskName);
documentTasksPermissionsDetail.setRemainingDocumentCount(vo.getDailyDocumentCount()-1);
documentTasksPermissionsDetailMapper.insert(documentTasksPermissionsDetail);
}
});
//校验所属区域和所属行业是否存在提示词
taskNames.forEach(taskName -> {
ModelPrompts modelPrompts = modelPromptsMapper.selectOne(Wrappers.<ModelPrompts>lambdaQuery()
.eq(ModelPrompts::getTaskName, taskName)
.eq(ModelPrompts::getTaskIndustry, bo.getTaskIndustry())
.eq(ModelPrompts::getTaskRegion, bo.getTaskRegion()));
if(modelPrompts == null){
String label = dictTypeService.getDictLabel("document_task", taskName);
throw new RuntimeException("任务名称:["+label+"],当前任务所属区域或所属行业不存在模型,请联系管理员配置");
}
});
//变更或新增当前角色所属区域和所属行业的配置
//当前任务存在提示词,保存用户个人设置
//先查询数据库中是否有数据
ModelUserPromptssetting promptssetting = modelUserPromptssettingMapper.selectOne(Wrappers.<ModelUserPromptssetting>lambdaQuery()
.eq(ModelUserPromptssetting::getUserId, userId));
if(promptssetting!= null){
//已存在,更新
promptssetting.setTaskIndustry(bo.getTaskIndustry());
promptssetting.setTaskRegion(bo.getTaskRegion());
modelUserPromptssettingMapper.updateById(promptssetting);
}
else{
//不存在,新增
ModelUserPromptssetting userPromptssetting = new ModelUserPromptssetting();
userPromptssetting.setUserId(userId);
userPromptssetting.setTaskIndustry(bo.getTaskIndustry());
userPromptssetting.setTaskRegion(bo.getTaskRegion());
modelUserPromptssettingMapper.insert(userPromptssetting);
}
//验证当前用户是否有任务权限,如果是超级管理员,则不做权限验证
documentTasksPermissionsService.validateUserTaskPermissions(taskNames,userId);
boolean flag = false;
Long ossId = bo.getOssId();
SysOssVo fileInfo = ossService.getById(ossId);
String fileName = fileInfo.getOriginalName();
OssClient storage = OssFactory.instance(fileInfo.getService());
InputStream inputStream = storage.getObjectContent(fileInfo.getUrl());
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;
// // 获取文件扩展名
// String fileExtension = "";
// int lastIndexOfDot = fileName.lastIndexOf('.');
// if (lastIndexOfDot != -1) {
// fileExtension = fileName.substring(lastIndexOfDot); // 获取文件扩展名
// fileName = fileName.substring(0, lastIndexOfDot); // 获取文件名
// }
//
// // 拼接新的文件名
// String newFileName = fileName + "_" + timestamp + fileExtension;
// String s = docAiService.uploadFileByStream(inputStream, newFileName,"/sse/upload");
// if(!s.equals("1")){
// throw new RuntimeException(s);
// }
bo.setDocumentName(fileInfo.getOriginalName());
if (taskNames != null && !taskNames.isEmpty()) {
for (String taskName : taskNames) {
@ -195,23 +220,43 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
add.setTaskName(taskName);
// 验证实体并保存
validEntityBeforeSave(add);
// 发送请求
// if(taskName.equals("DocumentEvaluation")){
// String s1 = docAiService.uploadFileByStream(inputStream, newFileName,"/xysse/upload");
// if(!s1.equals("1")){
// throw new RuntimeException(s1);
// }
// }
// if(!fileExtension.contains("docx")){
// newFileName = fileName + "_" + timestamp + ".docx";
// }
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;
//获取当前用户的任务优先级
DocumentTasksPermissionsVo documentTasksPermissionsVo = documentTasksPermissionsMapper.selectDocumentPermissionsByUserIdAndTaskType(LoginHelper.getUserId(),taskName);
Long priority = documentTasksPermissionsVo.getPriority();
// sendRequest(add.getId(), taskName, "uploads/"+newFileName, priority);
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("新增文档任务失败");
}
@ -220,50 +265,7 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
return flag;
}
private void sendRequest(String taskId, String taskName, String filename,Long priority) {
// String url = getUrlByTaskName(taskName);
String url = chatUrl+"/back/taskStart";
if (url == null) {
throw new IllegalArgumentException("无效的任务名称: " + taskName);
}
Request request = new Request.Builder()
.url(url+"?userId="+ LoginHelper.getUserId()+"&taskId="+taskId+"&filename="+filename+"&taskName="+taskName+"&priority="+priority)
.build();
// 使用异步调用
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace(); // 处理请求失败
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// 忽略返回内容
response.close(); // 确保响应被关闭
}
});
}
private String getUrlByTaskName(String taskName) {
switch (taskName) {
case "checkRepeatText":
return chatUrl+"/back/checkRepeatText";
case "checkPlaceName":
return chatUrl+"/back/checkPlaceName";
case "checkCompanyName":
return chatUrl+"/back/checkCompanyName";
case "checkDocumentError":
return chatUrl+"/back/checkDocumentErrorWeb";
case "checkTitleName":
return chatUrl+"/back/checkTitleName";
case "DocumentEvaluation":
return chatUrl+"/xyback/documentEvaluate";
default:
return null;
}
}
/**
* 修改文档任务
*
@ -321,13 +323,14 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
@Override
public int stopTask(Long id) {
OkHttpClient client = new OkHttpClient.Builder().build();
String url = chatUrl + "/back/stopTask";
//查询任务名称
DocumentTasksVo documentTasksVo = baseMapper.selectVoById(id);
String taskName = documentTasksVo.getTaskName();
//发送请求
Request request = new Request.Builder()
.url(url+"?taskId="+id+"&taskName="+taskName)
.url(url+"?taskId="+documentTasksVo.getTaskId()+"&taskName="+taskName)
.build();
//使用同步调用
@ -342,4 +345,43 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
}
return 0;
}
@Override
public SysOssVo uploadFile(MultipartFile file) throws IOException, InterruptedException {
String destDir = tempfilePath;
// 判断目标目录是否存在,如果不存在则创建
File directory = new File(destDir);
if (!directory.exists()) {
boolean isCreated = directory.mkdirs(); // 创建目录
if (!isCreated) {
throw new RuntimeException("无法创建目标目录: " + destDir);
}
}
String originalfileName = file.getOriginalFilename();//文件名
String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
String destPath = destDir + File.separator + originalfileName;
File destFile = new File(destPath);
FileUtil.writeFromStream(file.getInputStream(), destFile);
if (!suffix.equals(".docx")) {
// ProcessBuilder builder = new ProcessBuilder("unoconv", "-o", destDir, "-f", "docx", destFile.getAbsolutePath());
ProcessBuilder builder = new ProcessBuilder("libreoffice", "--headless", "--convert-to", "docx",destPath, "--outdir", destDir);
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 = suffix + "转docx失败,可以尝试用WORD或WPS打开文件,另存为docx文件,再尝试上传。 错误信息: " + errorMessage;
throw new RuntimeException(failMsg);
} else {
process.destroyForcibly();
destPath = destPath.substring(0, destPath.lastIndexOf(".")) + ".docx";
}
}
//校验文件是否可用
if(!MyHttpUtils.sendFileCheckMessage(chatUrl + "/back/checkFile", destPath)){
throw new RuntimeException("文件无法正常打开。可以尝试用WORD或WPS打开文件,进行修复并另存,用另存的文件再做一次尝试。");
}
SysOssVo upload = ossService.upload(new File(destPath));
return upload;
}
}

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

@ -0,0 +1,159 @@
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.DocumentTasks;
import org.dromara.productManagement.domain.ModelPrompts;
import org.dromara.productManagement.domain.vo.ModelPromptsVo;
import org.dromara.productManagement.mapper.ModelPromptsMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.dromara.productManagement.domain.bo.ModelPromptsHistoryBo;
import org.dromara.productManagement.domain.vo.ModelPromptsHistoryVo;
import org.dromara.productManagement.domain.ModelPromptsHistory;
import org.dromara.productManagement.mapper.ModelPromptsHistoryMapper;
import org.dromara.productManagement.service.IModelPromptsHistoryService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 模型提示词历史记录Service业务层处理
*
* @author Lion Li
* @date 2024-12-05
*/
@RequiredArgsConstructor
@Service
public class ModelPromptsHistoryServiceImpl implements IModelPromptsHistoryService {
private final ModelPromptsHistoryMapper baseMapper;
private final ModelPromptsMapper modelPromptsMapper;
/**
* 查询模型提示词历史记录
*
* @param id 主键
* @return 模型提示词历史记录
*/
@Override
public ModelPromptsHistoryVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询模型提示词历史记录列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 模型提示词历史记录分页列表
*/
@Override
public TableDataInfo<ModelPromptsHistoryVo> queryPageList(ModelPromptsHistoryBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<ModelPromptsHistory> lqw = buildQueryWrapper(bo);
Page<ModelPromptsHistoryVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的模型提示词历史记录列表
*
* @param bo 查询条件
* @return 模型提示词历史记录列表
*/
@Override
public List<ModelPromptsHistoryVo> queryList(ModelPromptsHistoryBo bo) {
LambdaQueryWrapper<ModelPromptsHistory> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<ModelPromptsHistory> buildQueryWrapper(ModelPromptsHistoryBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ModelPromptsHistory> lqw = Wrappers.lambdaQuery();
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());
lqw.orderByDesc(ModelPromptsHistory::getCreateTime).orderByDesc(ModelPromptsHistory::getModelVersion);
return lqw;
}
/**
* 新增模型提示词历史记录
*
* @param bo 模型提示词历史记录
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(ModelPromptsHistoryBo bo) {
ModelPromptsHistory add = MapstructUtils.convert(bo, ModelPromptsHistory.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改模型提示词历史记录
*
* @param bo 模型提示词历史记录
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(ModelPromptsHistoryBo bo) {
ModelPromptsHistory update = MapstructUtils.convert(bo, ModelPromptsHistory.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(ModelPromptsHistory entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除模型提示词历史记录信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
@Override
public int restoreByid(Long id) {
//根据id查询出历史记录
ModelPromptsHistory modelPromptsHistory = baseMapper.selectById(id);
ModelPrompts modelPrompts = new ModelPrompts();
BeanUtils.copyProperties(modelPromptsHistory, modelPrompts);
modelPrompts.setId(modelPromptsHistory.getPromptId());
//查询当前模型
ModelPromptsVo modelPromptsVo = modelPromptsMapper.selectVoById(modelPromptsHistory.getPromptId());
int version = Integer.parseInt(modelPromptsVo.getModelVersion());
modelPrompts.setModelVersion(String.valueOf(version+1));
modelPromptsMapper.updateById(modelPrompts);
//更新历史记录
ModelPromptsHistory history = new ModelPromptsHistory();
BeanUtils.copyProperties(modelPromptsVo, history);
history.setId(null);
history.setPromptId(modelPromptsVo.getId());
baseMapper.insert(history);
return 1;
}
}

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

@ -0,0 +1,166 @@
package org.dromara.productManagement.service.impl;
import cn.hutool.core.util.StrUtil;
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.ModelPromptsHistory;
import org.dromara.productManagement.mapper.ModelPromptsHistoryMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.dromara.productManagement.domain.bo.ModelPromptsBo;
import org.dromara.productManagement.domain.vo.ModelPromptsVo;
import org.dromara.productManagement.domain.ModelPrompts;
import org.dromara.productManagement.mapper.ModelPromptsMapper;
import org.dromara.productManagement.service.IModelPromptsService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 用于存储模型提示词Service业务层处理
*
* @author Lion Li
* @date 2024-12-05
*/
@RequiredArgsConstructor
@Service
public class ModelPromptsServiceImpl implements IModelPromptsService {
private final ModelPromptsMapper baseMapper;
private final ModelPromptsHistoryMapper historyMapper;
/**
* 查询用于存储模型提示词
*
* @param id 主键
* @return 用于存储模型提示词
*/
@Override
public ModelPromptsVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询用于存储模型提示词列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 用于存储模型提示词分页列表
*/
@Override
public TableDataInfo<ModelPromptsVo> queryPageList(ModelPromptsBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<ModelPrompts> lqw = buildQueryWrapper(bo);
Page<ModelPromptsVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的用于存储模型提示词列表
*
* @param bo 查询条件
* @return 用于存储模型提示词列表
*/
@Override
public List<ModelPromptsVo> queryList(ModelPromptsBo bo) {
LambdaQueryWrapper<ModelPrompts> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<ModelPrompts> buildQueryWrapper(ModelPromptsBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ModelPrompts> 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.getTaskRegion()), ModelPrompts::getTaskRegion, bo.getTaskRegion());
lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), ModelPrompts::getTaskIndustry, bo.getTaskIndustry());
return lqw;
}
/**
* 新增用于存储模型提示词
*
* @param bo 用于存储模型提示词
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(ModelPromptsBo bo) {
ModelPrompts add = MapstructUtils.convert(bo, ModelPrompts.class);
validEntityBeforeSave(add);
//查询版本号是否存在
if(StrUtil.isBlankIfStr(bo.getModelVersion())){
add.setModelVersion("1");
}else{
//获取版本号字符串,转成int,加1,再转成字符串
int version = Integer.parseInt(bo.getModelVersion());
add.setModelVersion(String.valueOf(version+1));
}
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
add.setId(add.getId());
}
return flag;
}
/**
* 修改用于存储模型提示词
*
* @param bo 用于存储模型提示词
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(ModelPromptsBo bo) {
ModelPrompts update = MapstructUtils.convert(bo, ModelPrompts.class);
validEntityBeforeSave(update);
//更新前查询原数据
ModelPrompts old = baseMapper.selectById(update.getId());
//原数据跟新到历史记录表
ModelPromptsHistory modelPromptsHistory = new ModelPromptsHistory();
BeanUtils.copyProperties(old, modelPromptsHistory);
modelPromptsHistory.setId(null);
modelPromptsHistory.setPromptId(update.getId());
historyMapper.insert(modelPromptsHistory);
//更新最新数据
//获取版本号字符串,转成int,加1,再转成字符串
int version = Integer.parseInt(bo.getModelVersion());
update.setModelVersion(String.valueOf(version+1));
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(ModelPrompts entity){
//TODO 做一些数据校验,如唯一约束
//根据任务名称、区域、行业查询是否存在相同的提示词
LambdaQueryWrapper<ModelPrompts> lqw = Wrappers.lambdaQuery();
lqw.eq(ModelPrompts::getTaskName, entity.getTaskName());
lqw.eq(ModelPrompts::getTaskRegion, entity.getTaskRegion());
lqw.eq(ModelPrompts::getTaskIndustry, entity.getTaskIndustry());
lqw.ne(ModelPrompts::getId, entity.getId());
Long count = baseMapper.selectCount(lqw);
if(count > 0){
throw new IllegalArgumentException("任务名称、区域、行业不能重复!");
}
}
/**
* 校验并批量删除用于存储模型提示词信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

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

@ -0,0 +1,148 @@
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.springframework.stereotype.Service;
import org.dromara.productManagement.domain.bo.ModelUserPromptssettingBo;
import org.dromara.productManagement.domain.vo.ModelUserPromptssettingVo;
import org.dromara.productManagement.domain.ModelUserPromptssetting;
import org.dromara.productManagement.mapper.ModelUserPromptssettingMapper;
import org.dromara.productManagement.service.IModelUserPromptssettingService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 模型提示词用户配置Service业务层处理
*
* @author Lion Li
* @date 2024-12-06
*/
@RequiredArgsConstructor
@Service
public class ModelUserPromptssettingServiceImpl implements IModelUserPromptssettingService {
private final ModelUserPromptssettingMapper baseMapper;
/**
* 查询模型提示词用户配置
*
* @param id 主键
* @return 模型提示词用户配置
*/
@Override
public ModelUserPromptssettingVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询模型提示词用户配置列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 模型提示词用户配置分页列表
*/
@Override
public TableDataInfo<ModelUserPromptssettingVo> queryPageList(ModelUserPromptssettingBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<ModelUserPromptssetting> lqw = buildQueryWrapper(bo);
Page<ModelUserPromptssettingVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的模型提示词用户配置列表
*
* @param bo 查询条件
* @return 模型提示词用户配置列表
*/
@Override
public List<ModelUserPromptssettingVo> queryList(ModelUserPromptssettingBo bo) {
LambdaQueryWrapper<ModelUserPromptssetting> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<ModelUserPromptssetting> buildQueryWrapper(ModelUserPromptssettingBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ModelUserPromptssetting> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), ModelUserPromptssetting::getTaskIndustry, bo.getTaskIndustry());
lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), ModelUserPromptssetting::getTaskRegion, bo.getTaskRegion());
lqw.like(StringUtils.isNotBlank(bo.getTaskName()), ModelUserPromptssetting::getTaskName, bo.getTaskName());
lqw.eq(bo.getUserId() != null, ModelUserPromptssetting::getUserId, bo.getUserId());
return lqw;
}
/**
* 新增模型提示词用户配置
*
* @param bo 模型提示词用户配置
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(ModelUserPromptssettingBo bo) {
ModelUserPromptssetting add = MapstructUtils.convert(bo, ModelUserPromptssetting.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改模型提示词用户配置
*
* @param bo 模型提示词用户配置
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(ModelUserPromptssettingBo bo) {
ModelUserPromptssetting update = MapstructUtils.convert(bo, ModelUserPromptssetting.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(ModelUserPromptssetting entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除模型提示词用户配置信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
@Override
public ModelUserPromptssettingVo queryByuserId(Long userId) {
LambdaQueryWrapper<ModelUserPromptssetting> lqw = Wrappers.lambdaQuery();
lqw.eq(ModelUserPromptssetting::getUserId, userId);
ModelUserPromptssetting modelUserPromptssetting = baseMapper.selectOne(lqw);
ModelUserPromptssettingVo modelUserPromptssettingVo = new ModelUserPromptssettingVo();
if (modelUserPromptssetting != null) {
modelUserPromptssettingVo =MapstructUtils.convert(modelUserPromptssetting, ModelUserPromptssettingVo.class);
}else{
//不存在配置返回默认通用
modelUserPromptssettingVo.setTaskIndustry("normal");
modelUserPromptssettingVo.setTaskRegion("normal");
}
return modelUserPromptssettingVo;
}
}

77
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/utils/MyHttpUtils.java

@ -0,0 +1,77 @@
package org.dromara.productManagement.utils;
import okhttp3.*;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.springframework.beans.factory.annotation.Value;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class MyHttpUtils {
// chatUrl 应该是静态字段,因为它在静态方法中使用
private static String chatUrl;
// 添加setter方法以注入值
@Value("${chat.chatUrl}")
public void setChatUrl(String url) {
MyHttpUtils.chatUrl = url;
}
public static void sendTaskStartMessage(String url,Long taskId, String taskName, String filename,Long priority) {
OkHttpClient client = new OkHttpClient.Builder().build();
if (url == null) {
throw new IllegalArgumentException("无效的任务名称: " + taskName);
}
// Request request = new Request.Builder()
// .url(url+"?userId="+ LoginHelper.getUserId()+"&taskId="+taskId+"&filename="+filename+"&taskName="+taskName+"&priority="+priority)
// .build();
HttpUrl.Builder urlBuilder = HttpUrl.parse(url).newBuilder();
urlBuilder.addQueryParameter("userId", String.valueOf(LoginHelper.getUserId()));
urlBuilder.addQueryParameter("taskId", String.valueOf(taskId));
urlBuilder.addQueryParameter("filename", filename);
urlBuilder.addQueryParameter("taskName", taskName);
urlBuilder.addQueryParameter("priority", String.valueOf(priority));
Request request = new Request.Builder()
.url(urlBuilder.build())
.build();
// 使用异步调用
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace(); // 处理请求失败
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// 忽略返回内容
response.close(); // 确保响应被关闭
}
});
}
/**
* 校验文档是否正常
* @param url 校验接口地址
* @param filePath 文档路径
*/
public static Boolean sendFileCheckMessage(String url, String filePath) {
OkHttpClient client = new OkHttpClient.Builder().build();
String fullUrl = url + "?filePath=" + URLEncoder.encode(filePath, StandardCharsets.UTF_8);
Request request = new Request.Builder()
.url(fullUrl)
.get() // 使用 GET 请求方法
.build();
try (Response response = client.newCall(request).execute()) {
return response.isSuccessful();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
}

44
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/utils/MyTimeUtils.java

@ -0,0 +1,44 @@
package org.dromara.productManagement.utils;
import org.springframework.beans.factory.annotation.Value;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class MyTimeUtils {
// chatUrl 应该是静态字段,因为它在静态方法中使用
private static String chatUrl;
// 添加setter方法以注入值
@Value("${chat.chatUrl}")
public void setChatUrl(String url) {
MyTimeUtils.chatUrl = url;
}
/**
* 计算并格式化两个 Date 对象之间的时间差
*
* @param createTime 创建时间
* @param updateTime 更新时间
* @return 格式化后的时间差字符串
*/
public static String formatTimeDifference(Date createTime, Date updateTime) {
// 将 Date 转换为 LocalDateTime
LocalDateTime createLocalDateTime = createTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
LocalDateTime updateLocalDateTime = updateTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
// 计算两个时间之间的差值
Duration duration = Duration.between(createLocalDateTime, updateLocalDateTime);
// 获取小时数和分钟数
long hours = duration.toHours();
long minutes = duration.toMinutes() % 60;
// 格式化时间差
if (hours > 0) {
return String.format("%d小时%d分钟", hours, minutes);
} else {
return String.format("%d分钟", minutes);
}
}
}

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

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

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

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

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

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