Browse Source

v1

environment_dev
gjh 4 weeks ago
parent
commit
3e08ee5dc1
  1. 105
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/ProjectFileInfoController.java
  2. 24
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/DEAExample.java
  3. 15
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/Attachment.java
  4. 89
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/AttachmentSerializer.java
  5. 162
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/ProjectFileInfo.java
  6. 180
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/ProjectFileInfoBo.java
  7. 188
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ProjectFileInfoVo.java
  8. 15
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/mapper/ProjectFileInfoMapper.java
  9. 68
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/IProjectFileInfoService.java
  10. 153
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ProjectFileInfoServiceImpl.java

105
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/ProjectFileInfoController.java

@ -0,0 +1,105 @@
package org.dromara.demo.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.demo.domain.vo.ProjectFileInfoVo;
import org.dromara.demo.domain.bo.ProjectFileInfoBo;
import org.dromara.demo.service.IProjectFileInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 项目文件信息
*
* @author GJH
* @date 2025-08-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/project/fileInfo")
public class ProjectFileInfoController extends BaseController {
private final IProjectFileInfoService projectFileInfoService;
/**
* 查询项目文件信息列表
*/
@SaCheckPermission("project:fileInfo:list")
@GetMapping("/list")
public TableDataInfo<ProjectFileInfoVo> list(ProjectFileInfoBo bo, PageQuery pageQuery) {
return projectFileInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出项目文件信息列表
*/
@SaCheckPermission("project:fileInfo:export")
@Log(title = "项目文件信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProjectFileInfoBo bo, HttpServletResponse response) {
List<ProjectFileInfoVo> list = projectFileInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "项目文件信息", ProjectFileInfoVo.class, response);
}
/**
* 获取项目文件信息详细信息
*
* @param id 主键
*/
@SaCheckPermission("project:fileInfo:query")
@GetMapping("/{id}")
public R<ProjectFileInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(projectFileInfoService.queryById(id));
}
/**
* 新增项目文件信息
*/
@SaCheckPermission("project:fileInfo:add")
@Log(title = "项目文件信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProjectFileInfoBo bo) {
return toAjax(projectFileInfoService.insertByBo(bo));
}
/**
* 修改项目文件信息
*/
@SaCheckPermission("project:fileInfo:edit")
@Log(title = "项目文件信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProjectFileInfoBo bo) {
return toAjax(projectFileInfoService.updateByBo(bo));
}
/**
* 删除项目文件信息
*
* @param ids 主键串
*/
@SaCheckPermission("project:fileInfo:remove")
@Log(title = "项目文件信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(projectFileInfoService.deleteWithValidByIds(List.of(ids), true));
}
}

24
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/DEAExample.java

@ -10,25 +10,27 @@ public class DEAExample {
// 示例:3个DMU,2个投入指标,1个产出指标 // 示例:3个DMU,2个投入指标,1个产出指标
// 投入矩阵: 每行代表一个DMU的投入 // 投入矩阵: 每行代表一个DMU的投入
// 例如: 投入可以是员工数量和资金投入 // 例如: 投入可以是员工数量和资金投入
// 1 2 3 4
double[][] inputs = { double[][] inputs = {
{2, 3}, // DMU 0的投入 {2,2,1,2,1,1}, // DMU 0的投入
{3, 4}, // DMU 1的投入 {3,2,5,4,4,1}, // DMU 0的投入
{1, 5}, // DMU 2的投入 {2,3,3,3,5,3}, // DMU 0的投入
{2, 3}, // DMU 3的投入 {5,4,1,2,2,1}, // DMU 0的投入
{3, 4}, // DMU 4的投入 {2,3,3,3,5,3}, // DMU 0的投入
{1, 5} // DMU 5的投入 {5,4,1,2,2,1}, // DMU 0的投入
}; };
// 产出矩阵: 每行代表一个DMU的产出 // 产出矩阵: 每行代表一个DMU的产出
// 例如: 产出可以是利润 // 例如: 产出可以是利润
double[][] outputs = { double[][] outputs = {
{4}, // DMU 0的产出
{3}, // DMU 0的产出
{2}, // DMU 0的产出
{3}, // DMU 0的产出
{5}, // DMU 0的产出 {5}, // DMU 0的产出
{6}, // DMU 1的产出
{4}, // DMU 2的产出
{5}, // DMU 0的产出 {5}, // DMU 0的产出
{6}, // DMU 1的产出
{4} // DMU 2的产出
}; };
// 计算所有DMU的效率值 // 计算所有DMU的效率值

15
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/Attachment.java

@ -0,0 +1,15 @@
package org.dromara.demo.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Attachment {
private String url;
private String name;
private String ossId;
}

89
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/AttachmentSerializer.java

@ -0,0 +1,89 @@
package org.dromara.demo.domain;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
import java.util.List;
public class AttachmentSerializer {
private final ObjectMapper objectMapper = new ObjectMapper();
/**
* 将List<Attachment>序列化为JSON字符串
*
* @param attachment 包含附件信息的列表
* @return 序列化后的JSON字符串
*/
public String serializeAttachments(List<Attachment> attachment) {
try {
// 使用ObjectMapper将List<Attachment>转换为JSON字符串
return objectMapper.writeValueAsString(attachment);
} catch (JsonProcessingException e) {
// 处理可能发生的异常
e.printStackTrace();
// 根据实际情况决定如何处理错误,这里简单地返回null
return null;
}
}
/**
* 将JSON字符串反序列化为List<Attachment>
*
* @param attachmentJson JSON格式的字符串
* @return 反序列化后的List<Attachment>
*/
public List<Attachment> deserializeAttachments(String attachmentJson) {
try {
// 使用ObjectMapper将JSON字符串转换回List<Attachment>
return objectMapper.readValue(attachmentJson, new TypeReference<List<Attachment>>() {});
} catch (JsonProcessingException e) {
// 处理可能发生的异常
e.printStackTrace();
// 根据实际情况决定如何处理错误,这里简单地返回null
return null;
}
}
// 测试方法
public static void main(String[] args) {
AttachmentSerializer serializer = new AttachmentSerializer();
// 创建一些模拟数据
List<Attachment> attachmentList = List.of(
new Attachment("http://example.com/file1.pdf", "File One", "ossId1"),
new Attachment("http://example.com/file2.docx", "File Two", "ossId2")
);
// 序列化
String serialized = serializer.serializeAttachments(attachmentList);
System.out.println(serialized); // 输出序列化后的JSON字符串
// 反序列化
List<Attachment> deserializedAttachments = serializer.deserializeAttachments(serialized);
System.out.println("Deserialized:");
if (deserializedAttachments != null) {
for (Attachment attachment : deserializedAttachments) {
System.out.println("URL: " + attachment.getUrl() + ", Name: " + attachment.getName() + ", ossId: " + attachment.getOssId());
}
} else {
System.out.println("Failed to deserialize the JSON string.");
}
// 模拟前端传来的字符串数组
String[] inputArray = {"A", "B", "C"};
System.out.println("输入的数组:"+ Arrays.toString(inputArray));
// 使用 String.join() 将数组元素用 "/" 连接
String result = String.join("/", inputArray);
// 输出结果
System.out.println("存入数据库中的结果:"+result); // 输出: A/B/C
// 使用 split 方法按 "/" 分割
String[] oldInputArray = result.split("/");
System.out.println("还原输入的数组:"+ Arrays.toString(oldInputArray));
}
}

162
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/ProjectFileInfo.java

@ -0,0 +1,162 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 项目文件信息对象 project_file_info
*
* @author GJH
* @date 2025-08-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("project_file_info")
public class ProjectFileInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private String id;
/**
* 项目id
*/
private String projectId;
/**
* 项目建议书
*/
private String projectProposal;
/**
* 可行性研究
*/
private String feasibilityStudy;
/**
* 初步设计
*/
private String preliminaryDesign;
/**
* 其他程序(项目前期立项)
*/
private String otherProcedure1;
/**
* 招标文件
*/
private String tenderDocument;
/**
* 投标文件
*/
private String bidDocument;
/**
* 其他程序(联合体招投标)
*/
private String otherProcedure2;
/**
* 工程开工
*/
private String projectCommencement;
/**
* 施工设计
*/
private String constructionDesign;
/**
* 资金来源
*/
private String fundingSource;
/**
* 进度管理
*/
private String scheduleManagement;
/**
* 成本管理
*/
private String costManagement;
/**
* 质量管理
*/
private String qualityManagement;
/**
* 合同管理
*/
private String contractManagement;
/**
* 技术管理
*/
private String technicalManagement;
/**
* 调试运行
*/
private String commissioningOperation;
/**
* 环保验收
*/
private String environmentalAcceptance;
/**
* 竣工验收
*/
private String finalAcceptance;
/**
* 工程结算
*/
private String projectSettlement;
/**
* 项目总结
*/
private String projectSummary;
/**
* 定期巡查
*/
private String regularInspection;
/**
* 管理模式
*/
private String managementModel;
/**
* 运行日志
*/
private String operationLog;
/**
* 当前状态
*/
private Long status;
/**
* 删除标志0代表存在 2代表删除
*/
@TableLogic
private String delFlag;
}

180
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/ProjectFileInfoBo.java

@ -0,0 +1,180 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.ProjectFileInfo;
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.*;
/**
* 项目文件信息业务对象 project_file_info
*
* @author GJH
* @date 2025-08-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ProjectFileInfo.class, reverseConvertGenerate = false)
public class ProjectFileInfoBo extends BaseEntity {
/**
* 主键
*/
// @NotBlank(message = "主键不能为空", groups = { EditGroup.class })
private String id;
/**
* 项目id
*/
// @NotBlank(message = "项目id不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectId;
/**
* 项目建议书
*/
// @NotBlank(message = "项目建议书不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectProposal;
/**
* 可行性研究
*/
// @NotBlank(message = "可行性研究不能为空", groups = { AddGroup.class, EditGroup.class })
private String feasibilityStudy;
/**
* 初步设计
*/
// @NotBlank(message = "初步设计不能为空", groups = { AddGroup.class, EditGroup.class })
private String preliminaryDesign;
/**
* 其他程序(项目前期立项)
*/
// @NotBlank(message = "其他程序(项目前期立项)不能为空", groups = { AddGroup.class, EditGroup.class })
private String otherProcedure1;
/**
* 招标文件
*/
// @NotBlank(message = "招标文件不能为空", groups = { AddGroup.class, EditGroup.class })
private String tenderDocument;
/**
* 投标文件
*/
// @NotBlank(message = "投标文件不能为空", groups = { AddGroup.class, EditGroup.class })
private String bidDocument;
/**
* 其他程序(联合体招投标)
*/
// @NotBlank(message = "其他程序(联合体招投标)不能为空", groups = { AddGroup.class, EditGroup.class })
private String otherProcedure2;
/**
* 工程开工
*/
// @NotBlank(message = "工程开工不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectCommencement;
/**
* 施工设计
*/
// @NotBlank(message = "施工设计不能为空", groups = { AddGroup.class, EditGroup.class })
private String constructionDesign;
/**
* 资金来源
*/
// @NotBlank(message = "资金来源不能为空", groups = { AddGroup.class, EditGroup.class })
private String fundingSource;
/**
* 进度管理
*/
// @NotBlank(message = "进度管理不能为空", groups = { AddGroup.class, EditGroup.class })
private String scheduleManagement;
/**
* 成本管理
*/
// @NotBlank(message = "成本管理不能为空", groups = { AddGroup.class, EditGroup.class })
private String costManagement;
/**
* 质量管理
*/
// @NotBlank(message = "质量管理不能为空", groups = { AddGroup.class, EditGroup.class })
private String qualityManagement;
/**
* 合同管理
*/
// @NotBlank(message = "合同管理不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractManagement;
/**
* 技术管理
*/
// @NotBlank(message = "技术管理不能为空", groups = { AddGroup.class, EditGroup.class })
private String technicalManagement;
/**
* 调试运行
*/
// @NotBlank(message = "调试运行不能为空", groups = { AddGroup.class, EditGroup.class })
private String commissioningOperation;
/**
* 环保验收
*/
// @NotBlank(message = "环保验收不能为空", groups = { AddGroup.class, EditGroup.class })
private String environmentalAcceptance;
/**
* 竣工验收
*/
// @NotBlank(message = "竣工验收不能为空", groups = { AddGroup.class, EditGroup.class })
private String finalAcceptance;
/**
* 工程结算
*/
// @NotBlank(message = "工程结算不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectSettlement;
/**
* 项目总结
*/
// @NotBlank(message = "项目总结不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectSummary;
/**
* 定期巡查
*/
// @NotBlank(message = "定期巡查不能为空", groups = { AddGroup.class, EditGroup.class })
private String regularInspection;
/**
* 管理模式
*/
// @NotBlank(message = "管理模式不能为空", groups = { AddGroup.class, EditGroup.class })
private String managementModel;
/**
* 运行日志
*/
// @NotBlank(message = "运行日志不能为空", groups = { AddGroup.class, EditGroup.class })
private String operationLog;
/**
* 当前状态
*/
// @NotNull(message = "当前状态不能为空", groups = { AddGroup.class, EditGroup.class })
private Long status;
}

188
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ProjectFileInfoVo.java

@ -0,0 +1,188 @@
package org.dromara.demo.domain.vo;
import org.dromara.demo.domain.ProjectFileInfo;
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;
/**
* 项目文件信息视图对象 project_file_info
*
* @author GJH
* @date 2025-08-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ProjectFileInfo.class)
public class ProjectFileInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private String id;
/**
* 项目id
*/
@ExcelProperty(value = "项目id")
private String projectId;
/**
* 项目建议书
*/
@ExcelProperty(value = "项目建议书")
private String projectProposal;
/**
* 可行性研究
*/
@ExcelProperty(value = "可行性研究")
private String feasibilityStudy;
/**
* 初步设计
*/
@ExcelProperty(value = "初步设计")
private String preliminaryDesign;
/**
* 其他程序(项目前期立项)
*/
@ExcelProperty(value = "其他程序(项目前期立项)")
private String otherProcedure1;
/**
* 招标文件
*/
@ExcelProperty(value = "招标文件")
private String tenderDocument;
/**
* 投标文件
*/
@ExcelProperty(value = "投标文件")
private String bidDocument;
/**
* 其他程序(联合体招投标)
*/
@ExcelProperty(value = "其他程序(联合体招投标)")
private String otherProcedure2;
/**
* 工程开工
*/
@ExcelProperty(value = "工程开工")
private String projectCommencement;
/**
* 施工设计
*/
@ExcelProperty(value = "施工设计")
private String constructionDesign;
/**
* 资金来源
*/
@ExcelProperty(value = "资金来源")
private String fundingSource;
/**
* 进度管理
*/
@ExcelProperty(value = "进度管理")
private String scheduleManagement;
/**
* 成本管理
*/
@ExcelProperty(value = "成本管理")
private String costManagement;
/**
* 质量管理
*/
@ExcelProperty(value = "质量管理")
private String qualityManagement;
/**
* 合同管理
*/
@ExcelProperty(value = "合同管理")
private String contractManagement;
/**
* 技术管理
*/
@ExcelProperty(value = "技术管理")
private String technicalManagement;
/**
* 调试运行
*/
@ExcelProperty(value = "调试运行")
private String commissioningOperation;
/**
* 环保验收
*/
@ExcelProperty(value = "环保验收")
private String environmentalAcceptance;
/**
* 竣工验收
*/
@ExcelProperty(value = "竣工验收")
private String finalAcceptance;
/**
* 工程结算
*/
@ExcelProperty(value = "工程结算")
private String projectSettlement;
/**
* 项目总结
*/
@ExcelProperty(value = "项目总结")
private String projectSummary;
/**
* 定期巡查
*/
@ExcelProperty(value = "定期巡查")
private String regularInspection;
/**
* 管理模式
*/
@ExcelProperty(value = "管理模式")
private String managementModel;
/**
* 运行日志
*/
@ExcelProperty(value = "运行日志")
private String operationLog;
/**
* 当前状态
*/
@ExcelProperty(value = "当前状态")
private Long status;
}

15
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/mapper/ProjectFileInfoMapper.java

@ -0,0 +1,15 @@
package org.dromara.demo.mapper;
import org.dromara.demo.domain.ProjectFileInfo;
import org.dromara.demo.domain.vo.ProjectFileInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 项目文件信息Mapper接口
*
* @author GJH
* @date 2025-08-19
*/
public interface ProjectFileInfoMapper extends BaseMapperPlus<ProjectFileInfo, ProjectFileInfoVo> {
}

68
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/IProjectFileInfoService.java

@ -0,0 +1,68 @@
package org.dromara.demo.service;
import org.dromara.demo.domain.vo.ProjectFileInfoVo;
import org.dromara.demo.domain.bo.ProjectFileInfoBo;
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 GJH
* @date 2025-08-19
*/
public interface IProjectFileInfoService {
/**
* 查询项目文件信息
*
* @param id 主键
* @return 项目文件信息
*/
ProjectFileInfoVo queryById(String id);
/**
* 分页查询项目文件信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 项目文件信息分页列表
*/
TableDataInfo<ProjectFileInfoVo> queryPageList(ProjectFileInfoBo bo, PageQuery pageQuery);
/**
* 查询符合条件的项目文件信息列表
*
* @param bo 查询条件
* @return 项目文件信息列表
*/
List<ProjectFileInfoVo> queryList(ProjectFileInfoBo bo);
/**
* 新增项目文件信息
*
* @param bo 项目文件信息
* @return 是否新增成功
*/
Boolean insertByBo(ProjectFileInfoBo bo);
/**
* 修改项目文件信息
*
* @param bo 项目文件信息
* @return 是否修改成功
*/
Boolean updateByBo(ProjectFileInfoBo bo);
/**
* 校验并批量删除项目文件信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
}

153
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ProjectFileInfoServiceImpl.java

@ -0,0 +1,153 @@
package org.dromara.demo.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.demo.domain.bo.ProjectFileInfoBo;
import org.dromara.demo.domain.vo.ProjectFileInfoVo;
import org.dromara.demo.domain.ProjectFileInfo;
import org.dromara.demo.mapper.ProjectFileInfoMapper;
import org.dromara.demo.service.IProjectFileInfoService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 项目文件信息Service业务层处理
*
* @author GJH
* @date 2025-08-19
*/
@RequiredArgsConstructor
@Service
public class ProjectFileInfoServiceImpl implements IProjectFileInfoService {
private final ProjectFileInfoMapper baseMapper;
/**
* 查询项目文件信息
*
* @param id 主键
* @return 项目文件信息
*/
@Override
public ProjectFileInfoVo queryById(String id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询项目文件信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 项目文件信息分页列表
*/
@Override
public TableDataInfo<ProjectFileInfoVo> queryPageList(ProjectFileInfoBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<ProjectFileInfo> lqw = buildQueryWrapper(bo);
Page<ProjectFileInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的项目文件信息列表
*
* @param bo 查询条件
* @return 项目文件信息列表
*/
@Override
public List<ProjectFileInfoVo> queryList(ProjectFileInfoBo bo) {
LambdaQueryWrapper<ProjectFileInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<ProjectFileInfo> buildQueryWrapper(ProjectFileInfoBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ProjectFileInfo> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getProjectId()), ProjectFileInfo::getProjectId, bo.getProjectId());
lqw.eq(StringUtils.isNotBlank(bo.getProjectProposal()), ProjectFileInfo::getProjectProposal, bo.getProjectProposal());
lqw.eq(StringUtils.isNotBlank(bo.getFeasibilityStudy()), ProjectFileInfo::getFeasibilityStudy, bo.getFeasibilityStudy());
lqw.eq(StringUtils.isNotBlank(bo.getPreliminaryDesign()), ProjectFileInfo::getPreliminaryDesign, bo.getPreliminaryDesign());
lqw.eq(StringUtils.isNotBlank(bo.getOtherProcedure1()), ProjectFileInfo::getOtherProcedure1, bo.getOtherProcedure1());
lqw.eq(StringUtils.isNotBlank(bo.getTenderDocument()), ProjectFileInfo::getTenderDocument, bo.getTenderDocument());
lqw.eq(StringUtils.isNotBlank(bo.getBidDocument()), ProjectFileInfo::getBidDocument, bo.getBidDocument());
lqw.eq(StringUtils.isNotBlank(bo.getOtherProcedure2()), ProjectFileInfo::getOtherProcedure2, bo.getOtherProcedure2());
lqw.eq(StringUtils.isNotBlank(bo.getProjectCommencement()), ProjectFileInfo::getProjectCommencement, bo.getProjectCommencement());
lqw.eq(StringUtils.isNotBlank(bo.getConstructionDesign()), ProjectFileInfo::getConstructionDesign, bo.getConstructionDesign());
lqw.eq(StringUtils.isNotBlank(bo.getFundingSource()), ProjectFileInfo::getFundingSource, bo.getFundingSource());
lqw.eq(StringUtils.isNotBlank(bo.getScheduleManagement()), ProjectFileInfo::getScheduleManagement, bo.getScheduleManagement());
lqw.eq(StringUtils.isNotBlank(bo.getCostManagement()), ProjectFileInfo::getCostManagement, bo.getCostManagement());
lqw.eq(StringUtils.isNotBlank(bo.getQualityManagement()), ProjectFileInfo::getQualityManagement, bo.getQualityManagement());
lqw.eq(StringUtils.isNotBlank(bo.getContractManagement()), ProjectFileInfo::getContractManagement, bo.getContractManagement());
lqw.eq(StringUtils.isNotBlank(bo.getTechnicalManagement()), ProjectFileInfo::getTechnicalManagement, bo.getTechnicalManagement());
lqw.eq(StringUtils.isNotBlank(bo.getCommissioningOperation()), ProjectFileInfo::getCommissioningOperation, bo.getCommissioningOperation());
lqw.eq(StringUtils.isNotBlank(bo.getEnvironmentalAcceptance()), ProjectFileInfo::getEnvironmentalAcceptance, bo.getEnvironmentalAcceptance());
lqw.eq(StringUtils.isNotBlank(bo.getFinalAcceptance()), ProjectFileInfo::getFinalAcceptance, bo.getFinalAcceptance());
lqw.eq(StringUtils.isNotBlank(bo.getProjectSettlement()), ProjectFileInfo::getProjectSettlement, bo.getProjectSettlement());
lqw.eq(StringUtils.isNotBlank(bo.getProjectSummary()), ProjectFileInfo::getProjectSummary, bo.getProjectSummary());
lqw.eq(StringUtils.isNotBlank(bo.getRegularInspection()), ProjectFileInfo::getRegularInspection, bo.getRegularInspection());
lqw.eq(StringUtils.isNotBlank(bo.getManagementModel()), ProjectFileInfo::getManagementModel, bo.getManagementModel());
lqw.eq(StringUtils.isNotBlank(bo.getOperationLog()), ProjectFileInfo::getOperationLog, bo.getOperationLog());
lqw.eq(bo.getStatus() != null, ProjectFileInfo::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增项目文件信息
*
* @param bo 项目文件信息
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(ProjectFileInfoBo bo) {
ProjectFileInfo add = MapstructUtils.convert(bo, ProjectFileInfo.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改项目文件信息
*
* @param bo 项目文件信息
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(ProjectFileInfoBo bo) {
ProjectFileInfo update = MapstructUtils.convert(bo, ProjectFileInfo.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(ProjectFileInfo entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除项目文件信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}
Loading…
Cancel
Save