From a36655d7bcf73cb54671f72cc72e60458e221e8a Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 9 Aug 2022 14:07:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E6=8F=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dtos/form/JiMuReportFormDTO.java | 2 + .../dtos/result/JiMuReportResultDTO.java | 2 + .../feigns/JiMuReportOpenFeignClient.java | 20 +++- .../JiMuReportOpenFeignClientFallback.java | 15 +++ ...uReportOpenFeignClientFallbackFactory.java | 24 ++++ .../tools/utils/HttpClientManager.java | 28 +++++ .../com/epmet/dto/result/ReportResultDTO.java | 7 ++ .../com/epmet/dao/IcCustomerReportDao.java | 2 +- .../impl/IcCustomerReportServiceImpl.java | 113 +++++++++++++++--- .../resources/mapper/IcCustomerReportDao.xml | 13 +- 10 files changed, 203 insertions(+), 23 deletions(-) create mode 100644 epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/fallback/JiMuReportOpenFeignClientFallbackFactory.java diff --git a/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/dtos/form/JiMuReportFormDTO.java b/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/dtos/form/JiMuReportFormDTO.java index 03a5e5aa24..caf58ec9a9 100644 --- a/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/dtos/form/JiMuReportFormDTO.java +++ b/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/dtos/form/JiMuReportFormDTO.java @@ -28,4 +28,6 @@ public class JiMuReportFormDTO implements Serializable { * 类别 */ private List categoryKeys; + + private String id; } diff --git a/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/dtos/result/JiMuReportResultDTO.java b/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/dtos/result/JiMuReportResultDTO.java index a7e7291791..9f48ab6bba 100644 --- a/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/dtos/result/JiMuReportResultDTO.java +++ b/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/dtos/result/JiMuReportResultDTO.java @@ -19,4 +19,6 @@ public class JiMuReportResultDTO implements Serializable { private String name; private String id; + private String reportId; + private String reportName; } diff --git a/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/JiMuReportOpenFeignClient.java b/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/JiMuReportOpenFeignClient.java index 0c5dfb97ef..f6afa4d9a4 100644 --- a/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/JiMuReportOpenFeignClient.java +++ b/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/JiMuReportOpenFeignClient.java @@ -1,14 +1,30 @@ package com.epmet.commons.feignclient.feigns; -import com.epmet.commons.feignclient.feigns.fallback.JiMuReportOpenFeignClientFallback; +import com.epmet.commons.feignclient.dtos.form.JiMuReportFormDTO; +import com.epmet.commons.feignclient.dtos.result.JiMuReportResultDTO; +import com.epmet.commons.feignclient.feigns.fallback.JiMuReportOpenFeignClientFallbackFactory; import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.Result; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; /** * @Author zxc * @DateTime 2022/8/8 13:52 * @DESC */ -@FeignClient(name = ServiceConstant.EPMET_JM_REPORT, fallbackFactory = JiMuReportOpenFeignClientFallback.class) +//@FeignClient(name = ServiceConstant.EPMET_JM_REPORT, fallbackFactory = JiMuReportOpenFeignClientFallbackFactory.class) +@FeignClient(name = ServiceConstant.EPMET_JM_REPORT, fallbackFactory = JiMuReportOpenFeignClientFallbackFactory.class, url = "localhost:8118") public interface JiMuReportOpenFeignClient { + + @GetMapping("jmreport/excelQuery") + Result getList(@RequestParam("pageNo") Integer pageNo,@RequestParam("pageSize") Integer pageSize, + @RequestParam("reportType") String reportType, + @RequestParam("token") String token); + + @GetMapping("jmreport/show") + Result getReport(@RequestBody JiMuReportFormDTO formDTO); + } diff --git a/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/fallback/JiMuReportOpenFeignClientFallback.java b/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/fallback/JiMuReportOpenFeignClientFallback.java index f1ca95d23d..24b5580256 100644 --- a/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/fallback/JiMuReportOpenFeignClientFallback.java +++ b/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/fallback/JiMuReportOpenFeignClientFallback.java @@ -1,6 +1,11 @@ package com.epmet.commons.feignclient.feigns.fallback; +import com.epmet.commons.feignclient.dtos.form.JiMuReportFormDTO; +import com.epmet.commons.feignclient.dtos.result.JiMuReportResultDTO; import com.epmet.commons.feignclient.feigns.JiMuReportOpenFeignClient; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.ModuleUtils; +import com.epmet.commons.tools.utils.Result; /** * @Author zxc @@ -8,4 +13,14 @@ import com.epmet.commons.feignclient.feigns.JiMuReportOpenFeignClient; * @DESC */ public class JiMuReportOpenFeignClientFallback implements JiMuReportOpenFeignClient { + + @Override + public Result getList(Integer pageNo, Integer pageSize, String reportType, String token) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_JM_REPORT, "getList",pageNo,pageSize,reportType, token); + } + + @Override + public Result getReport(JiMuReportFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_JM_REPORT, "getReport",formDTO); + } } diff --git a/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/fallback/JiMuReportOpenFeignClientFallbackFactory.java b/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/fallback/JiMuReportOpenFeignClientFallbackFactory.java new file mode 100644 index 0000000000..e0274436c2 --- /dev/null +++ b/epmet-commons/epmet-commons-feignclient/src/main/java/com/epmet/commons/feignclient/feigns/fallback/JiMuReportOpenFeignClientFallbackFactory.java @@ -0,0 +1,24 @@ +package com.epmet.commons.feignclient.feigns.fallback; + +import com.epmet.commons.tools.exception.ExceptionUtils; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @Author zxc + * @DateTime 2022/8/9 13:27 + * @DESC + */ +@Slf4j +@Component +public class JiMuReportOpenFeignClientFallbackFactory implements FallbackFactory { + + private JiMuReportOpenFeignClientFallback fallback = new JiMuReportOpenFeignClientFallback(); + + @Override + public JiMuReportOpenFeignClientFallback create(Throwable cause) { + log.error(String.format("FeignClient调用发生异常,异常信息:%s", ExceptionUtils.getThrowableErrorStackTrace(cause))); + return fallback; + } +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java index 4fe6be37da..69b9d87b97 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java @@ -443,6 +443,34 @@ public class HttpClientManager { } } + public Result sendGet(String url, Map params, Map headerMap) { + + try { + URIBuilder builder = new URIBuilder(url); + if (!CollectionUtils.isEmpty(params)) { + Set set = params.keySet(); + for (String key : set) { + builder.setParameter(key, params.get(key) == null ? "" : String.valueOf(params.get(key))); + } + } + + System.out.println(builder.getPath()); + HttpGet httpGet = new HttpGet(builder.build()); + httpGet.setConfig(requestConfig); + if (null != headerMap){ + headerMap.forEach((k,v) -> { + if (StringUtils.isNotBlank(k)) { + httpGet.addHeader(k, v == null ? null : v.toString()); + } + }); + } + return execute(httpGet,false); + } catch (Exception e) { + log.error("sendGet exception", e); + return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + } + } + private Result execute(HttpRequestBase httpMethod, boolean isHttps) { CloseableHttpResponse response = null; try { diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ReportResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ReportResultDTO.java index 0667a0c226..b8638c3b5c 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ReportResultDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ReportResultDTO.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; /** @@ -81,4 +82,10 @@ public class ReportResultDTO implements Serializable { */ private String categoryKey; } + + public ReportResultDTO() { + this.reportName = ""; + this.reportId = ""; + this.customerList = new ArrayList<>(); + } } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcCustomerReportDao.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcCustomerReportDao.java index b7a7e93a01..0e467ca8dc 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcCustomerReportDao.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcCustomerReportDao.java @@ -23,7 +23,7 @@ public interface IcCustomerReportDao extends BaseDao { * @author zxc * @date 2022/8/8 10:38 */ - List reportList(); + List reportList(@Param("categoryKeys")List categoryKeys); /** * Desc: 根据客户IDs获取ids diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcCustomerReportServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcCustomerReportServiceImpl.java index d939a18a79..248beb49ff 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcCustomerReportServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcCustomerReportServiceImpl.java @@ -1,8 +1,11 @@ package com.epmet.service.impl; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.epmet.commons.feignclient.dtos.form.JiMuReportFormDTO; import com.epmet.commons.feignclient.dtos.result.JiMuReportResultDTO; +import com.epmet.commons.feignclient.feigns.JiMuReportOpenFeignClient; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; @@ -12,6 +15,8 @@ import com.epmet.commons.tools.dto.result.DictListResultDTO; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerFunctionConstant; import com.epmet.dao.IcCustomerReportDao; @@ -27,16 +32,15 @@ import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.OperCrmOpenFeignClient; import com.epmet.service.IcCustomerReportService; import com.epmet.service.IcReportFunService; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.net.InetAddress; +import java.util.*; import java.util.stream.Collectors; /** @@ -46,6 +50,7 @@ import java.util.stream.Collectors; * @since v1.0.0 2022-08-08 */ @Service +@Slf4j public class IcCustomerReportServiceImpl extends BaseServiceImpl implements IcCustomerReportService { @Autowired private RedisUtils redisUtils; @@ -56,6 +61,8 @@ public class IcCustomerReportServiceImpl extends BaseServiceImpl getWrapper(Map params){ @@ -75,10 +82,30 @@ public class IcCustomerReportServiceImpl extends BaseServiceImpl reportList() { - List reportList = baseDao.reportList(); - if (CollectionUtils.isEmpty(reportList)){ + Result list = jiMuReportOpenFeignClient.getList(1,10000,"datainfo", EpmetRequestHolder.getHeader("Authorization")); + Result url = getUrl(2, null); + log.info(url.toString()); + Map map = JSON.parseObject(url.getData(), Map.class); + Map map2 = (Map)map.get("result"); + List> map3 = (List>) map2.get("records"); + List allReports = new ArrayList<>(); + map3.forEach(m -> { + allReports.add(ConvertUtils.mapToEntity(m,JiMuReportResultDTO.class)); + }); + if (CollectionUtils.isEmpty(allReports)){ return new ArrayList<>(); } + List allReportList = new ArrayList<>(); + allReports.forEach(r -> { + ReportResultDTO dto = new ReportResultDTO(); + dto.setReportId(r.getId()); + dto.setReportName(r.getName()); + allReportList.add(dto); + }); + List reportList = baseDao.reportList(null); + if (CollectionUtils.isEmpty(reportList)){ + return allReportList; + } Result> dictList = adminOpenFeignClient.dictList(new DictListFormDTO(CustomerFunctionConstant.REPORT_CATEGORY)); if (!dictList.success()){ throw new EpmetException("查询字典信息失败:" + CustomerFunctionConstant.REPORT_CATEGORY); @@ -93,17 +120,9 @@ public class IcCustomerReportServiceImpl extends BaseServiceImpl reportList.stream().filter(r -> c.getId().equals(r.getCustomerId())).forEach(r -> r.setCustomerName(c.getCustomerName()))); } - // todo 报表 - List result = new ArrayList<>(); Map> groupByReport = reportList.stream().collect(Collectors.groupingBy(ReportResultDTO::getReportId)); - groupByReport.forEach((reportId,l) -> { - ReportResultDTO dto = new ReportResultDTO(); - dto.setReportId(reportId); - dto.setReportName(l.get(NumConstant.ZERO).getReportName()); - dto.setCustomerList(ConvertUtils.sourceToTarget(l, ReportResultDTO.CustomerList.class)); - result.add(dto); - }); - return result; + groupByReport.forEach((reportId,l) -> allReportList.stream().filter(a -> a.getReportId().equals(reportId)).forEach(a -> a.setCustomerList(ConvertUtils.sourceToTarget(l, ReportResultDTO.CustomerList.class)))); + return allReportList; } /** @@ -173,7 +192,25 @@ public class IcCustomerReportServiceImpl extends BaseServiceImpl reportIdAndName(ReportListFormDTO formDTO) { - return null; + List reportList = baseDao.reportList(formDTO.getCategoryKeys()); + if (CollectionUtils.isEmpty(reportList)){ + return new ArrayList<>(); + } + List recordIds = reportList.stream().map(m -> m.getReportId()).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList()); + List result = new ArrayList<>(); + recordIds.forEach(r -> { + JiMuReportFormDTO form = new JiMuReportFormDTO(); + form.setId(r); +// Result url = getUrl(NumConstant.ONE, r); +// if (!report.success()){ +// throw new EpmetException("查询报表失败:"+r); +// } +// JiMuReportResultDTO data = report.getData(); +// data.setReportId(data.getId()); +// data.setReportName(data.getReportName()); +// result.add(data); + }); + return result; } @Transactional(rollbackFor = Exception.class) @@ -186,4 +223,46 @@ public class IcCustomerReportServiceImpl extends BaseServiceImpl getUrl(Integer type,String id) { + String add = ""; + Result result; + try { + InetAddress localHost = InetAddress.getLocalHost(); +// add = localHost.getHostAddress(); + add = "http://192.168.1.141:8118"; + System.out.println(add); + }catch (Exception e){ + log.warn("获取url失败"); + } + if (type.compareTo(NumConstant.TWO) == NumConstant.ZERO){ + add = add.concat("/jmreport/excelQuery"); + Map params = new HashMap<>(16); + params.put("pageNo",1); + params.put("pageSize",10000); + params.put("reportType","datainfo"); + params.put("name",""); + params.put("token", EpmetRequestHolder.getHeader("Authorization")); + Map headers = new HashMap<>(16); + headers.put("token", EpmetRequestHolder.getHeader("Authorization")); + headers.put("X-Access-Token", EpmetRequestHolder.getHeader("Authorization")); + headers.put("Accept", "application/json, text/plain, */*"); + headers.put("Content-Type", "application/json;charset=utf-8"); + result = HttpClientManager.getInstance().sendGet(add, params, headers); + }else { + add.concat("/jmreport/show"); + Map params = new HashMap<>(16); + params.put("id",id); + Map headers = new HashMap<>(16); + headers.put("token", EpmetRequestHolder.getHeader("Authorization")); + result = HttpClientManager.getInstance().sendPostAndHeader(add, params, headers); + } + return result; + } + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcCustomerReportDao.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcCustomerReportDao.xml index a30bcdca75..6dcce49e7c 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcCustomerReportDao.xml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcCustomerReportDao.xml @@ -5,7 +5,7 @@ DELETE FROM ic_customer_report - + WHERE CUSTOMER_ID IN ( #{c} @@ -15,7 +15,7 @@ DELETE FROM ic_report_fun - + WHERE CUSTOMER_REPORT_ID IN ( #{r} @@ -31,8 +31,15 @@ cr.CUSTOMER_ID, rf.FUN_CATEGORY_KEY AS categoryKey FROM ic_customer_report cr - INNER JOIN ic_report_fun rf ON rf.CUSTOMER_REPORT_ID = cr.REPORT_ID AND rf.DEL_FLAG = 0 + INNER JOIN ic_report_fun rf ON rf.CUSTOMER_REPORT_ID = cr.ID AND rf.DEL_FLAG = 0 WHERE cr.DEL_FLAG = 0 + + AND rf.FUN_CATEGORY_KEY in ( + + #{r} + + ) + ORDER BY cr.CREATED_TIME DESC