[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.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.project.domain.dto.project.BusProjectCreateReq;
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.dto.project.*;
import org.dromara.project.domain.vo.project.*;
import org.dromara.project.service.IBusProjectService;
import org.springframework.validation.annotation.Validated;
@ -151,6 +148,17 @@ public class BusProjectController extends BaseController {
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 projectCategory;
private String projectStage;
/**
* 删除时间
@ -135,6 +135,11 @@ public class BusProject extends BaseEntity {
*/
private String securityAgreement;
/**
* 招标文件
*/
private String tenderFiles;
/**
* 排序字段
*/

View File

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

View File

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

View File

@ -92,11 +92,11 @@ public class BusProjectVo implements Serializable {
private String projectType;
/**
* 项目类别
* 项目阶段
*/
@ExcelProperty(value = "项目类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "project_category_type")
private String projectCategory;
@ExcelProperty(value = "项目阶段", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "project_stage")
private String projectStage;
/**
* 项目地址
@ -162,6 +162,12 @@ public class BusProjectVo implements Serializable {
@ExcelProperty(value = "安全协议书")
private String securityAgreement;
/**
* 招标文件
*/
@ExcelProperty(value = "招标文件")
private String tenderFiles;
/**
* 显示隐藏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.TableDataInfo;
import org.dromara.project.domain.BusProject;
import org.dromara.project.domain.dto.project.BusProjectCreateReq;
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.dto.project.*;
import org.dromara.project.domain.vo.project.*;
import java.util.Collection;
@ -111,6 +108,14 @@ public interface IBusProjectService extends IService<BusProject> {
*/
Boolean updateByBo(BusProjectUpdateReq req);
/**
* 保存项目招标文件
*
* @param req 项目招标文件
* @return 是否保存成功
*/
Boolean saveTenderFile(BusProjectSaveTenderFileReq req);
/**
* 校验并批量删除项目信息
*
@ -175,5 +180,4 @@ public interface IBusProjectService extends IService<BusProject> {
* @return 安全天数
*/
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.BusUserProjectRelevancy;
import org.dromara.project.domain.bo.Punchrange;
import org.dromara.project.domain.dto.project.BusProjectCreateReq;
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.dto.project.*;
import org.dromara.project.domain.vo.project.*;
import org.dromara.project.mapper.BusProjectMapper;
import org.dromara.project.service.IBusProjectFileService;
@ -495,7 +492,7 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
}
// 操作数据库
if (this.updateById(project)) {
if (!req.getPunchrangeList().isEmpty()) {
if (CollUtil.isNotEmpty(req.getPunchrangeList())) {
//删除所有旧的范围
busProjectPunchrangeService.remove(Wrappers.lambdaQuery(BusProjectPunchrange.class).eq(BusProjectPunchrange::getProjectId, project.getId()));
//新增打卡范围
@ -509,6 +506,29 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
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();
Long pId = req.getPId();
String status = req.getStatus();
String remark = req.getRemark();
String projectType = req.getProjectType();
String projectCategory = req.getProjectCategory();
String projectCategory = req.getProjectStage();
String projectSite = req.getProjectSite();
String principal = req.getPrincipal();
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();
// 模糊查询
lqw.like(StringUtils.isNotBlank(projectName), BusProject::getProjectName, projectName);
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(principal), BusProject::getPrincipal, principal);
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(id), BusProject::getId, id);
lqw.eq(ObjectUtils.isNotEmpty(projectType), BusProject::getProjectType, projectType);
lqw.eq(ObjectUtils.isNotEmpty(projectCategory), BusProject::getProjectCategory, projectCategory);
lqw.eq(ObjectUtils.isNotEmpty(designTotal), BusProject::getDesignTotal, designTotal);
lqw.eq(ObjectUtils.isNotEmpty(projectCategory), BusProject::getProjectStage, projectCategory);
lqw.eq(ObjectUtils.isNotEmpty(showHidden), BusProject::getShowHidden, showHidden);
if (ObjectUtils.isNotEmpty(pId)) {
lqw.eq(BusProject::getPId, pId);
} else {
// 不查询子项目
final Long PID = 0L;
lqw.eq(BusProject::getPId, PID);
}
// 排序
lqw.orderByAsc(BusProject::getSort);
// 不查询子项目
final Long PID = 0L;
lqw.eq(BusProject::getPId, PID);
return lqw;
}