Browse Source

项目归集

master
PoffyZhang 1 year ago
parent
commit
d0fa0cd48a
10 changed files with 565 additions and 0 deletions
  1. +55
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectCollectionController.java
  2. +136
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectCollectionManage.java
  3. +16
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/mapper/ProjectCollectionMapper.java
  4. +5
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/mapper/ProjectCollectionMapper.xml
  5. +148
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/dto/ProjectCollectionSaveDTO.java
  6. +3
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/req/ProjectListReq.java
  7. +153
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectCollectionVO.java
  8. +16
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/service/IProjectCollectionService.java
  9. +21
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/service/impl/ProjectCollectionServiceImpl.java
  10. +12
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/user/security/auth/model/UserInfoDetails.java

+ 55
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectCollectionController.java View File

@@ -0,0 +1,55 @@
package com.ningdatech.pmapi.projectlib.controller;

import com.ningdatech.basic.model.PageVo;
import com.ningdatech.log.annotation.WebLog;
import com.ningdatech.pmapi.projectlib.manage.ProjectCollectionManage;
import com.ningdatech.pmapi.projectlib.model.dto.ProjectCollectionSaveDTO;
import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq;
import com.ningdatech.pmapi.projectlib.model.vo.ProjectCollectionVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
* @Classname ProjectCollectionController
* @Description
* @Date 2023/6/25 9:11
* @Author PoffyZhang
*/
@RestController
@RequiredArgsConstructor
@Api(tags = "项目归集控制器")
@RequestMapping("/api/v1/project-collection")
public class ProjectCollectionController {

private final ProjectCollectionManage collectionManage;

@GetMapping("/list")
@ApiOperation("项目归集列表")
public PageVo<ProjectCollectionVO> list(ProjectListReq req) {
return collectionManage.list(req);
}

@GetMapping("/detail/{id}")
@ApiOperation("项目归集详情")
public ProjectCollectionVO detail(@PathVariable Long id) {
return collectionManage.detail(id);
}

@PostMapping("/save")
@ApiOperation("项目归集保存")
@WebLog("项目归集保存")
public String save(@Valid @RequestBody ProjectCollectionSaveDTO dto) {
return collectionManage.save(dto);
}

@PostMapping("/delete/{id}")
@ApiOperation("项目归集删除")
@WebLog("项目归集删除")
public String delete(@PathVariable Long id) {
return collectionManage.delete(id);
}
}

+ 136
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectCollectionManage.java View File

@@ -0,0 +1,136 @@
package com.ningdatech.pmapi.projectlib.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.ningdatech.basic.function.VUtils;
import com.ningdatech.basic.model.PageVo;
import com.ningdatech.pmapi.common.helper.RegionCacheHelper;
import com.ningdatech.pmapi.projectlib.model.dto.ProjectCollectionSaveDTO;
import com.ningdatech.pmapi.projectlib.model.entity.ProjectCollection;
import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq;
import com.ningdatech.pmapi.projectlib.model.vo.ProjectCollectionVO;
import com.ningdatech.pmapi.projectlib.service.IProjectCollectionService;
import com.ningdatech.pmapi.sys.model.dto.RegionDTO;
import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails;
import com.ningdatech.pmapi.user.util.LoginUserUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
* @Classname ProjectCollectionManage
* @Description
* @Date 2023/6/25 9:13
* @Author PoffyZhang
*/
@Component
@Slf4j
@AllArgsConstructor
public class ProjectCollectionManage {

private final IProjectCollectionService collectionService;

private final RegionCacheHelper regionCacheHelper;

/**
* 项目归集
* @param req
* @return
*/
public PageVo<ProjectCollectionVO> list(ProjectListReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
String buildOrgCode = req.getBuildOrgCode();
//如果是超管 可以看所有
if(user.getSuperAdmin()){
buildOrgCode = null;
}

Page<ProjectCollection> page = req.page();

LambdaQueryWrapper<ProjectCollection> wrapper = Wrappers.lambdaQuery(ProjectCollection.class)
.like(StringUtils.isNotBlank(req.getProjectName()), ProjectCollection::getProjectName, req.getProjectName())
.like(StringUtils.isNotBlank(req.getBuildOrgName()), ProjectCollection::getBuildOrgName, req.getBuildOrgName())
.eq(Objects.nonNull(buildOrgCode), ProjectCollection::getBuildOrgCode, buildOrgCode);
//处理 行政区域
if(StringUtils.isNotBlank(req.getRegionCode())){
List<RegionDTO> regions = regionCacheHelper.listChildren(req.getRegionCode(), req.getRegionLevel());

if(CollUtil.isNotEmpty(regions)){
wrapper.in(ProjectCollection::getAreaCode,regions.stream().map(RegionDTO::getRegionCode).collect(Collectors.toList()));
}
}

collectionService.page(page,wrapper);

if(0L == page.getTotal()){
return PageVo.empty();
}

List<ProjectCollectionVO> res = page.getRecords().stream()
.map(record -> BeanUtil.copyProperties(record,ProjectCollectionVO.class))
.collect(Collectors.toList());

return PageVo.of(res,page.getTotal());
}

/**
* 项目归集详情
* @param id
* @return
*/
public ProjectCollectionVO detail(Long id) {
ProjectCollection projectCollection = collectionService.getById(id);

return BeanUtil.copyProperties(projectCollection,ProjectCollectionVO.class);
}

/**
* 保存
* @param dto
* @return
*/
public String save(ProjectCollectionSaveDTO dto) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();

ProjectCollection projectCollection = BeanUtil.copyProperties(dto,ProjectCollection.class);
if(Objects.nonNull(dto.getId())){
ProjectCollection old = collectionService.getById(dto.getId());
VUtils.isTrue(Objects.isNull(old)).throwMessage("该项目归集不存在!");
projectCollection.setId(dto.getId());
}else{
projectCollection.setCreateBy(user.getUsername());
projectCollection.setCreateOn(LocalDateTime.now());
}

projectCollection.setUpdateBy(user.getUsername());
projectCollection.setUpdateOn(LocalDateTime.now());
if(collectionService.saveOrUpdate(projectCollection)){
return "保存成功";
}
return "保存失败";
}

/**
* 删除
* @param id
* @return
*/
public String delete(Long id) {
ProjectCollection projectCollection = collectionService.getById(id);

VUtils.isTrue(Objects.isNull(projectCollection)).throwMessage("该项目归集不存在 删除失败");

if(collectionService.removeById(id)){
return "删除成功";
}
return "删除失败";
}
}

+ 16
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/mapper/ProjectCollectionMapper.java View File

@@ -0,0 +1,16 @@
package com.ningdatech.pmapi.projectlib.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ningdatech.pmapi.projectlib.model.entity.ProjectCollection;

/**
* <p>
* Mapper 接口
* </p>
*
* @author ZPF
* @since 2023-06-25
*/
public interface ProjectCollectionMapper extends BaseMapper<ProjectCollection> {

}

+ 5
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/mapper/ProjectCollectionMapper.xml View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ningdatech.pmapi.projectlib.mapper.ProjectCollectionMapper">

</mapper>

+ 148
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/dto/ProjectCollectionSaveDTO.java View File

@@ -0,0 +1,148 @@
package com.ningdatech.pmapi.projectlib.model.dto;

import com.ningdatech.pmapi.projectlib.enumeration.ProjectTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Objects;
import java.util.Optional;

/**
* <p>
* 项目归集对象
* </p>
*
* @author ZPF
* @since 2023-06-21
*/
@Data
@ApiModel(value = "ProjectCollectionSaveDTO", description = "项目归集对象保存")
public class ProjectCollectionSaveDTO implements Serializable {

private static final long serialVersionUID = 1L;

@ApiModelProperty("主键")
private Long id;

@ApiModelProperty("所属地区编号")
private String areaCode;

@ApiModelProperty("所属地区名称")
private String area;

@ApiModelProperty("项目阶段")
private Integer stage;

@ApiModelProperty("项目状态")
private Integer status;

@ApiModelProperty("项目名称")
private String projectName;

@ApiModelProperty("项目负责人")
private String responsibleMan;

@ApiModelProperty("负责人手机号码")
private String responsibleManMobile;

@ApiModelProperty("项目联系人")
private String contactName;

@ApiModelProperty("项目联系人手机号码")
private String contactPhone;

@ApiModelProperty("建设单位名称")
private String buildOrgName;

@ApiModelProperty("建设单位统一社会信用代码")
private String orgCreditCode;

@ApiModelProperty("公司编码code")
private String buildOrgCode;

@ApiModelProperty("项目类型 1:建设 2:运维")
private Integer projectType;

@ApiModelProperty("是否首次新建 0:否 1:是")
private Integer isFirst;

@ApiModelProperty("项目预算年度")
private Integer projectYear;

@ApiModelProperty("建设层级 1:国家级 2:省级 3:省本级 4:市级 5:市本级 6:区县 7乡镇")
private Integer buildLevel;

@ApiModelProperty("发改编码")
private String developCode;

@ApiModelProperty("财政编码")
private String financialCode;

@ApiModelProperty("项目简介")
private String projectIntroduction;

@ApiModelProperty("资金申报情况-申报金额(万元)")
private BigDecimal declareAmount;

@ApiModelProperty("立项批复资金(万元)")
private BigDecimal approvalAmount;

@ApiModelProperty("关联应用")
private String applicationName;

@ApiModelProperty("关联应用IRS编码")
private String applicationIrsCode;

@ApiModelProperty("可行性研究报告")
private String feasibilityStudyReport;

@ApiModelProperty("立项批复文件")
private String approvedFile;

@ApiModelProperty("采购文件")
private String purchaseFile;

@ApiModelProperty("中标通知书")
private String acceptanceLetter;

@ApiModelProperty("采购合同")
private String purchaseContract;

@ApiModelProperty("验收报告")
private String acceptanceReport;

@ApiModelProperty("变更批复文件")
private String changeApprovalDoc;

@ApiModelProperty("承建单位")
private String constructionOrg;

@ApiModelProperty("承建单位统一信用编码")
private String constructionOrgCreditCode;

@ApiModelProperty("监理单位")
private String supervisorOrg;

@ApiModelProperty("监理单位统一信用编码")
private String supervisorOrgCreditCode;

@ApiModelProperty("主管部门名称")
private String superOrg;

@ApiModelProperty("主管部门Code")
private String superOrgCode;

private String projectTypeName;

public String getProjectTypeName() {
if (Objects.nonNull(this.projectType)) {
Optional.ofNullable(ProjectTypeEnum.getDesc(this.projectType))
.ifPresent(desc -> this.projectTypeName = desc);
}
return this.projectTypeName;
}
}

+ 3
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/req/ProjectListReq.java View File

@@ -31,6 +31,9 @@ public class ProjectListReq extends PagePo {
@ApiModelProperty("区域编码") @ApiModelProperty("区域编码")
private String regionCode; private String regionCode;


@ApiModelProperty("区域等级")
private Integer regionLevel = 3;

@ApiModelProperty("项目名称") @ApiModelProperty("项目名称")
private String projectName; private String projectName;




+ 153
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectCollectionVO.java View File

@@ -0,0 +1,153 @@
package com.ningdatech.pmapi.projectlib.model.vo;

import com.ningdatech.pmapi.projectlib.enumeration.ProjectTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Objects;
import java.util.Optional;

/**
* <p>
* 项目归集对象
* </p>
*
* @author ZPF
* @since 2023-06-21
*/
@Data
@ApiModel(value = "ProjectCollectionVO", description = "项目归集对象")
public class ProjectCollectionVO implements Serializable {

private static final long serialVersionUID = 1L;

@ApiModelProperty("主键")
private Long id;

@ApiModelProperty("所属地区编号")
private String areaCode;

@ApiModelProperty("所属地区名称")
private String area;

@ApiModelProperty("项目阶段")
private Integer stage;

@ApiModelProperty("项目状态")
private Integer status;

@ApiModelProperty("项目名称")
private String projectName;

@ApiModelProperty("项目负责人")
private String responsibleMan;

@ApiModelProperty("负责人手机号码")
private String responsibleManMobile;

@ApiModelProperty("项目联系人")
private String contactName;

@ApiModelProperty("项目联系人手机号码")
private String contactPhone;

@ApiModelProperty("建设单位名称")
private String buildOrgName;

@ApiModelProperty("建设单位统一社会信用代码")
private String orgCreditCode;

@ApiModelProperty("公司编码code")
private String buildOrgCode;

@ApiModelProperty("项目类型 1:建设 2:运维")
private Integer projectType;

@ApiModelProperty("是否首次新建 0:否 1:是")
private Integer isFirst;

@ApiModelProperty("项目预算年度")
private Integer projectYear;

@ApiModelProperty("建设层级 1:国家级 2:省级 3:省本级 4:市级 5:市本级 6:区县 7乡镇")
private Integer buildLevel;

@ApiModelProperty("发改编码")
private String developCode;

@ApiModelProperty("财政编码")
private String financialCode;

@ApiModelProperty("项目简介")
private String projectIntroduction;

@ApiModelProperty("资金申报情况-申报金额(万元)")
private BigDecimal declareAmount;

@ApiModelProperty("立项批复资金(万元)")
private BigDecimal approvalAmount;

@ApiModelProperty("关联应用")
private String applicationName;

@ApiModelProperty("关联应用IRS编码")
private String applicationIrsCode;

private LocalDateTime createOn;
private LocalDateTime updateOn;
private String createBy;
private String updateBy;

@ApiModelProperty("可行性研究报告")
private String feasibilityStudyReport;

@ApiModelProperty("立项批复文件")
private String approvedFile;

@ApiModelProperty("采购文件")
private String purchaseFile;

@ApiModelProperty("中标通知书")
private String acceptanceLetter;

@ApiModelProperty("采购合同")
private String purchaseContract;

@ApiModelProperty("验收报告")
private String acceptanceReport;

@ApiModelProperty("变更批复文件")
private String changeApprovalDoc;

@ApiModelProperty("承建单位")
private String constructionOrg;

@ApiModelProperty("承建单位统一信用编码")
private String constructionOrgCreditCode;

@ApiModelProperty("监理单位")
private String supervisorOrg;

@ApiModelProperty("监理单位统一信用编码")
private String supervisorOrgCreditCode;

@ApiModelProperty("主管部门名称")
private String superOrg;

@ApiModelProperty("主管部门Code")
private String superOrgCode;

private String projectTypeName;

public String getProjectTypeName() {
if (Objects.nonNull(this.projectType)) {
Optional.ofNullable(ProjectTypeEnum.getDesc(this.projectType))
.ifPresent(desc -> this.projectTypeName = desc);
}
return this.projectTypeName;
}
}

+ 16
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/service/IProjectCollectionService.java View File

@@ -0,0 +1,16 @@
package com.ningdatech.pmapi.projectlib.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ningdatech.pmapi.projectlib.model.entity.ProjectCollection;

/**
* <p>
* 服务类
* </p>
*
* @author ZPF
* @since 2023-06-25
*/
public interface IProjectCollectionService extends IService<ProjectCollection> {

}

+ 21
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/service/impl/ProjectCollectionServiceImpl.java View File

@@ -0,0 +1,21 @@
package com.ningdatech.pmapi.projectlib.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ningdatech.pmapi.projectlib.mapper.ProjectCollectionMapper;
import com.ningdatech.pmapi.projectlib.model.entity.ProjectCollection;
import com.ningdatech.pmapi.projectlib.service.IProjectCollectionService;
import org.springframework.stereotype.Service;

/**
* <p>
* 服务实现类
* </p>
*
* @author ZPF
* @since 2023-06-25
*/
@Service
public class ProjectCollectionServiceImpl extends ServiceImpl<ProjectCollectionMapper, ProjectCollection>
implements IProjectCollectionService {

}

+ 12
- 0
pmapi/src/main/java/com/ningdatech/pmapi/user/security/auth/model/UserInfoDetails.java View File

@@ -145,6 +145,18 @@ public class UserInfoDetails extends AbstractLoginUser implements UserDetails {
return Boolean.FALSE; return Boolean.FALSE;
} }


public Boolean getSuperAdmin() {
if (CollUtil.isNotEmpty(this.userRoleList)) {
for (Role role : this.userRoleList) {
RoleEnum roleEnum = RoleEnum.mathByName(role.getCode());
if (Objects.nonNull(roleEnum) && roleEnum.eq(RoleEnum.SUPER_ADMIN.name())) {
return Boolean.TRUE;
}
}
}
return Boolean.FALSE;
}

public Boolean getIsMunicipalOrg() { public Boolean getIsMunicipalOrg() {
//如果是丽水市本级的code 就是 //如果是丽水市本级的code 就是
if (RegionConst.RC_LS.equals(this.regionCode)) { if (RegionConst.RC_LS.equals(this.regionCode)) {


Loading…
Cancel
Save