diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index e938982..66ff1f6 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -49,14 +49,15 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
-# url: jdbc:mysql://localhost:3306/zaojia?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
+ url: jdbc:mysql://localhost:3306/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
# username: root
# password: root
#url: jdbc:mysql://10.1.21.250:3306/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
# url: jdbc:mysql://218.0.1.42:53306/aitable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
- url: jdbc:mysql://10.1.21.251:3306/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
+# url: jdbc:mysql://10.1.21.251:3306/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
+# url: jdbc:mysql://222.75.18.225:2881/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root
- password: 'HXj-6nR|D8xy*h#!I&:('
+ password: root
# 从库数据源
# slave:
# lazy: true
diff --git a/ruoyi-admin/src/main/resources/application-test.yml b/ruoyi-admin/src/main/resources/application-test.yml
index e001340..5aaa6d3 100644
--- a/ruoyi-admin/src/main/resources/application-test.yml
+++ b/ruoyi-admin/src/main/resources/application-test.yml
@@ -52,7 +52,9 @@ spring:
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://localhost:3306/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root
- password: HXj-6nR|D8xy*h#!I&:(
+# password:
+ password: 'HXj-6nR|D8xy*h#!I&:('
+
# 从库数据源
# slave:
# lazy: true
diff --git a/zaojiaManagement/zaojia-productManagement/pom.xml b/zaojiaManagement/zaojia-productManagement/pom.xml
index 08c8176..2ecd47d 100644
--- a/zaojiaManagement/zaojia-productManagement/pom.xml
+++ b/zaojiaManagement/zaojia-productManagement/pom.xml
@@ -126,6 +126,11 @@
juniversalchardet
1.0.3
+
+ net.lingala.zip4j
+ zip4j
+ 2.11.5
+
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
index 9643dde..60e0e3c 100644
--- 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
@@ -95,7 +95,6 @@ public abstract class BaseTaskService {
//
// // 验证用户任务权限
// documentTasksPermissionsService.validateUserTaskPermissions(taskType,taskNames, userId);
-
// 处理文件相关操作
FileProcessResult fileResult = processFile(bo.getOssId());
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualAuditConfigController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualAuditConfigController.java
new file mode 100644
index 0000000..483fab2
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualAuditConfigController.java
@@ -0,0 +1,110 @@
+package org.dromara.productManagement.controller;
+
+import java.util.HashMap;
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+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.ContractualAuditConfigVo;
+import org.dromara.productManagement.domain.bo.ContractualAuditConfigBo;
+import org.dromara.productManagement.service.IContractualAuditConfigService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 合同审核配置
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/productManagement/ContractualAuditConfig")
+public class ContractualAuditConfigController extends BaseController {
+
+ private final IContractualAuditConfigService contractualAuditConfigService;
+
+ /**
+ * 查询合同审核配置列表
+ */
+ @SaCheckPermission("productManagement:ContractualAuditConfig:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ContractualAuditConfigBo bo, PageQuery pageQuery) {
+ return contractualAuditConfigService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出合同审核配置列表
+ */
+ @SaCheckPermission("productManagement:ContractualAuditConfig:export")
+ @Log(title = "合同审核配置", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(ContractualAuditConfigBo bo, HttpServletResponse response) {
+ List list = contractualAuditConfigService.queryList(bo);
+ ExcelUtil.exportExcel(list, "合同审核配置", ContractualAuditConfigVo.class, response);
+ }
+
+ /**
+ * 获取合同审核配置详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("productManagement:ContractualAuditConfig:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(contractualAuditConfigService.queryById(id));
+ }
+
+ /**
+ * 新增合同审核配置
+ */
+ @SaCheckPermission("productManagement:ContractualAuditConfig:add")
+ @Log(title = "合同审核配置", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody ContractualAuditConfigBo bo) {
+ return toAjax(contractualAuditConfigService.insertByBo(bo));
+ }
+
+ /**
+ * 修改合同审核配置
+ */
+ @SaCheckPermission("productManagement:ContractualAuditConfig:edit")
+ @Log(title = "合同审核配置", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody ContractualAuditConfigBo bo) {
+ return toAjax(contractualAuditConfigService.updateByBo(bo));
+ }
+
+ /**
+ * 删除合同审核配置
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("productManagement:ContractualAuditConfig:remove")
+ @Log(title = "合同审核配置", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(contractualAuditConfigService.deleteWithValidByIds(List.of(ids), true));
+ }
+ @GetMapping("/getRequirementTypeDict")
+ public R>> getRequirementTypeDict() {
+ return R.ok(contractualAuditConfigService.getRequirementTypeDict());
+ }
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualProductInfoController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualProductInfoController.java
new file mode 100644
index 0000000..760ae7d
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualProductInfoController.java
@@ -0,0 +1,105 @@
+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.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.ContractualProductInfoVo;
+import org.dromara.productManagement.domain.bo.ContractualProductInfoBo;
+import org.dromara.productManagement.service.IContractualProductInfoService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 合同产品信息
+ *
+ * @author Lion Li
+ * @date 2025-03-18
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/productManagement/ContractualProductInfo")
+public class ContractualProductInfoController extends BaseController {
+
+ private final IContractualProductInfoService contractualProductInfoService;
+
+ /**
+ * 查询合同产品信息列表
+ */
+ @SaCheckPermission("productManagement:ContractualProductInfo:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ContractualProductInfoBo bo, PageQuery pageQuery) {
+ return contractualProductInfoService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出合同产品信息列表
+ */
+ @SaCheckPermission("productManagement:ContractualProductInfo:export")
+ @Log(title = "合同产品信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(ContractualProductInfoBo bo, HttpServletResponse response) {
+ List list = contractualProductInfoService.queryList(bo);
+ ExcelUtil.exportExcel(list, "合同产品信息", ContractualProductInfoVo.class, response);
+ }
+
+ /**
+ * 获取合同产品信息详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("productManagement:ContractualProductInfo:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(contractualProductInfoService.queryById(id));
+ }
+
+ /**
+ * 新增合同产品信息
+ */
+ @SaCheckPermission("productManagement:ContractualProductInfo:add")
+ @Log(title = "合同产品信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody ContractualProductInfoBo bo) {
+ return toAjax(contractualProductInfoService.insertByBo(bo));
+ }
+
+ /**
+ * 修改合同产品信息
+ */
+ @SaCheckPermission("productManagement:ContractualProductInfo:edit")
+ @Log(title = "合同产品信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody ContractualProductInfoBo bo) {
+ return toAjax(contractualProductInfoService.updateByBo(bo));
+ }
+
+ /**
+ * 删除合同产品信息
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("productManagement:ContractualProductInfo:remove")
+ @Log(title = "合同产品信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(contractualProductInfoService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/JyjContractualTaskBatchController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/JyjContractualTaskBatchController.java
index d06a09a..47f3f72 100644
--- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/JyjContractualTaskBatchController.java
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/JyjContractualTaskBatchController.java
@@ -1,6 +1,7 @@
package org.dromara.productManagement.controller;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
@@ -127,7 +128,11 @@ public class JyjContractualTaskBatchController extends BaseController {
return R.ok(jyjContractualTaskBatchService.getContractulResultById(id));
}
@GetMapping("/getContractulPdf/{id}")
- public void getContractulPdf(@PathVariable Long id, HttpServletResponse response) {
+ public void getContractulPdf(@PathVariable Long id, HttpServletResponse response) throws UnsupportedEncodingException {
jyjContractualTaskBatchService.getContractulPdf(id,response);
}
+ @GetMapping("/getContractulContent/{id}")
+ public R getContractulContent(@PathVariable Long id) {
+ return R.ok("ok",jyjContractualTaskBatchService.getContractulContent(id));
+ }
}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementContractualNormalController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementContractualNormalController.java
new file mode 100644
index 0000000..b922af5
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementContractualNormalController.java
@@ -0,0 +1,105 @@
+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.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.RequirementContractualNormalVo;
+import org.dromara.productManagement.domain.bo.RequirementContractualNormalBo;
+import org.dromara.productManagement.service.IRequirementContractualNormalService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 合同常规要求
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/productManagement/RequirementContractualNormal")
+public class RequirementContractualNormalController extends BaseController {
+
+ private final IRequirementContractualNormalService requirementContractualNormalService;
+
+ /**
+ * 查询合同常规要求列表
+ */
+ @SaCheckPermission("productManagement:RequirementContractualNormal:list")
+ @GetMapping("/list")
+ public TableDataInfo list(RequirementContractualNormalBo bo, PageQuery pageQuery) {
+ return requirementContractualNormalService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出合同常规要求列表
+ */
+ @SaCheckPermission("productManagement:RequirementContractualNormal:export")
+ @Log(title = "合同常规要求", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(RequirementContractualNormalBo bo, HttpServletResponse response) {
+ List list = requirementContractualNormalService.queryList(bo);
+ ExcelUtil.exportExcel(list, "合同常规要求", RequirementContractualNormalVo.class, response);
+ }
+
+ /**
+ * 获取合同常规要求详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("productManagement:RequirementContractualNormal:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(requirementContractualNormalService.queryById(id));
+ }
+
+ /**
+ * 新增合同常规要求
+ */
+ @SaCheckPermission("productManagement:RequirementContractualNormal:add")
+ @Log(title = "合同常规要求", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody RequirementContractualNormalBo bo) {
+ return toAjax(requirementContractualNormalService.insertByBo(bo));
+ }
+
+ /**
+ * 修改合同常规要求
+ */
+ @SaCheckPermission("productManagement:RequirementContractualNormal:edit")
+ @Log(title = "合同常规要求", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody RequirementContractualNormalBo bo) {
+ return toAjax(requirementContractualNormalService.updateByBo(bo));
+ }
+
+ /**
+ * 删除合同常规要求
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("productManagement:RequirementContractualNormal:remove")
+ @Log(title = "合同常规要求", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(requirementContractualNormalService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementCpuosdatabaseController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementCpuosdatabaseController.java
new file mode 100644
index 0000000..be2c393
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementCpuosdatabaseController.java
@@ -0,0 +1,105 @@
+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.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.RequirementCpuosdatabaseVo;
+import org.dromara.productManagement.domain.bo.RequirementCpuosdatabaseBo;
+import org.dromara.productManagement.service.IRequirementCpuosdatabaseService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * CPU,操作系统,数据库要求
+ *
+ * @author Lion Li
+ * @date 2025-03-14
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/productManagement/RequirementCpuosdatabase")
+public class RequirementCpuosdatabaseController extends BaseController {
+
+ private final IRequirementCpuosdatabaseService requirementCpuosdatabaseService;
+
+ /**
+ * 查询CPU,操作系统,数据库要求列表
+ */
+ @SaCheckPermission("productManagement:RequirementCpuosdatabase:list")
+ @GetMapping("/list")
+ public TableDataInfo list(RequirementCpuosdatabaseBo bo, PageQuery pageQuery) {
+ return requirementCpuosdatabaseService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出CPU,操作系统,数据库要求列表
+ */
+ @SaCheckPermission("productManagement:RequirementCpuosdatabase:export")
+ @Log(title = "CPU,操作系统,数据库要求", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(RequirementCpuosdatabaseBo bo, HttpServletResponse response) {
+ List list = requirementCpuosdatabaseService.queryList(bo);
+ ExcelUtil.exportExcel(list, "CPU,操作系统,数据库要求", RequirementCpuosdatabaseVo.class, response);
+ }
+
+ /**
+ * 获取CPU,操作系统,数据库要求详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("productManagement:RequirementCpuosdatabase:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(requirementCpuosdatabaseService.queryById(id));
+ }
+
+ /**
+ * 新增CPU,操作系统,数据库要求
+ */
+ @SaCheckPermission("productManagement:RequirementCpuosdatabase:add")
+ @Log(title = "CPU,操作系统,数据库要求", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody RequirementCpuosdatabaseBo bo) {
+ return toAjax(requirementCpuosdatabaseService.insertByBo(bo));
+ }
+
+ /**
+ * 修改CPU,操作系统,数据库要求
+ */
+ @SaCheckPermission("productManagement:RequirementCpuosdatabase:edit")
+ @Log(title = "CPU,操作系统,数据库要求", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody RequirementCpuosdatabaseBo bo) {
+ return toAjax(requirementCpuosdatabaseService.updateByBo(bo));
+ }
+
+ /**
+ * 删除CPU,操作系统,数据库要求
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("productManagement:RequirementCpuosdatabase:remove")
+ @Log(title = "CPU,操作系统,数据库要求", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(requirementCpuosdatabaseService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementEntityController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementEntityController.java
new file mode 100644
index 0000000..4d556bf
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementEntityController.java
@@ -0,0 +1,105 @@
+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.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.RequirementEntityVo;
+import org.dromara.productManagement.domain.bo.RequirementEntityBo;
+import org.dromara.productManagement.service.IRequirementEntityService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 主体要求
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/productManagement/RequirementEntity")
+public class RequirementEntityController extends BaseController {
+
+ private final IRequirementEntityService requirementEntityService;
+
+ /**
+ * 查询主体要求列表
+ */
+ @SaCheckPermission("productManagement:RequirementEntity:list")
+ @GetMapping("/list")
+ public TableDataInfo list(RequirementEntityBo bo, PageQuery pageQuery) {
+ return requirementEntityService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出主体要求列表
+ */
+ @SaCheckPermission("productManagement:RequirementEntity:export")
+ @Log(title = "主体要求", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(RequirementEntityBo bo, HttpServletResponse response) {
+ List list = requirementEntityService.queryList(bo);
+ ExcelUtil.exportExcel(list, "主体要求", RequirementEntityVo.class, response);
+ }
+
+ /**
+ * 获取主体要求详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("productManagement:RequirementEntity:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(requirementEntityService.queryById(id));
+ }
+
+ /**
+ * 新增主体要求
+ */
+ @SaCheckPermission("productManagement:RequirementEntity:add")
+ @Log(title = "主体要求", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody RequirementEntityBo bo) {
+ return toAjax(requirementEntityService.insertByBo(bo));
+ }
+
+ /**
+ * 修改主体要求
+ */
+ @SaCheckPermission("productManagement:RequirementEntity:edit")
+ @Log(title = "主体要求", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody RequirementEntityBo bo) {
+ return toAjax(requirementEntityService.updateByBo(bo));
+ }
+
+ /**
+ * 删除主体要求
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("productManagement:RequirementEntity:remove")
+ @Log(title = "主体要求", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(requirementEntityService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementProductAttributeController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementProductAttributeController.java
new file mode 100644
index 0000000..e584649
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/RequirementProductAttributeController.java
@@ -0,0 +1,105 @@
+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.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.RequirementProductAttributeVo;
+import org.dromara.productManagement.domain.bo.RequirementProductAttributeBo;
+import org.dromara.productManagement.service.IRequirementProductAttributeService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 产品属性要求
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/productManagement/RequirementProductAttribute")
+public class RequirementProductAttributeController extends BaseController {
+
+ private final IRequirementProductAttributeService requirementProductAttributeService;
+
+ /**
+ * 查询产品属性要求列表
+ */
+ @SaCheckPermission("productManagement:RequirementProductAttribute:list")
+ @GetMapping("/list")
+ public TableDataInfo list(RequirementProductAttributeBo bo, PageQuery pageQuery) {
+ return requirementProductAttributeService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出产品属性要求列表
+ */
+ @SaCheckPermission("productManagement:RequirementProductAttribute:export")
+ @Log(title = "产品属性要求", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(RequirementProductAttributeBo bo, HttpServletResponse response) {
+ List list = requirementProductAttributeService.queryList(bo);
+ ExcelUtil.exportExcel(list, "产品属性要求", RequirementProductAttributeVo.class, response);
+ }
+
+ /**
+ * 获取产品属性要求详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("productManagement:RequirementProductAttribute:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(requirementProductAttributeService.queryById(id));
+ }
+
+ /**
+ * 新增产品属性要求
+ */
+ @SaCheckPermission("productManagement:RequirementProductAttribute:add")
+ @Log(title = "产品属性要求", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody RequirementProductAttributeBo bo) {
+ return toAjax(requirementProductAttributeService.insertByBo(bo));
+ }
+
+ /**
+ * 修改产品属性要求
+ */
+ @SaCheckPermission("productManagement:RequirementProductAttribute:edit")
+ @Log(title = "产品属性要求", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody RequirementProductAttributeBo bo) {
+ return toAjax(requirementProductAttributeService.updateByBo(bo));
+ }
+
+ /**
+ * 删除产品属性要求
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("productManagement:RequirementProductAttribute:remove")
+ @Log(title = "产品属性要求", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(requirementProductAttributeService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualAuditConfig.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualAuditConfig.java
new file mode 100644
index 0000000..ba73e16
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualAuditConfig.java
@@ -0,0 +1,58 @@
+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;
+
+/**
+ * 合同审核配置对象 contractual_audit_config
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("contractual_audit_config")
+public class ContractualAuditConfig extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 审核要素
+ */
+ private String auditElement;
+
+
+ /**
+ * 规则描述
+ */
+ private String requirementDescription;
+ /**
+ * 规则类型
+ */
+ private String requirementType;
+
+
+ /**
+ * 是否表单,0-否,1-是
+ */
+ private Long isForm;
+
+ /**
+ * 删除标志(0代表存在 2代表删除)
+ */
+ @TableLogic
+ private String delFlag;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualProductInfo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualProductInfo.java
new file mode 100644
index 0000000..182d308
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualProductInfo.java
@@ -0,0 +1,82 @@
+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;
+
+/**
+ * 合同产品信息对象 contractual_product_info
+ *
+ * @author Lion Li
+ * @date 2025-03-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("contractual_product_info")
+public class ContractualProductInfo extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 任务ID
+ */
+ private String taskId;
+
+ /**
+ * 文件名称
+ */
+ private String fileName;
+
+ /**
+ * 品牌
+ */
+ private String brand;
+
+ /**
+ * 版本号
+ */
+ private String versionStr;
+
+ /**
+ * 单价
+ */
+ private Long unitPrice;
+
+ /**
+ * 价格单位
+ */
+ private String priceUnit;
+
+ /**
+ * 数量
+ */
+ private Long quantity;
+
+ /**
+ * 总价
+ */
+ private Long totalPrice;
+
+ /**
+ * 类型
+ */
+ private String type;
+
+ /**
+ * 删除标志
+ */
+ @TableLogic
+ private String delFlag;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTasks.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTasks.java
index 4e5ef1f..59c459c 100644
--- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTasks.java
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTasks.java
@@ -82,6 +82,7 @@ public class ContractualTasks extends TenantEntity {
* 列队任务id
*/
private String taskId;
+ private String problemPoint;
}
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 54a4fd1..b32933b 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
@@ -82,4 +82,9 @@ public class DocumentTasks extends TenantEntity {
private Long groupId;
private String resultType;
private String batchName;
+ private String requirementType;
+ private String filePath;
+ private String problemPoint;
+
+
}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementContractualNormal.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementContractualNormal.java
new file mode 100644
index 0000000..bffad7c
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementContractualNormal.java
@@ -0,0 +1,52 @@
+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;
+
+/**
+ * 合同常规要求对象 requirement_contractual_normal
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("requirement_contractual_normal")
+public class RequirementContractualNormal extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 合同审核配置表ID
+ */
+ private Long configId;
+
+ /**
+ * 检查项
+ */
+ private String checkItem;
+
+ /**
+ * 要求描述
+ */
+ private String requirementDesc;
+
+ /**
+ * 删除标志(0代表存在 2代表删除)
+ */
+ @TableLogic
+ private String delFlag;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementCpuosdatabase.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementCpuosdatabase.java
new file mode 100644
index 0000000..b784d51
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementCpuosdatabase.java
@@ -0,0 +1,62 @@
+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;
+
+/**
+ * CPU,操作系统,数据库要求对象 requirement_cpuosdatabase
+ *
+ * @author Lion Li
+ * @date 2025-03-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("requirement_cpuosdatabase")
+public class RequirementCpuosdatabase extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 类型
+ */
+ private String type;
+
+ /**
+ * 合同审核配置表ID
+ */
+ private Long configId;
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 型号
+ */
+ private String model;
+
+ /**
+ * 版本号
+ */
+ private String versionStr;
+
+ /**
+ * 删除标志(0代表存在 2代表删除)
+ */
+ @TableLogic
+ private String delFlag;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementEntity.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementEntity.java
new file mode 100644
index 0000000..b3593e4
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementEntity.java
@@ -0,0 +1,62 @@
+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;
+
+/**
+ * 主体要求对象 requirement_entity
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("requirement_entity")
+public class RequirementEntity extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 合同审核配置表ID
+ */
+ private Long configId;
+
+ /**
+ * 主体名称
+ */
+ private String entityName;
+
+ /**
+ * 父主体ID,0表示顶级主体
+ */
+ private Long parentId;
+
+ /**
+ * 层级,1表示顶级
+ */
+ private Long level;
+
+ /**
+ * 层级路径,格式如:0,1,2
+ */
+ private String path;
+
+ /**
+ * 删除标志(0代表存在 2代表删除)
+ */
+ @TableLogic
+ private String delFlag;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementProductAttribute.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementProductAttribute.java
new file mode 100644
index 0000000..5451711
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/RequirementProductAttribute.java
@@ -0,0 +1,57 @@
+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;
+
+/**
+ * 产品属性要求对象 requirement_product_attribute
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("requirement_product_attribute")
+public class RequirementProductAttribute extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 合同审核配置表ID
+ */
+ private Long configId;
+
+ /**
+ * 属性名称
+ */
+ private String attributeName;
+
+ /**
+ * 要求
+ */
+ private String requirement;
+
+ /**
+ * 产品类型
+ */
+ private String productType;
+
+ /**
+ * 删除标志(0代表存在 2代表删除)
+ */
+ @TableLogic
+ private String delFlag;
+
+
+}
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
index 2f55eaa..46bf152 100644
--- 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
@@ -53,4 +53,5 @@ public class BaseTaskBo extends BaseEntity {
* 任务名称
*/
private String taskName;
+ private String filePath;
}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualAuditConfigBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualAuditConfigBo.java
new file mode 100644
index 0000000..2e44220
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualAuditConfigBo.java
@@ -0,0 +1,55 @@
+package org.dromara.productManagement.domain.bo;
+
+import org.dromara.productManagement.domain.*;
+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.mapper.RequirementContractualNormalMapper;
+
+import java.util.List;
+
+/**
+ * 合同审核配置业务对象 contractual_audit_config
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ContractualAuditConfig.class, reverseConvertGenerate = false)
+public class ContractualAuditConfigBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ private Long id;
+
+ /**
+ * 审核要素
+ */
+ @NotBlank(message = "规则名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String auditElement;
+
+
+ /**
+ * 规则描述
+ */
+ private String requirementDescription;
+ /**
+ * 规则类型
+ */
+ @NotBlank(message = "规则类型不能为空", groups = { AddGroup.class, EditGroup.class })
+
+ private String requirementType;
+
+ private List requirementCpuosdatabaseList;
+
+ private List requirementEntityList;
+ private List requirementProductAttributeList;
+ private List requirementContractualNormalList;
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualProductInfoBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualProductInfoBo.java
new file mode 100644
index 0000000..ff556c7
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualProductInfoBo.java
@@ -0,0 +1,74 @@
+package org.dromara.productManagement.domain.bo;
+
+import org.dromara.productManagement.domain.ContractualProductInfo;
+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.*;
+
+/**
+ * 合同产品信息业务对象 contractual_product_info
+ *
+ * @author Lion Li
+ * @date 2025-03-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ContractualProductInfo.class, reverseConvertGenerate = false)
+public class ContractualProductInfoBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ private Long id;
+
+ /**
+ * 任务ID
+ */
+ private String taskId;
+
+ /**
+ * 文件名称
+ */
+ private String fileName;
+
+ /**
+ * 品牌
+ */
+ private String brand;
+
+ /**
+ * 版本号
+ */
+ private String versionStr;
+
+ /**
+ * 单价
+ */
+ private Long unitPrice;
+
+ /**
+ * 价格单位
+ */
+ private String priceUnit;
+
+ /**
+ * 数量
+ */
+ private Long quantity;
+
+ /**
+ * 总价
+ */
+ private Long totalPrice;
+
+ /**
+ * 类型
+ */
+ private String type;
+
+
+}
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 1b3a368..f4ba415 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
@@ -36,6 +36,8 @@ public class ContractualTasksBo extends BaseTaskBo {
private Long groupId;
private String resultType;
private String batchName;
+ private String problemPoint;
+
// /**
// * 模型所属行业
// */
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 415e2e8..da85e3d 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
@@ -32,7 +32,8 @@ public class DocumentTasksBo extends BaseTaskBo {
private Long groupId;
private String resultType;
private String batchName;
-
+ private String requirementType;
+ private String problemPoint;
}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/JyjContractualTaskBatchBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/JyjContractualTaskBatchBo.java
index 79a9ce5..d64962e 100644
--- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/JyjContractualTaskBatchBo.java
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/JyjContractualTaskBatchBo.java
@@ -102,4 +102,6 @@ public class JyjContractualTaskBatchBo extends BaseEntity {
*/
private String processingTime;
private Date latestTime;
+
+ private String requirementType;
}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementContractualNormalBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementContractualNormalBo.java
new file mode 100644
index 0000000..b43e89d
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementContractualNormalBo.java
@@ -0,0 +1,47 @@
+package org.dromara.productManagement.domain.bo;
+
+import org.dromara.productManagement.domain.RequirementContractualNormal;
+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.*;
+
+/**
+ * 合同常规要求业务对象 requirement_contractual_normal
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = RequirementContractualNormal.class, reverseConvertGenerate = false)
+public class RequirementContractualNormalBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ private Long id;
+
+ /**
+ * 合同审核配置表ID
+ */
+ @NotNull(message = "合同审核配置表ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long configId;
+
+ /**
+ * 检查项
+ */
+ @NotBlank(message = "检查项不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String checkItem;
+
+ /**
+ * 要求描述
+ */
+ @NotBlank(message = "要求描述不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String requirementDesc;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementCpuosdatabaseBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementCpuosdatabaseBo.java
new file mode 100644
index 0000000..055c9d9
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementCpuosdatabaseBo.java
@@ -0,0 +1,60 @@
+package org.dromara.productManagement.domain.bo;
+
+import org.dromara.productManagement.domain.RequirementCpuosdatabase;
+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.*;
+
+/**
+ * CPU,操作系统,数据库要求业务对象 requirement_cpuosdatabase
+ *
+ * @author Lion Li
+ * @date 2025-03-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = RequirementCpuosdatabase.class, reverseConvertGenerate = false)
+public class RequirementCpuosdatabaseBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 类型
+ */
+ @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String type;
+
+ /**
+ * 合同审核配置表ID
+ */
+ @NotNull(message = "合同审核配置表ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long configId;
+
+ /**
+ * 名称
+ */
+ @NotBlank(message = "名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String name;
+
+ /**
+ * 型号
+ */
+ @NotBlank(message = "型号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String model;
+
+ /**
+ * 版本号
+ */
+ @NotBlank(message = "版本号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String versionStr;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementEntityBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementEntityBo.java
new file mode 100644
index 0000000..516ae2a
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementEntityBo.java
@@ -0,0 +1,58 @@
+package org.dromara.productManagement.domain.bo;
+
+import org.dromara.productManagement.domain.RequirementEntity;
+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.*;
+
+/**
+ * 主体要求业务对象 requirement_entity
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = RequirementEntity.class, reverseConvertGenerate = false)
+public class RequirementEntityBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ private Long id;
+
+ /**
+ * 合同审核配置表ID
+ */
+ private Long configId;
+
+ /**
+ * 主体名称
+ */
+ @NotBlank(message = "主体名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String entityName;
+
+ /**
+ * 父主体ID,0表示顶级主体
+ */
+ @NotNull(message = "父主体ID,0表示顶级主体不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long parentId;
+
+ /**
+ * 层级,1表示顶级
+ */
+ @NotNull(message = "层级,1表示顶级不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long level;
+
+ /**
+ * 层级路径,格式如:0,1,2
+ */
+ @NotBlank(message = "层级路径,格式如:0,1,2不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String path;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementProductAttributeBo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementProductAttributeBo.java
new file mode 100644
index 0000000..a78399f
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/RequirementProductAttributeBo.java
@@ -0,0 +1,52 @@
+package org.dromara.productManagement.domain.bo;
+
+import org.dromara.productManagement.domain.RequirementProductAttribute;
+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.*;
+
+/**
+ * 产品属性要求业务对象 requirement_product_attribute
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = RequirementProductAttribute.class, reverseConvertGenerate = false)
+public class RequirementProductAttributeBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ private Long id;
+
+ /**
+ * 合同审核配置表ID
+ */
+ private Long configId;
+
+ /**
+ * 属性名称
+ */
+ @NotBlank(message = "属性名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String attributeName;
+
+ /**
+ * 要求
+ */
+ @NotBlank(message = "要求不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String requirement;
+
+ /**
+ * 产品类型
+ */
+ @NotBlank(message = "产品类型不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String productType;
+
+
+}
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
index 6d1ef47..4ac7ad4 100644
--- 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
@@ -71,4 +71,5 @@ public class BaseTaskVo {
@ExcelProperty(value = "更新时间")
private Date updateTime;
+ private String filePath;
}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualAuditConfigVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualAuditConfigVo.java
new file mode 100644
index 0000000..16d3e26
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualAuditConfigVo.java
@@ -0,0 +1,73 @@
+package org.dromara.productManagement.domain.vo;
+
+import org.dromara.productManagement.domain.*;
+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 org.dromara.productManagement.domain.bo.RequirementContractualNormalBo;
+import org.dromara.productManagement.domain.bo.RequirementCpuosdatabaseBo;
+import org.dromara.productManagement.domain.bo.RequirementEntityBo;
+import org.dromara.productManagement.domain.bo.RequirementProductAttributeBo;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 合同审核配置视图对象 contractual_audit_config
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ContractualAuditConfig.class)
+public class ContractualAuditConfigVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 审核要素
+ */
+ @ExcelProperty(value = "审核要素")
+ private String auditElement;
+
+
+ /**
+ * 规则描述
+ */
+ @ExcelProperty(value = "规则描述")
+ private String requirementDescription;
+
+ /**
+ * 是否表单,0-否,1-是
+ */
+ @ExcelProperty(value = "是否表单,0-否,1-是")
+ private Long isForm;
+
+ /**
+ * 规则类型
+ */
+ private String requirementType;
+
+
+ private List requirementCpuosdatabaseList;
+
+ private List requirementEntityList;
+ private List requirementProductAttributeList;
+ private List requirementContractualNormalList;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualProductInfoVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualProductInfoVo.java
new file mode 100644
index 0000000..241eb9f
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualProductInfoVo.java
@@ -0,0 +1,92 @@
+package org.dromara.productManagement.domain.vo;
+
+import org.dromara.productManagement.domain.ContractualProductInfo;
+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;
+
+
+
+/**
+ * 合同产品信息视图对象 contractual_product_info
+ *
+ * @author Lion Li
+ * @date 2025-03-18
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ContractualProductInfo.class)
+public class ContractualProductInfoVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 任务ID
+ */
+ @ExcelProperty(value = "任务ID")
+ private String taskId;
+
+ /**
+ * 文件名称
+ */
+ @ExcelProperty(value = "文件名称")
+ private String fileName;
+
+ /**
+ * 品牌
+ */
+ @ExcelProperty(value = "品牌")
+ private String brand;
+
+ /**
+ * 版本号
+ */
+ @ExcelProperty(value = "版本号")
+ private String versionStr;
+
+ /**
+ * 单价
+ */
+ @ExcelProperty(value = "单价")
+ private Long unitPrice;
+
+ /**
+ * 价格单位
+ */
+ @ExcelProperty(value = "价格单位")
+ private String priceUnit;
+
+ /**
+ * 数量
+ */
+ @ExcelProperty(value = "数量")
+ private Long quantity;
+
+ /**
+ * 总价
+ */
+ @ExcelProperty(value = "总价")
+ private Long totalPrice;
+
+ /**
+ * 类型
+ */
+ @ExcelProperty(value = "类型")
+ private String type;
+
+
+}
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 df63527..f7e871e 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
@@ -46,4 +46,6 @@ public class ContractualTasksVo extends BaseTaskVo implements Serializable {
private Long groupId;
private String resultType;
private String batchName;
+ private String problemPoint;
+
}
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 e148c00..40d89cb 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
@@ -34,4 +34,8 @@ public class DocumentTasksVo extends BaseTaskVo implements Serializable {
private Long groupId;
private String resultType;
private String batchName;
+ private String requirementType;
+ private String problemPoint;
+
+
}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/JyjContractualTaskBatchVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/JyjContractualTaskBatchVo.java
index e71411d..e83e2b8 100644
--- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/JyjContractualTaskBatchVo.java
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/JyjContractualTaskBatchVo.java
@@ -123,5 +123,4 @@ public class JyjContractualTaskBatchVo implements Serializable {
private String processingTime;
private Date latestTime;
-
}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementContractualNormalVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementContractualNormalVo.java
new file mode 100644
index 0000000..1ad9a41
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementContractualNormalVo.java
@@ -0,0 +1,56 @@
+package org.dromara.productManagement.domain.vo;
+
+import org.dromara.productManagement.domain.RequirementContractualNormal;
+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;
+
+
+
+/**
+ * 合同常规要求视图对象 requirement_contractual_normal
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = RequirementContractualNormal.class)
+public class RequirementContractualNormalVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 合同审核配置表ID
+ */
+ @ExcelProperty(value = "合同审核配置表ID")
+ private Long configId;
+
+ /**
+ * 检查项
+ */
+ @ExcelProperty(value = "检查项")
+ private String checkItem;
+
+ /**
+ * 要求描述
+ */
+ @ExcelProperty(value = "要求描述")
+ private String requirementDesc;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementCpuosdatabaseVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementCpuosdatabaseVo.java
new file mode 100644
index 0000000..ebf621b
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementCpuosdatabaseVo.java
@@ -0,0 +1,68 @@
+package org.dromara.productManagement.domain.vo;
+
+import org.dromara.productManagement.domain.RequirementCpuosdatabase;
+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;
+
+
+
+/**
+ * CPU,操作系统,数据库要求视图对象 requirement_cpuosdatabase
+ *
+ * @author Lion Li
+ * @date 2025-03-14
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = RequirementCpuosdatabase.class)
+public class RequirementCpuosdatabaseVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 类型
+ */
+ @ExcelProperty(value = "类型")
+ private String type;
+
+ /**
+ * 合同审核配置表ID
+ */
+ @ExcelProperty(value = "合同审核配置表ID")
+ private Long configId;
+
+ /**
+ * 名称
+ */
+ @ExcelProperty(value = "名称")
+ private String name;
+
+ /**
+ * 型号
+ */
+ @ExcelProperty(value = "型号")
+ private String model;
+
+ /**
+ * 版本号
+ */
+ @ExcelProperty(value = "版本号")
+ private String versionStr;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementEntityVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementEntityVo.java
new file mode 100644
index 0000000..6dba09b
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementEntityVo.java
@@ -0,0 +1,68 @@
+package org.dromara.productManagement.domain.vo;
+
+import org.dromara.productManagement.domain.RequirementEntity;
+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;
+
+
+
+/**
+ * 主体要求视图对象 requirement_entity
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = RequirementEntity.class)
+public class RequirementEntityVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 合同审核配置表ID
+ */
+ @ExcelProperty(value = "合同审核配置表ID")
+ private Long configId;
+
+ /**
+ * 主体名称
+ */
+ @ExcelProperty(value = "主体名称")
+ private String entityName;
+
+ /**
+ * 父主体ID,0表示顶级主体
+ */
+ @ExcelProperty(value = "父主体ID,0表示顶级主体")
+ private Long parentId;
+
+ /**
+ * 层级,1表示顶级
+ */
+ @ExcelProperty(value = "层级,1表示顶级")
+ private Long level;
+
+ /**
+ * 层级路径,格式如:0,1,2
+ */
+ @ExcelProperty(value = "层级路径,格式如:0,1,2")
+ private String path;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementProductAttributeVo.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementProductAttributeVo.java
new file mode 100644
index 0000000..25f1d21
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/RequirementProductAttributeVo.java
@@ -0,0 +1,62 @@
+package org.dromara.productManagement.domain.vo;
+
+import org.dromara.productManagement.domain.RequirementProductAttribute;
+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;
+
+
+
+/**
+ * 产品属性要求视图对象 requirement_product_attribute
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = RequirementProductAttribute.class)
+public class RequirementProductAttributeVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 合同审核配置表ID
+ */
+ @ExcelProperty(value = "合同审核配置表ID")
+ private Long configId;
+
+ /**
+ * 属性名称
+ */
+ @ExcelProperty(value = "属性名称")
+ private String attributeName;
+
+ /**
+ * 要求
+ */
+ @ExcelProperty(value = "要求")
+ private String requirement;
+
+ /**
+ * 产品类型
+ */
+ @ExcelProperty(value = "产品类型")
+ private String productType;
+
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualAuditConfigMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualAuditConfigMapper.java
new file mode 100644
index 0000000..dd00cb8
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualAuditConfigMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.productManagement.mapper;
+
+import org.dromara.productManagement.domain.ContractualAuditConfig;
+import org.dromara.productManagement.domain.vo.ContractualAuditConfigVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 合同审核配置Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+public interface ContractualAuditConfigMapper extends BaseMapperPlus {
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualProductInfoMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualProductInfoMapper.java
new file mode 100644
index 0000000..de59b01
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualProductInfoMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.productManagement.mapper;
+
+import org.dromara.productManagement.domain.ContractualProductInfo;
+import org.dromara.productManagement.domain.vo.ContractualProductInfoVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 合同产品信息Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-03-18
+ */
+public interface ContractualProductInfoMapper extends BaseMapperPlus {
+
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementContractualNormalMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementContractualNormalMapper.java
new file mode 100644
index 0000000..3fef6b5
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementContractualNormalMapper.java
@@ -0,0 +1,19 @@
+package org.dromara.productManagement.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.productManagement.domain.RequirementContractualNormal;
+import org.dromara.productManagement.domain.RequirementProductAttribute;
+import org.dromara.productManagement.domain.vo.RequirementContractualNormalVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 合同常规要求Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+public interface RequirementContractualNormalMapper extends BaseMapperPlus {
+ void deleteReal(@Param(Constants.WRAPPER) Wrapper wrapper);
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementCpuosdatabaseMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementCpuosdatabaseMapper.java
new file mode 100644
index 0000000..6d24a1f
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementCpuosdatabaseMapper.java
@@ -0,0 +1,19 @@
+package org.dromara.productManagement.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.productManagement.domain.RequirementContractualNormal;
+import org.dromara.productManagement.domain.RequirementCpuosdatabase;
+import org.dromara.productManagement.domain.vo.RequirementCpuosdatabaseVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * CPU,操作系统,数据库要求Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-03-14
+ */
+public interface RequirementCpuosdatabaseMapper extends BaseMapperPlus {
+ void deleteReal(@Param(Constants.WRAPPER) Wrapper wrapper);
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementEntityMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementEntityMapper.java
new file mode 100644
index 0000000..2aade8c
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementEntityMapper.java
@@ -0,0 +1,19 @@
+package org.dromara.productManagement.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.productManagement.domain.RequirementCpuosdatabase;
+import org.dromara.productManagement.domain.RequirementEntity;
+import org.dromara.productManagement.domain.vo.RequirementEntityVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 主体要求Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+public interface RequirementEntityMapper extends BaseMapperPlus {
+ void deleteReal(@Param(Constants.WRAPPER) Wrapper wrapper);
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementProductAttributeMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementProductAttributeMapper.java
new file mode 100644
index 0000000..0ffa0bd
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/RequirementProductAttributeMapper.java
@@ -0,0 +1,20 @@
+package org.dromara.productManagement.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.productManagement.domain.DocumentTasks;
+import org.dromara.productManagement.domain.RequirementProductAttribute;
+import org.dromara.productManagement.domain.vo.RequirementProductAttributeVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 产品属性要求Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+public interface RequirementProductAttributeMapper extends BaseMapperPlus {
+
+ void deleteReal(@Param(Constants.WRAPPER) Wrapper wrapper);
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualAuditConfigService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualAuditConfigService.java
new file mode 100644
index 0000000..248482d
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualAuditConfigService.java
@@ -0,0 +1,71 @@
+package org.dromara.productManagement.service;
+
+import org.dromara.productManagement.domain.vo.ContractualAuditConfigVo;
+import org.dromara.productManagement.domain.bo.ContractualAuditConfigBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 合同审核配置Service接口
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+public interface IContractualAuditConfigService {
+
+ /**
+ * 查询合同审核配置
+ *
+ * @param id 主键
+ * @return 合同审核配置
+ */
+ ContractualAuditConfigVo queryById(Long id);
+
+ /**
+ * 分页查询合同审核配置列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 合同审核配置分页列表
+ */
+ TableDataInfo queryPageList(ContractualAuditConfigBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的合同审核配置列表
+ *
+ * @param bo 查询条件
+ * @return 合同审核配置列表
+ */
+ List queryList(ContractualAuditConfigBo bo);
+
+ /**
+ * 新增合同审核配置
+ *
+ * @param bo 合同审核配置
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(ContractualAuditConfigBo bo);
+
+ /**
+ * 修改合同审核配置
+ *
+ * @param bo 合同审核配置
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(ContractualAuditConfigBo bo);
+
+ /**
+ * 校验并批量删除合同审核配置信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+ List> getRequirementTypeDict();
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualProductInfoService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualProductInfoService.java
new file mode 100644
index 0000000..2dbc8a1
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualProductInfoService.java
@@ -0,0 +1,68 @@
+package org.dromara.productManagement.service;
+
+import org.dromara.productManagement.domain.vo.ContractualProductInfoVo;
+import org.dromara.productManagement.domain.bo.ContractualProductInfoBo;
+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 2025-03-18
+ */
+public interface IContractualProductInfoService {
+
+ /**
+ * 查询合同产品信息
+ *
+ * @param id 主键
+ * @return 合同产品信息
+ */
+ ContractualProductInfoVo queryById(Long id);
+
+ /**
+ * 分页查询合同产品信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 合同产品信息分页列表
+ */
+ TableDataInfo queryPageList(ContractualProductInfoBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的合同产品信息列表
+ *
+ * @param bo 查询条件
+ * @return 合同产品信息列表
+ */
+ List queryList(ContractualProductInfoBo bo);
+
+ /**
+ * 新增合同产品信息
+ *
+ * @param bo 合同产品信息
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(ContractualProductInfoBo bo);
+
+ /**
+ * 修改合同产品信息
+ *
+ * @param bo 合同产品信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(ContractualProductInfoBo 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/IJyjContractualTaskBatchService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IJyjContractualTaskBatchService.java
index ffa4fc7..747f265 100644
--- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IJyjContractualTaskBatchService.java
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IJyjContractualTaskBatchService.java
@@ -13,6 +13,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -78,5 +79,7 @@ public interface IJyjContractualTaskBatchService {
HashMap uploadFile(MultipartFile file) throws IOException;
ContractualRes getContractulResultById(Long id) throws JsonProcessingException;
- void getContractulPdf(Long id, HttpServletResponse response);
+ void getContractulPdf(Long id, HttpServletResponse response) throws UnsupportedEncodingException;
+
+ String getContractulContent(Long id);
}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IRequirementContractualNormalService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IRequirementContractualNormalService.java
new file mode 100644
index 0000000..9d9a5cc
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IRequirementContractualNormalService.java
@@ -0,0 +1,68 @@
+package org.dromara.productManagement.service;
+
+import org.dromara.productManagement.domain.vo.RequirementContractualNormalVo;
+import org.dromara.productManagement.domain.bo.RequirementContractualNormalBo;
+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 2025-03-13
+ */
+public interface IRequirementContractualNormalService {
+
+ /**
+ * 查询合同常规要求
+ *
+ * @param id 主键
+ * @return 合同常规要求
+ */
+ RequirementContractualNormalVo queryById(Long id);
+
+ /**
+ * 分页查询合同常规要求列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 合同常规要求分页列表
+ */
+ TableDataInfo queryPageList(RequirementContractualNormalBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的合同常规要求列表
+ *
+ * @param bo 查询条件
+ * @return 合同常规要求列表
+ */
+ List queryList(RequirementContractualNormalBo bo);
+
+ /**
+ * 新增合同常规要求
+ *
+ * @param bo 合同常规要求
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(RequirementContractualNormalBo bo);
+
+ /**
+ * 修改合同常规要求
+ *
+ * @param bo 合同常规要求
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(RequirementContractualNormalBo 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/IRequirementCpuosdatabaseService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IRequirementCpuosdatabaseService.java
new file mode 100644
index 0000000..b9e74d5
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IRequirementCpuosdatabaseService.java
@@ -0,0 +1,68 @@
+package org.dromara.productManagement.service;
+
+import org.dromara.productManagement.domain.vo.RequirementCpuosdatabaseVo;
+import org.dromara.productManagement.domain.bo.RequirementCpuosdatabaseBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * CPU,操作系统,数据库要求Service接口
+ *
+ * @author Lion Li
+ * @date 2025-03-14
+ */
+public interface IRequirementCpuosdatabaseService {
+
+ /**
+ * 查询CPU,操作系统,数据库要求
+ *
+ * @param id 主键
+ * @return CPU,操作系统,数据库要求
+ */
+ RequirementCpuosdatabaseVo queryById(Long id);
+
+ /**
+ * 分页查询CPU,操作系统,数据库要求列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return CPU,操作系统,数据库要求分页列表
+ */
+ TableDataInfo queryPageList(RequirementCpuosdatabaseBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的CPU,操作系统,数据库要求列表
+ *
+ * @param bo 查询条件
+ * @return CPU,操作系统,数据库要求列表
+ */
+ List queryList(RequirementCpuosdatabaseBo bo);
+
+ /**
+ * 新增CPU,操作系统,数据库要求
+ *
+ * @param bo CPU,操作系统,数据库要求
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(RequirementCpuosdatabaseBo bo);
+
+ /**
+ * 修改CPU,操作系统,数据库要求
+ *
+ * @param bo CPU,操作系统,数据库要求
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(RequirementCpuosdatabaseBo bo);
+
+ /**
+ * 校验并批量删除CPU,操作系统,数据库要求信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IRequirementEntityService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IRequirementEntityService.java
new file mode 100644
index 0000000..2b773c1
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IRequirementEntityService.java
@@ -0,0 +1,68 @@
+package org.dromara.productManagement.service;
+
+import org.dromara.productManagement.domain.vo.RequirementEntityVo;
+import org.dromara.productManagement.domain.bo.RequirementEntityBo;
+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 2025-03-13
+ */
+public interface IRequirementEntityService {
+
+ /**
+ * 查询主体要求
+ *
+ * @param id 主键
+ * @return 主体要求
+ */
+ RequirementEntityVo queryById(Long id);
+
+ /**
+ * 分页查询主体要求列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 主体要求分页列表
+ */
+ TableDataInfo queryPageList(RequirementEntityBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的主体要求列表
+ *
+ * @param bo 查询条件
+ * @return 主体要求列表
+ */
+ List queryList(RequirementEntityBo bo);
+
+ /**
+ * 新增主体要求
+ *
+ * @param bo 主体要求
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(RequirementEntityBo bo);
+
+ /**
+ * 修改主体要求
+ *
+ * @param bo 主体要求
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(RequirementEntityBo 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/IRequirementProductAttributeService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IRequirementProductAttributeService.java
new file mode 100644
index 0000000..ac89fc7
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IRequirementProductAttributeService.java
@@ -0,0 +1,68 @@
+package org.dromara.productManagement.service;
+
+import org.dromara.productManagement.domain.vo.RequirementProductAttributeVo;
+import org.dromara.productManagement.domain.bo.RequirementProductAttributeBo;
+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 2025-03-13
+ */
+public interface IRequirementProductAttributeService {
+
+ /**
+ * 查询产品属性要求
+ *
+ * @param id 主键
+ * @return 产品属性要求
+ */
+ RequirementProductAttributeVo queryById(Long id);
+
+ /**
+ * 分页查询产品属性要求列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 产品属性要求分页列表
+ */
+ TableDataInfo queryPageList(RequirementProductAttributeBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的产品属性要求列表
+ *
+ * @param bo 查询条件
+ * @return 产品属性要求列表
+ */
+ List queryList(RequirementProductAttributeBo bo);
+
+ /**
+ * 新增产品属性要求
+ *
+ * @param bo 产品属性要求
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(RequirementProductAttributeBo bo);
+
+ /**
+ * 修改产品属性要求
+ *
+ * @param bo 产品属性要求
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(RequirementProductAttributeBo 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/ContractualAuditConfigServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualAuditConfigServiceImpl.java
new file mode 100644
index 0000000..b41e86a
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualAuditConfigServiceImpl.java
@@ -0,0 +1,286 @@
+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.*;
+import org.dromara.productManagement.domain.bo.RequirementCpuosdatabaseBo;
+import org.dromara.productManagement.mapper.*;
+import org.springframework.stereotype.Service;
+import org.dromara.productManagement.domain.bo.ContractualAuditConfigBo;
+import org.dromara.productManagement.domain.vo.ContractualAuditConfigVo;
+import org.dromara.productManagement.service.IContractualAuditConfigService;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 合同审核配置Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@RequiredArgsConstructor
+@Service
+@Transactional
+public class ContractualAuditConfigServiceImpl implements IContractualAuditConfigService {
+
+ private final ContractualAuditConfigMapper baseMapper;
+ private final RequirementEntityMapper requirementEntityMapper;
+ private final RequirementCpuosdatabaseMapper requirementCpuosdatabaseMapper;
+ private final RequirementProductAttributeMapper requirementProductAttributeMapper;
+ private final RequirementContractualNormalMapper requirementContractualNormalMapper;
+
+ /**
+ * 查询合同审核配置
+ *
+ * @param id 主键
+ * @return 合同审核配置
+ */
+ @Override
+ public ContractualAuditConfigVo queryById(Long id){
+ ContractualAuditConfigVo contractualAuditConfigVo = baseMapper.selectVoById(id);
+ if (contractualAuditConfigVo!= null) {
+ String auditElement = contractualAuditConfigVo.getAuditElement();
+ if (auditElement.equals("cpu")||auditElement.equals("database")||auditElement.equals("os")) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(RequirementCpuosdatabase::getConfigId, id);
+ List requirementCpuosdatabaseList = requirementCpuosdatabaseMapper.selectList(lqw);
+ contractualAuditConfigVo.setRequirementCpuosdatabaseList(requirementCpuosdatabaseList);
+ } else if (auditElement.equals("entity")) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(RequirementEntity::getConfigId, id);
+ List requirementEntityList = requirementEntityMapper.selectList(lqw);
+ contractualAuditConfigVo.setRequirementEntityList(requirementEntityList);
+ } else if (auditElement.equals("productAttribute")) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(RequirementProductAttribute::getConfigId, id);
+ List requirementProductAttributeList = requirementProductAttributeMapper.selectList(lqw);
+ contractualAuditConfigVo.setRequirementProductAttributeList(requirementProductAttributeList);
+ } else if (auditElement.equals("contractualNormal")) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(RequirementContractualNormal::getConfigId, id);
+ List requirementContractualNormalList = requirementContractualNormalMapper.selectList(lqw);
+ contractualAuditConfigVo.setRequirementContractualNormalList(requirementContractualNormalList);
+ }
+
+ }
+ return contractualAuditConfigVo;
+ }
+
+ /**
+ * 分页查询合同审核配置列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 合同审核配置分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ContractualAuditConfigBo 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(ContractualAuditConfigBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(ContractualAuditConfigBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.like(StringUtils.isNotBlank(bo.getAuditElement()), ContractualAuditConfig::getAuditElement, bo.getAuditElement());
+ lqw.eq(StringUtils.isNotBlank(bo.getRequirementDescription()), ContractualAuditConfig::getRequirementDescription, bo.getRequirementDescription());
+ return lqw;
+ }
+
+ /**
+ * 新增合同审核配置
+ *
+ * @param bo 合同审核配置
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(ContractualAuditConfigBo bo) {
+ ContractualAuditConfig add = MapstructUtils.convert(bo, ContractualAuditConfig.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ String auditElement = bo.getAuditElement();
+ if (auditElement.equals("cpu")||auditElement.equals("database")||auditElement.equals("os")) {
+ List requirementCpuosdatabaseList = bo.getRequirementCpuosdatabaseList();
+ requirementCpuosdatabaseList.forEach(requirementCpuosdatabase -> {
+ requirementCpuosdatabase.setConfigId(add.getId());
+ requirementCpuosdatabase.setType(auditElement);
+ requirementCpuosdatabaseMapper.insert(requirementCpuosdatabase);
+ });
+ } else if (auditElement.equals("entity")) {
+ List requirementEntityList = bo.getRequirementEntityList();
+ requirementEntityList.forEach(requirementEntity -> {
+ requirementEntity.setConfigId(add.getId());
+ requirementEntityMapper.insert(requirementEntity);
+ });
+ } else if (auditElement.equals("productAttribute")) {
+ List requirementProductAttributeList = bo.getRequirementProductAttributeList();
+ requirementProductAttributeList.forEach(requirementProductAttribute -> {
+ requirementProductAttribute.setConfigId(add.getId());
+ requirementProductAttributeMapper.insert(requirementProductAttribute);
+ });
+ } else if (auditElement.equals("contractualNormal")) {
+ List requirementContractualNormalList = bo.getRequirementContractualNormalList();
+ requirementContractualNormalList.forEach(requirementContractualNormal -> {
+ requirementContractualNormal.setConfigId(add.getId());
+ requirementContractualNormalMapper.insert(requirementContractualNormal);
+ });
+ }
+ }
+ return flag;
+ }
+
+ /**
+ * 修改合同审核配置
+ *
+ * @param bo 合同审核配置
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(ContractualAuditConfigBo bo) {
+ ContractualAuditConfig update = MapstructUtils.convert(bo, ContractualAuditConfig.class);
+ validEntityBeforeSave(update);
+ boolean flag = baseMapper.updateById(update) > 0;
+ if (flag) {
+ String auditElement = bo.getAuditElement();
+ if (auditElement.equals("cpu")||auditElement.equals("database")||auditElement.equals("os")) {
+ List requirementCpuosdatabaseList = bo.getRequirementCpuosdatabaseList();
+ // 根据configId删除原有数据
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(RequirementCpuosdatabase::getConfigId, update.getId());
+ requirementCpuosdatabaseMapper.deleteReal(lqw);
+ // 新增数据
+ requirementCpuosdatabaseList.forEach(requirementCpuosdatabase -> {
+ requirementCpuosdatabase.setConfigId(update.getId());
+ requirementCpuosdatabase.setType(auditElement);
+ requirementCpuosdatabaseMapper.insert(requirementCpuosdatabase);
+ });
+ }else if (auditElement.equals("entity")) {
+ List requirementEntityList = bo.getRequirementEntityList();
+ // 根据configId删除原有数据
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(RequirementEntity::getConfigId, update.getId());
+ requirementEntityMapper.deleteReal(lqw);
+ // 新增数据
+ requirementEntityList.forEach(requirementEntity -> {
+ requirementEntity.setConfigId(update.getId());
+ requirementEntityMapper.insert(requirementEntity);
+ });
+ } else if (auditElement.equals("productAttribute")) {
+ List requirementProductAttributeList = bo.getRequirementProductAttributeList();
+ // 根据configId删除原有数据
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(RequirementProductAttribute::getConfigId, update.getId());
+ requirementProductAttributeMapper.deleteReal(lqw);
+ // 新增数据
+ requirementProductAttributeList.forEach(requirementProductAttribute -> {
+ requirementProductAttribute.setConfigId(update.getId());
+ requirementProductAttributeMapper.insert(requirementProductAttribute);
+ });
+ }else if (auditElement.equals("contractualNormal")){
+ List requirementContractualNormalList = bo.getRequirementContractualNormalList();
+ // 根据configId删除原有数据
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(RequirementContractualNormal::getConfigId, update.getId());
+ requirementContractualNormalMapper.deleteReal(lqw);
+ // 新增数据
+ requirementContractualNormalList.forEach(requirementContractualNormal -> {
+ requirementContractualNormal.setConfigId(update.getId());
+ requirementContractualNormalMapper.insert(requirementContractualNormal);
+ });
+ }
+ }
+ return flag;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ContractualAuditConfig entity){
+ //TODO 做一些数据校验,如唯一约束
+ String auditElement = entity.getAuditElement();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(ContractualAuditConfig::getAuditElement, auditElement);
+ lqw.eq(ContractualAuditConfig::getRequirementType, entity.getRequirementType());
+ if(entity.getId() != null){
+ lqw.ne(ContractualAuditConfig::getId, entity.getId());
+ }
+ Long count = baseMapper.selectCount(lqw);
+ if (count > 0) {
+ throw new IllegalArgumentException("合同审核配置已存在");
+ }
+ }
+
+ /**
+ * 校验并批量删除合同审核配置信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ // 删除合同审核配置信息
+ LambdaQueryWrapper lqw1 = Wrappers.lambdaQuery();
+ lqw1.in(RequirementCpuosdatabase::getConfigId, ids);
+ requirementCpuosdatabaseMapper.deleteReal(lqw1);
+ LambdaQueryWrapper lqw2 = Wrappers.lambdaQuery();
+ lqw2.in(RequirementEntity::getConfigId, ids);
+ requirementEntityMapper.deleteReal(lqw2);
+ LambdaQueryWrapper lqw3 = Wrappers.lambdaQuery();
+ lqw3.in(RequirementProductAttribute::getConfigId, ids);
+ requirementProductAttributeMapper.deleteReal(lqw3);
+ LambdaQueryWrapper lqw4 = Wrappers.lambdaQuery();
+ lqw4.in(RequirementContractualNormal::getConfigId, ids);
+ requirementContractualNormalMapper.deleteReal(lqw4);
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+
+ @Override
+ public List> getRequirementTypeDict() {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ // 使用sql查询requirementType去重后的结果
+ lqw.select(ContractualAuditConfig::getRequirementType)
+ .groupBy(ContractualAuditConfig::getRequirementType);
+
+ List list = baseMapper.selectList(lqw);
+ // 提取去重后的requirementType列表
+ List requirementTypes = list.stream()
+ .map(ContractualAuditConfig::getRequirementType)
+ .collect(Collectors.toList());
+
+ // 封装成map
+ List> result = new ArrayList<>();
+ for (String requirementType : requirementTypes) {
+ HashMap map = new HashMap<>();
+ map.put("value", requirementType);
+ map.put("label", requirementType);
+ result.add(map);
+ }
+ return result;
+ }
+}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualProductInfoServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualProductInfoServiceImpl.java
new file mode 100644
index 0000000..f6e55d2
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualProductInfoServiceImpl.java
@@ -0,0 +1,137 @@
+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.ContractualProductInfoBo;
+import org.dromara.productManagement.domain.vo.ContractualProductInfoVo;
+import org.dromara.productManagement.domain.ContractualProductInfo;
+import org.dromara.productManagement.mapper.ContractualProductInfoMapper;
+import org.dromara.productManagement.service.IContractualProductInfoService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 合同产品信息Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-03-18
+ */
+@RequiredArgsConstructor
+@Service
+public class ContractualProductInfoServiceImpl implements IContractualProductInfoService {
+
+ private final ContractualProductInfoMapper baseMapper;
+
+ /**
+ * 查询合同产品信息
+ *
+ * @param id 主键
+ * @return 合同产品信息
+ */
+ @Override
+ public ContractualProductInfoVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询合同产品信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 合同产品信息分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ContractualProductInfoBo 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(ContractualProductInfoBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(ContractualProductInfoBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StringUtils.isNotBlank(bo.getTaskId()), ContractualProductInfo::getTaskId, bo.getTaskId());
+ lqw.like(StringUtils.isNotBlank(bo.getFileName()), ContractualProductInfo::getFileName, bo.getFileName());
+ lqw.like(StringUtils.isNotBlank(bo.getBrand()), ContractualProductInfo::getBrand, bo.getBrand());
+ lqw.eq(StringUtils.isNotBlank(bo.getVersionStr()), ContractualProductInfo::getVersionStr, bo.getVersionStr());
+ lqw.eq(bo.getUnitPrice() != null, ContractualProductInfo::getUnitPrice, bo.getUnitPrice());
+ lqw.eq(StringUtils.isNotBlank(bo.getPriceUnit()), ContractualProductInfo::getPriceUnit, bo.getPriceUnit());
+ lqw.eq(bo.getQuantity() != null, ContractualProductInfo::getQuantity, bo.getQuantity());
+ lqw.eq(bo.getTotalPrice() != null, ContractualProductInfo::getTotalPrice, bo.getTotalPrice());
+ lqw.like(StringUtils.isNotBlank(bo.getType()), ContractualProductInfo::getType, bo.getType());
+ return lqw;
+ }
+
+ /**
+ * 新增合同产品信息
+ *
+ * @param bo 合同产品信息
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(ContractualProductInfoBo bo) {
+ ContractualProductInfo add = MapstructUtils.convert(bo, ContractualProductInfo.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改合同产品信息
+ *
+ * @param bo 合同产品信息
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(ContractualProductInfoBo bo) {
+ ContractualProductInfo update = MapstructUtils.convert(bo, ContractualProductInfo.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ContractualProductInfo 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/ContractualTasksServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTasksServiceImpl.java
index 100e350..e8ba6c0 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
@@ -125,6 +125,7 @@ public class ContractualTasksServiceImpl extends BaseTaskService wrapper = new LambdaQueryWrapper<>();
wrapper.eq(DocumentTasks::getGroupId, id);
List documentTasksList = documentTasksMapper.selectList(wrapper);
- //获取documentTasksList中最大的updateTime
- Date maxUpdateTime = documentTasksList.stream().max(Comparator.comparing(DocumentTasks::getUpdateTime)).get().getUpdateTime();
- String timeDifference = MyTimeUtils.formatTimeDifference(vo.getLatestTime(), maxUpdateTime);
- vo.setProcessingTime(timeDifference);
+ if(documentTasksList.size() > 0){
+ //获取documentTasksList中最大的updateTime
+ Date maxUpdateTime = documentTasksList.stream().max(Comparator.comparing(DocumentTasks::getCreateTime)).get().getCreateTime();
+ String timeDifference = MyTimeUtils.formatTimeDifference(vo.getLatestTime(), maxUpdateTime);
+ vo.setProcessingTime(timeDifference);
+ }
//获取documentTasksList中最大的updateTime对应的documentTaskResults
});
return TableDataInfo.build(result);
@@ -155,6 +158,7 @@ public class JyjContractualTaskBatchServiceImpl implements IJyjContractualTaskBa
documentTasks.setTaskType(bo.getTaskType());
documentTasks.setGroupId(add.getId());
documentTasks.setBatchName(add.getBatchName());
+ documentTasks.setRequirementType(bo.getRequirementType());
// 在插入数据库前调用扩展点
documentTasksMapper.insert(documentTasks);
// 在发送消息前调用扩展点
@@ -234,20 +238,21 @@ public class JyjContractualTaskBatchServiceImpl implements IJyjContractualTaskBa
}
@Override
- public void getContractulPdf(Long id, HttpServletResponse response) {
+ public void getContractulPdf(Long id, HttpServletResponse response) throws UnsupportedEncodingException {
// PDF文件的绝对路径
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(ContractualInfo::getTaskId, id);
- ContractualInfo ContractualInfo = contractualInfoMapper.selectOne(wrapper);
- String pdfPath = ContractualInfo.getFilePath();
- String fileName = ContractualInfo.getFileName();
+ DocumentTasks documentTasks = documentTasksMapper.selectById(id);
+ String pdfPath = documentTasks.getFilePath();
+ String fileName = documentTasks.getDocumentName();
File file = new File(pdfPath);
if (!file.exists()) {
throw new RuntimeException("文件不存在");
}
response.setContentType("application/pdf");
- response.setHeader("Content-Disposition", "inline; filename=" + fileName);
+// 正确的方式
+ String encodedFileName = URLEncoder.encode(fileName, "UTF-8")
+ .replaceAll("\\+", "%20");
+ response.setHeader("Content-Disposition", "inline; filename=\"" + encodedFileName + "\"");
response.setContentLength((int) file.length());
try (FileInputStream inputStream = new FileInputStream(file);
OutputStream outputStream = response.getOutputStream()) {
@@ -262,4 +267,13 @@ public class JyjContractualTaskBatchServiceImpl implements IJyjContractualTaskBa
throw new RuntimeException("文件读取失败", e);
}
}
+
+ @Override
+ public String getContractulContent(Long id) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(ContractualInfo::getTaskId, id);
+ ContractualInfo contractualInfo = contractualInfoMapper.selectOne(wrapper);
+ String text = contractualInfo.getText();
+ return text;
+ }
}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/RequirementContractualNormalServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/RequirementContractualNormalServiceImpl.java
new file mode 100644
index 0000000..c56c731
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/RequirementContractualNormalServiceImpl.java
@@ -0,0 +1,131 @@
+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.RequirementContractualNormalBo;
+import org.dromara.productManagement.domain.vo.RequirementContractualNormalVo;
+import org.dromara.productManagement.domain.RequirementContractualNormal;
+import org.dromara.productManagement.mapper.RequirementContractualNormalMapper;
+import org.dromara.productManagement.service.IRequirementContractualNormalService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 合同常规要求Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@RequiredArgsConstructor
+@Service
+public class RequirementContractualNormalServiceImpl implements IRequirementContractualNormalService {
+
+ private final RequirementContractualNormalMapper baseMapper;
+
+ /**
+ * 查询合同常规要求
+ *
+ * @param id 主键
+ * @return 合同常规要求
+ */
+ @Override
+ public RequirementContractualNormalVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询合同常规要求列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 合同常规要求分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(RequirementContractualNormalBo 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(RequirementContractualNormalBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(RequirementContractualNormalBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getConfigId() != null, RequirementContractualNormal::getConfigId, bo.getConfigId());
+ lqw.eq(StringUtils.isNotBlank(bo.getCheckItem()), RequirementContractualNormal::getCheckItem, bo.getCheckItem());
+ lqw.eq(StringUtils.isNotBlank(bo.getRequirementDesc()), RequirementContractualNormal::getRequirementDesc, bo.getRequirementDesc());
+ return lqw;
+ }
+
+ /**
+ * 新增合同常规要求
+ *
+ * @param bo 合同常规要求
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(RequirementContractualNormalBo bo) {
+ RequirementContractualNormal add = MapstructUtils.convert(bo, RequirementContractualNormal.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改合同常规要求
+ *
+ * @param bo 合同常规要求
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(RequirementContractualNormalBo bo) {
+ RequirementContractualNormal update = MapstructUtils.convert(bo, RequirementContractualNormal.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(RequirementContractualNormal 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/RequirementCpuosdatabaseServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/RequirementCpuosdatabaseServiceImpl.java
new file mode 100644
index 0000000..8ae12ef
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/RequirementCpuosdatabaseServiceImpl.java
@@ -0,0 +1,133 @@
+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.RequirementCpuosdatabaseBo;
+import org.dromara.productManagement.domain.vo.RequirementCpuosdatabaseVo;
+import org.dromara.productManagement.domain.RequirementCpuosdatabase;
+import org.dromara.productManagement.mapper.RequirementCpuosdatabaseMapper;
+import org.dromara.productManagement.service.IRequirementCpuosdatabaseService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * CPU,操作系统,数据库要求Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-03-14
+ */
+@RequiredArgsConstructor
+@Service
+public class RequirementCpuosdatabaseServiceImpl implements IRequirementCpuosdatabaseService {
+
+ private final RequirementCpuosdatabaseMapper baseMapper;
+
+ /**
+ * 查询CPU,操作系统,数据库要求
+ *
+ * @param id 主键
+ * @return CPU,操作系统,数据库要求
+ */
+ @Override
+ public RequirementCpuosdatabaseVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询CPU,操作系统,数据库要求列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return CPU,操作系统,数据库要求分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(RequirementCpuosdatabaseBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的CPU,操作系统,数据库要求列表
+ *
+ * @param bo 查询条件
+ * @return CPU,操作系统,数据库要求列表
+ */
+ @Override
+ public List queryList(RequirementCpuosdatabaseBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(RequirementCpuosdatabaseBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StringUtils.isNotBlank(bo.getType()), RequirementCpuosdatabase::getType, bo.getType());
+ lqw.eq(bo.getConfigId() != null, RequirementCpuosdatabase::getConfigId, bo.getConfigId());
+ lqw.like(StringUtils.isNotBlank(bo.getName()), RequirementCpuosdatabase::getName, bo.getName());
+ lqw.eq(StringUtils.isNotBlank(bo.getModel()), RequirementCpuosdatabase::getModel, bo.getModel());
+ lqw.eq(StringUtils.isNotBlank(bo.getVersionStr()), RequirementCpuosdatabase::getVersionStr, bo.getVersionStr());
+ return lqw;
+ }
+
+ /**
+ * 新增CPU,操作系统,数据库要求
+ *
+ * @param bo CPU,操作系统,数据库要求
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(RequirementCpuosdatabaseBo bo) {
+ RequirementCpuosdatabase add = MapstructUtils.convert(bo, RequirementCpuosdatabase.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改CPU,操作系统,数据库要求
+ *
+ * @param bo CPU,操作系统,数据库要求
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(RequirementCpuosdatabaseBo bo) {
+ RequirementCpuosdatabase update = MapstructUtils.convert(bo, RequirementCpuosdatabase.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(RequirementCpuosdatabase entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除CPU,操作系统,数据库要求信息
+ *
+ * @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/RequirementEntityServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/RequirementEntityServiceImpl.java
new file mode 100644
index 0000000..c665f9d
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/RequirementEntityServiceImpl.java
@@ -0,0 +1,133 @@
+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.RequirementEntityBo;
+import org.dromara.productManagement.domain.vo.RequirementEntityVo;
+import org.dromara.productManagement.domain.RequirementEntity;
+import org.dromara.productManagement.mapper.RequirementEntityMapper;
+import org.dromara.productManagement.service.IRequirementEntityService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 主体要求Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@RequiredArgsConstructor
+@Service
+public class RequirementEntityServiceImpl implements IRequirementEntityService {
+
+ private final RequirementEntityMapper baseMapper;
+
+ /**
+ * 查询主体要求
+ *
+ * @param id 主键
+ * @return 主体要求
+ */
+ @Override
+ public RequirementEntityVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询主体要求列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 主体要求分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(RequirementEntityBo 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(RequirementEntityBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(RequirementEntityBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getConfigId() != null, RequirementEntity::getConfigId, bo.getConfigId());
+ lqw.like(StringUtils.isNotBlank(bo.getEntityName()), RequirementEntity::getEntityName, bo.getEntityName());
+ lqw.eq(bo.getParentId() != null, RequirementEntity::getParentId, bo.getParentId());
+ lqw.eq(bo.getLevel() != null, RequirementEntity::getLevel, bo.getLevel());
+ lqw.eq(StringUtils.isNotBlank(bo.getPath()), RequirementEntity::getPath, bo.getPath());
+ return lqw;
+ }
+
+ /**
+ * 新增主体要求
+ *
+ * @param bo 主体要求
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(RequirementEntityBo bo) {
+ RequirementEntity add = MapstructUtils.convert(bo, RequirementEntity.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改主体要求
+ *
+ * @param bo 主体要求
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(RequirementEntityBo bo) {
+ RequirementEntity update = MapstructUtils.convert(bo, RequirementEntity.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(RequirementEntity 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/RequirementProductAttributeServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/RequirementProductAttributeServiceImpl.java
new file mode 100644
index 0000000..613997e
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/RequirementProductAttributeServiceImpl.java
@@ -0,0 +1,132 @@
+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.RequirementProductAttributeBo;
+import org.dromara.productManagement.domain.vo.RequirementProductAttributeVo;
+import org.dromara.productManagement.domain.RequirementProductAttribute;
+import org.dromara.productManagement.mapper.RequirementProductAttributeMapper;
+import org.dromara.productManagement.service.IRequirementProductAttributeService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 产品属性要求Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-03-13
+ */
+@RequiredArgsConstructor
+@Service
+public class RequirementProductAttributeServiceImpl implements IRequirementProductAttributeService {
+
+ private final RequirementProductAttributeMapper baseMapper;
+
+ /**
+ * 查询产品属性要求
+ *
+ * @param id 主键
+ * @return 产品属性要求
+ */
+ @Override
+ public RequirementProductAttributeVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询产品属性要求列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 产品属性要求分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(RequirementProductAttributeBo 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(RequirementProductAttributeBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(RequirementProductAttributeBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getConfigId() != null, RequirementProductAttribute::getConfigId, bo.getConfigId());
+ lqw.like(StringUtils.isNotBlank(bo.getAttributeName()), RequirementProductAttribute::getAttributeName, bo.getAttributeName());
+ lqw.eq(StringUtils.isNotBlank(bo.getRequirement()), RequirementProductAttribute::getRequirement, bo.getRequirement());
+ lqw.eq(StringUtils.isNotBlank(bo.getProductType()), RequirementProductAttribute::getProductType, bo.getProductType());
+ return lqw;
+ }
+
+ /**
+ * 新增产品属性要求
+ *
+ * @param bo 产品属性要求
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(RequirementProductAttributeBo bo) {
+ RequirementProductAttribute add = MapstructUtils.convert(bo, RequirementProductAttribute.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改产品属性要求
+ *
+ * @param bo 产品属性要求
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(RequirementProductAttributeBo bo) {
+ RequirementProductAttribute update = MapstructUtils.convert(bo, RequirementProductAttribute.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(RequirementProductAttribute 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/utils/CompressedFileUtils.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/utils/CompressedFileUtils.java
index d42eee5..79240fd 100644
--- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/utils/CompressedFileUtils.java
+++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/utils/CompressedFileUtils.java
@@ -1,3 +1,314 @@
+//package org.dromara.productManagement.utils;
+//
+//import java.io.*;
+//import java.nio.charset.Charset;
+//import java.nio.charset.StandardCharsets;
+//import java.util.ArrayList;
+//import java.util.List;
+//import java.util.UUID;
+//import java.util.zip.ZipEntry;
+//import java.util.zip.ZipFile;
+//import java.util.Enumeration;
+//import java.util.zip.ZipInputStream;
+//
+//import com.github.junrar.rarfile.FileHeader;
+//import jakarta.annotation.PostConstruct;
+//import lombok.extern.slf4j.Slf4j;
+//import org.apache.commons.io.FileUtils;
+//import org.dromara.common.core.utils.SpringUtils;
+//import org.dromara.common.oss.core.OssClient;
+//import org.dromara.system.domain.SysOss;
+//import org.dromara.system.domain.vo.SysOssVo;
+//import org.mozilla.universalchardet.UniversalDetector;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.dromara.common.oss.factory.OssFactory;
+//import org.springframework.stereotype.Component;
+//
+///**
+// * 压缩文件处理工具类
+// * 仅支持处理ZIP格式的压缩文件
+// */
+//@Component
+//@Slf4j
+//public class CompressedFileUtils {
+//
+// private static final List ALLOWED_EXTENSIONS = new ArrayList<>(List.of(".pdf", ".ofd"));
+// private static String tempfilePath; // 保持为静态变量
+//
+// @Value("${chat.tempfilePath}") // 默认值为 D:\\ce\\tempfile
+// private String tempFilePathValue; // 用于注入的变量
+//
+// @PostConstruct
+// public void init() {
+// tempfilePath = (tempFilePathValue != null) ? tempFilePathValue : null; // 设置默认值
+// }
+//
+// /**
+// * 文件验证结果类
+// */
+// public static class FileValidationResult {
+// private final List validFiles;
+// private final List warnings;
+//
+// public FileValidationResult() {
+// this.validFiles = new ArrayList<>();
+// this.warnings = new ArrayList<>();
+// }
+//
+// public List getValidFiles() {
+// return validFiles;
+// }
+//
+// public List getWarnings() {
+// return warnings;
+// }
+//
+// public void addWarning(String warning) {
+// this.warnings.add(warning);
+// }
+//
+// public void addValidFile(File file) {
+// this.validFiles.add(file);
+// }
+// }
+//
+// /**
+// * 从MinIO下载并处理压缩文件
+// */
+// public static FileValidationResult processCompressedFileFromMinio(SysOssVo sysOss) {
+// FileValidationResult result = new FileValidationResult();
+// File tempFile = null;
+// OssClient instance = OssFactory.instance(sysOss.getService());
+//
+// try {
+// try (InputStream inputStream = instance.getObjectContent(sysOss.getFileName())) {
+// String originalFileName = sysOss.getOriginalName();
+// tempFile = new File(tempfilePath, "temp_" + System.currentTimeMillis() + "_" + originalFileName);
+// createParentDirectories(tempFile);
+//
+// try (FileOutputStream fileOutputStream = new FileOutputStream(tempFile)) {
+// copyStream(inputStream, fileOutputStream);
+// }
+//
+// result = processCompressedFile(tempFile.getAbsolutePath(), tempfilePath);
+// }
+// } catch (Exception e) {
+// result.addWarning("从MinIO下载或处理文件时发生错误: " + e.getMessage());
+// log.error("从MinIO下载或处理文件时发生错误: " + e.getMessage());
+//
+// } finally {
+// if (tempFile != null) {
+// tempFile.deleteOnExit();
+// if (!tempFile.delete()) {
+// result.addWarning("临时文件将在JVM退出时删除: " + tempFile.getAbsolutePath());
+// log.warn("临时文件将在JVM退出时删除: " + tempFile.getAbsolutePath());
+// }
+// }
+// }
+// return result;
+// }
+//
+// /**
+// * 处理压缩文件并返回处理结果
+// */
+// public static FileValidationResult processCompressedFile(String compressedFilePath, String extractPath) throws IOException {
+// FileValidationResult result = new FileValidationResult();
+// File compressedFile = new File(compressedFilePath);
+//
+// if (!compressedFile.exists()) {
+// result.addWarning("压缩文件不存在:" + compressedFilePath);
+// return result;
+// }
+//
+// if (!compressedFilePath.toLowerCase().endsWith(".zip")) {
+// result.addWarning("不支持的压缩文件格式,仅支持 ZIP 格式");
+// return result;
+// }
+//
+// processZipFile(compressedFilePath, extractPath, result);
+// return result;
+// }
+//
+// private static void processZipFile(String zipFile, String extractPath, FileValidationResult result) throws IOException {
+// InputStream inputStream = new FileInputStream(zipFile);
+// Charset charset = detectCharset(inputStream);
+// try (ZipFile zip = new ZipFile(zipFile, charset)) {
+// // 创建以压缩包名命名的文件夹
+// String zipFileName = new File(zipFile).getName();
+// String folderName = zipFileName.toLowerCase().endsWith(".zip")
+// ? zipFileName.substring(0, zipFileName.length() - 4)
+// : zipFileName;
+// String newExtractPath = new File(extractPath, folderName).getAbsolutePath();
+//
+// Enumeration extends ZipEntry> entries = zip.entries();
+// while (entries.hasMoreElements()) {
+// ZipEntry entry = entries.nextElement();
+// if (!entry.isDirectory()) {
+// String entryName = entry.getName();
+// if (isValidFileType(entryName)) {
+// // 保持原始路径结构
+// File extractedFile = new File(newExtractPath, entryName);
+// // 确保父目录存在
+// extractedFile.getParentFile().mkdirs();
+// extractZipEntry(zip, entry, extractedFile);
+// result.addValidFile(extractedFile);
+// } else {
+// result.addWarning("跳过不支持的文件类型: " + entryName);
+// }
+// }
+// }
+// } catch (IOException e) {
+// result.addWarning("处理ZIP文件时发生错误: " + e.getMessage());
+// }
+// }
+//
+// private static File extractZipEntry(ZipFile zipFile, ZipEntry entry, File outputFile) throws IOException {
+// try (InputStream inputStream = zipFile.getInputStream(entry);
+// FileOutputStream outputStream = new FileOutputStream(outputFile)) {
+// copyStream(inputStream, outputStream);
+// }
+// return outputFile;
+// }
+// /**
+// * 创建父目录
+// */
+// private static void createParentDirectories(File file) {
+// File parentFile = file.getParentFile();
+// if (parentFile != null && !parentFile.exists()) {
+// parentFile.mkdirs();
+// }
+// }
+//
+// /**
+// * 复制流数据
+// */
+// private static void copyStream(InputStream input, OutputStream output) throws IOException {
+// byte[] buffer = new byte[8192];
+// int length;
+// while ((length = input.read(buffer)) > 0) {
+// output.write(buffer, 0, length);
+// }
+// }
+//
+// /**
+// * 检查文件类型是否有效
+// */
+// private static boolean isValidFileType(String fileName) {
+// return ALLOWED_EXTENSIONS.stream()
+// .anyMatch(ext -> fileName.toLowerCase().endsWith(ext));
+// }
+//
+// /**
+// * 添加允许的文件扩展名
+// */
+// public static void addAllowedExtension(String extension) {
+// if (extension != null && extension.startsWith(".")) {
+// ALLOWED_EXTENSIONS.add(extension.toLowerCase());
+// }
+// }
+//
+// /**
+// * 获取当前支持的文件扩展名列表
+// */
+// public static List getAllowedExtensions() {
+// return new ArrayList<>(ALLOWED_EXTENSIONS);
+// }
+//
+// /**
+// * 清除所有允许的文件扩展名
+// */
+// public static void clearAllowedExtensions() {
+// ALLOWED_EXTENSIONS.clear();
+// }
+//
+// /**
+// * 移除指定的允许文件扩展名
+// */
+// public static void removeAllowedExtension(String extension) {
+// if (extension != null) {
+// ALLOWED_EXTENSIONS.remove(extension.toLowerCase());
+// }
+// }
+// public static class FileStatistics {
+// private int validFileCount;
+// private int invalidFileCount;
+// private List invalidFileNames;
+//
+// public FileStatistics() {
+// this.validFileCount = 0;
+// this.invalidFileCount = 0;
+// this.invalidFileNames = new ArrayList<>();
+// }
+//
+// public int getValidFileCount() {
+// return validFileCount;
+// }
+//
+// public int getInvalidFileCount() {
+// return invalidFileCount;
+// }
+//
+// public List getInvalidFileNames() {
+// return invalidFileNames;
+// }
+//
+// public void incrementValidCount() {
+// this.validFileCount++;
+// }
+//
+// public void addInvalidFile(String fileName) {
+// this.invalidFileCount++;
+// this.invalidFileNames.add(fileName);
+// }
+// }
+//
+// /**
+// * 获取压缩文件中的文件统计数据
+// */
+// public static FileStatistics getFileStatistics(SysOssVo sysOss) throws IOException {
+// FileStatistics statistics = new FileStatistics();
+// OssClient instance = OssFactory.instance(sysOss.getService());
+//
+// InputStream checkInputStream = instance.getObjectContent(sysOss.getFileName());
+// Charset charset = detectCharset(checkInputStream); // 动态检测字符集,会消耗流的内容
+// InputStream inputStream = instance.getObjectContent(sysOss.getFileName());
+// ZipInputStream zipInputStream = new ZipInputStream(inputStream, charset);
+// ZipEntry entry;
+// while ((entry = zipInputStream.getNextEntry()) != null) {
+// if (!entry.isDirectory()) {
+// String entryName = entry.getName();
+// if (isValidFileType(entryName)) {
+// statistics.incrementValidCount();
+// } else {
+// statistics.addInvalidFile(entryName);
+// }
+// }
+// zipInputStream.closeEntry();
+// }
+//
+// return statistics;
+//
+// }
+//
+//
+// private static Charset detectCharset(InputStream inputStream) throws IOException {
+// UniversalDetector detector = new UniversalDetector(null);
+// byte[] buf = new byte[4096];
+// int nread;
+// inputStream.read(buf);
+// detector.handleData(buf, 0, buf.length);
+// detector.dataEnd();
+//
+// String encoding = detector.getDetectedCharset();
+// detector.reset();
+//
+// if (encoding != null) {
+// return Charset.forName(encoding);
+// }
+// // 默认返回 UTF-8
+// return Charset.forName("GBK");
+// }
+//}
package org.dromara.productManagement.utils;
import java.io.*;
@@ -5,18 +316,15 @@ import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import java.util.Enumeration;
-import java.util.zip.ZipInputStream;
+import java.util.UUID;
import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.utils.SpringUtils;
+import net.lingala.zip4j.ZipFile;
+import net.lingala.zip4j.model.FileHeader;
+import org.apache.commons.io.FileUtils;
import org.dromara.common.oss.core.OssClient;
-import org.dromara.system.domain.SysOss;
import org.dromara.system.domain.vo.SysOssVo;
-import org.mozilla.universalchardet.UniversalDetector;
import org.springframework.beans.factory.annotation.Value;
import org.dromara.common.oss.factory.OssFactory;
import org.springframework.stereotype.Component;
@@ -126,59 +434,30 @@ public class CompressedFileUtils {
return result;
}
- /**
- * 处理ZIP文件
- */
-// private static void processZipFile(String zipFile, String extractPath, FileValidationResult result) throws IOException {
-// InputStream inputStream = new FileInputStream(zipFile);
-// Charset charset = detectCharset(inputStream);
-// try (ZipFile zip = new ZipFile(zipFile, charset)) {
-// // 创建以压缩包名命名的文件夹
-// String zipFileName = new File(zipFile).getName();
-// String folderName = zipFileName.toLowerCase().endsWith(".zip")
-// ? zipFileName.substring(0, zipFileName.length() - 4)
-// : zipFileName;
-// String newExtractPath = new File(extractPath, folderName).getAbsolutePath();
-//
-// Enumeration extends ZipEntry> entries = zip.entries();
-// while (entries.hasMoreElements()) {
-// ZipEntry entry = entries.nextElement();
-// if (!entry.isDirectory()) {
-// String entryName = entry.getName();
-// if (isValidFileType(entryName)) {
-// File extractedFile = extractZipEntry(zip, entry, newExtractPath);
-// result.addValidFile(extractedFile);
-// } else {
-// result.addWarning("跳过不支持的文件类型: " + entryName);
-// }
-// }
-// }
-// } catch (IOException e) {
-// result.addWarning("处理ZIP文件时发生错误: " + e.getMessage());
-// }
-// }
- private static void processZipFile(String zipFile, String extractPath, FileValidationResult result) throws IOException {
- InputStream inputStream = new FileInputStream(zipFile);
- Charset charset = detectCharset(inputStream);
- try (ZipFile zip = new ZipFile(zipFile, charset)) {
+ private static void processZipFile(String zipFilePath, String extractPath, FileValidationResult result) {
+ try (ZipFile zipFile = new ZipFile(zipFilePath)) {
// 创建以压缩包名命名的文件夹
- String zipFileName = new File(zipFile).getName();
+ String zipFileName = new File(zipFilePath).getName();
String folderName = zipFileName.toLowerCase().endsWith(".zip")
? zipFileName.substring(0, zipFileName.length() - 4)
: zipFileName;
String newExtractPath = new File(extractPath, folderName).getAbsolutePath();
-
- Enumeration extends ZipEntry> entries = zip.entries();
- while (entries.hasMoreElements()) {
- ZipEntry entry = entries.nextElement();
- if (!entry.isDirectory()) {
- String entryName = entry.getName();
+ // 根据操作系统类型设置不同的字符集
+ Charset charset = getOsSpecificCharset();
+ log.info("当前操作系统: {}, 使用字符集: {}", System.getProperty("os.name"), charset.name());
+ zipFile.setCharset(charset);
+ List fileHeaders = zipFile.getFileHeaders();
+ for (FileHeader fileHeader : fileHeaders) {
+ if (!fileHeader.isDirectory()) {
+ String entryName = fileHeader.getFileName();
if (isValidFileType(entryName)) {
// 保持原始路径结构
File extractedFile = new File(newExtractPath, entryName);
// 确保父目录存在
extractedFile.getParentFile().mkdirs();
- extractZipEntry(zip, entry, extractedFile);
+
+ // 提取文件
+ zipFile.extractFile(fileHeader, newExtractPath);
result.addValidFile(extractedFile);
} else {
result.addWarning("跳过不支持的文件类型: " + entryName);
@@ -186,30 +465,17 @@ public class CompressedFileUtils {
}
}
} catch (IOException e) {
- result.addWarning("处理ZIP文件时发生错误: " + e.getMessage());
+ new RuntimeException("处理ZIP文件时发生错误: " + e.getMessage());
}
}
- /**
- * 解压ZIP文件条目
- */
-// private static File extractZipEntry(ZipFile zipFile, ZipEntry entry, String extractPath) throws IOException {
-// // 只获取文件名,不保留原目录结构
-// String fileName = new File(entry.getName()).getName();
-// File outputFile = new File(extractPath, fileName);
-// createParentDirectories(outputFile);
-//
-// try (InputStream inputStream = zipFile.getInputStream(entry);
-// FileOutputStream outputStream = new FileOutputStream(outputFile)) {
-// copyStream(inputStream, outputStream);
-// }
-// return outputFile;
-// }
- private static File extractZipEntry(ZipFile zipFile, ZipEntry entry, File outputFile) throws IOException {
- try (InputStream inputStream = zipFile.getInputStream(entry);
- FileOutputStream outputStream = new FileOutputStream(outputFile)) {
- copyStream(inputStream, outputStream);
+ private static boolean isRandomCode(List fileHeaders) {
+ for (FileHeader fileHeader : fileHeaders) {
+ boolean canEnCode = Charset.forName("GBK").newEncoder().canEncode(fileHeader.getFileName());
+ if (!canEnCode) {//canEnCode为true,表示不是乱码。false.表示乱码。是乱码则需要重新设置编码格式
+ return true;
+ }
}
- return outputFile;
+ return false;
}
/**
* 创建父目录
@@ -220,7 +486,31 @@ public class CompressedFileUtils {
parentFile.mkdirs();
}
}
+ private static boolean isWindows() {
+ String os = System.getProperty("os.name").toLowerCase();
+ return os.contains("win");
+ }
+ /**
+ * 判断当前操作系统是否为Linux
+ */
+ private static boolean isLinux() {
+ String os = System.getProperty("os.name").toLowerCase();
+ return os.contains("linux");
+ }
+
+ /**
+ * 获取适合当前操作系统的字符集
+ */
+ private static Charset getOsSpecificCharset() {
+ if (isWindows()) {
+ // Windows环境默认使用GBK编码
+ return Charset.forName("GBK");
+ } else {
+ // 其他操作系统默认使用UTF-8
+ return StandardCharsets.UTF_8;
+ }
+ }
/**
* 复制流数据
*/
@@ -271,6 +561,7 @@ public class CompressedFileUtils {
ALLOWED_EXTENSIONS.remove(extension.toLowerCase());
}
}
+
public static class FileStatistics {
private int validFileCount;
private int invalidFileCount;
@@ -311,41 +602,43 @@ public class CompressedFileUtils {
FileStatistics statistics = new FileStatistics();
OssClient instance = OssFactory.instance(sysOss.getService());
- InputStream checkInputStream = instance.getObjectContent(sysOss.getFileName());
- Charset charset = detectCharset(checkInputStream); // 动态检测字符集,会消耗流的内容
- InputStream inputStream = instance.getObjectContent(sysOss.getFileName());
- ZipInputStream zipInputStream = new ZipInputStream(inputStream, charset);
- ZipEntry entry;
- while ((entry = zipInputStream.getNextEntry()) != null) {
- if (!entry.isDirectory()) {
- String entryName = entry.getName();
+ // 创建临时文件
+ File tempFile = File.createTempFile("temp_zip_", ".zip");
+ try {
+ // 将OSS文件下载到临时文件
+ InputStream inputStream = instance.getObjectContent(sysOss.getFileName());
+ FileUtils.copyInputStreamToFile(inputStream, tempFile);
+
+ // 使用zip4j打开ZIP文件
+ ZipFile zipFile = new ZipFile(tempFile);
+ Charset charset = getOsSpecificCharset();
+ log.info("当前操作系统: {}, 使用字符集: {}", System.getProperty("os.name"), charset.name());
+ zipFile.setCharset(charset);
+ // 获取所有文件条目并分析
+ List fileHeaders = zipFile.getFileHeaders();
+ if (isRandomCode(fileHeaders)) {
+ log.info("使用UTF-8解压文件【{}】时乱码,尝试使用GBK重新解压",tempFile);
+ zipFile.setCharset(Charset.forName("GBK"));
+ }else{
+ zipFile.setCharset(StandardCharsets.UTF_8);
+ }
+ for (FileHeader header : fileHeaders) {
+ if (!header.isDirectory()) {
+ String entryName = header.getFileName();
if (isValidFileType(entryName)) {
statistics.incrementValidCount();
} else {
statistics.addInvalidFile(entryName);
}
}
- zipInputStream.closeEntry();
}
+ } finally {
+ // 清理临时文件
+ if (tempFile != null && tempFile.exists()) {
+ tempFile.delete();
+ }
+ }
return statistics;
-
- }
- private static Charset detectCharset(InputStream inputStream) throws IOException {
- UniversalDetector detector = new UniversalDetector(null);
- byte[] buf = new byte[4096];
- int nread;
- inputStream.read(buf);
- detector.handleData(buf, 0, buf.length);
- detector.dataEnd();
-
- String encoding = detector.getDetectedCharset();
- detector.reset();
-
- if (encoding != null) {
- return Charset.forName(encoding);
- }
- // 默认返回 UTF-8
- return Charset.forName("GBK");
}
}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualAuditConfigMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualAuditConfigMapper.xml
new file mode 100644
index 0000000..9d4f5e4
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualAuditConfigMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualProductInfoMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualProductInfoMapper.xml
new file mode 100644
index 0000000..78f51b5
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualProductInfoMapper.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 f944b79..b366567 100644
--- a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksMapper.xml
+++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksMapper.xml
@@ -28,6 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
create_by,
task_industry,
task_region,
+ problem_point,
create_time as group_create_time,
CASE
WHEN (SUM(CASE WHEN progress_status IN ('SUCCESS', 'FAILURE') THEN 1 ELSE 0 END) * 100.0) / COUNT(*) = 100
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/JyjContractualTaskBatchMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/JyjContractualTaskBatchMapper.xml
index c4e5e9d..66a5063 100644
--- a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/JyjContractualTaskBatchMapper.xml
+++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/JyjContractualTaskBatchMapper.xml
@@ -10,7 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
b.document_name AS document_name,
b.batch_name AS batch_name,
b.total_contracts AS total_contracts,
- MAX(fr.create_time) as latest_time,
+ MAX(b.create_time) as latest_time,
COUNT(CASE WHEN fr.result_type = 'reviewSuccess' THEN 1 END) AS pass_count,
COUNT(CASE WHEN fr.result_type = 'reviewFail' THEN 1 END) AS reject_count,
COUNT(CASE WHEN fr.result_type = 'notReviewable' THEN 1 END) AS irrelevant_count,
@@ -40,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
GROUP BY
- b.id,b.document_name, b.batch_name, b.total_contracts
+ b.id,b.document_name, b.batch_name, b.total_contracts, b.create_time
having
progress_status=#{bo.progressStatus}
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementContractualNormalMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementContractualNormalMapper.xml
new file mode 100644
index 0000000..b972b6d
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementContractualNormalMapper.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ DELETE FROM requirement_contractual_normal ${ew.getCustomSqlSegment}
+
+
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementCpuosdatabaseMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementCpuosdatabaseMapper.xml
new file mode 100644
index 0000000..7112959
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementCpuosdatabaseMapper.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ DELETE FROM requirement_cpuosdatabase ${ew.getCustomSqlSegment}
+
+
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementEntityMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementEntityMapper.xml
new file mode 100644
index 0000000..ad46042
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementEntityMapper.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ DELETE FROM requirement_entity ${ew.getCustomSqlSegment}
+
+
diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementProductAttributeMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementProductAttributeMapper.xml
new file mode 100644
index 0000000..5375b5a
--- /dev/null
+++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/RequirementProductAttributeMapper.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ DELETE FROM requirement_product_attribute
+ ${ew.getCustomSqlSegment}
+
+