Merge branch 'master' into gaea

# Conflicts:
#	core/src/main/java/com/dite/znpt/domain/entity/ProjectEntity.java
This commit is contained in:
cuizhibin 2025-05-08 17:01:23 +08:00
commit d56cc4baa7
14 changed files with 542 additions and 51 deletions

View File

@ -139,5 +139,9 @@ public class ProjectEntity extends AuditableEntity implements Serializable {
@ApiModelProperty("项目工作岗位 可能有多项json对象保存")
@TableField("job")
private String job;
@ApiModelProperty(value = "项目安全风险点", example = "1", notes = "项目安全风险点 可能有多项,逗号分隔")
@TableField("safety_risk_point")
private String safetyRiskPoint;
}

View File

@ -1,11 +1,13 @@
package com.dite.znpt.domain.vo;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @author huise23
* @date 2025/04/11 23:17
@ -20,9 +22,6 @@ public class ProjectListReq implements Serializable {
@ApiModelProperty("查询关键字")
private String keyword;
@ApiModelProperty("项目信息Id")
private String projectId;
@ApiModelProperty("项目名称")
private String projectName;
@ -32,17 +31,17 @@ public class ProjectListReq implements Serializable {
@ApiModelProperty("风场地址")
private String farmAddress;
@ApiModelProperty("检查方式字典method_id")
private String methodId;
@ApiModelProperty("委托单位")
private String client;
@ApiModelProperty("项目规模")
private String scale;
@ApiModelProperty("风机型号")
private String turbineModel;
@ApiModelProperty("项目状态字典project_status")
@ApiModelProperty("项目状态枚举ProjectStatusEnum")
private String status;
@ApiModelProperty("创建日期-起")
private LocalDate createDateBegin;
@ApiModelProperty("创建日期-讫")
private LocalDate createDateEnd;
}

View File

@ -0,0 +1,88 @@
package com.dite.znpt.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @Author: gaoxiong
* @Date: 2025/4/29 21:27
* @Description:
*/
@Data
@ApiModel("项目信息列表响应实体")
public class ProjectListResp implements Serializable {
@Serial
private static final long serialVersionUID = 2638755916020263971L;
@ApiModelProperty("项目id")
private String projectId;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("风场名称")
private String farmName;
@ApiModelProperty("项目状态枚举ProjectStatusEnum")
private String status;
@ApiModelProperty("项目状态枚举ProjectStatusEnum")
private String statusLabel;
@ApiModelProperty("项目封面")
private String coverUrl;
@ApiModelProperty("风场地址")
private String farmAddress;
@ApiModelProperty("委托单位")
private String client;
@ApiModelProperty("委托单位联系人")
private String clientContact;
@ApiModelProperty("委托单位联系电话")
private String clientPhone;
@ApiModelProperty("检查单位")
private String inspectionUnit;
@ApiModelProperty("检查单位联系人")
private String inspectionContact;
@ApiModelProperty("检查单位联系电话")
private String inspectionPhone;
@ApiModelProperty("项目规模")
private String scale;
@ApiModelProperty("风机型号")
private String turbineModel;
@ApiModelProperty("项目经理id")
private String projectManagerId;
@ApiModelProperty("项目经理")
private String projectManagerName;
@ApiModelProperty("施工人员id")
private String constructionPersonnelId;
@ApiModelProperty("施工人员")
private String constructionPersonnelName;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,102 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @Author: gaoxiong
* @Date: 2025/4/29 21:28
* @Description:
*/
@Data
@ApiModel("项目信息请求实体")
public class ProjectReq implements Serializable {
@Serial
private static final long serialVersionUID = 740685592879189406L;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("项目封面")
private String coverUrl;
@ApiModelProperty("风场名称")
private String farmName;
@ApiModelProperty("风场地址")
private String farmAddress;
@ApiModelProperty("委托单位")
private String client;
@ApiModelProperty("委托单位联系人")
private String clientContact;
@ApiModelProperty("委托单位联系电话")
private String clientPhone;
@ApiModelProperty("检查单位")
private String inspectionUnit;
@ApiModelProperty("检查单位联系人")
private String inspectionContact;
@ApiModelProperty("检查单位联系电话")
private String inspectionPhone;
@ApiModelProperty("项目规模")
private String scale;
@ApiModelProperty("风机型号")
private String turbineModel;
@ApiModelProperty("施工人员")
private String constructionPersonnel;
@ApiModelProperty("施工人员id")
private String constructionPersonnelId;
@ApiModelProperty("安全员id")
private String auditorId;
@ApiModelProperty("质量员id")
private String qualityOfficerId;
@ApiModelProperty("项目经理id")
private String projectManagerId;
@ApiModelProperty("施工组长id")
private String constructionTeamLeaderId;
@ApiModelProperty("技术方案图片,多个用逗号隔开")
private String technicalImage;
@ApiModelProperty("技术方案内容")
private String technicalContent;
@ApiModelProperty("安全措施图片,多个用逗号隔开")
private String safetyImage;
@ApiModelProperty("安全措施内容")
private String safetyContent;
@ApiModelProperty("交底内容")
private String discloseContent;
@ApiModelProperty("状态0待施工1施工中2已完工3已审核4已验收")
private Integer status;
@ApiModelProperty("项目工作类型 可能有多项,逗号分隔")
private String workType;
@ApiModelProperty("项目工作岗位 可能有多项json对象保存")
private String job;
@ApiModelProperty(value = "项目安全风险点", example = "1", notes = "项目安全风险点 可能有多项,逗号分隔")
private String safetyRiskPoint;
}

View File

@ -1,18 +1,32 @@
package com.dite.znpt.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.dite.znpt.domain.entity.ProjectEntity;
import java.io.Serial;
import java.io.Serializable;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 项目信息响应实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("项目信息响应实体")
public class ProjectResp extends ProjectEntity {
public class ProjectResp extends ProjectReq implements Serializable {
@Serial
private static final long serialVersionUID = -1883901559600186726L;
@ApiModelProperty("项目id")
private String projectId;
}

View File

@ -0,0 +1,52 @@
package com.dite.znpt.enums;
import cn.hutool.json.JSONObject;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/4/29 21:32
* @Description:
*/
@Getter
public enum ProjectStatusEnum {
PENDING("PENDING","待施工"),
IN_PROGRESS("IN_PROGRESS","施工中"),
COMPLETED("COMPLETED","已完工"),
AUDITED("AUDITED","已审核"),
ACCEPTED("ACCEPTED","已验收");
private final String code;
private final String desc;
ProjectStatusEnum(String code, String desc){
this.code = code;
this.desc = desc;
}
public static ProjectStatusEnum getByCode(String code){
for (ProjectStatusEnum e : ProjectStatusEnum.values() ) {
if(e.code.equals(code)){
return e;
}
}
return null;
}
public static String getDescByCode(String code){
ProjectStatusEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listAll(){
List<JSONObject> list = new ArrayList<>(ProjectStatusEnum.values().length);
for (ProjectStatusEnum e : ProjectStatusEnum.values() ) {
JSONObject jsonObject = new JSONObject();
jsonObject.set(e.code, e.desc);
list.add(jsonObject);
}
return list;
}
}

View File

@ -0,0 +1,66 @@
package com.dite.znpt.enums;
import cn.hutool.json.JSONObject;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/4/29 22:34
* @Description:
*/
@Getter
public enum ProjectWorkJobEnum {
OUT_WORK_DRONE_FLYER("out-work__drone-flyer", "飞手", ProjectWorkTypeEnum.OUT_WORK),
OUT_WORK_FLYAID("out-work__flyaid", "飞助", ProjectWorkTypeEnum.OUT_WORK),
OUT_WORK_ASCEND_HEIGHT("out-work__ascend-height", "登高", ProjectWorkTypeEnum.OUT_WORK),
OUT_WORK_DRIVER("out-work__driver", "司机", ProjectWorkTypeEnum.OUT_WORK),
OUT_WORK_GROUND_SERVICE("out-work__ground-service", "地勤", ProjectWorkTypeEnum.OUT_WORK),
IN_WORK_ASCEND_HEIGHT("in-work__ascend-height", "登高", ProjectWorkTypeEnum.IN_WORK),
IN_WORK_DRIVER("in-work__driver", "司机", ProjectWorkTypeEnum.IN_WORK),
IN_WORK_GROUND_SERVICE("in-work__ground-service", "地勤", ProjectWorkTypeEnum.IN_WORK),
LIGHTNING_PROTECTING_WORK_METER_READING("lightning-protection-work__meter_reading","抄表",ProjectWorkTypeEnum.LIGHTNING_PROTECTING_WORK),
LIGHTNING_PROTECTING_WORK_UNMAN_OPERATION("lightning-protection-work__unman_operation","无人化装备操作",ProjectWorkTypeEnum.LIGHTNING_PROTECTING_WORK),
LIGHTNING_PROTECTING_WORK_UNMAN_ANTI_THUNDER("lightning-protection-work__unman_anti_thunder","无人机防雷",ProjectWorkTypeEnum.LIGHTNING_PROTECTING_WORK),
LIGHTNING_PROTECTING_WORK_GROUND_SERVICE("lightning-protection-work__ascend-height","登高",ProjectWorkTypeEnum.LIGHTNING_PROTECTING_WORK),
LIGHTNING_PROTECTING_WORK_DRIVER("lightning-protection-work__driver","司机",ProjectWorkTypeEnum.LIGHTNING_PROTECTING_WORK),
LIGHTNING_PROTECTING_SERVICE("lightning-protection-work__ground_service","地勤",ProjectWorkTypeEnum.LIGHTNING_PROTECTING_WORK);
private String code;
private String desc;
private ProjectWorkTypeEnum projectWorkType;
private ProjectWorkJobEnum(String code, String desc, ProjectWorkTypeEnum projectWorkType){
this.code = code;
this.desc = desc;
this.projectWorkType = projectWorkType;
}
public static ProjectWorkJobEnum getByCode(String code){
for (ProjectWorkJobEnum e : ProjectWorkJobEnum.values() ) {
if(e.code.equals(code)){
return e;
}
}
return null;
}
public static String getDescByCode(String code){
ProjectWorkJobEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listByWorkType(String workType){
List<JSONObject> list = new ArrayList<>(ProjectWorkJobEnum.values().length);
for (ProjectWorkJobEnum e : ProjectWorkJobEnum.values() ) {
if(workType.equals(e.projectWorkType.getCode())){
JSONObject jsonObject = new JSONObject();
jsonObject.set(e.code, e.desc);
list.add(jsonObject);
}
}
return list;
}
}

View File

@ -0,0 +1,51 @@
package com.dite.znpt.enums;
import cn.hutool.json.JSONObject;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/4/29 22:27
* @Description:
*/
@Getter
public enum ProjectWorkTypeEnum {
LIGHTNING_PROTECTING_WORK("lightning-protection-work", "防雷工作"),
OUT_WORK("out-work", "外部工作"),
SUMMARY_WORK("summary-report", "汇总报告"),
IN_WORK("in-work", "内部工作");
private final String code;
private final String desc;
ProjectWorkTypeEnum(String code, String desc){
this.code = code;
this.desc = desc;
}
public static ProjectWorkTypeEnum getByCode(String code){
for (ProjectWorkTypeEnum e : ProjectWorkTypeEnum.values() ) {
if(e.code.equals(code)){
return e;
}
}
return null;
}
public static String getDescByCode(String code){
ProjectWorkTypeEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listAll(){
List<JSONObject> list = new ArrayList<>(ProjectWorkTypeEnum.values().length);
for (ProjectWorkTypeEnum e : ProjectWorkTypeEnum.values() ) {
JSONObject jsonObject = new JSONObject();
jsonObject.set(e.code, e.desc);
list.add(jsonObject);
}
return list;
}
}

View File

@ -3,6 +3,8 @@ package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.ProjectEntity;
import com.dite.znpt.domain.vo.ProjectListReq;
import com.dite.znpt.domain.vo.ProjectListResp;
import com.dite.znpt.domain.vo.ProjectReq;
import com.dite.znpt.domain.vo.ProjectResp;
import java.util.List;
@ -22,7 +24,8 @@ public interface ProjectService extends IService<ProjectEntity> {
* @author huise23
* @date 2025/04/11 23:17
**/
List<ProjectResp> selectList(ProjectListReq projectReq);
List<ProjectListResp> page(ProjectListReq projectReq);
List<ProjectListResp> list(ProjectListReq projectReq);
/**
* 功能描述查询单条项目信息
@ -32,25 +35,26 @@ public interface ProjectService extends IService<ProjectEntity> {
* @author huise23
* @date 2025/04/11 23:17
**/
ProjectResp selectById(String projectId);
ProjectResp detail(String projectId);
/**
* 功能描述新增项目信息
*
* @param project 项目信息
* @param req 项目信息
* @author huise23
* @date 2025/04/11 23:17
**/
void saveData(ProjectEntity project);
void save(ProjectReq req);
/**
* 功能描述更新项目信息
*
* @param project 项目信息
* @param projectId 项目id
* @param req 项目信息
* @author huise23
* @date 2025/04/11 23:17
**/
void updateData(ProjectEntity project);
void update(String projectId, ProjectReq req);
/**
* 功能描述删除项目信息

View File

@ -3,6 +3,8 @@ package com.dite.znpt.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.domain.entity.ProjectEntity;
import com.dite.znpt.domain.vo.ProjectListReq;
import com.dite.znpt.domain.vo.ProjectListResp;
import com.dite.znpt.domain.vo.ProjectReq;
import com.dite.znpt.domain.vo.ProjectResp;
import com.dite.znpt.service.ProjectService;
import com.dite.znpt.mapper.ProjectMapper;
@ -10,6 +12,7 @@ import org.springframework.stereotype.Service;
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
import com.dite.znpt.util.PageUtil;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@ -31,13 +34,22 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
* @date 2025/04/11 23:17
**/
@Override
public List<ProjectResp> selectList(ProjectListReq projectReq) {
public List<ProjectListResp> page(ProjectListReq projectReq) {
PageUtil.startPage();
List<ProjectResp> projectList= this.baseMapper.queryBySelective(projectReq);
projectList.forEach(resp -> {
});
return projectList;
return null;
}
@Override
public List<ProjectListResp> list(ProjectListReq projectReq) {
List<ProjectResp> projectList= this.baseMapper.queryBySelective(projectReq);
projectList.forEach(resp -> {
});
return null;
}
/**
@ -49,38 +61,38 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
* @date 2025/04/11 23:17
**/
@Override
public ProjectResp selectById(String projectId) {
ProjectListReq projectReq = new ProjectListReq();
projectReq.setProjectId(projectId);
public ProjectResp detail(String projectId) {
List<ProjectResp> list = selectList(projectReq);
return list.isEmpty() ? CollUtil.getFirst(list) : new ProjectResp();
return null;
}
/**
* 功能描述新增项目信息
*
* @param project 项目信息
* @param req 项目信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Transactional(rollbackFor = Exception.class)
@Override
public void saveData(ProjectEntity project) {
public void save(ProjectReq req) {
// todo 校验
save(project);
}
/**
* 功能描述更新项目信息
*
* @param project 项目信息
* @param projectId 项目信息
* @param req 项目信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Transactional(rollbackFor = Exception.class)
@Override
public void updateData(ProjectEntity project) {
public void update(String projectId, ProjectReq req) {
// todo 校验
updateById(project);
}
/**
@ -90,6 +102,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
* @author huise23
* @date 2025/04/11 23:17
**/
@Transactional(rollbackFor = Exception.class)
@Override
public void deleteById(String projectId) {
// todo 校验

View File

@ -11,6 +11,7 @@
<artifactId>web</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>17</maven.compiler.source>
@ -35,4 +36,20 @@
<!-- <version>1.0.0-SNAPSHOT</version>-->
<!-- </dependency>-->
</dependencies>
</project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal> <!-- 构建 fat jar -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,79 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Result;
import com.dite.znpt.enums.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: gaoxiong
* @Date: 2025/4/29 23:06
* @Description:
*/
@Api(tags = "公共信息")
@RestController
@RequestMapping("/common")
public class CommonController {
@ApiOperation(value = "查询缺陷级别", httpMethod = "GET")
@GetMapping("/list/defect-level")
public Result listDefectLevel(){
return Result.ok(DefectLevelEnum.listAll());
}
@ApiOperation(value = "查询缺陷来源", httpMethod = "GET")
@GetMapping("/list/defect-source")
public Result listDefectSource(){
return Result.ok(DefectSourceEnum.listAll());
}
@ApiOperation(value = "查询缺陷类型", httpMethod = "GET")
@GetMapping("/list/defect-type")
public Result listDefectType(){
return Result.ok(DefectTypeEnum.listAll());
}
@ApiOperation(value = "查询图像类型", httpMethod = "GET")
@GetMapping("/list/image-type")
public Result listImageType(){
return Result.ok(ImageTypeEnum.listAll());
}
@ApiOperation(value = "查询项目状态", httpMethod = "GET")
@GetMapping("/list/project-status")
public Result listProjectStatus(){
return Result.ok(ProjectStatusEnum.listAll());
}
@ApiOperation(value = "查询项目工作岗位", httpMethod = "GET")
@GetMapping("/list/project-work-job/{projectWorkType}")
public Result listProjectWorkJob(@PathVariable String projectWorkType){
return Result.ok(ProjectWorkJobEnum.listByWorkType(projectWorkType));
}
@ApiOperation(value = "查询项目工作类型", httpMethod = "GET")
@GetMapping("/list/project-work-type")
public Result listProjectWorkType(){
return Result.ok(ProjectWorkTypeEnum.listAll());
}
@ApiOperation(value = "查询维修状态", httpMethod = "GET")
@GetMapping("/list/repair-status")
public Result listRepairStatus(){
return Result.ok(RepairStatusEnum.listAll());
}
@ApiOperation(value = "查询拍摄方式", httpMethod = "GET")
@GetMapping("/list/shooting-method")
public Result listShootingMethod(){
return Result.ok(ShootingMethodEnum.listAll());
}
@ApiOperation(value = "查询天气", httpMethod = "GET")
@GetMapping("/list/weather")
public Result listWeather(){
return Result.ok(WeatherEnum.listAll());
}
}

View File

@ -38,7 +38,7 @@ public class DefectController {
}
@ApiOperation(value = "查询缺陷记录列表", httpMethod = "GET")
@GetMapping("/page")
@GetMapping("/list")
public Result<List<DefectResp>> list(@RequestBody DefectListReq req) {
return Result.ok(defectService.list(req));
}

View File

@ -3,6 +3,8 @@ package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Constants;
import com.dite.znpt.domain.vo.ProjectListReq;
import com.dite.znpt.domain.vo.ProjectListResp;
import com.dite.znpt.domain.vo.ProjectReq;
import com.dite.znpt.domain.vo.ProjectResp;
import com.dite.znpt.domain.entity.ProjectEntity;
import com.dite.znpt.service.ProjectService;
@ -31,28 +33,28 @@ public class ProjectController {
private ProjectService projectService;
@ApiOperation(value = "获取项目信息列表", httpMethod = "GET")
@GetMapping("/list")
public PageResult<ProjectResp> list(ProjectListReq projectReq) {
return PageResult.ok(projectService.selectList(projectReq));
@GetMapping("/page")
public PageResult<ProjectListResp> page(@RequestBody ProjectListReq req) {
return PageResult.ok(projectService.page(req));
}
@ApiOperation(value = "根据项目信息Id获取详细信息", httpMethod = "GET")
@GetMapping("/{projectId}")
public Result<ProjectResp> getInfo(@PathVariable String projectId) {
return Result.ok(projectService.selectById(projectId));
@ApiOperation(value = "查询项目信息详细信息", httpMethod = "GET")
@GetMapping("/detail/{projectId}")
public Result<ProjectResp> detail(@PathVariable String projectId) {
return Result.ok(projectService.detail(projectId));
}
@ApiOperation(value = "新增项目信息", httpMethod = "POST")
@PostMapping
public Result<Object> add(@RequestBody ProjectEntity project) {
projectService.saveData(project);
public Result add(@RequestBody ProjectReq req) {
projectService.save(req);
return Result.ok();
}
@ApiOperation(value = "修改项目信息", httpMethod = "PUT")
@PutMapping
public Result<Object> edit(@RequestBody ProjectEntity project) {
projectService.updateData(project);
@PutMapping("/{projectId}")
public Result<Object> edit(@PathVariable String projectId, @RequestBody ProjectReq req) {
projectService.update(projectId, req);
return Result.ok();
}
@ -66,8 +68,8 @@ public class ProjectController {
@ApiOperation(value = "导出项目信息", httpMethod = "GET")
@GetMapping("/export")
@ResponseExcel(name = "项目信息")
public List<ProjectResp> export(ProjectListReq projectReq) {
return projectService.selectList(projectReq);
public List<ProjectResp> export(ProjectListReq req) {
return null;
}
@ApiOperation(value = "导入项目信息", httpMethod = "POST")