From 076edce6ede21e92ebf464139e8fba2123977c3b Mon Sep 17 00:00:00 2001 From: "517612449@qq.com" Date: Tue, 2 Mar 2021 14:13:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E6=A0=87=E6=8A=A5=E5=91=8A=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../export/bean/BizSupplierRegister.java | 5 + .../export/enums/ExportExceptionEnum.java | 5 + .../export/feign/ProcessFeignClient.java | 3 + .../extend/export/feign/RsmsFeignService.java | 15 +- .../export/feign/TenderFeignService.java | 24 ++ .../feign/factory/ExportServiceFallback.java | 13 +- .../factory/TenderFeignFallbackFactory.java | 31 +++ .../extend/export/service/ExportService.java | 2 +- .../service/impl/PbbgExportServiceImpl.java | 247 ++++++++++-------- .../ebtp/extend/export/vo/ResultDetailVO.java | 160 ++++++++++++ src/main/resources/application-dev.yml | 1 + src/main/resources/model/评标报告.docx | Bin 24023 -> 26248 bytes 12 files changed, 394 insertions(+), 112 deletions(-) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/TenderFeignService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/TenderFeignFallbackFactory.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ResultDetailVO.java diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizSupplierRegister.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizSupplierRegister.java index 5e59ee3..d24d545 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizSupplierRegister.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizSupplierRegister.java @@ -64,4 +64,9 @@ public class BizSupplierRegister extends BaseEntity implements Serializable { private String newPrice; + /** + * 下载状态:[0:未下载标书][1:已下载标书][2:已上传投标文件] + */ + @ApiModelProperty(value = "下载状态:[0:未下载标书][1:已下载标书][2:已上传投标文件]") + private String downloadStatus; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/enums/ExportExceptionEnum.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/enums/ExportExceptionEnum.java index b621f6d..e08bd87 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/enums/ExportExceptionEnum.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/enums/ExportExceptionEnum.java @@ -15,6 +15,11 @@ public enum ExportExceptionEnum implements BusinessExceptionAssert { */ FRAME_EXCEPTION_METHOD_IS_NOT_EXIXT(2000002, "方法不存在"), + FRAME_EXCEPTION_GET_ROOM_DETAIL_FAIL(2000002, "根据评审室获取详细信息失败"), + + FRAME_EXCEPTION_GET_TENDERL_FAIL(2000002, "根据评审室供应商信息失败"), + + FRAME_EXCEPTION_GET_PROJECT_INFO(2200001, "获取项目信息失败"), ; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/ProcessFeignClient.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/ProcessFeignClient.java index 226103f..75340b4 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/ProcessFeignClient.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/ProcessFeignClient.java @@ -4,12 +4,15 @@ package com.chinaunicom.mall.ebtp.extend.export.feign; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.BizAssessRoom; import com.chinaunicom.mall.ebtp.extend.export.feign.factory.ProcessFeignFallbackFactory; +import com.chinaunicom.mall.ebtp.extend.export.vo.ResultDetailVO; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import java.util.List; + /** * 评审流程 */ diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/RsmsFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/RsmsFeignService.java index d70ebb3..585d3db 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/RsmsFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/RsmsFeignService.java @@ -3,10 +3,7 @@ package com.chinaunicom.mall.ebtp.extend.export.feign; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.*; import com.chinaunicom.mall.ebtp.extend.export.feign.factory.ExportServiceFallback; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailSummaryVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.JuryPrintVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterPriceScoreVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; +import com.chinaunicom.mall.ebtp.extend.export.vo.*; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; @@ -120,6 +117,16 @@ public interface RsmsFeignService { @RequestParam("isReviewMethod") String isReviewMethod, @RequestBody List list); + /** + * 通过评审室查询detail表数据 + * + * @param assessRoomId + * + * @return + */ + @ApiOperation("通过评审室查询detail表数据") + @GetMapping("/v1/reviewresult/queryDetailByRoomId/{assessRoomId}") + BaseResponse> get(@ApiParam(value = "评审室id", required = true) @PathVariable String assessRoomId); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/TenderFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/TenderFeignService.java new file mode 100644 index 0000000..fef0b15 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/TenderFeignService.java @@ -0,0 +1,24 @@ +package com.chinaunicom.mall.ebtp.extend.export.feign; + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.extend.export.bean.BizSupplierRegister; +import com.chinaunicom.mall.ebtp.extend.export.feign.factory.TenderFeignFallbackFactory; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +import java.util.List; + +/** + * 调用 TENDER_SERVICE + */ +@FeignClient(value = "${mconfig.feign.name.tender}", fallbackFactory = TenderFeignFallbackFactory.class) +public interface TenderFeignService { + + @ApiOperation("查询评审室下初审投标状态") + @GetMapping("/v1/supplier_register/room/tender/{roomId}") + BaseResponse> queryRoomTenderCount(@ApiParam(value = "评审室id", required = true) @PathVariable String roomId); + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceFallback.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceFallback.java index 9e49518..14b84a0 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceFallback.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceFallback.java @@ -4,14 +4,12 @@ import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.*; import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailSummaryVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.JuryPrintVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterPriceScoreVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; +import com.chinaunicom.mall.ebtp.extend.export.vo.*; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -96,6 +94,13 @@ public class ExportServiceFallback implements FallbackFactory public BaseResponse>> findReviewReportArchiveList(String sectionId, String isReviewMethod, List list) { return null; } + + @Override + public BaseResponse> get(String assessRoomId) { + log.error("评审室id:{}", assessRoomId); + return BaseResponse.fail(new ArrayList<>()); + } + }; log.error(ExceptionUtil.stacktraceToString(throwable)); return null; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/TenderFeignFallbackFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/TenderFeignFallbackFactory.java new file mode 100644 index 0000000..38e302a --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/TenderFeignFallbackFactory.java @@ -0,0 +1,31 @@ +package com.chinaunicom.mall.ebtp.extend.export.feign.factory; + +import cn.hutool.core.exceptions.ExceptionUtil; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.extend.export.bean.BizSupplierRegister; +import com.chinaunicom.mall.ebtp.extend.export.feign.TenderFeignService; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +@Slf4j +public class TenderFeignFallbackFactory implements FallbackFactory { + @Override + public TenderFeignService create(Throwable throwable) { + TenderFeignService back = new TenderFeignService() { + + + @Override + public BaseResponse> queryRoomTenderCount(String roomId) { + log.error("评审室id:{}", roomId); + return BaseResponse.fail(new ArrayList<>()); + } + }; + log.error(ExceptionUtil.stacktraceToString(throwable)); + return back; + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportService.java index c2d43f4..d66a868 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportService.java @@ -20,7 +20,7 @@ public interface ExportService { public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response); default File getExportTemplet(String path) { - File f = new File("/model/" + path); + File f = new File("C:\\Users\\Administrator\\Desktop\\新建文件夹\\doc\\" + path); return f; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java index 9cb4362..9a385b9 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java @@ -1,13 +1,17 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; +import cn.hutool.core.util.StrUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalDetailDTO; -import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParame; +import com.chinaunicom.mall.ebtp.extend.export.bean.*; +import com.chinaunicom.mall.ebtp.extend.export.enums.ExportExceptionEnum; +import com.chinaunicom.mall.ebtp.extend.export.feign.ProcessFeignClient; +import com.chinaunicom.mall.ebtp.extend.export.feign.ProjectFeignService; import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; +import com.chinaunicom.mall.ebtp.extend.export.feign.TenderFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.service.TemplateFileService; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailSummaryVO; import com.chinaunicom.mall.ebtp.extend.export.vo.JuryPrintVO; +import com.chinaunicom.mall.ebtp.extend.export.vo.ResultDetailVO; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.deepoove.poi.policy.HackLoopTableRenderPolicy; @@ -16,8 +20,10 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.io.InputStream; import java.io.OutputStream; +import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; @@ -32,10 +38,16 @@ import java.util.Map; public class PbbgExportServiceImpl implements ExportService { private final RsmsFeignService rsmsFeignService; private final TemplateFileService templateFileService; + private final ProcessFeignClient processFeignClient; + private final TenderFeignService tenderFeignService; + private final ProjectFeignService projectFeignClient; - public PbbgExportServiceImpl(RsmsFeignService rsmsFeignService, TemplateFileService templateFileService) { + public PbbgExportServiceImpl(RsmsFeignService rsmsFeignService, TemplateFileService templateFileService, ProcessFeignClient processFeignClient, TenderFeignService tenderFeignService, ProjectFeignService projectFeignClient) { this.rsmsFeignService = rsmsFeignService; this.templateFileService = templateFileService; + this.processFeignClient = processFeignClient; + this.tenderFeignService = tenderFeignService; + this.projectFeignClient = projectFeignClient; } /** @@ -48,13 +60,53 @@ public class PbbgExportServiceImpl implements ExportService { @SneakyThrows @Override public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response) { - //表一假数据 + BaseResponse proj = projectFeignClient.getProjById(param.getProjectId()); + ExportExceptionEnum.FRAME_EXCEPTION_GET_PROJECT_INFO.customValid(!proj.isSuccess()); + ExportExceptionEnum.FRAME_EXCEPTION_GET_PROJECT_INFO.assertNotNull(proj.getData()); + ProjectRecordVO project = proj.getData(); + Map table9 = new HashMap<>(); + + + String zbfs = ""; + switch (project.getBidMethodDict()) { + case "procurement_mode_1": + case "procurement_mode_2": + zbfs = "公开招标"; + break; + case "procurement_mode_3": + zbfs = "公开比选"; + break; + case "procurement_mode_4": + zbfs = "招募"; + break; + case "procurement_mode_5": + case "procurement_mode_6": + zbfs = "谈判"; + break; + case "procurement_mode_7": + zbfs = "询价"; + break; + case "procurement_mode_8": + zbfs = "竞拍"; + break; + default: + zbfs = ""; + } + + + BaseResponse> roomTenderResponse = tenderFeignService.queryRoomTenderCount(param.getAssessRoomId()); + ExportExceptionEnum.FRAME_EXCEPTION_GET_TENDERL_FAIL.customValid(!roomTenderResponse.isSuccess()); + ExportExceptionEnum.FRAME_EXCEPTION_GET_TENDERL_FAIL.assertNotNull(roomTenderResponse.getData()); + List registerList = roomTenderResponse.getData(); + //表一 List> list1 = new ArrayList<>(); - for (int i = 0; i < 3; i++) { - Map map = new HashMap<>(); - map.put("num", i); - map.put("name", "投标人" + i); - map.put("type", "已投标"); + for (int i = 0; i < registerList.size(); i++) { + Map map = new HashMap<>(16); + int num = i + 1; + BizSupplierRegister register = registerList.get(i); + map.put("num", num); + map.put("name", register.getCompanyName()); + map.put("type", StrUtil.isBlank(register.getDownloadStatus()) ? "" : "2".equals(register.getDownloadStatus()) ? "已投递" : "1".equals(register.getDownloadStatus()) ? "已下载" : "未下载"); list1.add(map); } @@ -72,116 +124,78 @@ public class PbbgExportServiceImpl implements ExportService { //专家人员数据 BaseResponse> listBaseResponse = rsmsFeignService.queryReportPrintByRoomId(param.getAssessRoomId()); ArrayList> list3 = new ArrayList<>(); + String pbwyhzz = ""; if (listBaseResponse != null && listBaseResponse.getData() != null) { - for (int i = 0; i < listBaseResponse.getData().size(); i++) { + List juryPrintVOList = listBaseResponse.getData(); + for (int i = 0; i < juryPrintVOList.size(); i++) { + int num = i + 1; + JuryPrintVO juryPrintVO = juryPrintVOList.get(i); Map data = new HashMap<>(); - data.put("num", (i + 1)); - data.put("name", listBaseResponse.getData().get(i).getName()); + data.put("num", num); + data.put("work", juryPrintVO.getWorkunit()); + data.put("name", juryPrintVO.getName()); + data.put("job", juryPrintVO.getJobTitle()); + data.put("unit", juryPrintVO.getWorkunit()); list3.add(data); + if ("2".equals(juryPrintVO.getDuty())) { + pbwyhzz = juryPrintVO.getName(); + } } } - //表四假数据 + BaseResponse> baseResponse = rsmsFeignService.get(param.getAssessRoomId()); + ExportExceptionEnum.FRAME_EXCEPTION_GET_ROOM_DETAIL_FAIL.customValid(!baseResponse.isSuccess()); + ExportExceptionEnum.FRAME_EXCEPTION_GET_ROOM_DETAIL_FAIL.assertNotNull(baseResponse.getData()); + List resultDetails = baseResponse.getData(); + + if (resultDetails.isEmpty()) { + return; + } + int size = resultDetails.size(); + List> list4 = new ArrayList<>(); - for (int i = 0; i < 4; i++) { - Map map = new HashMap<>(); - map.put("num", i); - map.put("tbr", "投标人" + i); - map.put("jg", "结果" + i); - list4.add(map); - } - - //表五假数据 List> list5 = new ArrayList<>(); - for (int i = 0; i < 4; i++) { - Map map = new HashMap<>(); - map.put("num", i); - map.put("zg", "没资格"); - map.put("sm", "不合格理由"); - list5.add(map); - } - - - BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO(); - bidEvalDetailDTO.setAssessRoomId(param.getAssessRoomId()); - bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalDetailDTO.setReviewType(param.getReviewType()); - BaseResponse>> list = rsmsFeignService.findCategoryResultSummary(bidEvalDetailDTO); - //商务数据 - List respondlist1 = list.getData().get("1"); - //服务数据,或技术 - List respondlist2 = list.getData().get("5"); - //价格数据 - List respondlist3 = list.getData().get("0"); - - // 综合汇总 表6和表8一份数据 - List all1 = new ArrayList<>(); - respondlist1.forEach(o -> { - BidEvalDetailSummaryVO object = new BidEvalDetailSummaryVO(); - object.setSupplierRegisterId(o.getSupplierRegisterId()); - object.setSupplierRegisterName(o.getSupplierRegisterName()); -// object.setBusinessAllScore(o.getFinalScore()); - all1.add(object); - }); - all1.forEach(x -> { - - respondlist2.forEach(y -> { - if (x.getSupplierRegisterId().equals(y.getSupplierRegisterId())) { -// x.setServiceAllScore(y.getFinalScore()); - } - }); - - respondlist3.forEach(z -> { - if (x.getSupplierRegisterId().equals(z.getSupplierRegisterId())) { -// x.setPriceAllScore(z.getFinalScore()); - } - }); - -// BigDecimal allPrice = (x.getBusinessAllScore().add(x.getServiceAllScore()).add(x.getPriceAllScore())).divide(BigDecimal.valueOf(3), 2, BigDecimal.ROUND_HALF_UP); -// x.setAllScore(allPrice); - }); - - //表六 详细评审数据 List> list6 = new ArrayList<>(); - for (int i = 0; i < all1.size(); i++) { - Map map = new HashMap<>(); - map.put("num", (i + 1)); - map.put("tbr", all1.get(i).getSupplierRegisterName()); -// map.put("js", all1.get(i).getServiceAllScore()); -// map.put("sw", all1.get(i).getBusinessAllScore()); - list6.add(map); - } - - - //表七 价格评审数据 List> list7 = new ArrayList<>(); - for (int i = 0; i < 3; i++) { - Map map = new HashMap<>(); - map.put("num", i); - map.put("tbr", all1.get(i).getSupplierRegisterName()); -// map.put("bj", all1.get(i).getPriceAllScore()); - map.put("psjg", ""); - map.put("jgdf", ""); - list7.add(map); - } - - //表八 评审总结数据 List> list8 = new ArrayList<>(); - for (int i = 0; i < all1.size(); i++) { - Map map = new HashMap<>(); - map.put("num", (i + 1)); - map.put("tbr", all1.get(i).getSupplierRegisterName()); -// map.put("sw", all1.get(i).getBusinessAllScore()); -// map.put("js", all1.get(i).getServiceAllScore()); -// map.put("jg", all1.get(i).getPriceAllScore()); -// map.put("zhdf", all1.get(i).getAllScore()); - map.put("bj", ""); + for (int i = 0; i < size; i++) { + int num = i + 1; + ResultDetailVO detail = resultDetails.get(i); + String tbr = detail.getCompanyName(); + Map map = new HashMap<>(16); + //表4,初步评审结果 投标人,投标结果 + map.put("num", num); + map.put("tbr", tbr); + map.put("jg", detail.getFirstRvwResult() == null ? "" : detail.getFirstRvwResult() == 0 ? "未通过" : "通过"); + list4.add(map); + + //表六 详细评审数据 投标人,技术分,商务分 + + map.put("js", StrUtil.isNotBlank(detail.getTechnicalScore()) ? detail.getTechnicalScore() : ""); + map.put("sw", StrUtil.isNotBlank(detail.getBusinessScore()) ? detail.getBusinessScore() : ""); + list6.add(map); + + + //表七 价格评审数据 投标人,投标价,评审价格,价格得分 + + map.put("bj", detail.getPrice() == null ? BigDecimal.ZERO : detail.getPrice()); + map.put("psjg", detail.getPriceReview() == null ? BigDecimal.ZERO : detail.getPriceReview()); + map.put("jgdf", StrUtil.isNotBlank(detail.getPriceScore()) ? detail.getPriceScore() : ""); + list7.add(map); + + + //表八 评审总结数据 + map.put("jgdf2", StrUtil.isNotBlank(detail.getPriceScore()) ? detail.getPriceScore() : ""); + map.put("zhdf", StrUtil.isNotBlank(detail.getTotalScore()) ? detail.getTotalScore() : ""); list8.add(map); + } + String finalZbfs = zbfs; + String finalPbwyhzz = pbwyhzz; Map all = new HashMap() {{ put("table1", list1); put("table2", list2); @@ -191,6 +205,10 @@ public class PbbgExportServiceImpl implements ExportService { put("table6", list6); put("table7", list7); put("table8", list8); + put("zbdljg", project.getTenderAgencyName()); + put("zbbh", project.getEbpProjectNumber()); + put("zbfs", finalZbfs); + put("pbwyhzz", finalPbwyhzz); }}; @@ -209,6 +227,7 @@ public class PbbgExportServiceImpl implements ExportService { InputStream file = templateFileService.getExportTemplet("pbbg"); +// File file = getExportTemplet("评标报告.docx"); XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); String fileName = new String("评标报告.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); @@ -217,4 +236,26 @@ public class PbbgExportServiceImpl implements ExportService { template.write(os); } + + private List getFirstArchiveLinks() { + List archiveLinks = new ArrayList<>(); + //初步评审表URL + archiveLinks.add(new ArchiveLink().setId("1").setArchiveDirectory("1")); + return archiveLinks; + } + + private List getDetailArchiveLinks() { + List archiveLinks = new ArrayList<>(); + //详细评审表URL +// archiveLinks.add(new ArchiveLink().setId("2").setArchiveDirectory("2")); + //专家打分表URL + archiveLinks.add(new ArchiveLink().setId("3").setArchiveDirectory("3")); + //价格打分表URL + archiveLinks.add(new ArchiveLink().setId("4").setArchiveDirectory("4")); + //打分汇总表URL + archiveLinks.add(new ArchiveLink().setId("5").setArchiveDirectory("5")); + //评审报告URL +// archiveLinks.add(new ArchiveLink().setId("6").setArchiveDirectory("6")); + return archiveLinks; + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ResultDetailVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ResultDetailVO.java new file mode 100644 index 0000000..d7262d7 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ResultDetailVO.java @@ -0,0 +1,160 @@ +package com.chinaunicom.mall.ebtp.extend.export.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 实体类 BizRsmsReviewResultDetail + * + * @author fqj + */ +@Data +@Accessors(chain = true) +@ApiModel +public class ResultDetailVO implements Serializable { + + private static final Long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty(value = "") + private String id; + + /** + * 供应商id + */ + @ApiModelProperty(value = " 供应商id") + private String companyId; + + /** + * 供应商名称 + */ + @ApiModelProperty(value = "供应商名称") + private String companyName; + + /** + * 是否通过初审(0:未通过;1通过) + */ + @ApiModelProperty(value = "是否通过初审(0:未通过;1通过)") + private Integer firstRvwResult; + + /** + * 排序 + */ + @ApiModelProperty(value = "排序") + private Integer sort; + + /** + * 投标价 + */ + @ApiModelProperty(value = "投标价") + private BigDecimal price; + + /** + * 评审价 + */ + @ApiModelProperty(value = "评审价") + private BigDecimal priceReview; + + /** + * 商务得分 + */ + @ApiModelProperty(value = "商务得分") + private String businessScore; + + /** + * 技术得分 + */ + @ApiModelProperty(value = "技术得分") + private String technicalScore; + + /** + * 服务得分 + */ + @ApiModelProperty(value = "服务得分") + private String serviceScore; + + /** + * 价格得分 + */ + @ApiModelProperty(value = "价格得分") + private String priceScore; + + /** + * 综合得分 + */ + @ApiModelProperty(value = "综合得分") + private String totalScore; + + /** + * 商务得分 + */ + @ApiModelProperty(value = "商务得分") + private String firstBusinessScore; + + /** + * 技术得分 + */ + @ApiModelProperty(value = "技术得分") + private String firstTechnicalScore; + + /** + * 服务得分 + */ + @ApiModelProperty(value = "服务得分") + private String firstServiceScore; + + /** + * 综合得分 + */ + @ApiModelProperty(value = "综合得分") + private String firstTotalScore; + + /** + * 拟签约金额(不含增值税)(元) + */ + @ApiModelProperty(value = "拟签约金额(不含增值税)(元)") + private BigDecimal contractedMoney; + + /** + * 拟签约金额(含增值税)(元) + */ + @ApiModelProperty(value = "拟签约金额(含增值税)(元)") + private BigDecimal contractedMoneyTax; + + /** + * 增值税税率(%) + */ + @ApiModelProperty(value = "增值税税率(%)") + private BigDecimal taxRate; + + /** + * 增值税金额(元) + */ + @ApiModelProperty(value = "增值税金额(元)") + private BigDecimal taxRatePrice; + + /** + * 是否中标候选人( 0:否 1:是) + */ + @ApiModelProperty(value = "是否中标候选人( 0:否 1:是)") + private Integer winnerCandidate; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remarks; + + /** + * 专家打分json格式 + */ + @ApiModelProperty(value = "专家打分json格式") + private String membersScore; +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 2343a74..dcbffc0 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -150,6 +150,7 @@ mconfig: project: biz-service-ebtp-project #项目服务 resps: biz-service-ebtp-resps #应答结构化服务 rsms: biz-service-ebtp-rsms #评审结构化服务 + tender: biz-service-ebtp-tender #投标服务 # 用户暴露给 prometheus 的健康数据 management: diff --git a/src/main/resources/model/评标报告.docx b/src/main/resources/model/评标报告.docx index 371b8446ad32e9e85ed5c44704a4f1a8ea93b438..944df38736bda3ef3fa2190db25fd3457330037a 100644 GIT binary patch literal 26248 zcmeFZRdgjwvLz^HrW7-?Qq0WEETx#4nVFfHnVFfHr4%!>l;YOCwQBnHR83F!_bdMh zUnks8tO$#}x7l%XJ93i1ASeJ}01yBG00aQcJ?WN}fB*pX-ye|yAb>OlZLA%QtQ~cg z+-!{;v}s+fEb;R}fXH(JfWGJdr~Nm!KxeYF>;OGX@U_@`2&HPHu`M4&)qd{?Vk|(I zMRKdAPe?7dkgBP+?@bHsvY|L#9La0ZgS>8~hHr!mBChyhY|6{y{`4 z5HALtY}*4|-!1?ZEDNqSKgAJP!@0}r?^q%FFryS{{X=DXME^Mj{Gpc$MO`g0$&gIS z^Gv1%0vvgueG8oO(HXFbc20BYMW}iY#9I}$@jV+J%IeNc&GJdsiOSsvqcW1l$0UtV z9RZ0&2a7uv{UB$mPbX~q?AZ+yi&l}^=eZEaPDU9jjZ=OhSS$DzL$(*2V0T<=Ychng zfHyobs!hl^TRr^CoZPv~W^f_O6X0KEzr$|85<<4fdBR-$6SoTPS4WsMPGul$%gKV1 z?8*9J0{vUxbpD9ULf9~X-ytIddrj(5Y(n}u((vE^?m}*wB$XVm{6V1Ya0@@8vuU9G zh;P{hs3{u1_2Ma~9S5~&)0I)xRdU!foVntIy$}D5&#y0F0J;B#qgTdDO9C?>1Yi4q5lnV*Zcq}=Z|Vr0NE?0t3jTca z%YctBYyR3I52syh3c+P`J04>cT+ZmiS)v+Ya#iiCC+DwQ*n+99*lBZ9`|U3wFg<&M zqiVYYlJR<{|1n4;ZY}YF5I>HRLU|(GkE1`&ttk-%e{m;$UO+N7vZ{ywA%L@APHjW~ zY0Ss1S6)?yZ#{)tdW7%?rP*eK|GsO5b3!JX%dhi?bMO@5;BP#m(S_1r{SgJf+gFAZ zWCaLe5nx4u$HgN zW5)Zcz=Rm}9^ijR7jWMI5s`17s09W9fDHfv=wf4UNcRuU7}^*(S$(_5zx?7q`2+av z9KUD(_imj@lCpvHC_&GppCQE_6uHqcFq6ZnlPU~$nmc!)jU<=Chua%sVCY#)w3sQ+ zOx(x&v&9>mB`2etrVEs5v*ZvIfa<07NlpT~^&=6Q5-|4acQWE)ClJ9`^Y;yx$d1^T zqzjE*1k1wdfh?gP+y=#_e74A?xP{tfiD=lDr54Ngdr>RBd-T8QyPk4SsBGHy#7E z+egkY1;TrO(4a| z0pgPf`naIt%{8t;m&+79qtVoB(KH`zp%>PVHCHt~U$bY<&#Jn*l5*J;@rQdb+$XS^ zHy+%?IC}YZ94sdv8;5h*iaPKk$c~A*=;_!GG6|W_=XtzerxlBQiD6QtV(HKLh)k@p z5+Yz-`&>ELH!rQDY-#wd$YHL5Mr_8Byoh>8JjRyPxCCAl!BMaNpT4@EiH2zqV|FKQ z10dYOwmQmM2kGo)^2uU({c68z=zhx7a=A$-#FbVfCJ>t?vJcln`ittWrPA@&A}5UD z5;Kb5+}dV_-!F(|_UIxHz_^pCyYr#W6{rILz>q7?(`iJiOgp9&7EwYuBzskh7jXJz zYR#3sm?x%|6#R39nLzOolOZX$@l9cjucpfzTi*RZE;sG0Vly>2F?}Tk{U+lCky?OG zuNdlZX3;zzfA3*8fQDZY$U3)%0kDq}@B@1-HIzp=FeXC=yIh14qhV!YyLQs>PEO-@ zb|dsdAT4x88kk|3C4~{aNzKoc;V@!_Lm|T*fk)G>Xa1nuHfs!tbc?fn9DFv?STW~?IKEyV|JHiOMGS@_LSVpFq zpNa5fT2Z<7iXhANT0;lr9d88phKd{u z>A9@A+qv@Qn8LFRiD=QH@+1%#XjMgJfZnAy?mFul@haI7E~>U*HHK95OtXUKGUD)S zzFU(GboD>^hycG%(l`?39ccFox8@Q)3i8^i^U07UWHQt9DQ`sFe&lOt@Kv?w?8N$@ zuopiWv)YoaYHm_#Xy9BWnuh7cuywwO$=9x7@5Bp%sJ9VI+7ojMyN85t;N8nQ7yV#` z2Dj-x!1cH|Ndyd%oUIbxWs4FI7iWv?=Kw*ie^djL!FYHAQ-&yiSq}=XIqhmmOZM)d zFlGsqO)KA`%4@F(<#GIQ2Zb9wW;8ff(}MKo2tzoCCl=P;ngBO1x*1NYu0+9Yxjn z&4wcf_`xQ4Qt*^uoPD``4aahtfkH+E(?_|Eg%1VwC}2&9fZ}Js0|K#KHf+?n*l3R?a+ZMQ^s8e)GTN+H&5J!(7iycZl2ai z!LiL*A+;`e?C=C{P@FMKCVO`?$ts%t9>~yu5d^L@rcZUVQ4kZXYxW&7UT&P+26IjA z&)hVvv(t`w)c^`h3aW6lKXgt5Ci=73Z^tx4;n#=Q1#dKFFAVaq2Em*50~jiLynX-V zt~c^|0tj9>GboQvpKd9*-^fo^g;`MTtxFShP*z#)5H!Chu$fu&Yk8`+eM0s(k>0N3 zXi*tqP#0OuSMpL9IbaEqubcPJyPFs&A^Ktn&hlB{Fbh}@FN4@ahL*vMsY>zEVpF4T zO-X9D?bY1xT{(Z=dO9(Ybo0qCTOB|Y9fCIz(thA_YJ=^E6$~SLrYg{x;{})X6y#I9 z3&j{KhKXm(6Bk@Gz+jQ6%X|*+c*o*Ju?pskX$59{BXk@O9WS~sk7NdP#9oxk1HUmYcUJQ5w|A%ub z`=nd~WM@cDat+C7%k1P!0|?Gik5`T7g7X(e(KxFmS2*wREb7?J=pbY^6j;&`OMIo+ zGRU18fjRk~Ly4X#(ZnzFCPGR-qcPm5fjJ9v(}}2aEKFf?Br{Ra`JZAa%F!K^9gyd} zi`a)L<58|C0W{s%JoHRL%~ew)EzW}{Cmb;?$)^mS$xBi z{ae|s*<(GP3%0(lD6A7U;MTZ((zU$5eAeeZJuS#q@d!Ey51KuP9%TEsdQc6Bxz&)K zwyB6zYejJkV{U{`S+aVUV*5jZEK?^eSK*CRD3^kRu&4W?v!zl6YTPV%G6ObwVLFKd zqklPX>N}ee^83U2!nLY{(}$d&_+r-YNBm@83Look2RD8wLq;u%Qkgt{ zoQUT}aN+;G^k|pD5r&MJzs!o-4#z&c$TE^E7YAIIlwUxM9zENN z$uHdM6QR7w-k8VMafTbJ?cca?7|)@o6fhqFgGZa2Uj8h@Y2={R*Nuf##zilKQAOXuwO1o3Vke;2Z&d}kc1>h)Xv*s;h#*mSY zQO!QAZc%4xJ{BnO+k!GUXF}g$dQ)IB$4dsQ78<=$c1?Ky^t9XW#ZNB7Yg*KfH7A-5 zG#O~PtXd07YJsydD_;hT)jt|Oet=!7uHr#X@%fDRcqeJ0K4Q6hc4;(lzg36RwQsS^ zLW8upwwSBIafeaDqok!FkT`yJ*n9m+*xA}i{sCXZMJGMB{UyCV8A`P=)Q0o$ShF`w z_)1t+STwa_9$)(fh<8Nc14;1%1zc?6JZFJ*DCk+>36*E0K`1nJ4eHMa+52Y?dMMQx zHL7Q-rNA+!+ZP}QILC@emLgjeiolC+D!1#Q#7q*E57#>))$gn3_$?x#ja~aHJ`4RK5c^y?Ovhz99I3V&9!5dn~}1;#K{C+v*(@V|Ca>UsdciT@{zqQyn0DZAm-gyb56wT0@Vo-d_92j~on_k>=*@~?!P3$V_2q9T zr$7$U{cBSh*tN@ImcdJ#-tJZxPr#K`0~(B32ORU_R9NJRKc1cjA0ux+F`mffygR61 zf0WXeS~s*gm9|TW!MkthcO?;tV7O!{FVQn21dk^L(Kn`}!g-wk3boYCh_MOMHfzV? zTumD0a8~hdf;av#Nt>#@VlWb-PTzr62iyStk2BD#+EIQ>O%U1*PpJM&7`25J4Zcc_ zZ@oj^sCXELljm)UX zrf5PVuAyqSC1OU&IDaXDN$PQ!QApuY2LUcS!&^XKAKjwCcWlfz z9J{jSkrd=$IYZfeeXk9DeO+kV$YP0Neo-dtZgz$0V+BY%3PBN=Q9cqUDs}xRQ9R_0 zP*-!FyW+535cx?#5d6z_A-6GbA*h2X>S$VqhM#~&>=v&o9no}2f>k2PwSreE;bcyazo#W^xW&)7di6N{aSwygM zK3SUGftYpXiTR^lAcKB1Q(@8`hpV$v?3AMIsO?e@EH24nfPr1z$!l1< zFW{$=@F9`1RQ(1@*F2M_XFeJX+|8N$L$qgahKcF%LL#f^M?iq{xM(N4KFO2QR3vhZ zl6si--*4ZJwNv5ajEWmACD3o9W$fvvy7y)OS}_y9IYHAVQPXgL`0as?nMVf7-QjVK z7C5H%XLZ$v(P+b!XzttWNAsEYvf2i54-a7*J2?*uUidaqxU9<2Xg>!^k227KoTu|{ zt7=g>F6j*84mn*l7@w{{BU(?C5#qSlNo=!^$Ek0 zx1e|PZR~<#HbNUAnFmlzPul}Cu83$Z!>k(T5DL@LpkPczZr!jMOaj+G&lm^*NB9l( z>i?=+hzv;vjBqnxaNhM^Ewc^?w@Ls&;sX)`fW!wR{(hY}%+BAJeh(wxG|VWmh>*_l z(#leKRzEBgIhi9JeF%gVGdp%#vW&}_snykDCi}^yW#QCLR+UkaAoRl`-PCc`3KHpw z3G>1%y0!#Tgs`|z!lJXFnD)lLHDir!JJx;6kO}?4)Yt%RO0@*jm0&V|FUYomYRsK) zVv=;;Hx0HBO<}{hjC*|&OaMCXk|XaUPDc2X?~V%2%}TwCQ*mN`!_%XDg=Wg#^{3nL zdcyCIqnI7l8;fTuLZ5+w?Wa~TO9LPfM(mkzyef7&&~W%6o3=fNq>vBo3XsvfKNtOW zH4@6)zFRZ2(Wyi9$W38^Uj|%&8htur*8RXwE;3v)^@mtYV3@#BeV=gOy@dp{|FC=F z@E-CnhFWwr7;5MA+tg)Jg`K)!H<+5=eFi&qaC;1K648Dmoww*6w!CUc8@c_YkbM2E z=dOIqj?E_6%HxUMbj5|x$&e$Bl&1dfiZ{AUpU?U|t>#re+aF;lDe##`_J8DvZE2DI zT+XdDWf)9jSlkawOsh>KZ_&!v)cAOKjhghNGG=!&++kfWZztl}*jALyUj^UZOnKXF z9rs_Fo~f`tuFI+zuw|4tHhsMG+0c1}aCIndtQJ*~bZe&D@X}ZvN@}i+cjb(&L+>9d z-Z?hkz3X0I(JYGOQ6z3vE3qt3V8xjF!!omy*Bg071=|xGGjd%<8QWZF}Cb4aRNBYyJ84Z!(_p@RWfMh3q{Wmc+!IIQ#82 zm^H!w1(1xrfzTc*6ke2Grf-T?OZ;T6(Ju7ebCI~6Qr+kICT@>axNZkc)oD09pm`R6 zlZe(+1iQi?*_WYtZ#&!%p@=ugzldy9ipw_>Q4r_-7J;RP1sdk4N(UmzLWawBI2JY% z24i2R2KNmsCnWgHyG0nxfjc}?7^Y=@t{X4=TJ(E>Z+gnm;UZ(IRm!6cM8njoWvEwP znKqjTsRQ<_zJc|7MX9zhCRK1&kIA>h`F-wAlr&rC2`WcWjUOmUWifGLW6Da^zn?^5 zXXG2+y@-z6QZtMtG!H1yRtFzwxHkuV2xVgT8)Mkod$3~=NrL0H4BK7l3~&W^@$N9( zsEOY8nqBFrM{2j~7Ls5DhXs&n5vMg&Q?!=C2!#=~t z2ysVbqGA(1>j{IE^P!dkEiLD}XVwjZk1(*wJqqzPJHI=n`%OOdvrT@`bDslr9m9{c zY^Q`*ybWRF6vd^)JVo4ZO|!y8f&i=1wT)x>*mJoBSPC|0kZdrI1TN$#CNoYy)?li0 zZ-@=;C1WA*vFBpT!I6(JB<)v5`P0h*{P2hF3zFU!xKV7#=xzPV?YwuXfAXJMjtasX zYk@AR0_9PrtC_}4AHr$_>e4IOK2|-U#-&-kMe}?Xtp0{KjpMiT*PBb#uI9=ifJa+9 zTN(ITZj%3~8QU(bm)ICps3j$SkQW`1OPFd!kc2vO(vy+{WheM^A^bs1m$+S$u1T{L zlMukA`?NaE$`2}-xFDgiKU1v8s>Uw8kZju1=3tVElZ6nLUP4_9;1gXJe=^SW2!B7t zePjYx$~gW^eP=_8&1Ky0c9WRmGKzP}$_q(fOwQo|2N#^mn6xZiLPDxkh%TZ+6e9Sc zf-0nqB%*lar669r@TAU@PaPTV?w{OBX9_%C$7r)JaVL2nEFvxoS?_)8@^6=v5&bP) zmcEk}_TQ-uq<=0c8{618TH81pIsBE?C`_EPuAoNt!HS8^WDnA#i)+M8JO#MWnzAxJtbaniar)#U{#IRw2ggX2Nx!o zApX$^lreu!50$}c;0JwNyF;|Vc_bFG|7O>?SPzw8u>*U^-k@{A8T?ue5joqM=BGTl zzi3^i|5U)lXoz`qD1tVRhwy`z1BSS;k;59XK}RGD3D2l8hISyj%tJ~Ym@a9yyG*Q# zTn^YYMREZz=#>VR^&YOC^BIv-+0ia3%)0ocm50L~C^~L?y)?Yw?tYLQdsi&#gmGBx zk5+?Xe(GXLe-B4`->yhY3Se~)AexL;aH|#KBF^HexsoyG)Zq{4BKElhruB-?6LqJY zHs7UBngQNbY2^E4#sF3I+dobfef83Q;j?c5m(ZBt{;$cgOS#Zs$`|lp`$1g1uMhDP=be?uT? z+d6|DW%!!x5-0W=8Q&})ElFuZtz=93{0Si1&R=?E$D4QBTKs@(i6kl4O@`xYbl~W|J_Yh0l?9tLzIXNbafsdXt4Q8dnU zK~i$F8n!PhLq+N1J3Ygqrs%KM;RCqJeB2OcJSuZtb4J19JRQp*lx{(-`fU2xg!MB^ zp~+|#0dba9bQ{GWZc!I<3g4x0i*2gmWXT7Bb>)8S6alZq;4yQ5rt2=Df&-=+=F=%B zFY4gvOyA>Gyp7U>op&$&^vt<9UpAFYgI%Agv9NrBoIu`2rW!O>ZEY~MPQXf>9+)~z z#JclEGmA!JAMF$$wbH3D(&_^4(-b1AO!^X z-yk-AJmQ4*(-L5DeMv1EyILpr*vAu_)xCFj5-k+?Uz^f+jS@#3n#;qW@>=0+r$N6QCc3O=0i` zxx_(J5h&o4$@Hv$hX zIT7I2tWe|Z4Ls9ryx%t(wD6P=FM^zq90l^-#DMbH3l*-B?w+2XFXBL^8MEqv8pTHC z+3IyRx2P-BPLu+E(DDU3+ZnkE*k4OamF>65O->~ppkW(&PxH%<{u~3X>MeetjqEQr zp|;({KH8w~GKp?v^F|kyq^Y291=~{0W;`FtGbpVI?}dnpz)&0Fg1d~SH0G7~#*Lm% z_k_SJ(O$oBh+kl$$_S1A@U z=hnFaC*KY_-yq}_0$dFcCsAgusPT*9w)YVMGqChb5szg&?h0B))!Ow9d+&fvCWabz z#y^RuF*z=n)E;zli0*i~Ui|xfay>}(nBl+VhCWSgGmwMTkNS`@(-a$ovDI6jG!~+&*;W*o0?V z4xrbAyEVPO72;oWl3&U{JD))T0IIP708sy_9ge0(Rz`GxAO9AR3w22wWKrxM)iW3L zOPu#mt9S@-y^&xvAbI^#w&<1p&AtZCiZnZa8;EGJr1JT2$)fTU-125I{3eCd6f<(v zA|&0sue8l3mkS1l*mAl`a?Y6Tua8xXw~IDSL_u&NvGM(4Rd($sgfK6jT)Wwa>c{qy zWo}~BXzZADyzwMw;f593GsNzK#A#X?dvc{H<5Q)C4b z5MTx6dC2@e5^AT*EYp^^{aA7wm2_v@9NX5c)SZAu1H(Yw9>xXo z4Yyz@KQUv_W;wDKMx_V@r)fEM&jEC2kbebJqSjLt#VplpMchc!wgb@j4TTSjNhAFn zi+YZz}wv#+`t?t0cVBFoXB`^k=sL z9FOS;?E;+rP7=BzTmL0r_afGAR$H+Y*HsbHbSX zTBNj~1dGWw&ea8ICbUl*2fZQ!{J)O$#ZwQ5pXYl}{AxeF!}#b`|&w zf&1CcU_ujV(<}7#%RC?j$?Su@LZk_?C{S?PVpAB7g%4Qpngp>)WU|b#(dzI<5evyh zI<(l6cASGw*arbeBnP~*kf?r-q&zZXs!>iM30+49RS-k8oZIyWr=lMfwaMVj{ZY2c zkU!Zd3v{v4oGEK?J<53e`Mal9*k<3ZQ!ucsn3{N)Z8k z#$`Vt$Q0WS`U#mWcVHbtO6`i{X9+%orUCHNJB{0Jb|V90zqW-V|7E5C<)Er8H%`4I zl-B&laCs~F^+m%Hru)%ONT-0>Pldes(&Bsqd3qw?%jZOX++<|0I!pxy zZ_Pfd*Q?g{M%bw*n!+li!u-~CBs;fytf3OeSsB!q|xRt6ZwO2$+~`nOVF=3T`fwm-qx z+ULwQDyvjKMQA1q&^3NyBk9tpr%5+(^QZ`2gaimKni$lD@Y`gS|C;fYa8*v#T0jOw zHFy4Htm>@-dawItxa6mfv{y-XiZn$dwQJ0^)HexrCT-%--jhdBd>}iTsE_$IBQ=)> z4gR~y5BJp;1_AvP+sa+5G*8b_$a!OmvMQu)VxU!Hp244(#GtQ2l-@&_z^@v27EgA zOy(TCW8SBtERWfG=hf{mQt~2QCJlrFR&LwjueCbBV- z4%6OEt*kE2EcKq+Qbr*ak`W{tlv;+9mb)X=TRo8VExX=K#uAusqcp9F&G$J3zOs~a zvDP1u|ISn3ouCzq!+l2!EdM21a4>RoG_yAO`-4pX}NP$0h@6&FA%}>u0a;ZJ5(vcN0FJBQr6og3Qs5 zYqlbijRQ-@PF|n%(Hj*L6MBzwR^z)R)|yQqTTUOv*rzj}pZ1DRy3QLB$}MZj240%1 zkAFPJ8l-ZrQ%1nWNA-pb5bAy{k#<|B4>-k8zxiGAIDfouMB*XZq}N_{C^N$t z=1Myt)LO@|CU4U`TyF8sbv-&~{33O-)b&EXv~E5O2ZR67Am!z9>!bRiR@2?1bb2`7{MKlp zx^E3v)1&Go`D3d0ERPt_EafdN`)bu?O3yD0&HZluM?(tewHPyv*|Fl+9bLLgP0bA5 z>UqS|z&$SA_H@0-YFmQAw}T@tPze3s`A(uGKId6Wf(o*mL!!iC#}9&vhioZLUR^eVZk*LyN?pr8_dGdINqC9))m<( z4bQ^^jvJ9aH5++v^%*R8N6tnIjxi0ipLQ;a*5xm>+gA6+Emy`8)J&2G?LVapVgMvE>nm(3<77j3m??=Rx3H9ExZce zoLlbU$Qz5#myN#*k28!`L^nEP!yQ}JC%{y4xp_BvycX0s7vEZ6mEsR1ZIguTEw-7h z?fQ*upB6JnR1+jy3I|DMyAQWxHrvz1j8;~7WkweQNluPS+dMIlm82^}24c3!-{Dq_ zFQ6^cXuO(7Y7Y|G2F zpd+}(_RU{Eg$zNQnwt8RTVKmRbW})5&OFWx z3M>*`Z`T{dfMVoXZ&>7n(?7!ZgU^UQ7{9)1xdei3j3O`&SGZrKAjxGq(pw0$kYctp^}=*fey z)#NldF!vh6v;|w<_}kxtM+s8q7q{^ZTKsrP0`@W2L>SO=oPn;H=SBJqdrK%J)}4wZ zgiknSk;7b+(1iBXeyA(~xP&+_T#>&{4XtZMxEI(~CQ3mAbV$OqWmd`Li-YVa6OPV6 z^sxgVmNY?+fQ5^)f|pg&R9d|i7bW%I$Z4g0w<-b=u+MxEf-0Db8lPRG$CySOq>gM+ zbMGp@Qy9q(z+R&2`U<9shfWZ)_LQb*b#VTWfae_Lp=-K|+^GXg5MhWCx#G~EBIKBM ziwO;&AtbSh0eMYL@$Addqzigfrou_AB8`&{=nm^Qp&xvTkW_a zuovJlilQ=LlOVsu76c**>Jg>+A6YIE^3Y_|$hLm^AkOiAIelMmIdpBcPDOj+2qS2J zNpioUY&-`-0wo=RK>58vhf+pLnMneb;PtxSu3FsceLuAn5&TL4nhc5}$q*z=aNTQ| z*A0qm-I5t1QAl^Y=QQpR&`SajTC3}I&{p@YQZ>Lr2O|$%OXSfZoi52Y_Suz+(ONSI z4}^wowc3##1{Wg@gzjJ_NE?UKmLbEfQkk<3`gcBJ@eE_Nu^)4h)<+Nr47#0zIibBq zmYB#YwM!lKd09AbJr~uz_t=99wkGw;0#I6= z?d07;ii%%31mNrzGj>aKvqzEMqJOL(&x&@TDA5TDF@!V}vuf=ghi!?4@p2hS*&eM>aUR_8`sTni7R zyw#ROXpqcy3r>pkor%k~JUPkfa>7&iLF_c+#_df603Wp628 ziTz=Y@4~<05kWe*173i5`Xnx_HxD%*0Z=nqz;B-tUjpa0A-%NKh`zZX9!V82&~*}g z&NLwBXsArD_ic;)>Bmn#JZb-alrwxtJ>Z8eV#Da|cv2|5-*m+Gz#c&IXb$=c z??RiBu!_5Na4<>TuFU4fw%G;6Jo?R2$!ZweArdxGPM4$WY6aQglQtB#6M3pdzqqcn z!Yb2(9{~y60<%-|cUplZ<+ELnVv&+QA$FzcVPB+6{m-$d5QUN8x<_W)P%#>Tmc}r9 zbjcqc;Kk+Gh8V*x_R$ez1abEmYd|Y&x=Ng(US)EXA}k6Ai&qj)c)}$3LEFOp1J5XX zKO4~&w*1&5K}%@jqi+38u$_=1J@hFbRI(vuhB(~8hXWVW__;ZdMJyuTqaazk+(n<` zh_x0?nT1tGXVrm<9Y#RQJ=CqCejnEUR*;U)wru$Av1joM??_o@3PZ?W6^YyFcyQ%6 z{u&!}w){FsXtDz4gLlT6VH)H^cib^8G7xvq5$GJ?1FQ9;BOiz>L`yasuChR8IS1g( zp6w5sQ`prIWZ6?LKentbCC1fL$l}scK8!4VA@X209otwSVeX) z1aTbu=xjDHIaqNu&nl(biMM9}!DV+|ptHOOo9GB`C&5aD(aDO!Q6 zl6Y_ee#saP$h5c!@`q{-1)W?0)Dw;RUrmO5EM`))?DNr+CF2=@+7tQsm$}xe@zZK~ z{FW0ZP{{<%iD4ALYdNuFhklEOC#Uk5sRgMplnl0bLzO8Ufbeb z+Q$Zw!*{|Qm=0llQ8eWCK#~<%Rt5{jSbmIFAS6)PFo(gq^BrpQqcYS|4Am4Ck=+0tII7{yIwlD{R-;@S5 zADTUa#ljtP+baq?gYrzyh>?c`Uy96XIDg6q$|t3ekI-98YBC5hx-Wg@b|gn*9Bvpk z1b~O0fq^`01}6AXIf{^gCCZ)4=e8kaUe36PicVRRw0xgA0gCDU;^x5YCCY$Puj5@* zjWfeC0i$be{npO)#^z;a$F6O+;bZ6I(Q8xj9hT}4vUY3$yV}(O3=~_YFQ!xg({qj* z^BiN9cf7dV*Iiu4oL|+P?4Go@ziqTM70ZH@f7W=lY|x$<=vt=;j)h33YUwOmRi8P( z%h|x~4_rMR(O1yC9siiE*8bYJ;5|Pr%^s<^&0AMW@a9PzA^M~2ar-vq$kMW&v)#?} zb-&yH)qdi$^uW5%w{>RFwn=;JXLG&w=*EbHYqHQ7_o87*lwb;5xE63-JJ!;!&LHySI z<0{mLwUJzpNA;syo4LbD7_RBuU2RUig`tfVs>+Et7&gVb z!-_G7(at!d*L4GBS+d(4)|L?)N^cG4&F}q(idGZd*d3p~A1jdz;u$(!C8LG9(C|<- z0m{%WKObRLpx=8IX*td^8lVpo+hYX^p+_R#{i%$!C$$ygKel;l;d8=1?qvV%Dz!xk z#K6w?i1PPJH97z}fPs^Pqm7lCl_i~-qmh-Iy^XEI&wrG)5(ALu;(yQl-?z-zKJx*3 z1flDo&w#ZKLW;ma$YepJidYM?JXPUjE59P|b>>+ojKZcP-eV_*1CuzFz8Jn>5pkj=K|`^ZIf zdkBC0+uA4hQhUdtZ-e~&wjT1oSnvPJaFsFqe;H1=hR|4dVu}#OfDCRVvOVsw zjwaSPl8Ival1d;0*^&Ky`;Jc{b~f8^q7X;iIHJi9WFhaFz(W{=(1W#bdD(x02J*l)MmW(KTFBAKA>y3mVrs|? z4zP{W5nxzz!PA-&8%HP-f7cU$G*Az#(F^->4n2HydSv~6{C~}yIP$W)_kWL&e`5#t zyQ=Vi>e4?-3;$B5zq2R*sVn@p(mz||OkMbQ(K*=8$Ie!tsZHi@xpBl2NeV|!3AlDl zQE@4Q2{m)G?e3#uD#sJ@u&+1yj;yG<_3@VCnT2L=Cxz;_=x(-+?VmzccyUn3k@D{_ZYOLtNGv&PZ7!k#w5 zZWsy}qj-4)l%R6CW@3C^o1|~jOrC|OaSH=il!FD$$zSiA?zC*swdAT3Lt_ z`M&#q)dETmztOYrk-w^p|36}szoh^_|NksTF^u82_!irs?-&I<%|j~RVo6wgRXV6E z8OwW5VR~g*3d*qg_a{x2*O)7t&$eJ~M3Z_oBrUKtV zCsP)7RUc+#kf4K)s+0A$I9*l?V>b60Idw4oOnz_-5#4>~6sWkGGcl)%t-{@d(7eFK zAA@Wot29pmlzi#lR?O-xSr3V<_WWepX5{o=PtMEp;Ox4kmv8)ewdQlCT+-+sx#p0! zugWpAmR{b~Ikhe=_7%;O12*IB)wdjNYH43e+4H}$y88&vkq+13Btqahbbnt6 zY8NFGj6bdFQO5YQU|~4=3b8QQpYZ?ZnQyje%y2qnfow_!%Fw`i><`ir*)N~ zwS8KY(UD$C!lQAoN~%QEZb2}c3L;YkkpxowCI!`Yac(jUZd7(tVf3G#r4S9#3McU@ z?JgG8b{2)}$`bndO;u?P%P~Zh(Jb=z`hyfI3KPF0tr#|=I+M6@`Fr*+)_!qJ;`1%bUsl&^zzEh2TSSd77cHw zY9^3|#wvY8Gu{CdK#IH(7XC=hS(ZBUd?7%0j1!%k$kFc_vItz$Q|iN zuz{$(665_uR(q7rJIKFdECbbUvfVdZXTH&f`0c&_XXIyN|2NRS|48FMao;ydJ>%zO z`sq=EucbXhik=HD5$LB>keIc^1@r66F*tlh9lSjf#>2(We;rza(wg4L8~n^3 zqZHggpbV}{(IgMTV-7UyZ*nSvn3}V)B{?Wr1(1PA+e7k~BZT-3wQo+JpP(?tukO{B zk4zqx=ZhqDlNwFV(*US-TEpTv24BCpE7zyo2oLUl{Rpt^#9cmuvpy+%`*!zI)L~vJ z-9ZHzS|U-OD+uUmWE7 z3#5a-*|&Cg1SGV=*X5&RqwNK=u=RTU+&rW_X3j7$LMEEn;m{RV@*PJ{8>tgPHI~C; z^iQ14XBrW!RZAq{XVZaf3T+^kekUsf>DSPlra6FJ%pJ&k^ll9Dr=oK1T|ifs!{~&A zd1@piU}))6AP0;3C{JbxIO|RpO{T~ra1aPvQ`54?rOyXw+H(tGJDaeL@1!Zv^cT2v zu%=3bP-2{n;$=`tUB?7jL5=G|wIrVcs{k<5c}0XRAh01>SQvO^GvllWy;AgE5fRxK z*Cj0;!^N=+)v1$(>@W$IKqvO}xWTu;P0Pscf{o<{%(QrC8B`AmeGInB8J3`hKffa* zF>fo18!%<`-fsAv=>}ZUK@($B%Tt+pjhgsG!I(IctVPaN(oDGVHrh;ghZFjn3Q*M< zs=ti|itxV4cy797Eg!%+T|>OO7AJ4qsu|cp3$xN1CHR?kNWPU6n#u;Brq_@OC&x3B z7~dIDMNzPO2W+7uYLH+=S-fuBdI2Wk;TmAQ6`)R%ZSn_lJl#4q=VVFcwh-#B+P=(?(xY{;MNNSTKFjPDJU&)U6I-6dZI*J}vdGxg#e(<1wQ-Pb@m_aBC_ zw;BR(*Pqvx$6MC8)z5fYsgK657N~ENWc3$rX*sAfqcYhkFBQ0km+Q{&XWvr#uVGO_ zC|els_m-*~Q)F zmo<4@zsG*O?Pfjc(wW5f0x`jU&~7t#=2eKz@B>?!(z!WNg>H~e+-=C52fLvzFQ)%q zJU?#u?G&o;+x-<1k7#TYPWh_hPe@;q-FTl(6(V9U$MPg0pmN-6>T~V7m;C~+Pu*Ty zIhVt$e)?UV3UTs=G9f3cIi8-F?mbx*<@JebA*cRGX{zhm()+Tcyp(mDM|eIPV_TXj z`d4|uf)a_7SQ9_`L}4?!6chy_d9?C|#@tZ{N%tUu^t03njR=W|`BM)$>YB%8%gBlGs(Ibzr0sLr*L~ZQt3@WQ1N4fHs1PQp4OT`JE{=YKJbn=YjIl zq=y4ZX`munbW6zGhJg^F+m5j1faw~g@SO-6h1O4Vf{&=-jE6m9B<2O>wK8hM`}?wa z-tA~#Lpff4Vxu27gy|+`kFE|f9%m(`H=NBB;t}@x4R;D&JQ)K4&N?V>B=h2T) z_bs(0BnaPQxQJuFH@4mZ3+5y|NWR0*ZK$jXo=UPwX<*L@$FYWlln3Y@9hTjRXo$jUDel;5_nrkd;Ol7l=obp<@+_G zdnjPaXktS=LGscJM_wRc)+*b-t&izSRMvGD-srp0eS#@mGGEO;!)1&aMi^79>_5S! z%`L}w)%_{gj>sBsJoRdN*Q}pDwdydO=PWY5JNgCjR$1HZ0ygvFl_Z@+u;yrFDVqry znCGZSggi_TQe^P3*6tpa(g)+vX>e;hQA&!BNKHG#*7i|j>{!J*_-^N&kgl{BK2>sV z#a}9Cc|9JY8GwabwgnAhe6M$rgtgt_&q(VfQ*v8XIgVT;&lh9&qkhB)3>*+;5!vOq zYguR9*S<3P6y1a~EGN>UtbGAM>y1Z1Nhn}EQPU=8-!Yw$?z;aR#qkD-q{Oo(;bq1a zdd+4Jt5@`!;dH`J}f4%uUR>Q8ceJ+@K-D;@S&#WhpP zKiJwW%R1vt*#x#Db4#0j!^9T4e+X{&&^1|}tqnwtT?I$W1G)(bdnij=v4cl&tcAa$ zE$9p8c_~^ks2O6rlTn9wwtH7Bt#y$D4LeyjJ^D4nh7&$KtX(_uXd!Jk0lPL78Gq<7 z(s&Qz**~=pY{5%Ah2ZV0P>Z=J>#%_or;{xjmvu;X+Fshs z_?nYpW7x>p;+-y03jc5vH+bJwIJX2C(BjorNtGr1-n(v0*BO^QOhjlHauhcO6J_1> ze#n^{NpB!-_33)o+glx0Dxr+@k=sG?ct^AEojcGPLT)CsJWHjo9}!%R%#{X1G4Ayi znI=24rbd4=Il8y(IxZ`2676kRp#H|)Ij-Y};(HH>n-qV^X}12SYd9QB5&|?*!9D5# z`he>Ep+Vsf6R6(mCG;*a*GKoRuBLXAA9g)0;XIh0F=)ag-6ur6m$cE``eQCy%JQDU zQ(U3d5Y%oz-1A`qfuOWL~&f8IrHRhkR&-lo}<4c ztg+T_8g-dcn6l&;)oY|4FT)>=@M>f+e^o}YX|;NJ3Ow~$5Q@;tfnM*zhcVu_@sqlB zzV>CCGd4^HQmuvxF>*V?nfXl1LrzCUos}2nJF21cYYRY_iAa&f5dZRcQCRXsF-f`X z;5Mmo-y=89fwh+LTjQ-2HFcA2mHve~Yqx++{7;8<-#~Lx=3iwn*lg!!%PFyA%OXb3Jp!Eaygf z9aWRt*s#>=AS~Kmz-kFyuhi>6tk1=PSdV%ELHJe~0L%*2X#h5(hE)s^OT{|^7U@#N zB8hzy@C*6#8TR1~pfhU*fVe`H_9`$RAC+C>z1W0gelHaQwZEegYJyn&Nmv3UkkCX` zzxU5oX|aAWn0_Q6@3(L3R5Qes^Lr;BroJ=kfD6+ygx4(4Wq}hP}TK zVg!Fb0r5ht$;a&!KBy(NnhSUeqqf;T$u$ujN`7a)5-#N8s2ly}769*^`9e6Yi-Yd{ zH@DUV>4Xd`C%Jb9?A%v*B&@JMVKu#?%3x=s)shhoZsKB4iZSYZMfDL820{&2VaIu; zEk>MTES5+KSGCZFt_DG68`W?Lit?{|QbKt;Jo}v9XBev(w+V z`Z2>6pb?#l+urY`2oDBYNcGj$V_Bo+TAWibspS=KPJY|o@^!L0I#H!r_=MF%%o&z| zrazm~Pj+ZM2JP0avs2>dV_@E$WUGAlNCgz|De^`m>qt{p$G7JSm|>Lt6=Mo}@8}Vuyk#o70}}SEm==7PhcK_Du0)(ck(*}^K8NL51D3QGZ}gB&yaX_b_N!zBBoKGto)D9?woA4 ztC~7$=}wTUPiiw3Y#pk+_?qpHr9n-dF>?lmaUbX$)SxypM&34Jersv>mY^ZT%l%z< zzp8KhI^l{3Ex;nEQ@-`@^AO2b6^C$LAAIGMA35iWezgs)`t$`AE%+Ftlgw-Mk^HB3&qk%F z15b*-)jt$2tmW3kt^!TA$Bf?fF2lH%Z2&YECWbTIyXyvwWo0_Gzd|!);La1F!xFy} z{oz`{76o(K7NY=TYQGPF28%OF&a-pQ!VL_u%{uiMKL*XVggd+ywpf@vXoQgx$7Z8rai&A7up1v4))`asdMrDpV~c2v@Hj_t9Y1tGiMMX@Wh6KDYfcS33DYdlpD` zENUm_(U5xh#dYD(sm7(DW4T5%{BaXHM>WONTqx!=-xqF~t+vGIHM)7;^iXQwaAQ)O zuUmCK2B$v;U@G3=!|9qNYM+JL6WDsg>GvMoehpG*LuN|y;K4v5n6 z|Fxf*o2XxK=qL7kRQ@OUCPKK5KVP5wawHH6uA!mtZbZv|@#R6pEK~Q=(VlcpqjA!z z1#FM;tfm?L<$-@Y#Pd#JW+G~BM%J#^9dU63tsXUp{?mL)cdNOpY>gdm4df%KGE0NitiaBaIDXZV~)yqQP?4lAWns#Hm0lXUWUoumIL{+~9(CV@Qkz zOS;y)UdAy7|NfN~RwI}Lb*TD$I+4y zhv;XP*Z=fH{7-?JwCImmh(MOK55xBfyFyZCd5;n|l0iI7ZaAPu_d`Kn!#h>{*3{t_ z?#%=6to1>$$bKF&rn1`_G(Aa>H`luJet@taW@bgKB>VeW;^!AZ`c(+uztwjE)zff0 zL^v`Ls6W&pr{4}7=PkzLJ1)Q@c6>=nkybcC5fsFJmR)SX7X9&4b9;a%h85o_&W8HL z-=iwi(i`0Yh<$}4P7VBvW8KCM4*zd)_<17ydZei-smyWV)ZN*nhEBey@Qg%p_wS`? zx#B9T=;xeRZ7ZE3Eidu8!O&79k^wHd$ ziT6&?Rb9ZNzMBcL*L_7i(u}rHQz|K;J+IP(Y-YC)6x{3dG#*#^1o!O@>`$K|THx3C z;T2SN#P#d%w=?+DP=D5cxw(O=!exQWsnY*|KiBh!c>aaN>B!*aq|p~aVuY3G|4Jc^ ztc0BQ_gpItG12Njk^m#)$SEGq@pbCo_@#so$UJg(fOCF__BVeaR{%1NJV*STW~2X2 zUz{G6f8zV~~&pSJp0J8m-xHt<98NX~FJcm(G`h`*ctC`K;jp_!QaeB$Xb_8D;KpK zB>%2;Zec;zx@>*8sO2hkQS0Ak&3}GhkyVfb|K~dO(!U$o0&ydgf7<|%`OD$la~fgK zlD&9%e+PGwapWl5xj?V{@9Hnb+>m+XK*u>BrTFI@{dd>{8Ak58ox_K^zhR_)9J0dY x4$V1_NHwmH+y;L={Fi$O7X^q7E*!q!{RLG8bc8G literal 24023 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