Merge branch 'refs/heads/feature-Contract-8.12-wyw' into feature-pms-8.8-shl

This commit is contained in:
shl
2024-08-12 11:04:53 +08:00
66 changed files with 2627 additions and 67 deletions

View File

@@ -19,4 +19,5 @@ public class ProjectDetailRespDTO {
*/
private String customerCompanyName;
}

View File

@@ -9,7 +9,7 @@ import java.math.BigDecimal;
* 项目基本信息 dto
*/
@Data
public class ProjectRespDTO {
public class ProjectRespDTO{
/**

View File

@@ -14,6 +14,7 @@ public interface DictTypeConstants {
String PROCESS_STATUS = "process_status"; // 流程状态
String POSSIBILITY_OF_LANDING = "possibility_of_landing"; // 可能性
String BPM_PROCESS_INSTANCE_STATUS = "bpm_process_instance_status"; // 流程实例状态
String TRACKING_DEPLOYMENT = "tracking_deployment";

View File

@@ -25,15 +25,13 @@ public class ProjectImpl implements ProjectApi {
@Override
public ProjectRespDTO getProject(Long projectId) {
ProjectDO projectDO = projectMapper.selectById(projectId);
ProjectRespDTO projectRespDTO = BeanUtils.toBean(projectDO, ProjectRespDTO.class);
return projectRespDTO;
return BeanUtils.toBean(projectDO, ProjectRespDTO.class);
}
@Override
public ProjectDetailRespDTO getProjectDetailById(Long projectId) {
ProjectDetailDO projectMapperDetail = projectMapper.getDetailById(projectId);
ProjectDetailRespDTO detailRespDTO = BeanUtils.toBean(projectMapperDetail, ProjectDetailRespDTO.class);
return detailRespDTO;
return BeanUtils.toBean(projectMapperDetail, ProjectDetailRespDTO.class);
}
@Override

View File

@@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.pms.controller.admin.project;
import cn.iocoder.yudao.framework.common.pojo.FileDTO;
import cn.iocoder.yudao.framework.common.util.file.FileUtils;
import cn.iocoder.yudao.module.pms.dal.dataobject.project.ProjectDetailDO;
import org.springframework.web.bind.annotation.*;
@@ -11,9 +10,9 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.constraints.*;
import jakarta.validation.*;
import jakarta.servlet.http.*;
import java.util.*;
import java.io.IOException;
@@ -21,16 +20,17 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import cn.iocoder.yudao.module.pms.controller.admin.project.vo.*;
import cn.iocoder.yudao.module.pms.dal.dataobject.project.ProjectDO;
import cn.iocoder.yudao.module.pms.service.project.ProjectService;
@Tag(name = "管理后台 - 项目基本信息")
@@ -46,7 +46,7 @@ public class ProjectController {
@Operation(summary = "创建项目基本信息")
@PreAuthorize("@ss.hasPermission('pms:project:create')")
public CommonResult<Long> createProject(@Valid @RequestBody ProjectSaveReqVO createReqVO) {
return success(projectService.createProject(getLoginUserId(),createReqVO));
return success(projectService.createProject(getLoginUserId(), createReqVO));
}
@PutMapping("/update")
@@ -93,12 +93,12 @@ public class ProjectController {
@PreAuthorize("@ss.hasPermission('pms:project:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportProjectExcel(@Valid ProjectPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProjectDetailDO> list = projectService.getProjectDetailPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "项目基本信息.xls", "数据", ProjectRespDetailVO.class,
BeanUtils.toBean(list, ProjectRespDetailVO.class));
BeanUtils.toBean(list, ProjectRespDetailVO.class));
}
}

View File

@@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.pms.controller.admin.projectschedule;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.constraints.*;
import jakarta.validation.*;
import jakarta.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo.*;
import cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule.ProjectScheduleDO;
import cn.iocoder.yudao.module.pms.service.projectschedule.ProjectScheduleService;
@Tag(name = "管理后台 - 项目进度管理")
@RestController
@RequestMapping("/pms/project-schedule")
@Validated
public class ProjectScheduleController {
@Resource
private ProjectScheduleService projectScheduleService;
@PostMapping("/create")
@Operation(summary = "创建项目进度管理")
@PreAuthorize("@ss.hasPermission('pms:project-schedule:create')")
public CommonResult<Long> createProjectSchedule(@Valid @RequestBody ProjectScheduleSaveReqVO createReqVO) {
return success(projectScheduleService.createProjectSchedule(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新项目进度管理")
@PreAuthorize("@ss.hasPermission('pms:project-schedule:update')")
public CommonResult<Boolean> updateProjectSchedule(@Valid @RequestBody ProjectScheduleSaveReqVO updateReqVO) {
projectScheduleService.updateProjectSchedule(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除项目进度管理")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('pms:project-schedule:delete')")
public CommonResult<Boolean> deleteProjectSchedule(@RequestParam("id") Long id) {
projectScheduleService.deleteProjectSchedule(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得项目进度管理")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('pms:project-schedule:query')")
public CommonResult<ProjectScheduleRespVO> getProjectSchedule(@RequestParam("id") Long id) {
ProjectScheduleDO projectSchedule = projectScheduleService.getProjectSchedule(id);
return success(BeanUtils.toBean(projectSchedule, ProjectScheduleRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得项目进度管理分页")
@PreAuthorize("@ss.hasPermission('pms:project-schedule:query')")
public CommonResult<PageResult<ProjectScheduleRespVO>> getProjectSchedulePage(@Valid ProjectSchedulePageReqVO pageReqVO) {
PageResult<ProjectScheduleDO> pageResult = projectScheduleService.getProjectSchedulePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProjectScheduleRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出项目进度管理 Excel")
@PreAuthorize("@ss.hasPermission('pms:project-schedule:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportProjectScheduleExcel(@Valid ProjectSchedulePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProjectScheduleDO> list = projectScheduleService.getProjectSchedulePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "项目进度管理.xls", "数据", ProjectScheduleRespVO.class,
BeanUtils.toBean(list, ProjectScheduleRespVO.class));
}
}

View File

@@ -0,0 +1,107 @@
package cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 项目进度管理分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProjectSchedulePageReqVO extends PageParam {
@Schema(description = "项目id", example = "26813")
private Long projectId;
@Schema(description = "项目负责人")
private String projectLeader;
@Schema(description = "主专业")
private String major;
@Schema(description = "其他专业")
private String minorMajors;
@Schema(description = "其他主要项目组成员")
private String minorUserIds;
@Schema(description = "规模")
private String scale;
@Schema(description = "项目概况")
private String survey;
@Schema(description = "相关批复文件url", example = "https://www.iocoder.cn")
private String replyFileUrl;
@Schema(description = "当前阶段")
private String stage;
@Schema(description = "已完成的项目阶段")
private String preStage;
@Schema(description = "工作进展")
private String progress;
@Schema(description = "外部合同商议时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] contractNegotiationTime;
@Schema(description = "已完成百分比")
private BigDecimal completed;
@Schema(description = "截至本月累计完成百分比")
private BigDecimal accumulatedCompletion;
@Schema(description = "本月新增完工比")
private BigDecimal newlyIncreasedCompletion;
@Schema(description = "已完成产值")
private BigDecimal finishOutput;
@Schema(description = "本月新增产值")
private BigDecimal newlyIncreasedOutput;
@Schema(description = "累积产值")
private BigDecimal accumulatedOutput;
@Schema(description = "竣工时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] completionTime;
@Schema(description = "单选")
private Boolean choose;
@Schema(description = "竣工报告附件url", example = "https://www.iocoder.cn")
private String completionFileUrl;
@Schema(description = "最后编辑人")
private String finalEditor;
@Schema(description = "创建人")
private String creator;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "更新人")
private String updator;
@Schema(description = "更新时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] updateTime;
@Schema(description = "是否删除")
private Boolean deleted;
@Schema(description = "租户id", example = "1")
private Long tenantId;
}

View File

@@ -0,0 +1,132 @@
package cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 项目进度管理 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ProjectScheduleRespVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28495")
@ExcelProperty("主键")
private Long id;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26813")
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "项目负责人", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("项目负责人")
private String projectLeader;
@Schema(description = "主专业", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("主专业")
private String major;
@Schema(description = "其他专业")
@ExcelProperty("其他专业")
private String minorMajors;
@Schema(description = "其他主要项目组成员")
@ExcelProperty("其他主要项目组成员")
private String minorUserIds;
@Schema(description = "规模", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("规模")
private String scale;
@Schema(description = "项目概况", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("项目概况")
private String survey;
@Schema(description = "相关批复文件url", example = "https://www.iocoder.cn")
@ExcelProperty("相关批复文件url")
private String replyFileUrl;
@Schema(description = "当前阶段", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("当前阶段")
private String stage;
@Schema(description = "已完成的项目阶段", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("已完成的项目阶段")
private String preStage;
@Schema(description = "工作进展", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("工作进展")
private String progress;
@Schema(description = "外部合同商议时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("外部合同商议时间")
private LocalDateTime contractNegotiationTime;
@Schema(description = "已完成百分比", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("已完成百分比")
private BigDecimal completed;
@Schema(description = "截至本月累计完成百分比")
@ExcelProperty("截至本月累计完成百分比")
private BigDecimal accumulatedCompletion;
@Schema(description = "本月新增完工比")
@ExcelProperty("本月新增完工比")
private BigDecimal newlyIncreasedCompletion;
@Schema(description = "已完成产值")
@ExcelProperty("已完成产值")
private BigDecimal finishOutput;
@Schema(description = "本月新增产值")
@ExcelProperty("本月新增产值")
private BigDecimal newlyIncreasedOutput;
@Schema(description = "累积产值")
@ExcelProperty("累积产值")
private BigDecimal accumulatedOutput;
@Schema(description = "竣工时间")
@ExcelProperty("竣工时间")
private LocalDateTime completionTime;
@Schema(description = "单选")
@ExcelProperty("单选")
private Boolean choose;
@Schema(description = "竣工报告附件url", example = "https://www.iocoder.cn")
@ExcelProperty("竣工报告附件url")
private String completionFileUrl;
@Schema(description = "最后编辑人")
@ExcelProperty("最后编辑人")
private String finalEditor;
@Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建人")
private String creator;
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "更新人", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("更新人")
private String updator;
@Schema(description = "更新时间")
@ExcelProperty("更新时间")
private LocalDateTime updateTime;
@Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否删除")
private Boolean deleted;
@Schema(description = "租户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("租户id")
private Long tenantId;
}

View File

@@ -0,0 +1,116 @@
package cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 项目进度管理新增/修改 Request VO")
@Data
public class ProjectScheduleSaveReqVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28495")
private Long id;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26813")
@NotNull(message = "项目id不能为空")
private Long projectId;
@Schema(description = "项目负责人", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "项目负责人不能为空")
private String projectLeader;
@Schema(description = "主专业", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "主专业不能为空")
private String major;
@Schema(description = "其他专业")
private String minorMajors;
@Schema(description = "其他主要项目组成员")
private String minorUserIds;
@Schema(description = "规模", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "规模不能为空")
private String scale;
@Schema(description = "项目概况", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "项目概况不能为空")
private String survey;
@Schema(description = "相关批复文件url", example = "https://www.iocoder.cn")
private String replyFileUrl;
@Schema(description = "当前阶段", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "当前阶段不能为空")
private String stage;
@Schema(description = "已完成的项目阶段", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "已完成的项目阶段不能为空")
private String preStage;
@Schema(description = "工作进展", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "工作进展不能为空")
private String progress;
@Schema(description = "外部合同商议时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "外部合同商议时间不能为空")
private LocalDateTime contractNegotiationTime;
@Schema(description = "已完成百分比", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "已完成百分比不能为空")
private BigDecimal completed;
@Schema(description = "截至本月累计完成百分比")
private BigDecimal accumulatedCompletion;
@Schema(description = "本月新增完工比")
private BigDecimal newlyIncreasedCompletion;
@Schema(description = "已完成产值")
private BigDecimal finishOutput;
@Schema(description = "本月新增产值")
private BigDecimal newlyIncreasedOutput;
@Schema(description = "累积产值")
private BigDecimal accumulatedOutput;
@Schema(description = "竣工时间")
private LocalDateTime completionTime;
@Schema(description = "单选")
private Boolean choose;
@Schema(description = "竣工报告附件url", example = "https://www.iocoder.cn")
private String completionFileUrl;
@Schema(description = "最后编辑人")
private String finalEditor;
@Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "创建人不能为空")
private String creator;
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Schema(description = "更新人", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "更新人不能为空")
private String updator;
@Schema(description = "更新时间")
private LocalDateTime updateTime;
@Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否删除不能为空")
private Boolean deleted;
@Schema(description = "租户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "租户id不能为空")
private Long tenantId;
}

View File

@@ -8,18 +8,21 @@ import lombok.Data;
* @date 2024/7/4
*/
@Data
public class ProjectDetailDO extends ProjectDO{
public class ProjectDetailDO extends ProjectDO {
/**
* 跟踪部门
*/
private String trackingDepName;
/**
* 项目经理
*/
private String projectManagerName;
/**
* 客户公司
*/
private String customerCompanyName;
}

View File

@@ -0,0 +1,131 @@
package cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 项目进度管理 DO
*
* @author 管理员
*/
@TableName("pms_project_schedule")
@KeySequence("pms_project_schedule_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProjectScheduleDO extends BaseDO {
/**
* 主键
*/
@TableId
private Long id;
/**
* 项目id
*/
private Long projectId;
/**
* 项目负责人
*/
private String projectLeader;
/**
* 主专业
*/
private String major;
/**
* 其他专业
*/
private String minorMajors;
/**
* 其他主要项目组成员
*/
private String minorUserIds;
/**
* 规模
*/
private String scale;
/**
* 项目概况
*/
private String survey;
/**
* 相关批复文件url
*/
private String replyFileUrl;
/**
* 当前阶段
*/
private String stage;
/**
* 已完成的项目阶段
*/
private String preStage;
/**
* 工作进展
*/
private String progress;
/**
* 外部合同商议时间
*/
private LocalDateTime contractNegotiationTime;
/**
* 已完成百分比
*/
private BigDecimal completed;
/**
* 截至本月累计完成百分比
*/
private BigDecimal accumulatedCompletion;
/**
* 本月新增完工比
*/
private BigDecimal newlyIncreasedCompletion;
/**
* 已完成产值
*/
private BigDecimal finishOutput;
/**
* 本月新增产值
*/
private BigDecimal newlyIncreasedOutput;
/**
* 累积产值
*/
private BigDecimal accumulatedOutput;
/**
* 竣工时间
*/
private LocalDateTime completionTime;
/**
* 单选
*/
private Boolean choose;
/**
* 竣工报告附件url
*/
private String completionFileUrl;
/**
* 最后编辑人
*/
private String finalEditor;
/**
* 更新人
*/
private String updator;
}

View File

@@ -0,0 +1,51 @@
package cn.iocoder.yudao.module.pms.dal.mysql.projectschedule;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule.ProjectScheduleDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo.*;
/**
* 项目进度管理 Mapper
*
* @author 管理员
*/
@Mapper
public interface ProjectScheduleMapper extends BaseMapperX<ProjectScheduleDO> {
default PageResult<ProjectScheduleDO> selectPage(ProjectSchedulePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProjectScheduleDO>()
.eqIfPresent(ProjectScheduleDO::getProjectId, reqVO.getProjectId())
.eqIfPresent(ProjectScheduleDO::getProjectLeader, reqVO.getProjectLeader())
.eqIfPresent(ProjectScheduleDO::getMajor, reqVO.getMajor())
.eqIfPresent(ProjectScheduleDO::getMinorMajors, reqVO.getMinorMajors())
.eqIfPresent(ProjectScheduleDO::getMinorUserIds, reqVO.getMinorUserIds())
.eqIfPresent(ProjectScheduleDO::getScale, reqVO.getScale())
.eqIfPresent(ProjectScheduleDO::getSurvey, reqVO.getSurvey())
.eqIfPresent(ProjectScheduleDO::getReplyFileUrl, reqVO.getReplyFileUrl())
.eqIfPresent(ProjectScheduleDO::getStage, reqVO.getStage())
.eqIfPresent(ProjectScheduleDO::getPreStage, reqVO.getPreStage())
.eqIfPresent(ProjectScheduleDO::getProgress, reqVO.getProgress())
.betweenIfPresent(ProjectScheduleDO::getContractNegotiationTime, reqVO.getContractNegotiationTime())
.eqIfPresent(ProjectScheduleDO::getCompleted, reqVO.getCompleted())
.eqIfPresent(ProjectScheduleDO::getAccumulatedCompletion, reqVO.getAccumulatedCompletion())
.eqIfPresent(ProjectScheduleDO::getNewlyIncreasedCompletion, reqVO.getNewlyIncreasedCompletion())
.eqIfPresent(ProjectScheduleDO::getFinishOutput, reqVO.getFinishOutput())
.eqIfPresent(ProjectScheduleDO::getNewlyIncreasedOutput, reqVO.getNewlyIncreasedOutput())
.eqIfPresent(ProjectScheduleDO::getAccumulatedOutput, reqVO.getAccumulatedOutput())
.betweenIfPresent(ProjectScheduleDO::getCompletionTime, reqVO.getCompletionTime())
.eqIfPresent(ProjectScheduleDO::getChoose, reqVO.getChoose())
.eqIfPresent(ProjectScheduleDO::getCompletionFileUrl, reqVO.getCompletionFileUrl())
.eqIfPresent(ProjectScheduleDO::getFinalEditor, reqVO.getFinalEditor())
.eqIfPresent(ProjectScheduleDO::getCreator, reqVO.getCreator())
.betweenIfPresent(ProjectScheduleDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(ProjectScheduleDO::getUpdator, reqVO.getUpdator())
.betweenIfPresent(ProjectScheduleDO::getUpdateTime, reqVO.getUpdateTime())
.eqIfPresent(ProjectScheduleDO::getDeleted, reqVO.getDeleted())
.orderByDesc(ProjectScheduleDO::getId));
}
}

View File

@@ -0,0 +1,53 @@
package cn.iocoder.yudao.module.pms.service.projectschedule;
import jakarta.validation.*;
import cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo.*;
import cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule.ProjectScheduleDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
/**
* 项目进度管理 Service 接口
*
* @author 管理员
*/
public interface ProjectScheduleService {
/**
* 创建项目进度管理
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createProjectSchedule(@Valid ProjectScheduleSaveReqVO createReqVO);
/**
* 更新项目进度管理
*
* @param updateReqVO 更新信息
*/
void updateProjectSchedule(@Valid ProjectScheduleSaveReqVO updateReqVO);
/**
* 删除项目进度管理
*
* @param id 编号
*/
void deleteProjectSchedule(Long id);
/**
* 获得项目进度管理
*
* @param id 编号
* @return 项目进度管理
*/
ProjectScheduleDO getProjectSchedule(Long id);
/**
* 获得项目进度管理分页
*
* @param pageReqVO 分页查询
* @return 项目进度管理分页
*/
PageResult<ProjectScheduleDO> getProjectSchedulePage(ProjectSchedulePageReqVO pageReqVO);
}

View File

@@ -0,0 +1,71 @@
package cn.iocoder.yudao.module.pms.service.projectschedule;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo.*;
import cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule.ProjectScheduleDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.pms.dal.mysql.projectschedule.ProjectScheduleMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstants.*;
/**
* 项目进度管理 Service 实现类
*
* @author 管理员
*/
@Service
@Validated
public class ProjectScheduleServiceImpl implements ProjectScheduleService {
@Resource
private ProjectScheduleMapper projectScheduleMapper;
@Override
public Long createProjectSchedule(ProjectScheduleSaveReqVO createReqVO) {
// 插入
ProjectScheduleDO projectSchedule = BeanUtils.toBean(createReqVO, ProjectScheduleDO.class);
projectScheduleMapper.insert(projectSchedule);
// 返回
return projectSchedule.getId();
}
@Override
public void updateProjectSchedule(ProjectScheduleSaveReqVO updateReqVO) {
// 校验存在
validateProjectScheduleExists(updateReqVO.getId());
// 更新
ProjectScheduleDO updateObj = BeanUtils.toBean(updateReqVO, ProjectScheduleDO.class);
projectScheduleMapper.updateById(updateObj);
}
@Override
public void deleteProjectSchedule(Long id) {
// 校验存在
validateProjectScheduleExists(id);
// 删除
projectScheduleMapper.deleteById(id);
}
private void validateProjectScheduleExists(Long id) {
if (projectScheduleMapper.selectById(id) == null) {
throw exception(PROJECT_SCHEDULE_NOT_EXISTS);
}
}
@Override
public ProjectScheduleDO getProjectSchedule(Long id) {
return projectScheduleMapper.selectById(id);
}
@Override
public PageResult<ProjectScheduleDO> getProjectSchedulePage(ProjectSchedulePageReqVO pageReqVO) {
return projectScheduleMapper.selectPage(pageReqVO);
}
}