Browse Source

Merge remote-tracking branch 'origin/master'

dev_kxc
ljf 1 year ago
parent
commit
e6c2b9b44d
  1. 31
      jwtech-system/src/main/java/com/kms/build/controller/FileController.java
  2. 12
      jwtech-system/src/main/java/com/kms/build/controller/Stage.java
  3. 231
      jwtech-system/src/main/java/com/kms/build/domain/dto/FileDto.java
  4. 20
      jwtech-system/src/main/java/com/kms/build/domain/dto/FileResponseDto.java
  5. 19
      jwtech-system/src/main/java/com/kms/build/mapper/FileMapper.java
  6. 131
      jwtech-system/src/main/java/com/kms/build/service/FileService.java
  7. 93
      jwtech-system/src/main/resources/mapper/build/FileMapper.xml

31
jwtech-system/src/main/java/com/kms/build/controller/FileController.java

@ -0,0 +1,31 @@
package com.kms.build.controller;
import com.jianwei.common.core.domain.AjaxResult;
import com.kms.build.service.FileService;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/file")
public class FileController {
@Autowired
private FileService fileService;
@GetMapping("/list/{proNo}/{proCode}")
public AjaxResult file(@PathVariable String proNo, @PathVariable String proCode) {
return AjaxResult.success(fileService.fileList(proNo,proCode));
}
}

12
jwtech-system/src/main/java/com/kms/build/controller/Stage.java

@ -0,0 +1,12 @@
package com.kms.build.controller;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD) // 指定注解用于字段
public @interface Stage {
String value() default "";
}

231
jwtech-system/src/main/java/com/kms/build/domain/dto/FileDto.java

@ -0,0 +1,231 @@
package com.kms.build.domain.dto;
import com.jianwei.common.annotation.Excel;
import com.jianwei.common.core.domain.BaseEntity;
import com.kms.build.controller.Stage;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class FileDto extends BaseEntity implements Serializable {
//专题基本信息规划报告
@Stage(value = "专题管理")
private String projectReport;
//专题任务书规划附件(多列)
@Stage(value = "专题管理")
private String projectAttachment;
//专题任务书意见附件(多列)
@Stage(value = "专题管理")
private String opinionAttachment;
//专题合同管理附件(多列)
@Stage(value = "专题管理")
private String contractAttachment;
//专题文档管理附件(多列)
@Stage(value = "专题管理")
private String acceptDocumentAttachment;
//专题成果管理附件(多列)
@Stage(value = "专题管理")
private String fileAttachmentRelation;
//计划编制审批意见附件
@Stage(value = "计划管理")
private String opinionAttachmentPlan;
//计划报批计划附件
@Stage(value = "计划管理")
private String planningAttachment;
//计划报批意见附件
@Stage(value = "计划管理")
private String opinionAttachmentRep;
//计划评价信息附件
@Stage(value = "计划管理")
private String documentAttachment;
//项目建议书相关附件
@Stage(value = "项目建议书")
private String projectProposalAttachment;
//项目建议书批复意见附件
@Stage(value = "项目建议书")
private String approvalOpinionAttachment;
//可行性研究报告文件
@Stage(value = "可行性研究")
private String feasibilityReportFile;
//可行性研究报告相关附件
@Stage(value = "可行性研究")
private String feasibilityReportAttachment;
//初步设计概算报告
@Stage(value = "初步设计")
private String designEstimateReport;
//相关上位规划附件
@Stage(value = "初步设计")
private String relatedAttachment;
//招标计划基本信息附件(多列)
@Stage(value = "招标管理")
private String bidAttachment;
//资格预审公告附件(多列)
@Stage(value = "招标管理")
private String noticeAttachment;
//招标公告附件(多列)
@Stage(value = "招标管理")
private String attachment;
//招标文件附件(多列)
@Stage(value = "招标管理")
private String bidDocument;
//中标候选人公示文本扫描(多列)
@Stage(value = "招标管理")
private String attachmentAddress;
//中标结果附件(多列)
@Stage(value = "招标管理")
private String attachmentAddressResult;
//项目合同及履行公示内容(多列)
@Stage(value = "在建阶段")
private String contractNoticeContent;
//在建合同基本信息合同文件(多列)
@Stage(value = "在建阶段")
private String contractFile;
//工程开工令
@Stage(value = "在建阶段")
private String workCommencementOrder1;
//施工组织设计
@Stage(value = "在建阶段")
private String workCommencementOrder2;
//施工准备措施
@Stage(value = "在建阶段")
private String workCommencementOrder3;
//施工准备措施检查
@Stage(value = "在建阶段")
private String workCommencementOrder4;
//项目开工文件
@Stage(value = "在建阶段")
private String workCommencementOrder5;
/** 项目法人单位工程质量终身责任承诺书 */
@Excel(name = "项目法人单位工程质量终身责任承诺书")
@ApiModelProperty("项目法人单位工程质量终身责任承诺书")
@Stage(value = "在建阶段")
private String enginerQualityAttachment;
/** 设计单位工程质量终身责任承诺书 */
@Excel(name = "设计单位工程质量终身责任承诺书")
@ApiModelProperty("设计单位工程质量终身责任承诺书")
@Stage(value = "在建阶段")
private String designUnitAttachment;
/** 勘测单位工程质量终身责任承诺书 */
@Excel(name = "勘测单位工程质量终身责任承诺书")
@ApiModelProperty("勘测单位工程质量终身责任承诺书")
@Stage(value = "在建阶段")
private String surveyUnitAttachment;
/** 施工单位工程质量终身责任承诺书 */
@Excel(name = "施工单位工程质量终身责任承诺书")
@ApiModelProperty("施工单位工程质量终身责任承诺书")
@Stage(value = "在建阶段")
private String constructionUnitAttachment;
/** 监理单位工程质量终身责任承诺书 */
@Excel(name = "监理单位工程质量终身责任承诺书")
@ApiModelProperty("监理单位工程质量终身责任承诺书")
@Stage(value = "在建阶段")
private String supervisionUnitAttachment;
/** 质量检测单位工程质量终身责任承诺书 */
@Excel(name = "质量检测单位工程质量终身责任承诺书")
@ApiModelProperty("质量检测单位工程质量终身责任承诺书")
@Stage(value = "在建阶段")
private String inspectionUnitAttachment;
/** 永久性责任标牌 */
@Excel(name = "永久性责任标牌")
@ApiModelProperty("永久性责任标牌")
@Stage(value = "在建阶段")
private String responsibilitySignAttachment;
//项目划分意见(在建基本信息表)
@Stage(value = "在建阶段")
private String projectDivisionAttachment;
//检查意见报告(多列)
@Stage(value = "在建阶段")
private String inspectOpinion;
//整体措施附件(多列)
@Stage(value = "在建阶段")
private String mesAttachment;
//备案内容(多列)
@Stage(value = "在建阶段")
private String filingsContent;
//度汛方案批复意见(多列)
@Stage(value = "在建阶段")
private String approvalOpinion;
//验收鉴定书
@Stage(value = "在建阶段")
private String acceptanceAppraisalCertificate;
/** 环保验收文件 */
@Excel(name = "环保验收文件")
@ApiModelProperty("环保验收文件")
@Stage(value = "在建阶段")
private String environmentalAcceptanceDocuments;
/** 水土保持验收文件 */
@Excel(name = "水土保持验收文件")
@ApiModelProperty("水土保持验收文件")
@Stage(value = "在建阶段")
private String waterConservationFile;
/** 移民安置验收文件 */
@Excel(name = "移民安置验收文件")
@ApiModelProperty("移民安置验收文件")
@Stage(value = "在建阶段")
private String resettlementAcceptanceFile;
/** 验收影像资料 */
@Excel(name = "验收影像资料")
@ApiModelProperty("验收影像资料")
@Stage(value = "在建阶段")
private String acceptanceImageData;
/** 工程档案验收文件 */
@Excel(name = "工程档案验收文件")
@ApiModelProperty("工程档案验收文件")
@Stage(value = "在建阶段")
private String engineeringArchivesFile;
/** 竣工决算验收文件 */
@Excel(name = "竣工决算验收文件")
@ApiModelProperty("竣工决算验收文件")
@Stage(value = "在建阶段")
private String completionFinalFile;
}

20
jwtech-system/src/main/java/com/kms/build/domain/dto/FileResponseDto.java

@ -0,0 +1,20 @@
package com.kms.build.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class FileResponseDto {
private String id;
private String fileName;
private String uploadDate;
private String fileNo;
private String fileStage;
}

19
jwtech-system/src/main/java/com/kms/build/mapper/FileMapper.java

@ -0,0 +1,19 @@
package com.kms.build.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kms.build.domain.dto.FileDto;
import com.kms.build.domain.dto.FileResponseDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface FileMapper extends BaseMapper<FileDto> {
FileDto fileList(@Param("proNo") String proNo,
@Param("proCode") String proCode);
}

131
jwtech-system/src/main/java/com/kms/build/service/FileService.java

@ -0,0 +1,131 @@
package com.kms.build.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jianwei.common.core.domain.AjaxResult;
import com.jianwei.common.core.service.BaseService;
import com.kms.build.controller.Stage;
import com.kms.build.domain.ContractEvaluationIssues;
import com.kms.build.domain.dto.FileDto;
import com.kms.build.domain.dto.FileResponseDto;
import com.kms.build.mapper.ContractEvaluationIssuesMapper;
import com.kms.build.mapper.FileMapper;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
@Service
public class FileService extends BaseService<FileMapper, FileDto> {
@Autowired
private FileMapper fileMapper;
public List<FileResponseDto> fileList(String proNo, String proCode) {
FileDto fileDto=fileMapper.fileList(proNo, proCode);
List<FileResponseDto> fileResponseDtos = handleFileList(fileDto);
return fileResponseDtos;
}
public List<FileResponseDto> handleFileList(FileDto fileDto) {
List<FileResponseDto> list = new ArrayList<>();
Field[] fields = fileDto.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
try {
if (isEmpty((String) field.get(fileDto))) {
String trim = ((String) field.get(fileDto)).replace(", []", "").replace("[]", "").trim();
String[] split = trim.split("\\$ ");
Stage annotation = field.getAnnotation(Stage.class);
FileResponseDto responseDto = new FileResponseDto();
for (String s : split) {
ObjectMapper objectMapper = new ObjectMapper();
if (s.equals("")) {
continue;
}
List<FileInfo> fileInfoList = objectMapper.readValue(s, new TypeReference<List<FileInfo>>(){});
for (FileInfo fileInfo : fileInfoList) {
responseDto.setFileName(fileInfo.getName());
responseDto.setFileStage(annotation.value());
if (fileInfo.getFileName() == null) {
responseDto.setUploadDate(null);
}else {
responseDto.setUploadDate(fileInfo.getFileName().substring(9, 19));
}
list.add(responseDto);
}
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
throw new RuntimeException(e);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
return list;
}
public Boolean isEmpty(String name) {
if (name == null) {
return false;
}
String trim = name.replace("[],", "").replace("[]","").trim();
if (trim.equals("")) {
return false;
}else {
return true;
}
}
public static void getMyAnnotationValues(Class<?> clazz) {
for (Field field : clazz.getDeclaredFields()) { // 遍历所有字段
if (field.isAnnotationPresent(Stage.class)) { // 检查MyAnnotation注解是否存在
Stage annotation = field.getAnnotation(Stage.class);
System.out.println("Field: " + field.getName() + ", Value: " + annotation.value());
}
}
}
@Data
public static class FileInfo {
private String name;
private String fileName;
private String url;
private long uid;
private String status;
// 构造函数、getters和setters
}
}

93
jwtech-system/src/main/resources/mapper/build/FileMapper.xml

@ -0,0 +1,93 @@
<?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.kms.build.mapper.FileMapper">
<select id="fileList" resultType="com.kms.build.domain.dto.FileDto">
SELECT
spi.PROJECT_REPORT projectReport,
GROUP_CONCAT(DISTINCT spa.PROJECT_ATTACHMENT SEPARATOR '$ ' ) project_attachment,
GROUP_CONCAT(DISTINCT spa.OPINION_ATTACHMENT SEPARATOR '$ ' ) OPINION_ATTACHMENT,
GROUP_CONCAT(DISTINCT spc.CONTRACT_ATTACHMENT SEPARATOR '$ ') CONTRACT_ATTACHMENT,
GROUP_CONCAT(DISTINCT spd.ACCEPT_DOCUMENT_ATTACHMENT SEPARATOR '$ ') ACCEPT_DOCUMENT_ATTACHMENT,
GROUP_CONCAT(DISTINCT spg.FILE_ATTACHMENT_RELATION SEPARATOR '$ ') FILE_ATTACHMENT_RELATION,
pa.OPINION_ATTACHMENT OPINION_ATTACHMENT_PLAN,
pri.PLANNING_ATTACHMENT,
pri.OPINION_ATTACHMENT OPINION_ATTACHMENT_REP,
pei.DOCUMENT_ATTACHMENT,
spp.PROJECT_PROPOSAL_ATTACHMENT,
spp.APPROVAL_OPINION_ATTACHMENT,
spf.FEASIBILITY_REPORT_FILE,
spf.FEASIBILITY_REPORT_ATTACHMENT,
spda.DESIGN_ESTIMATE_REPORT,
spda.RELATED_ATTACHMENT,
GROUP_CONCAT(DISTINCT pbi.BID_ATTACHMENT SEPARATOR '$ ') BID_ATTACHMENT,
GROUP_CONCAT(DISTINCT pbp.NOTICE_ATTTACHMENT SEPARATOR '$ ') NOTICE_ATTTACHMENT,
GROUP_CONCAT(DISTINCT pbn.ATTACHMENT SEPARATOR '$ ') ATTACHMENT,
GROUP_CONCAT(DISTINCT bf.bid_document SEPARATOR '$ ') bid_document,
GROUP_CONCAT(DISTINCT pbw.ATTACHMENT_ADDRESS SEPARATOR '$ ') ATTACHMENT_ADDRESS,
GROUP_CONCAT(DISTINCT pbr.ATTACHMENT_ADDRESS SEPARATOR '$ ') ATTACHMENT_ADDRESS_RESULT,
GROUP_CONCAT(DISTINCT cfn.contract_notice_content SEPARATOR '$ ') contract_notice_content,
GROUP_CONCAT(DISTINCT bci.CONTRACT_FILE SEPARATOR '$ ') CONTRACT_FILE,
bcm.work_commencement_order1,
bcm.work_commencement_order2,
bcm.work_commencement_order3,
bcm.work_commencement_order4,
bcm.work_commencement_order5,
br.enginer_quality_attachment,
br.design_unit_attachment,
br.survey_unit_attachment,
br.construction_unit_attachment,
br.supervision_unit_attachment,
br.inspection_unit_attachment,
br.responsibility_sign_attachment,
bpi.project_division_attachment,
GROUP_CONCAT(DISTINCT pi.inspect_opinion SEPARATOR '$ ') inspect_opinion,
GROUP_CONCAT(DISTINCT bsf.attachment SEPARATOR '$ ') mes_attachemnt,
GROUP_CONCAT(DISTINCT bsf.filings_content SEPARATOR '$ ') filings_content,
GROUP_CONCAT(DISTINCT bsf.approval_opinion SEPARATOR '$ ') APPROVAL_OPINION,
bca.ACCEPTANCE_APPRAISAL_CERTIFICATE,
bca.ENVIRONMENTAL_ACCEPTANCE_DOCUMENTS,
bca.WATER_CONSERVATION_FILE,
bca.RESETTLEMENT_ACCEPTANCE_FILE,
bca.ACCEPTANCE_IMAGE_DATA,
bca.ENGINEERING_ARCHIVES_FILE,
bca.COMPLETION_FINAL_FILE
FROM
bs_sgc_jsjd_bui_pro_info bpi
LEFT JOIN bs_slgc_qqjd_spe_pro_info spi ON bpi.PRO_NO = spi.PRO_NO
LEFT JOIN bs_slgc_qqjd_spe_pro_approval spa ON bpi.PRO_NO = spa.PRO_NO
LEFT JOIN bs_slgc_qqjd_spe_pro_cont spc ON bpi.PRO_NO=spc.PRO_NO
LEFT JOIN bs_slgc_qqjd_spe_pro_document spd ON bpi.PRO_NO=spd.PRO_NO
LEFT JOIN bs_slgc_qqjd_spe_pro_gain spg ON bpi.PRO_NO=spg.PRO_NO
LEFT JOIN bs_slgc_qqjd_plan_approval pa ON bpi.PRO_NO=pa.PRO_NO
LEFT JOIN bs_slgc_qqjd_plan_rep_info pri ON bpi.PRO_NO=pri.PRO_NO
LEFT JOIN bs_slgc_qqjd_plan_eval_info pei ON bpi.PRO_NO=pei.PRO_NO
LEFT JOIN bs_slgc_qqjd_spe_pro_proposal spp ON bpi.PRO_NO=spp.PRO_NO and bpi.PRO_CODE=spp.PROJECT_CODE
LEFT JOIN bs_slgc_qqjd_spe_pro_fea spf ON bpi.PRO_NO=spf.PRO_NO and bpi.PRO_CODE =spf.PROJECT_CODE
LEFT JOIN bs_sgc_qqjd_spe_pro_des_app spda ON bpi.PRO_NO=spda.PRO_NO and bpi.PRO_CODE=spda.PROJECT_CODE
LEFT JOIN bs_slgc_qqjd_pro_bid_info pbi ON bpi.PRO_NO=pbi.PRO_NO and bpi.PRO_CODE=pbi.PROJECT_CODE
LEFT JOIN bs_slgc_qqjd_pro_bid_prequ pbp on bpi.PRO_NO=pbp.PRO_NO and bpi.PRO_CODE=pbp.PROJECT_CODE
LEFT JOIN bs_slgc_qqjd_pro_bid_notice pbn ON bpi.PRO_NO=pbn.PRO_NO and bpi.PRO_CODE=pbn.PROJECT_CODE
LEFT JOIN bs_slgc_qqjd_bid_file bf ON bpi.PRO_NO=bf.PRO_NO and bpi.PRO_CODE=bf.PRO_CODE
LEFT JOIN bs_slgc_qqjd_pro_bid_winning pbw ON bpi.PRO_NO=pbw.PRO_NO and bpi.PRO_CODE=pbw.PROJECT_CODE
LEFT JOIN bs_slgc_qqjd_pro_bid_result pbr ON bpi.PRO_NO=pbr.PRO_NO and bpi.PRO_CODE =pbr.PROJECT_CODE
LEFT JOIN bs_slgc_qqjd_contract_fulfilling_notice cfn ON bpi.PRO_NO=cfn.pro_no and bpi.PRO_CODE=cfn.pro_code
LEFT JOIN bs_sgc_jsjd_bui_cont_info bci ON bpi.PRO_NO=bci.PRO_NO and bpi.PRO_CODE=bci.PRO_CODE
LEFT JOIN bs_sgc_jsjd_bui_constr_meas bcm ON bpi.PRO_NO=bcm.PRO_NO and bpi.PRO_CODE=bcm.PRO_CODE
LEFT JOIN bs_sgc_jsjd_bui_respons br ON bpi.PRO_NO=br.pro_no and bpi.PRO_CODE=br.pro_code
LEFT JOIN bs_sgc_jsjd_bui_pro_inspect pi ON bpi.PRO_NO=pi.pro_no and bpi.PRO_CODE=pi.pro_code
LEFT JOIN bs_sgc_jsjd_bui_safe_filings bsf ON bpi.PRO_NO=bsf.pro_no and bpi.PRO_CODE =bsf.pro_code
LEFT JOIN bs_sgc_jsjd_bui_com_acc bca ON bpi.PRO_NO=bca.PRO_NO and bpi.PRO_CODE=bca.PRO_CODE
WHERE
bpi.PRO_NO = #{proNo}
AND bpi.PRO_CODE = #{proCode}
</select>
</mapper>
Loading…
Cancel
Save