[update] 项目立项

This commit is contained in:
lcj
2025-08-19 19:46:36 +08:00
parent 4aa7861f66
commit 7f51a48f17
9 changed files with 119 additions and 84 deletions

View File

@ -17,10 +17,7 @@ import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.project.domain.dto.project.BusProjectCreateReq; import org.dromara.project.domain.dto.project.*;
import org.dromara.project.domain.dto.project.BusProjectCreateSubReq;
import org.dromara.project.domain.dto.project.BusProjectQueryReq;
import org.dromara.project.domain.dto.project.BusProjectUpdateReq;
import org.dromara.project.domain.vo.project.*; import org.dromara.project.domain.vo.project.*;
import org.dromara.project.service.IBusProjectService; import org.dromara.project.service.IBusProjectService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -151,6 +148,17 @@ public class BusProjectController extends BaseController {
return toAjax(projectService.updateByBo(req)); return toAjax(projectService.updateByBo(req));
} }
/**
* 保存项目招标文件
*/
@SaCheckPermission("project:project:saveTenderFile")
@Log(title = "项目", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/save/tender/file")
public R<Void> uploadTenderFile(@RequestBody BusProjectSaveTenderFileReq req) {
return toAjax(projectService.saveTenderFile(req));
}
/** /**
* 删除项目 * 删除项目
* *

View File

@ -81,9 +81,9 @@ public class BusProject extends BaseEntity {
private String projectType; private String projectType;
/** /**
* 项目类别 * 项目阶段
*/ */
private String projectCategory; private String projectStage;
/** /**
* 删除时间 * 删除时间
@ -135,6 +135,11 @@ public class BusProject extends BaseEntity {
*/ */
private String securityAgreement; private String securityAgreement;
/**
* 招标文件
*/
private String tenderFiles;
/** /**
* 排序字段 * 排序字段
*/ */

View File

@ -51,9 +51,9 @@ public class BusProjectCreateReq implements Serializable {
private String projectType; private String projectType;
/** /**
* 项目类别 * 项目阶段
*/ */
private String projectCategory; private String projectStage;
/** /**
* 项目地址 * 项目地址
@ -105,6 +105,11 @@ public class BusProjectCreateReq implements Serializable {
*/ */
private String securityAgreement; private String securityAgreement;
/**
* 招标文件
*/
private String tenderFiles;
/** /**
* 排序字段 * 排序字段
*/ */

View File

@ -40,30 +40,15 @@ public class BusProjectQueryReq implements Serializable {
*/ */
private String status; private String status;
/**
* 经度
*/
private String lng;
/**
* 纬度
*/
private String lat;
/**
* 备注
*/
private String remark;
/** /**
* 项目类型 * 项目类型
*/ */
private String projectType; private String projectType;
/** /**
* 项目类别 * 项目阶段
*/ */
private String projectCategory; private String projectStage;
/** /**
* 项目地址 * 项目地址
@ -80,31 +65,6 @@ public class BusProjectQueryReq implements Serializable {
*/ */
private String principalPhone; private String principalPhone;
/**
* 实际容量
*/
private String actual;
/**
* 计划容量
*/
private String plan;
/**
* 开工时间
*/
private String onStreamTime;
/**
* 打卡范围09:00,18:00
*/
private String punchRange;
/**
* 设计总量
*/
private Long designTotal;
/** /**
* 显示隐藏0显示 1隐藏 * 显示隐藏0显示 1隐藏
*/ */

View File

@ -0,0 +1,31 @@
package org.dromara.project.domain.dto.project;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lilemy
* @date 2025-08-19 17:34
*/
@Data
public class BusProjectSaveTenderFileReq implements Serializable {
@Serial
private static final long serialVersionUID = -8690332210810915922L;
/**
* id
*/
@NotNull(message = "项目id不能为空")
private Long id;
/**
* 招标文件
*/
@NotBlank(message = "招标文件不能为空")
private String tenderFiles;
}

View File

@ -68,9 +68,9 @@ public class BusProjectUpdateReq implements Serializable {
private String projectType; private String projectType;
/** /**
* 项目类别 * 项目阶段
*/ */
private String projectCategory; private String projectStage;
/** /**
* 项目地址 * 项目地址
@ -122,6 +122,11 @@ public class BusProjectUpdateReq implements Serializable {
*/ */
private String securityAgreement; private String securityAgreement;
/**
* 招标文件
*/
private String tenderFiles;
/** /**
* 显示隐藏0显示 1隐藏 * 显示隐藏0显示 1隐藏
*/ */

View File

@ -92,11 +92,11 @@ public class BusProjectVo implements Serializable {
private String projectType; private String projectType;
/** /**
* 项目类别 * 项目阶段
*/ */
@ExcelProperty(value = "项目类型", converter = ExcelDictConvert.class) @ExcelProperty(value = "项目阶段", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "project_category_type") @ExcelDictFormat(dictType = "project_stage")
private String projectCategory; private String projectStage;
/** /**
* 项目地址 * 项目地址
@ -162,6 +162,12 @@ public class BusProjectVo implements Serializable {
@ExcelProperty(value = "安全协议书") @ExcelProperty(value = "安全协议书")
private String securityAgreement; private String securityAgreement;
/**
* 招标文件
*/
@ExcelProperty(value = "招标文件")
private String tenderFiles;
/** /**
* 显示隐藏0显示 1隐藏 * 显示隐藏0显示 1隐藏
*/ */

View File

@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.project.domain.BusProject; import org.dromara.project.domain.BusProject;
import org.dromara.project.domain.dto.project.BusProjectCreateReq; import org.dromara.project.domain.dto.project.*;
import org.dromara.project.domain.dto.project.BusProjectCreateSubReq;
import org.dromara.project.domain.dto.project.BusProjectQueryReq;
import org.dromara.project.domain.dto.project.BusProjectUpdateReq;
import org.dromara.project.domain.vo.project.*; import org.dromara.project.domain.vo.project.*;
import java.util.Collection; import java.util.Collection;
@ -111,6 +108,14 @@ public interface IBusProjectService extends IService<BusProject> {
*/ */
Boolean updateByBo(BusProjectUpdateReq req); Boolean updateByBo(BusProjectUpdateReq req);
/**
* 保存项目招标文件
*
* @param req 项目招标文件
* @return 是否保存成功
*/
Boolean saveTenderFile(BusProjectSaveTenderFileReq req);
/** /**
* 校验并批量删除项目信息 * 校验并批量删除项目信息
* *
@ -175,5 +180,4 @@ public interface IBusProjectService extends IService<BusProject> {
* @return 安全天数 * @return 安全天数
*/ */
BusProjectSafetyDayVo getSafetyDay(Long id); BusProjectSafetyDayVo getSafetyDay(Long id);
} }

View File

@ -42,10 +42,7 @@ import org.dromara.project.domain.BusProjectFile;
import org.dromara.project.domain.BusProjectPunchrange; import org.dromara.project.domain.BusProjectPunchrange;
import org.dromara.project.domain.BusUserProjectRelevancy; import org.dromara.project.domain.BusUserProjectRelevancy;
import org.dromara.project.domain.bo.Punchrange; import org.dromara.project.domain.bo.Punchrange;
import org.dromara.project.domain.dto.project.BusProjectCreateReq; import org.dromara.project.domain.dto.project.*;
import org.dromara.project.domain.dto.project.BusProjectCreateSubReq;
import org.dromara.project.domain.dto.project.BusProjectQueryReq;
import org.dromara.project.domain.dto.project.BusProjectUpdateReq;
import org.dromara.project.domain.vo.project.*; import org.dromara.project.domain.vo.project.*;
import org.dromara.project.mapper.BusProjectMapper; import org.dromara.project.mapper.BusProjectMapper;
import org.dromara.project.service.IBusProjectFileService; import org.dromara.project.service.IBusProjectFileService;
@ -495,7 +492,7 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
} }
// 操作数据库 // 操作数据库
if (this.updateById(project)) { if (this.updateById(project)) {
if (!req.getPunchrangeList().isEmpty()) { if (CollUtil.isNotEmpty(req.getPunchrangeList())) {
//删除所有旧的范围 //删除所有旧的范围
busProjectPunchrangeService.remove(Wrappers.lambdaQuery(BusProjectPunchrange.class).eq(BusProjectPunchrange::getProjectId, project.getId())); busProjectPunchrangeService.remove(Wrappers.lambdaQuery(BusProjectPunchrange.class).eq(BusProjectPunchrange::getProjectId, project.getId()));
//新增打卡范围 //新增打卡范围
@ -509,6 +506,29 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
return false; return false;
} }
/**
* 保存项目招标文件
*
* @param req 项目招标文件
* @return 是否保存成功
*/
@Override
public Boolean saveTenderFile(BusProjectSaveTenderFileReq req) {
BusProject project = this.getById(req.getId());
if (project == null) {
throw new ServiceException("保存项目招标文件失败,数据不存在", HttpStatus.NOT_FOUND);
}
BusProject newProject = new BusProject();
newProject.setId(project.getId());
newProject.setTenderFiles(req.getTenderFiles());
boolean b = this.updateById(newProject);
if (!b) {
throw new ServiceException("保存项目招标文件失败", HttpStatus.ERROR);
}
// todo 通知给各部⻔主任
return true;
}
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
@ -631,42 +651,33 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
String shortName = req.getShortName(); String shortName = req.getShortName();
Long pId = req.getPId(); Long pId = req.getPId();
String status = req.getStatus(); String status = req.getStatus();
String remark = req.getRemark();
String projectType = req.getProjectType(); String projectType = req.getProjectType();
String projectCategory = req.getProjectCategory(); String projectCategory = req.getProjectStage();
String projectSite = req.getProjectSite(); String projectSite = req.getProjectSite();
String principal = req.getPrincipal(); String principal = req.getPrincipal();
String principalPhone = req.getPrincipalPhone(); String principalPhone = req.getPrincipalPhone();
String actual = req.getActual();
String plan = req.getPlan();
String onStreamTime = req.getOnStreamTime();
String punchRange = req.getPunchRange();
Long designTotal = req.getDesignTotal();
String showHidden = req.getShowHidden(); String showHidden = req.getShowHidden();
// 模糊查询 // 模糊查询
lqw.like(StringUtils.isNotBlank(projectName), BusProject::getProjectName, projectName); lqw.like(StringUtils.isNotBlank(projectName), BusProject::getProjectName, projectName);
lqw.like(StringUtils.isNotBlank(shortName), BusProject::getShortName, shortName); lqw.like(StringUtils.isNotBlank(shortName), BusProject::getShortName, shortName);
lqw.like(StringUtils.isNotBlank(remark), BusProject::getRemark, remark);
lqw.like(StringUtils.isNotBlank(projectSite), BusProject::getProjectSite, projectSite); lqw.like(StringUtils.isNotBlank(projectSite), BusProject::getProjectSite, projectSite);
lqw.like(StringUtils.isNotBlank(principal), BusProject::getPrincipal, principal); lqw.like(StringUtils.isNotBlank(principal), BusProject::getPrincipal, principal);
lqw.like(StringUtils.isNotBlank(principalPhone), BusProject::getPrincipalPhone, principalPhone); lqw.like(StringUtils.isNotBlank(principalPhone), BusProject::getPrincipalPhone, principalPhone);
lqw.like(StringUtils.isNotBlank(actual), BusProject::getActual, actual);
lqw.like(StringUtils.isNotBlank(plan), BusProject::getPlan, plan);
lqw.like(StringUtils.isNotBlank(onStreamTime), BusProject::getOnStreamTime, onStreamTime);
lqw.like(StringUtils.isNotBlank(punchRange), BusProject::getPunchRange, punchRange);
// 精确查询 // 精确查询
lqw.eq(ObjectUtils.isNotEmpty(pId), BusProject::getPId, pId);
lqw.eq(ObjectUtils.isNotEmpty(status), BusProject::getStatus, status); lqw.eq(ObjectUtils.isNotEmpty(status), BusProject::getStatus, status);
lqw.eq(ObjectUtils.isNotEmpty(id), BusProject::getId, id); lqw.eq(ObjectUtils.isNotEmpty(id), BusProject::getId, id);
lqw.eq(ObjectUtils.isNotEmpty(projectType), BusProject::getProjectType, projectType); lqw.eq(ObjectUtils.isNotEmpty(projectType), BusProject::getProjectType, projectType);
lqw.eq(ObjectUtils.isNotEmpty(projectCategory), BusProject::getProjectCategory, projectCategory); lqw.eq(ObjectUtils.isNotEmpty(projectCategory), BusProject::getProjectStage, projectCategory);
lqw.eq(ObjectUtils.isNotEmpty(designTotal), BusProject::getDesignTotal, designTotal);
lqw.eq(ObjectUtils.isNotEmpty(showHidden), BusProject::getShowHidden, showHidden); lqw.eq(ObjectUtils.isNotEmpty(showHidden), BusProject::getShowHidden, showHidden);
// 排序 if (ObjectUtils.isNotEmpty(pId)) {
lqw.orderByAsc(BusProject::getSort); lqw.eq(BusProject::getPId, pId);
} else {
// 不查询子项目 // 不查询子项目
final Long PID = 0L; final Long PID = 0L;
lqw.eq(BusProject::getPId, PID); lqw.eq(BusProject::getPId, PID);
}
// 排序
lqw.orderByAsc(BusProject::getSort);
return lqw; return lqw;
} }