@@ -1,5 +1,10 @@ | |||||
package com.ningdatech.pmapi.projectdeclared.contants; | package com.ningdatech.pmapi.projectdeclared.contants; | ||||
import com.google.common.collect.Lists; | |||||
import com.ningdatech.pmapi.user.entity.UserInfo; | |||||
import java.util.List; | |||||
public interface DeclaredProjectContant { | public interface DeclaredProjectContant { | ||||
class ProcessDef { | class ProcessDef { | ||||
@@ -33,4 +38,15 @@ public interface DeclaredProjectContant { | |||||
public static final Long MIN_PROJECT_ID = 1L; | public static final Long MIN_PROJECT_ID = 1L; | ||||
} | } | ||||
class ReviewChecklist { | |||||
public static final List<String> REVIEW_HUMANS_ZZD = Lists.newArrayList("GE_dce116d65ffe48a3aee6c14c1c5a3031", | |||||
"GE_573158a366554bdbb483f8f93d594bf7","GE_fe1cd568b453456ead00f471ecddf6a2","GE_fc1e28e29b5a4cf39c7b7c83278db6f4", | |||||
"GE_16580afcdf7d4d379fd3690ba47f3b58","GE_9c901c85eaeb42abbb485b7aa4d4358f","GE_a4c2c56ed3204600805e0f7b7dca9044"); | |||||
public static final List<String> REVIEW_HUMANS_ZYD = Lists.newArrayList("GE_dce116d65ffe48a3aee6c14c1c5a3031", | |||||
"GE_573158a366554bdbb483f8f93d594bf7","GE_fe1cd568b453456ead00f471ecddf6a2","GE_fc1e28e29b5a4cf39c7b7c83278db6f4", | |||||
"GE_16580afcdf7d4d379fd3690ba47f3b58","GE_9c901c85eaeb42abbb485b7aa4d4358f","GE_a4c2c56ed3204600805e0f7b7dca9044"); | |||||
public static final Integer INIT_NUM = 0; | |||||
} | |||||
} | } |
@@ -0,0 +1,60 @@ | |||||
package com.ningdatech.pmapi.projectdeclared.controller; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.log.annotation.WebLog; | |||||
import com.ningdatech.pmapi.projectdeclared.manage.ReviewChecklistManage; | |||||
import com.ningdatech.pmapi.projectdeclared.model.dto.ReviewChecklistApproveDTO; | |||||
import com.ningdatech.pmapi.projectdeclared.model.vo.ReviewChecklistApproveVO; | |||||
import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq; | |||||
import com.ningdatech.pmapi.projectlib.model.vo.ProjectReviewCheckListItemVO; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import java.util.List; | |||||
/** | |||||
* @Classname ReviewChecklistController | |||||
* @Description | |||||
* @Date 2023/11/7 17:00 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
@Slf4j | |||||
@Validated | |||||
@RestController | |||||
@RequestMapping("/api/v1/review-checklist") | |||||
@Api(value = "Review-Checklist", tags = "审查清单") | |||||
@RequiredArgsConstructor | |||||
public class ReviewChecklistController { | |||||
private final ReviewChecklistManage reviewChecklistManage; | |||||
@ApiOperation(value = "建设方案后审查清单", notes = "建设方案后审查清单") | |||||
@GetMapping("/list") | |||||
public PageVo<ProjectReviewCheckListItemVO> list(@ModelAttribute ProjectListReq req) { | |||||
return reviewChecklistManage.projectLibList(req); | |||||
} | |||||
@ApiOperation(value = "审查清单审核", notes = "审查清单审核") | |||||
@PostMapping("/approve") | |||||
@WebLog("审查清单审核") | |||||
public String approve(@RequestBody List<ReviewChecklistApproveDTO> dtos) { | |||||
return reviewChecklistManage.approve(dtos); | |||||
} | |||||
@ApiOperation(value = "查看某个项目的意见汇总", notes = "查看某个项目的意见汇总") | |||||
@GetMapping("/summary-list/{projectCode}") | |||||
public List<ReviewChecklistApproveVO> summaryList(@PathVariable String projectCode) { | |||||
return reviewChecklistManage.summaryList(projectCode); | |||||
} | |||||
@ApiOperation(value = "意见汇总提交", notes = "意见汇总提交") | |||||
@PostMapping("/summary/{projectCode}") | |||||
@WebLog("意见汇总提交") | |||||
public String summary(@PathVariable String projectCode) { | |||||
return reviewChecklistManage.summary(projectCode); | |||||
} | |||||
} |
@@ -0,0 +1,246 @@ | |||||
package com.ningdatech.pmapi.projectdeclared.manage; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.google.common.collect.Lists; | |||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.basic.util.CollUtils; | |||||
import com.ningdatech.basic.util.StrPool; | |||||
import com.ningdatech.pmapi.common.constant.BizConst; | |||||
import com.ningdatech.pmapi.common.constant.RegionConst; | |||||
import com.ningdatech.pmapi.common.helper.RegionCacheHelper; | |||||
import com.ningdatech.pmapi.datascope.model.DataScopeDTO; | |||||
import com.ningdatech.pmapi.datascope.utils.DataScopeUtil; | |||||
import com.ningdatech.pmapi.projectdeclared.contants.DeclaredProjectContant; | |||||
import com.ningdatech.pmapi.projectdeclared.model.dto.ReviewChecklistApproveDTO; | |||||
import com.ningdatech.pmapi.projectdeclared.model.entity.ReviewChecklistApprove; | |||||
import com.ningdatech.pmapi.projectdeclared.model.vo.ReviewChecklistApproveVO; | |||||
import com.ningdatech.pmapi.projectdeclared.service.IReviewChecklistApproveService; | |||||
import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; | |||||
import com.ningdatech.pmapi.projectlib.helper.ProjectHelper; | |||||
import com.ningdatech.pmapi.projectlib.model.entity.Project; | |||||
import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq; | |||||
import com.ningdatech.pmapi.projectlib.model.vo.ProjectReviewCheckListItemVO; | |||||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | |||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | |||||
import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; | |||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.dom4j.dtd.Decl; | |||||
import org.springframework.beans.factory.annotation.Value; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.*; | |||||
import java.util.stream.Collectors; | |||||
/** | |||||
* @Classname ReviewChecklistManage | |||||
* @Description | |||||
* @Date 2023/11/7 17:04 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
@Component | |||||
@Slf4j | |||||
@RequiredArgsConstructor | |||||
public class ReviewChecklistManage { | |||||
@Value("${spring.profiles.active}") | |||||
private String active; | |||||
private final IProjectService projectService; | |||||
private final RegionCacheHelper regionCacheHelper; | |||||
private final IReviewChecklistApproveService reviewChecklistApproveService; | |||||
public PageVo<ProjectReviewCheckListItemVO> projectLibList(ProjectListReq req) { | |||||
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req); | |||||
//项目查最新 | |||||
query.eq(Project::getNewest, Boolean.TRUE); | |||||
//建设方案提交后的状态 | |||||
query.ge(Project::getStatus,ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()) | |||||
.ne(Project::getStatus,ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
buildProjectLibPermission(query, user); | |||||
Page<Project> page = projectService.page(req.page(), query); | |||||
long total; | |||||
if (CollUtil.isEmpty(page.getRecords())) { | |||||
return PageVo.empty(); | |||||
} | |||||
List<String> projectCodes = page.getRecords().stream().map(Project::getProjectCode) | |||||
.collect(Collectors.toList()); | |||||
//求出 审查了的 信息 | |||||
List<ReviewChecklistApprove> approves = reviewChecklistApproveService.list(Wrappers.lambdaQuery(ReviewChecklistApprove.class) | |||||
.in(ReviewChecklistApprove::getProjectCode, projectCodes)); | |||||
Map<String, List<ReviewChecklistApprove>> approveMap = | |||||
approves.stream().collect(Collectors.groupingBy(ReviewChecklistApprove::getProjectCode)); | |||||
List<ProjectReviewCheckListItemVO> records = CollUtils.convert(page.getRecords(), w -> { | |||||
ProjectReviewCheckListItemVO item = new ProjectReviewCheckListItemVO(); | |||||
item.setId(w.getId()); | |||||
item.setProjectName(w.getProjectName()); | |||||
item.setProjectCode(w.getProjectCode()); | |||||
item.setArea(w.getArea()); | |||||
item.setAreaCode(w.getAreaCode()); | |||||
item.setCreateOn(w.getCreateOn()); | |||||
item.setDeclaredAmount(w.getDeclareAmount()); | |||||
item.setStage(w.getStage()); | |||||
item.setStatus(w.getStatus()); | |||||
item.setProjectType(w.getProjectType()); | |||||
item.setProjectYear(w.getProjectYear()); | |||||
item.setBuildOrg(w.getBuildOrgName()); | |||||
item.setBizDomain(w.getBizDomain()); | |||||
item.setProcessStatus(w.getProcessStatus()); | |||||
item.setInstCode(w.getInstCode()); | |||||
item.setApprovedAmount(w.getApprovalAmount()); | |||||
item.setAnnualPlanAmount(w.getAnnualPlanAmount()); | |||||
// 审查人员情况 | |||||
item.setVerifiedHumans(computeVerify(approveMap.get(w.getProjectCode()))); | |||||
return item; | |||||
}); | |||||
return PageVo.of(records, page.getTotal()); | |||||
} | |||||
private String computeVerify(List<ReviewChecklistApprove> reviewChecklistApproves) { | |||||
List<String> reviewHumans = Lists.newArrayList();; | |||||
if(BizConst.DEV.equals(active)){ | |||||
reviewHumans = DeclaredProjectContant.ReviewChecklist.REVIEW_HUMANS_ZYD; | |||||
}else{ | |||||
reviewHumans = DeclaredProjectContant.ReviewChecklist.REVIEW_HUMANS_ZZD; | |||||
} | |||||
Integer maxNums = reviewHumans.size(); | |||||
final Integer[] finishNums = {DeclaredProjectContant.ReviewChecklist.INIT_NUM}; | |||||
Set<String> computeHumanSet = reviewHumans.stream().collect(Collectors.toSet()); | |||||
if(CollUtil.isEmpty(reviewChecklistApproves)){ | |||||
return finishNums[0] + StrPool.SLASH + maxNums; | |||||
} | |||||
reviewChecklistApproves.forEach(r -> { | |||||
if(StringUtils.isNotBlank(r.getCreateByCode()) || | |||||
computeHumanSet.contains(r.getCreateByCode())){ | |||||
//说明 有指定人 审核过 | |||||
finishNums[0]++; | |||||
computeHumanSet.remove(r.getCreateByCode()); | |||||
} | |||||
}); | |||||
return finishNums[0] + StrPool.SLASH + maxNums; | |||||
} | |||||
public UserFullInfoDTO buildProjectLibPermission(LambdaQueryWrapper<Project> query, UserInfoDetails user) { | |||||
UserFullInfoDTO userDto = BeanUtil.copyProperties(user,UserFullInfoDTO.class); | |||||
Optional<DataScopeDTO> currentUserDataScope = DataScopeUtil.getCurrentUserDataScope(userDto); | |||||
if (!currentUserDataScope.isPresent()) { | |||||
log.warn("没有取到权限信息 当前查询 没有权限条件"); | |||||
return userDto; | |||||
} | |||||
switch (currentUserDataScope.get().getRole()) { | |||||
case NORMAL_MEMBER: | |||||
//普通用户 只能看到自己单位去申报的 | |||||
query.eq(Project::getBuildOrgCode, user.getEmpPosUnitCode()); | |||||
break; | |||||
case COMPANY_MANAGER: | |||||
//单位管理员 看 | |||||
query.eq(Project::getBuildOrgCode, user.getEmpPosUnitCode()); | |||||
break; | |||||
case SUPER_ADMIN: | |||||
//超级管理员 看到丽水全市的 并且也要判断他 同时是不是单位管理员 | |||||
break; | |||||
case REGION_MANAGER: | |||||
//区域管理员 看到自己区域的项目 如果是市本级 就看全市的 | |||||
if (RegionConst.RC_LS.equals(user.getRegionCode())) { | |||||
Collection<String> regionCodes = regionCacheHelper.listChildRegionCodeList(user.getRegionCode(), | |||||
RegionConst.RL_CITY); | |||||
query.in(Project::getAreaCode, regionCodes); | |||||
} else { | |||||
query.eq(Project::getAreaCode, user.getRegionCode()); | |||||
} | |||||
break; | |||||
case VISITOR: | |||||
//访客可以看全市的 | |||||
break; | |||||
case DASHBOARD: | |||||
break; | |||||
default: | |||||
//没有权限的话 就让它查不到 | |||||
query.eq(Project::getId, 0L); | |||||
break; | |||||
} | |||||
return userDto; | |||||
} | |||||
/** | |||||
* 去审批 | |||||
* @param dtos | |||||
* @return | |||||
*/ | |||||
public String approve(List<ReviewChecklistApproveDTO> dtos) { | |||||
if(CollUtil.isEmpty(dtos)){ | |||||
throw new BizException("传入数据不能为空!"); | |||||
} | |||||
ReviewChecklistApproveDTO reviewChecklistApproveFirst = dtos.get(0); | |||||
String projectCode = reviewChecklistApproveFirst.getProjectCode(); | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
Long userId = user.getUserId(); | |||||
String employeeCode = user.getEmployeeCode(); | |||||
String username = user.getUsername(); | |||||
List<String> reviewHumans = Lists.newArrayList();; | |||||
if(BizConst.DEV.equals(active)){ | |||||
reviewHumans = DeclaredProjectContant.ReviewChecklist.REVIEW_HUMANS_ZYD; | |||||
}else{ | |||||
reviewHumans = DeclaredProjectContant.ReviewChecklist.REVIEW_HUMANS_ZZD; | |||||
} | |||||
if(StringUtils.isBlank(employeeCode) || !reviewHumans.contains(employeeCode)){ | |||||
throw new BizException("当前操作员 不是七大审查人之一!"); | |||||
} | |||||
VUtils.isTrue(reviewChecklistApproveService.count(Wrappers.lambdaQuery(ReviewChecklistApprove.class) | |||||
.eq(ReviewChecklistApprove::getProjectCode,projectCode) | |||||
.eq(ReviewChecklistApprove::getCreateByCode,employeeCode)) > 0) | |||||
.throwMessage("此项目 当前审查员 已经审批过 请不要重复审批"); | |||||
for(ReviewChecklistApproveDTO dto : dtos){ | |||||
ReviewChecklistApprove saveEntity = new ReviewChecklistApprove(); | |||||
saveEntity.setCreateBy(username); | |||||
saveEntity.setCreateById(userId); | |||||
saveEntity.setCreateByCode(employeeCode); | |||||
saveEntity.setTitle(dto.getTitle()); | |||||
saveEntity.setContent(dto.getContent()); | |||||
saveEntity.setSubTitle(dto.getSubTitle()); | |||||
saveEntity.setCorrPageNum(dto.getCorrPageNum()); | |||||
saveEntity.setRejectionSituation(dto.getRejectionSituation()); | |||||
saveEntity.setResponseSituation(dto.getResponseSituation()); | |||||
saveEntity.setReviewComments(dto.getReviewComments()); | |||||
saveEntity.setReviewResult(dto.getReviewResult()); | |||||
reviewChecklistApproveService.save(saveEntity); | |||||
} | |||||
return BizConst.OP_SUCCESS; | |||||
} | |||||
/** | |||||
* 查看待意见汇总 列表 | |||||
* @param projectCode | |||||
* @return | |||||
*/ | |||||
public List<ReviewChecklistApproveVO> summaryList(String projectCode) { | |||||
return Collections.emptyList(); | |||||
} | |||||
public String summary(String projectCode) { | |||||
return BizConst.OP_SUCCESS; | |||||
} | |||||
} |
@@ -0,0 +1,57 @@ | |||||
package com.ningdatech.pmapi.projectdeclared.model.dto; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import javax.validation.constraints.NotBlank; | |||||
import javax.validation.constraints.NotNull; | |||||
/** | |||||
* @Classname ReviewChecklistApproveDTO | |||||
* @Description | |||||
* @Date 2023/11/07 15:35 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
@Data | |||||
@ApiModel(value = "ReviewChecklistApproveDTO", description = "") | |||||
public class ReviewChecklistApproveDTO { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("项目编号") | |||||
@NotBlank(message = "请传项目编号") | |||||
private String projectCode; | |||||
@ApiModelProperty("标题") | |||||
@NotBlank(message = "请传入标题") | |||||
private String title; | |||||
@ApiModelProperty("子标题") | |||||
@NotBlank(message = "请传入子标题") | |||||
private String subTitle; | |||||
@ApiModelProperty("内容") | |||||
@NotBlank(message = "请传入内容") | |||||
private String content; | |||||
@ApiModelProperty("对应页码") | |||||
@NotBlank(message = "请传入对应页码") | |||||
private String corrPageNum; | |||||
@ApiModelProperty("否决情形") | |||||
@NotBlank(message = "请传入否决情形") | |||||
private String rejectionSituation; | |||||
@ApiModelProperty("响应情况") | |||||
@NotBlank(message = "请传入响应情况") | |||||
private String responseSituation; | |||||
@ApiModelProperty("评审意见") | |||||
@NotBlank(message = "请传入评审意见") | |||||
private String reviewComments; | |||||
@ApiModelProperty("审核结果 1.通过 2不通过 3一票否决") | |||||
@NotNull(message = "请传入审核结果") | |||||
private Integer reviewResult; | |||||
} |
@@ -0,0 +1,67 @@ | |||||
package com.ningdatech.pmapi.projectdeclared.model.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* @Classname ReviewChecklistApprove | |||||
* @Description | |||||
* @Date 2023/11/07 15:35 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
@Data | |||||
@TableName("nd_project_review_checklist_approve") | |||||
@ApiModel(value = "审查清单审核信息", description = "") | |||||
public class ReviewChecklistApprove { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(type = IdType.AUTO) | |||||
private Long id; | |||||
@ApiModelProperty("项目编号") | |||||
private String projectCode; | |||||
@ApiModelProperty("审批人") | |||||
private String createBy; | |||||
@ApiModelProperty("审批时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("审批人ID") | |||||
private Long createById; | |||||
@ApiModelProperty("审批人code") | |||||
private String createByCode; | |||||
@ApiModelProperty("标题") | |||||
private String title; | |||||
@ApiModelProperty("子标题") | |||||
private String subTitle; | |||||
@ApiModelProperty("内容") | |||||
private String content; | |||||
@ApiModelProperty("对应页码") | |||||
private String corrPageNum; | |||||
@ApiModelProperty("否决情形") | |||||
private String rejectionSituation; | |||||
@ApiModelProperty("响应情况") | |||||
private String responseSituation; | |||||
@ApiModelProperty("评审意见") | |||||
private String reviewComments; | |||||
@ApiModelProperty("审核结果 1.通过 2不通过 3一票否决") | |||||
private Integer reviewResult; | |||||
} |
@@ -0,0 +1,63 @@ | |||||
package com.ningdatech.pmapi.projectdeclared.model.vo; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* @Classname ReviewChecklistApproveVO | |||||
* @Description | |||||
* @Date 2023/11/07 15:35 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
@Data | |||||
@ApiModel(value = "ReviewChecklistApproveVO", description = "") | |||||
public class ReviewChecklistApproveVO { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
private Long id; | |||||
@ApiModelProperty("项目编号") | |||||
private String projectCode; | |||||
@ApiModelProperty("审批人") | |||||
private String createBy; | |||||
@ApiModelProperty("审批时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("审批人ID") | |||||
private Long createById; | |||||
@ApiModelProperty("审批人code") | |||||
private String createByCode; | |||||
@ApiModelProperty("标题") | |||||
private String title; | |||||
@ApiModelProperty("子标题") | |||||
private String subTitle; | |||||
@ApiModelProperty("内容") | |||||
private String content; | |||||
@ApiModelProperty("对应页码") | |||||
private String corrPageNum; | |||||
@ApiModelProperty("否决情形") | |||||
private String rejectionSituation; | |||||
@ApiModelProperty("响应情况") | |||||
private String responseSituation; | |||||
@ApiModelProperty("评审意见") | |||||
private String reviewComments; | |||||
@ApiModelProperty("审核结果 1.通过 2不通过 3一票否决") | |||||
private Integer reviewResult; | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.pmapi.projectdeclared.service; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import com.ningdatech.pmapi.projectdeclared.model.entity.ReviewChecklistApprove; | |||||
/** | |||||
* <p> | |||||
* 服务类 | |||||
* </p> | |||||
* | |||||
* @author Poffy | |||||
* @since 2023-02-13 | |||||
*/ | |||||
public interface IReviewChecklistApproveService extends IService<ReviewChecklistApprove> { | |||||
} |
@@ -0,0 +1,21 @@ | |||||
package com.ningdatech.pmapi.projectdeclared.service.impl; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import com.ningdatech.pmapi.projectdeclared.model.entity.ReviewChecklistApprove; | |||||
import com.ningdatech.pmapi.projectlib.mapper.ReviewChecklistApproveMapper; | |||||
import com.ningdatech.pmapi.projectdeclared.service.IReviewChecklistApproveService; | |||||
import org.springframework.stereotype.Service; | |||||
/** | |||||
* <p> | |||||
* 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author Poffy | |||||
* @since 2023-02-13 | |||||
*/ | |||||
@Service | |||||
public class ReviewChecklistApproveServiceImpl extends ServiceImpl<ReviewChecklistApproveMapper, ReviewChecklistApprove> | |||||
implements IReviewChecklistApproveService { | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.pmapi.projectlib.mapper; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import com.ningdatech.pmapi.projectdeclared.model.entity.ReviewChecklistApprove; | |||||
/** | |||||
* <p> | |||||
* Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author Poffy | |||||
* @since 2023-02-13 | |||||
*/ | |||||
public interface ReviewChecklistApproveMapper extends BaseMapper<ReviewChecklistApprove> { | |||||
} |
@@ -0,0 +1,138 @@ | |||||
package com.ningdatech.pmapi.projectlib.model.vo; | |||||
import com.alibaba.fastjson.annotation.JSONField; | |||||
import com.fasterxml.jackson.annotation.JsonFormat; | |||||
import com.ningdatech.pmapi.common.compare.Compare; | |||||
import com.ningdatech.pmapi.projectlib.enumeration.ProjectTypeNewEnum; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Builder; | |||||
import lombok.Data; | |||||
import lombok.experimental.Tolerate; | |||||
import java.math.BigDecimal; | |||||
import java.time.LocalDateTime; | |||||
import java.util.Objects; | |||||
import java.util.Optional; | |||||
/** | |||||
* <p> | |||||
* ProjectReviewCheckListItemVO | |||||
* </p> | |||||
* | |||||
* @author ZPF | |||||
* @since 15:13 2023/11/07 | |||||
*/ | |||||
@Data | |||||
@Builder | |||||
@ApiModel("项目库审查列表视图") | |||||
public class ProjectReviewCheckListItemVO { | |||||
@Tolerate | |||||
public ProjectReviewCheckListItemVO() { | |||||
} | |||||
@ApiModelProperty("来源 1申报项目 2项目归集") | |||||
private String fromType; | |||||
@ApiModelProperty("项目ID") | |||||
private Long id; | |||||
@ApiModelProperty("项目编号") | |||||
private String projectCode; | |||||
@ApiModelProperty("区域") | |||||
private String area; | |||||
@ApiModelProperty("区域Code") | |||||
private String areaCode; | |||||
@ApiModelProperty("项目名称") | |||||
private String projectName; | |||||
@ApiModelProperty("申报金额") | |||||
private BigDecimal declaredAmount; | |||||
@ApiModelProperty("批复金额") | |||||
private BigDecimal approvedAmount; | |||||
@ApiModelProperty("立项批复时间") | |||||
@JSONField(format = "yyyy-MM-dd") | |||||
private LocalDateTime approvalDate; | |||||
@ApiModelProperty("项目类型 01:首次建设 02:迭代升级 03:结转建设 04新运维 05续运维") | |||||
@Compare("项目类型") | |||||
private String projectType; | |||||
@ApiModelProperty("项目阶段") | |||||
private Integer stage; | |||||
@ApiModelProperty("项目状态") | |||||
private Integer status; | |||||
@ApiModelProperty("申报年度") | |||||
private Integer projectYear; | |||||
@ApiModelProperty("申报单位") | |||||
private String buildOrg; | |||||
@ApiModelProperty("业务领域") | |||||
private Integer bizDomain; | |||||
@ApiModelProperty("流程状态") | |||||
private Integer processStatus; | |||||
@ApiModelProperty("实例code") | |||||
private String instCode; | |||||
@ApiModelProperty("建设单位名称") | |||||
private String buildOrgName; | |||||
@ApiModelProperty("建设单位统一社会信用代码") | |||||
private String buildOrgCode; | |||||
private String projectTypeName; | |||||
@ApiModelProperty("成交金额") | |||||
private BigDecimal transactionAmount; | |||||
@ApiModelProperty("成交时间") | |||||
@JSONField(format = "yyyy-MM-dd") | |||||
private LocalDateTime transactionTime; | |||||
@ApiModelProperty("交货时间") | |||||
@JSONField(format = "yyyy-MM-dd") | |||||
private LocalDateTime deliveryTime; | |||||
@ApiModelProperty("合同总金额") | |||||
private BigDecimal contractAmount; | |||||
@ApiModelProperty("年度支付计划-年度支付计划(元)") | |||||
private BigDecimal annualPlanAmount; | |||||
@ApiModelProperty("建设周期 月") | |||||
private Integer buildCycle; | |||||
@ApiModelProperty("计划验收时间") | |||||
@JSONField(format = "yyyy-MM-dd") | |||||
private LocalDateTime planAcceptanceTime; | |||||
public String getProjectTypeName() { | |||||
if (Objects.nonNull(this.projectType)) { | |||||
Optional.ofNullable(ProjectTypeNewEnum.getDesc(this.projectType)) | |||||
.ifPresent(desc -> this.projectTypeName = desc); | |||||
} | |||||
return this.projectTypeName; | |||||
} | |||||
@ApiModelProperty("已核查人数 7/7") | |||||
private String verifiedHumans; | |||||
@ApiModelProperty("创建时间") | |||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改时间") | |||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm") | |||||
private LocalDateTime updateOn; | |||||
} |