Sfoglia il codice sorgente

增加立项备案列表

tags/24080901
WendyYang 1 anno fa
parent
commit
ba84c5cf33
6 ha cambiato i file con 214 aggiunte e 3 eliminazioni
  1. +23
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/controller/MhProjectController.java
  2. +96
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/MhProjectManage.java
  3. +6
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/MhProject.java
  4. +32
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/req/DeclaredProjectListReq.java
  5. +47
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/DeclaredProjectListVO.java
  6. +10
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectService.java

+ 23
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/controller/MhProjectController.java Vedi File

@@ -1,18 +1,38 @@
package com.hz.pm.api.projectlib.controller;

import com.hz.pm.api.projectlib.manage.MhProjectManage;
import com.hz.pm.api.projectlib.model.req.DeclaredProjectListReq;
import com.hz.pm.api.projectlib.model.vo.DeclaredProjectListVO;
import com.ningdatech.basic.model.PageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RestController;

/**
* <p>
* 前端控制器
* 前端控制器
* </p>
*
* @author WendyYang
* @since 2024-01-30
*/
@Controller
@RequestMapping("/api.projectlib/mhProject")
@Api(tags = "信产项目(立项备案)列表")
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/mh/project")
public class MhProjectController {

private final MhProjectManage mhProjectManage;

@ApiOperation("立项备案列表")
@GetMapping("/pageDeclaredProject")
public PageVo<DeclaredProjectListVO> pageDeclaredProject(DeclaredProjectListReq req) {
return mhProjectManage.pageDeclaredProject(req);
}


}

+ 96
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/MhProjectManage.java Vedi File

@@ -0,0 +1,96 @@
package com.hz.pm.api.projectlib.manage;

import cn.hutool.core.util.StrUtil;
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.hz.pm.api.projectlib.model.entity.MhProject;
import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.req.DeclaredProjectListReq;
import com.hz.pm.api.projectlib.model.vo.DeclaredProjectListVO;
import com.hz.pm.api.projectlib.service.IMhProjectService;
import com.hz.pm.api.projectlib.service.IProjectService;
import com.hz.pm.api.user.security.model.UserInfoDetails;
import com.hz.pm.api.user.util.LoginUserUtil;
import com.ningdatech.basic.model.PageVo;
import com.ningdatech.basic.util.CollUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
* <p>
* MhProjectManage
* </p>
*
* @author WendyYang
* @since 19:06 2024/1/30
*/
@Component
@RequiredArgsConstructor
public class MhProjectManage {

private final IMhProjectService mhProjectService;
private final IProjectService projectService;

private LambdaQueryWrapper<MhProject> buildQuery(DeclaredProjectListReq req) {
LambdaQueryWrapper<MhProject> query = Wrappers.lambdaQuery(MhProject.class)
.like(StrUtil.isNotBlank(req.getProjectName()), MhProject::getProjectName, req.getProjectName())
.like(StrUtil.isNotBlank(req.getDeclaredUnit()), MhProject::getUnitName, req.getDeclaredUnit());
if (req.getBudgetYear() != null) {
LocalDateTime startTime = LocalDate.of(req.getBudgetYear(), 1, 1).atStartOfDay();
LocalDateTime endTime = startTime.plusYears(1);
query.ge(MhProject::getCreateTime, startTime);
query.lt(MhProject::getCreateTime, endTime);
}
UserInfoDetails user = LoginUserUtil.loginUserDetail();
if (!user.getSuperAdmin() && !user.getRegionAdmin()) {
query.eq(MhProject::getUnitId, user.getMhUnitId());
}
return query;
}

public PageVo<DeclaredProjectListVO> pageDeclaredProject(DeclaredProjectListReq req) {
LambdaQueryWrapper<MhProject> query = buildQuery(req);
Page<MhProject> page = mhProjectService.page(req.page(), query);
if (page.getTotal() == 0) {
return PageVo.empty();
}
List<MhProject> records = page.getRecords();
List<String> projectCodes = CollUtils.fieldList(records, MhProject::getProjectCode);
Map<String, Project> projectMap;
if (!projectCodes.isEmpty()) {
List<Project> projects = projectService.listNewestByProjectCodes(projectCodes);
projectMap = CollUtils.listToMap(projects, Project::getProjectCode);
} else {
projectMap = Collections.emptyMap();
}
List<DeclaredProjectListVO> data = records.stream().map(w -> {
DeclaredProjectListVO item = new DeclaredProjectListVO();
item.setMhProjectId(w.getId());
Project project = projectMap.get(w.getProjectCode());
if (project == null) {
item.setStatus(null);
item.setStage(null);
} else {
item.setStatus(project.getStatus());
item.setStage(project.getStage());
item.setBizDomain(project.getBizDomain());
}
item.setProjectCode(w.getProjectCode());
item.setProjectName(w.getProjectName());
item.setDeclaredAmount(w.getTotalMoney());
item.setCreateTime(w.getCreateTime());
return item;
}).collect(Collectors.toList());
return PageVo.of(data, page.getTotal());
}


}

+ 6
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/MhProject.java Vedi File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

import com.hz.pm.api.external.model.dto.MhProjectSchemeTargetDTO;
import io.swagger.annotations.ApiModel;
@@ -53,4 +54,9 @@ public class MhProject implements Serializable {
@ApiModelProperty("单位名称")
private String unitName;

@ApiModelProperty("项目编码")
private String projectCode;

private LocalDateTime createTime;

}

+ 32
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/req/DeclaredProjectListReq.java Vedi File

@@ -0,0 +1,32 @@
package com.hz.pm.api.projectlib.model.req;

import com.ningdatech.basic.model.PagePo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
* <p>
* DeclaredProjectListReq
* </p>
*
* @author WendyYang
* @since 19:13 2024/1/30
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DeclaredProjectListReq extends PagePo {

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

@ApiModelProperty("申报单位")
private String declaredUnit;

@ApiModelProperty("项目类型")
private String projectType;

@ApiModelProperty("预算年度")
private Integer budgetYear;

}

+ 47
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/DeclaredProjectListVO.java Vedi File

@@ -0,0 +1,47 @@
package com.hz.pm.api.projectlib.model.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
* <p>
* DeclaredProjectList
* </p>
*
* @author WendyYang
* @since 19:07 2024/1/30
*/
@Data
public class DeclaredProjectListVO {

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

@ApiModelProperty("申报单位")
private String declaredUnit;

@ApiModelProperty("领域")
private Integer bizDomain;

@ApiModelProperty("项目申报金额(万元)")
private BigDecimal declaredAmount;

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

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

@ApiModelProperty("创建时间")
private LocalDateTime createTime;

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

@ApiModelProperty("ID")
private Long mhProjectId;

}

+ 10
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectService.java Vedi File

@@ -1,5 +1,7 @@
package com.hz.pm.api.projectlib.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -8,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.hz.pm.api.projectlib.model.po.ProjectPO;
import com.hz.pm.api.projectlib.model.req.ProjectListReq;

import java.util.Collection;
import java.util.List;

/**
@@ -43,4 +46,11 @@ public interface IProjectService extends IService<Project> {
update(wrapper);
}

default List<Project> listNewestByProjectCodes(Collection<String> projectCode){
Wrapper<Project> query = Wrappers.lambdaQuery(Project.class)
.eq(Project::getNewest, Boolean.TRUE)
.in(Project::getProjectCode, projectCode);
return list(query);
}

}

Loading…
Annulla
Salva