소스 검색

feat:

1. 增加数字信创文件下载、信息查询接口;
tags/24121201
WendyYang 1 개월 전
부모
커밋
f26141d067
13개의 변경된 파일456개의 추가작업 그리고 14개의 파일을 삭제
  1. +51
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/open/controller/OpenApiFileController.java
  2. +12
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/open/controller/OpenApiProjectLibController.java
  3. +49
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/open/manage/OpenApiFileManage.java
  4. +128
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/open/manage/OpenApiProjectLibManage.java
  5. +29
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/StrFileIdListReq.java
  6. +22
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/StrFileIdRepairReq.java
  7. +28
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/StrFileIdReq.java
  8. +26
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/TenderSystemListReq.java
  9. +105
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/open/model/vo/TenderToMhDetailVO.java
  10. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/helper/MhXchxFileHelper.java
  11. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java
  12. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java
  13. +0
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/Operation.java

+ 51
- 0
hz-pm-api/src/main/java/com/hz/pm/api/open/controller/OpenApiFileController.java 파일 보기

@@ -0,0 +1,51 @@
package com.hz.pm.api.open.controller;

import com.hz.pm.api.open.manage.OpenApiFileManage;
import com.hz.pm.api.open.model.po.StrFileIdListReq;
import com.hz.pm.api.open.model.po.StrFileIdReq;
import com.hz.pm.api.user.util.LoginUserUtil;
import com.ningdatech.file.entity.vo.result.AttachFileVo;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;

/**
* <p>
* OpenApiFileController
* </p>
*
* @author WendyYang
* @since 10:44 2024/12/9
*/
@RestController
@RequestMapping("/open/api/file")
@RequiredArgsConstructor
public class OpenApiFileController {

private final OpenApiFileManage openApiFileManage;

@GetMapping("/initStrId")
@ApiOperation(hidden = true, value = "初始化文件strId")
public void initStrId() {
Assert.isTrue(LoginUserUtil.isLogin(), "用户未登录");
openApiFileManage.initStrId();
}

@PostMapping("/listFileInfo")
@ApiOperation("获取文件基本信息")
public List<AttachFileVo> listFileBasicInfo(@Valid @RequestBody StrFileIdListReq req) {
return openApiFileManage.listFileInfo(req);
}

@PostMapping("/download")
@ApiOperation("文件下载")
public void download(@Valid @RequestBody StrFileIdReq req, HttpServletResponse response) throws Exception {
openApiFileManage.download(req, response);
}

}

+ 12
- 1
hz-pm-api/src/main/java/com/hz/pm/api/open/controller/OpenApiProjectLibController.java 파일 보기

@@ -2,11 +2,16 @@ package com.hz.pm.api.open.controller;

import com.hz.pm.api.open.manage.OpenApiProjectLibManage;
import com.hz.pm.api.open.model.po.MhSyncProjectListPO;
import com.hz.pm.api.open.model.po.TenderSystemListReq;
import com.hz.pm.api.open.model.vo.DeclaredProjectInfoToMhVO;
import com.hz.pm.api.open.model.vo.TenderToMhDetailVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import java.util.List;
@@ -33,4 +38,10 @@ public class OpenApiProjectLibController {
return openApiProjectLibManage.listDeclaredProjects(po);
}

@PostMapping("/listTenders")
@ApiOperation("获取所有标项系统信息")
public List<TenderToMhDetailVO> listTenders(@RequestBody @Valid TenderSystemListReq req) {
return openApiProjectLibManage.listTenders(req);
}

}

+ 49
- 0
hz-pm-api/src/main/java/com/hz/pm/api/open/manage/OpenApiFileManage.java 파일 보기

@@ -0,0 +1,49 @@
package com.hz.pm.api.open.manage;

import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.open.model.po.StrFileIdListReq;
import com.hz.pm.api.open.model.po.StrFileIdReq;
import com.hz.pm.api.open.util.OpenApiCheckSignUtil;
import com.ningdatech.file.entity.File;
import com.ningdatech.file.entity.vo.result.AttachFileVo;
import com.ningdatech.file.service.FileService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
* <p>
* OpenApiFileManage
* </p>
*
* @author WendyYang
* @since 10:46 2024/12/9
*/
@Component
@RequiredArgsConstructor
public class OpenApiFileManage {

private final FileService fileService;
private final OpenApiCheckSignUtil openApiCheckSignUtil;

public void initStrId() {
List<File> files = fileService.list(Wrappers.lambdaQuery(File.class)
.select(File::getId, File::getStrId));
files.forEach(w -> w.setStrId(UUID.randomUUID().toString(true)));
fileService.updateBatchById(files);
}

public List<AttachFileVo> listFileInfo(StrFileIdListReq req) {
openApiCheckSignUtil.checkSign(req.getKey());
return fileService.getByStrIds(req.getStrFileIds());
}

public void download(StrFileIdReq req, HttpServletResponse response) throws Exception {
openApiCheckSignUtil.checkSign(req.getKey());
fileService.download(req.getStrFileId(), response);
}

}

+ 128
- 4
hz-pm-api/src/main/java/com/hz/pm/api/open/manage/OpenApiProjectLibManage.java 파일 보기

@@ -1,16 +1,28 @@
package com.hz.pm.api.open.manage;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.common.model.constant.ExistsSqlConst;
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent;
import com.hz.pm.api.common.util.BizDateUtil;
import com.hz.pm.api.common.util.BizUtils;
import com.hz.pm.api.open.model.po.MhSyncProjectListPO;
import com.hz.pm.api.open.model.po.TenderSystemListReq;
import com.hz.pm.api.open.model.vo.DeclaredProjectInfoToMhVO;
import com.hz.pm.api.open.model.vo.ReferSystemReplaceInfoToMhVO;
import com.hz.pm.api.open.model.vo.TenderToMhDetailVO;
import com.hz.pm.api.open.util.OpenApiCheckSignUtil;
import com.hz.pm.api.projectdeclared.model.entity.Contract;
import com.hz.pm.api.projectdeclared.model.entity.Operation;
import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectdeclared.service.IContractService;
import com.hz.pm.api.projectdeclared.service.IOperationService;
import com.hz.pm.api.projectdeclared.service.IPurchaseService;
import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil;
import com.hz.pm.api.projectlib.entity.MhSystemReplaceInfo;
import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos;
import com.hz.pm.api.projectlib.model.entity.Project;
@@ -19,13 +31,14 @@ import com.hz.pm.api.projectlib.service.IMhSystemReplaceInfoService;
import com.hz.pm.api.projectlib.service.IProjectGovSystemReplaceInfosService;
import com.hz.pm.api.projectlib.service.IProjectService;
import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.file.entity.vo.result.AttachFileVo;
import com.ningdatech.file.entity.vo.result.FileResultVO;
import com.ningdatech.file.service.FileService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;

/**
@@ -36,14 +49,19 @@ import java.util.stream.Collectors;
* @author WendyYang
* @since 10:22 2024/11/7
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class OpenApiProjectLibManage {

private final FileService fileService;
private final OpenApiCheckSignUtil openApiCheckSignUtil;
private final IProjectService projectService;
private final IProjectGovSystemReplaceInfosService systemReplaceInfosService;
private final IMhSystemReplaceInfoService mhSystemReplaceInfoService;
private final IPurchaseService purchaseService;
private final IContractService contractService;
private final IOperationService operationService;

/**
* 获取已复核通过的项目列表
@@ -145,4 +163,110 @@ public class OpenApiProjectLibManage {
return replaceType;
}

private String collectFileStrIds(String fileCtx, List<Long> fileIds, Map<Long, String> fileIdMap) {
if (StrUtil.isNotBlank(fileCtx)) {
List<FileResultVO> fileRetList;
try {
fileRetList = JSONUtil.toList(fileCtx, FileResultVO.class);
} catch (Exception e) {
log.warn("文件ID解析异常:{}", fileCtx);
return StrUtil.EMPTY;
}
for (FileResultVO fileRet : fileRetList) {
if (StrUtil.isNotBlank(fileRet.getStrId())) {
fileIdMap.put(fileRet.getId(), fileRet.getStrId());
} else {
fileIds.add(fileRet.getId());
}
}
return CollUtils.joinByComma(fileRetList, FileResultVO::getId);
}
return StrUtil.EMPTY;
}

private String convertToFileStrId(String content, Map<Long, String> fileIdMap) {
List<Long> fileIds = BizUtils.splitToLong(content);
if (CollUtil.isNotEmpty(fileIds)) {
return CollUtils.joinByComma(fileIds, fileIdMap::get);
}
return StrUtil.EMPTY;
}

public List<TenderToMhDetailVO> listTenders(TenderSystemListReq req) {
openApiCheckSignUtil.checkSign(req.getKey());
List<Purchase> purchases = purchaseService.list();
if (purchases.isEmpty()) {
return Collections.emptyList();
}
List<Long> bidIds = CollUtils.fieldList(purchases, Purchase::getId);
List<ProjectGovSystemReplaceInfos> systemReplaceInfos = systemReplaceInfosService.listByBidIds(bidIds);
Map<Long, List<String>> bidIdSystemIdMap = systemReplaceInfos.stream()
.filter(w -> StrUtil.isNotBlank(w.getSourceSystemId()))
.collect(Collectors.groupingBy(ProjectGovSystemReplaceInfos::getBidId,
Collectors.mapping(ProjectGovSystemReplaceInfos::getSourceSystemId, Collectors.toList())));
// 合同信息
List<Contract> contracts = contractService.listByIds(bidIds);
Map<Long, Contract> contractMap = CollUtils.listToMap(contracts, Contract::getId);
// 实施信息
List<Operation> operations = operationService.listByBidIds(bidIds);
Map<Long, Operation> operationMap = CollUtils.listToMap(operations, Operation::getId);

List<Long> fileIds = new ArrayList<>();
Map<Long, String> fileIdMap = new HashMap<>();
List<TenderToMhDetailVO> collect = purchases.stream().map(w -> {
TenderToMhDetailVO tender = new TenderToMhDetailVO();
tender.setBidId(w.getId());
tender.setProjectCode(ProjectIdCodeCacheUtil.get(w.getProjectId()));
tender.setName(w.getBidName());
tender.setBuyMain(String.valueOf(w.getPurchaseUnitId()));
tender.setBuildContent(w.getBidBuildContent());
tender.setBudgetPrice(w.getBidBudget());
tender.setBuyType(w.getPurchaseMethod());
tender.setImplCompany(w.getSupplier());
tender.setIsFinishLp(w.getHasSecurityEval());
tender.setIsFinishXc(w.getMatchXcfhx());
tender.setXcReportFiles(collectFileStrIds(w.getXcfhxReportFiles(), fileIds, fileIdMap));
tender.setLpReportFiles(collectFileStrIds(w.getSecurityEvalMaterials(), fileIds, fileIdMap));
tender.setSystemIdList(bidIdSystemIdMap.get(w.getId()));

Operation operation = operationMap.get(w.getId());
if (operation != null) {
tender.setRefactorTime(operation.getAdaptationTime());
}

BizUtils.notNull(w.getXcfhxEvalFinishDate(), ft -> tender.setXcCompleteTime(ft.atStartOfDay()));
BizUtils.notNull(w.getSecurityEvalDate(), ft -> tender.setLpCompleteTime(ft.atStartOfDay()));
BizUtils.notNull(w.getFinalInspectionDate(), ft -> tender.setFinalTime(ft.atStartOfDay()));
BizUtils.notNull(w.getPreliminaryInspectionDate(), ft -> tender.setInitialTime(ft.atStartOfDay()));

tender.setFinalReportFiles(collectFileStrIds(w.getFinalInspectionMaterials(), fileIds, fileIdMap));
tender.setBidNotifyFiles(collectFileStrIds(w.getAcceptanceLetter(), fileIds, fileIdMap));
tender.setBuyPlanFiles(collectFileStrIds(w.getBidDoc(), fileIds, fileIdMap));

Contract contract = contractMap.get(w.getId());
if (contract != null) {
tender.setBuyConFiles(collectFileStrIds(contract.getAttachment(), fileIds, fileIdMap));
tender.setConSignTime(contract.getContractTime());
tender.setImplCompanyPhone(contract.getSupplierContactInfo());
tender.setImplCompanyPeople(contract.getSupplierContact());
}
return tender;
}).collect(Collectors.toList());
if (!fileIds.isEmpty()) {
List<AttachFileVo> byIds = fileService.getByIds(fileIds);
for (AttachFileVo byId : byIds) {
fileIdMap.put(byId.getFileId(), byId.getStrFileId());
}
}
for (TenderToMhDetailVO w : collect) {
w.setXcReportFiles(convertToFileStrId(w.getXcReportFiles(), fileIdMap));
w.setLpReportFiles(convertToFileStrId(w.getLpReportFiles(), fileIdMap));
w.setFinalReportFiles(convertToFileStrId(w.getFinalReportFiles(), fileIdMap));
w.setBidNotifyFiles(convertToFileStrId(w.getBidNotifyFiles(), fileIdMap));
w.setBuyPlanFiles(convertToFileStrId(w.getBuyPlanFiles(), fileIdMap));
w.setBuyConFiles(convertToFileStrId(w.getBuyConFiles(), fileIdMap));
}
return collect;
}

}

+ 29
- 0
hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/StrFileIdListReq.java 파일 보기

@@ -0,0 +1,29 @@
package com.hz.pm.api.open.model.po;

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

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;

/**
* <p>
* StrFileIdReq
* </p>
*
* @author WendyYang
* @since 11:36 2024/12/9
*/
@Data
public class StrFileIdListReq {

@ApiModelProperty("校验公钥")
@NotBlank(message = "秘钥不能为空")
private String key;

@ApiModelProperty("文件strId列表")
@NotEmpty(message = "文件strId列表不能为空")
private List<String> strFileIds;

}

+ 22
- 0
hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/StrFileIdRepairReq.java 파일 보기

@@ -0,0 +1,22 @@
package com.hz.pm.api.open.model.po;

import lombok.Data;

import java.util.List;

/**
* <p>
* StrFileIdRepairReq
* </p>
*
* @author WendyYang
* @since 14:40 2024/12/9
*/
@Data
public class StrFileIdRepairReq {

private String table;

private List<String> columns;

}

+ 28
- 0
hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/StrFileIdReq.java 파일 보기

@@ -0,0 +1,28 @@
package com.hz.pm.api.open.model.po;

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

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;

/**
* <p>
* StrFileIdReq
* </p>
*
* @author WendyYang
* @since 11:36 2024/12/9
*/
@Data
public class StrFileIdReq {

@ApiModelProperty("校验公钥")
@NotBlank(message = "秘钥不能为空")
private String key;

@ApiModelProperty("文件strId列表")
@NotEmpty(message = "文件strId不能为空")
private String strFileId;

}

+ 26
- 0
hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/TenderSystemListReq.java 파일 보기

@@ -0,0 +1,26 @@
package com.hz.pm.api.open.model.po;

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

import javax.validation.constraints.NotBlank;

/**
* <p>
* TenderSystemListReq
* </p>
*
* @author WendyYang
* @since 11:36 2024/12/9
*/
@Data
public class TenderSystemListReq {

@ApiModelProperty("校验公钥")
@NotBlank(message = "秘钥不能为空")
private String key;

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

}

+ 105
- 0
hz-pm-api/src/main/java/com/hz/pm/api/open/model/vo/TenderToMhDetailVO.java 파일 보기

@@ -0,0 +1,105 @@
package com.hz.pm.api.open.model.vo;

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

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

/**
* <p>
* TenderToMhDetailVO
* </p>
*
* @author WendyYang
* @since 09:12 2024/12/9
*/
@Data
public class TenderToMhDetailVO {

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

@ApiModelProperty(value = "标项ID")
private Long bidId;

@ApiModelProperty(value = "标项名称")
private String name;

@ApiModelProperty(value = "标项预算(万元)")
private BigDecimal budgetPrice;

@ApiModelProperty(value = "采购方式")
private String buyType;

@ApiModelProperty(value = "采购主体")
private String buyMain;

@ApiModelProperty(value = "标项建设内容")
private String buildContent;

@ApiModelProperty(value = "系统ID列表")
private List<String> systemIdList;

@ApiModelProperty(value = "招标文件(附件)")
private String tenderFiles;

@ApiModelProperty(value = "实施公司")
private String implCompany;

@ApiModelProperty(value = "中标通知书(附件)")
private String bidNotifyFiles;

@ApiModelProperty("合同签订时间")
private LocalDateTime conSignTime;

@ApiModelProperty("合同金额(万元)")
private BigDecimal conPrice;

@ApiModelProperty("采购合同文件(附件)")
private String buyConFiles;

@ApiModelProperty("实施公司联系人")
private String implCompanyPeople;

@ApiModelProperty("联系方式")
private String implCompanyPhone;

@ApiModelProperty("采购方案(附件)")
private String buyPlanFiles;

@ApiModelProperty("改造开始时间")
private LocalDateTime refactorTime;

@ApiModelProperty("初验时间")
private LocalDateTime initialTime;

@ApiModelProperty("初验报告(附件")
private String initialReportFiles;

@ApiModelProperty("是否完成信创测评")
private Boolean isFinishXc;

@ApiModelProperty("信创测评完成时间")
private LocalDateTime xcCompleteTime;

@ApiModelProperty("信创测评报告(附件)")
private String xcReportFiles;

@ApiModelProperty("终验时间")
private LocalDateTime finalTime;

@ApiModelProperty("终验报告(附件)")
private String finalReportFiles;

@ApiModelProperty("是否完成等保测评")
private Boolean isFinishLp;

@ApiModelProperty("等保测评完成时间")
private LocalDateTime lpCompleteTime;

@ApiModelProperty("等保测评报告(附件)")
private String lpReportFiles;

}

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/helper/MhXchxFileHelper.java 파일 보기

@@ -36,7 +36,7 @@ public class MhXchxFileHelper {

private final FileController fileController;

public String getXchxFile(String reportFile,String fileName) {
public String getXcfhxFile(String reportFile, String fileName) {
if (StrUtils.isBlank(reportFile)) {
throw BizException.wrap("信创报告文件不能为空");
}


+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java 파일 보기

@@ -615,7 +615,7 @@ public class ConstructionManage {
throw BizException.wrap("该标段不支持提交信创符合性申请");
}

UserInfoDetails user = LoginUserUtil.userDetail();
UserInfoDetails user = LoginUserUtil.userDetailNotNull();
WflowModels model = processModelManage.getWflowModelsNoNull(ProjectProcessType.XC_APPROVAL_PROCESS,
user.getMhUnitId());

@@ -642,7 +642,7 @@ public class ConstructionManage {
if (StrUtils.isBlank(purchase.getMhXcfhxReportFile()) ||
req.getMhXcfhxReportFile().equals(purchase.getMhXcfhxReportFile())) {
String fileName = purchase.getBidName() + "-信创符合性测评报告.";
purchase.setXcfhxReportFiles(mhXchxFileHelper.getXchxFile(req.getMhXcfhxReportFile(), fileName));
purchase.setXcfhxReportFiles(mhXchxFileHelper.getXcfhxFile(req.getMhXcfhxReportFile(), fileName));
}
purchase.setMhXcfhxReportRecordId(req.getMhXcfhxReportRecordId());
purchase.setMhXcfhxReportFile(req.getMhXcfhxReportFile());


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java 파일 보기

@@ -1080,7 +1080,7 @@ public class PurchaseManage {
if (Boolean.TRUE.equals(dto.getMatchXcfhx())
&& StrUtils.isNotBlank(dto.getMhXcfhxReportFile())) {
String fileName = xinchuang.getBidName() + "-信创符合性测评报告.";
xinchuang.setXcfhxReportFiles(mhXchxFileHelper.getXchxFile(dto.getMhXcfhxReportFile(), fileName));
xinchuang.setXcfhxReportFiles(mhXchxFileHelper.getXcfhxFile(dto.getMhXcfhxReportFile(), fileName));
}

if (xinchuangService.save(xinchuang)) {
@@ -1097,7 +1097,7 @@ public class PurchaseManage {
&& StrUtils.isNotBlank(dto.getMhXcfhxReportFile()) &&
!dto.getMhXcfhxReportFile().equals(old.getMhXcfhxReportFile())) {
String fileName = xinchuang.getBidName() + "-信创符合性测评报告.";
xinchuang.setXcfhxReportFiles(mhXchxFileHelper.getXchxFile(dto.getMhXcfhxReportFile(), fileName));
xinchuang.setXcfhxReportFiles(mhXchxFileHelper.getXcfhxFile(dto.getMhXcfhxReportFile(), fileName));
}
if (xinchuangService.updateById(xinchuang)) {
return xinchuang.getId();
@@ -1106,7 +1106,7 @@ public class PurchaseManage {
}

public String xcfhxReportFiles(String code) {
return mhXchxFileHelper.getXchxFile(code, null);
return mhXchxFileHelper.getXcfhxFile(code, null);
}

public void exportXcfhFile(String code, HttpServletResponse response) throws UnsupportedEncodingException {


+ 0
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/Operation.java 파일 보기

@@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;



불러오는 중...
취소
저장