Browse Source

中鸿记修改

master
liupopo 2 years ago
parent
commit
1064f1cfcf
  1. 10
      yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/pom.xml
  2. 4
      yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/src/main/java/com/yxt/supervise/dbcenter/biz/package-info.java
  3. 2
      yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/src/main/java/com/yxt/supervise/dbcenter/zhj/crawl/CrawlTask.java
  4. 6
      yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/src/main/java/com/yxt/supervise/dbcenter/zhj/crawl/ZhjSpider.java
  5. 62
      yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/src/main/java/com/yxt/supervise/dbcenter/zhj/crawl/biz/crawlSalesAmount/CrawlSalesAmountService.java
  6. 4
      yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/src/test/java/com/yxt/supervise/dbcenter/YxtSuperviseDbcenterApplicationTests.java
  7. 2
      yxt-supervise-dbcenter/yxt-supervise-dbcenter-ui/.env.development
  8. 746
      yxt-supervise-dbcenter/yxt-supervise-dbcenter-ui/src/views/inquireStatistics/index.vue

10
yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/pom.xml

@ -16,11 +16,11 @@
<version>0.0.1</version>
<dependencies>
<dependency>
<groupId>com.yxt.supervise.dbcenter</groupId>
<artifactId>yxt-supervise-dbcenter-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.yxt.supervise.dbcenter</groupId>-->
<!-- <artifactId>yxt-supervise-dbcenter-api</artifactId>-->
<!-- <version>0.0.1-SNAPSHOT</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.yxt</groupId>
<artifactId>yxt-common-base</artifactId>

4
yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/src/main/java/com/yxt/supervise/dbcenter/biz/package-info.java

@ -1,4 +0,0 @@
/**
* 宇信通监管项目-光伏项目-业务逻辑
*/
package com.yxt.supervise.dbcenter.biz;

2
yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/src/main/java/com/yxt/supervise/dbcenter/zhj/crawl/CrawlTask.java

@ -33,7 +33,7 @@ public class CrawlTask {
// String purchaseDay = DateUtil.format(DateUtil.offsetDay(new Date(), -2), "yyyy-MM-dd");
ThreadUtil.execute(() -> crawlSalesAmountService.pullData(currDay));
ThreadUtil.execute(() -> crawlSalesDishesService.pullData(currDay));
ThreadUtil.execute(() -> crawlPurchaseService.pullData(currDay));
// ThreadUtil.execute(() -> crawlPurchaseService.pullData(currDay));
}
}

6
yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/src/main/java/com/yxt/supervise/dbcenter/zhj/crawl/ZhjSpider.java

@ -19,9 +19,11 @@ public class ZhjSpider {
private static String url = "https://bi.aliyuncs.com/api/v2/biPlatform/query/byQueryParam";
private static String reportId = "85c4af04-1910-4005-8e47-742af1acb713";
// private static String olapQueryParam_salesAmount = "{\"componentId\":\"52dece2d-ba6d-452e-8497-f94baff096c4\",\"componentName\":\"指标看板-熟溢香支付方式_knief\",\"configs\":[{\"type\":\"field\",\"config\":{\"fields\":[{\"guid\":\"31ce439f-747c-45d0-8f35-51fe9daea91e\",\"fid\":\"5805bc15e1\",\"areaType\":\"row\"},{\"guid\":\"6e8c6afd-038a-4644-85c1-ffb813dc8614\",\"fid\":\"fa1b7a0d21\",\"areaType\":\"column\",\"aggregate\":\"sum\"}]},\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\"},{\"type\":\"paging\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"limit\":1000,\"offset\":0,\"pagedByAllDim\":true}},{\"type\":\"beforeAggregateCondition\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"3fd928d207\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"POS点餐\"},{\"valueType\":\"string\",\"value\":\"会员充值\"},{\"valueType\":\"string\",\"value\":\"扫码点餐\"},{\"valueType\":\"string\",\"value\":\"美团外卖点餐\"},{\"valueType\":\"string\",\"value\":\"饿了么外卖点餐\"}]},{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"15784307a1\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"greaterThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]},{\"field\":{\"fid\":\"15784307a1\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"lessThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]}]}]}},{\"type\":\"queryConfig\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"needCount\":false,\"queryCount\":false,\"queryDetail\":false}},{\"type\":\"advancedParam\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"autoInsightParam\":{\"enable\":false},\"wordCloudParam\":{},\"summarizeParams\":[],\"trendLineParams\":[],\"forecastParams\":[],\"anomalyDetectionParams\":[],\"clusteringParams\":[],\"groupParam\":null}},{\"type\":\"annotationParam\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"measureThresholdParams\":[],\"inflectionPointParams\":[]}}],\"dataType\":\"general\",\"reportId\":\"85c4af04-1910-4005-8e47-742af1acb713\"}";
private static String olapQueryParam_salesAmount = "{\"componentId\":\"52dece2d-ba6d-452e-8497-f94baff096c4\",\"componentName\":\"指标看板-熟溢香支付方式_knief\",\"configs\":[{\"type\":\"field\",\"config\":{\"fields\":[{\"guid\":\"fede5a50-ecc9-4a4e-964e-cfef899a8653\",\"fid\":\"5c96f44f41\",\"areaType\":\"row\"},{\"guid\":\"881950c9-ae3a-46d4-bb43-cb9467a2669b\",\"fid\":\"25d1d226d2\",\"areaType\":\"column\",\"aggregate\":\"sum\"}]},\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\"},{\"type\":\"paging\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"limit\":1000,\"offset\":0,\"pagedByAllDim\":true}},{\"type\":\"beforeAggregateCondition\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"5c96f44f41\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"熟溢香振头店\"},{\"valueType\":\"string\",\"value\":\"馍馍卤振岗店\"},{\"valueType\":\"string\",\"value\":\"馍馍卤雅清街店\"},{\"valueType\":\"string\",\"value\":\"(翟营店)裕华区翟营大街分公司\"},{\"valueType\":\"string\",\"value\":\"裕华杨麻子大饼饭店(翟营店)\"}]},{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"96c82ad449\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"greaterThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]},{\"field\":{\"fid\":\"96c82ad449\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"lessThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]}]}]}},{\"type\":\"queryConfig\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"needCount\":false,\"queryCount\":false,\"queryDetail\":false}},{\"type\":\"advancedParam\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"autoInsightParam\":{\"enable\":false},\"wordCloudParam\":{},\"summarizeParams\":[],\"trendLineParams\":[],\"forecastParams\":[],\"anomalyDetectionParams\":[],\"clusteringParams\":[],\"groupParam\":null}},{\"type\":\"annotationParam\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"measureThresholdParams\":[],\"inflectionPointParams\":[]}}],\"dataType\":\"general\",\"reportId\":\"85c4af04-1910-4005-8e47-742af1acb713\"}";
private static String olapQueryParam_salesAmount = "{\"componentId\":\"52dece2d-ba6d-452e-8497-f94baff096c4\",\"componentName\":\"指标看板-熟溢香支付方式_knief\",\"configs\":[{\"type\":\"field\",\"config\":{\"fields\":[{\"guid\":\"fede5a50-ecc9-4a4e-964e-cfef899a8653\",\"fid\":\"5eb3ee38a2\",\"areaType\":\"row\"},{\"guid\":\"881950c9-ae3a-46d4-bb43-cb9467a2669b\",\"fid\":\"e0ca4f1ce5\",\"areaType\":\"column\",\"aggregate\":\"sum\"}]},\"cubeId\":\"5fabd4fe-859f-4ab2-81ef-9489db901c85\"},{\"type\":\"paging\",\"cubeId\":\"5fabd4fe-859f-4ab2-81ef-9489db901c85\",\"config\":{\"limit\":1000,\"offset\":0,\"pagedByAllDim\":true}},{\"type\":\"beforeAggregateCondition\",\"cubeId\":\"5fabd4fe-859f-4ab2-81ef-9489db901c85\",\"config\":{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"5eb3ee38a2\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"(翟营店)裕华区翟营大街分公司\"},{\"valueType\":\"string\",\"value\":\"熟溢香振头店\"},{\"valueType\":\"string\",\"value\":\"馍馍卤振岗店\"},{\"valueType\":\"string\",\"value\":\"馍馍卤雅清街店\"}]},{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"fac617597c\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"greaterThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]},{\"field\":{\"fid\":\"fac617597c\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"lessThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]}]}]}},{\"type\":\"queryConfig\",\"cubeId\":\"5fabd4fe-859f-4ab2-81ef-9489db901c85\",\"config\":{\"needCount\":false,\"queryCount\":false,\"queryDetail\":false}},{\"type\":\"advancedParam\",\"cubeId\":\"5fabd4fe-859f-4ab2-81ef-9489db901c85\",\"config\":{\"autoInsightParam\":{\"enable\":false},\"wordCloudParam\":{},\"summarizeParams\":[],\"trendLineParams\":[],\"forecastParams\":[],\"anomalyDetectionParams\":[],\"clusteringParams\":[],\"groupParam\":null}},{\"type\":\"annotationParam\",\"cubeId\":\"5fabd4fe-859f-4ab2-81ef-9489db901c85\",\"config\":{\"measureThresholdParams\":[],\"inflectionPointParams\":[]}}],\"dataType\":\"general\",\"reportId\":\"85c4af04-1910-4005-8e47-742af1acb713\"}";
// private static String olapQueryParam_salesAmount = "{\"componentId\":\"52dece2d-ba6d-452e-8497-f94baff096c4\",\"componentName\":\"指标看板-熟溢香支付方式_knief\",\"configs\":[{\"type\":\"field\",\"config\":{\"fields\":[{\"guid\":\"fede5a50-ecc9-4a4e-964e-cfef899a8653\",\"fid\":\"5c96f44f41\",\"areaType\":\"row\"},{\"guid\":\"881950c9-ae3a-46d4-bb43-cb9467a2669b\",\"fid\":\"25d1d226d2\",\"areaType\":\"column\",\"aggregate\":\"sum\"}]},\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\"},{\"type\":\"paging\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"limit\":1000,\"offset\":0,\"pagedByAllDim\":true}},{\"type\":\"beforeAggregateCondition\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"5c96f44f41\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"熟溢香振头店\"},{\"valueType\":\"string\",\"value\":\"馍馍卤振岗店\"},{\"valueType\":\"string\",\"value\":\"馍馍卤雅清街店\"},{\"valueType\":\"string\",\"value\":\"(翟营店)裕华区翟营大街分公司\"},{\"valueType\":\"string\",\"value\":\"裕华杨麻子大饼饭店(翟营店)\"}]},{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"96c82ad449\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"greaterThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]},{\"field\":{\"fid\":\"96c82ad449\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"lessThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]}]}]}},{\"type\":\"queryConfig\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"needCount\":false,\"queryCount\":false,\"queryDetail\":false}},{\"type\":\"advancedParam\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"autoInsightParam\":{\"enable\":false},\"wordCloudParam\":{},\"summarizeParams\":[],\"trendLineParams\":[],\"forecastParams\":[],\"anomalyDetectionParams\":[],\"clusteringParams\":[],\"groupParam\":null}},{\"type\":\"annotationParam\",\"cubeId\":\"90bb4e6c-c315-465b-9c3b-74a22a0d84e6\",\"config\":{\"measureThresholdParams\":[],\"inflectionPointParams\":[]}}],\"dataType\":\"general\",\"reportId\":\"85c4af04-1910-4005-8e47-742af1acb713\"}";
// private static String olapQueryParam_salesDishes = "{\"componentId\":\"8d8a8363-89d8-4bec-9a58-c7c13ae63f15\",\"componentName\":\"菜品销量\",\"configs\":[{\"type\":\"field\",\"config\":{\"fields\":[{\"guid\":\"f8e0f500-ffc6-4821-9190-5cd3b3c906e9\",\"fid\":\"19a1d100cc\",\"areaType\":\"row\"},{\"guid\":\"1c13f425-828d-48ad-8549-de85dd3c259e\",\"fid\":\"2083fd4437\",\"areaType\":\"row\"},{\"guid\":\"07b482d2-b2e3-4a64-9d8d-3e30c03dfec6\",\"fid\":\"0e325d5eed\",\"areaType\":\"column\",\"granularity\":null,\"aggregate\":\"sum\"},{\"guid\":\"a4cfd195-dfd3-4947-a024-076ca806793f\",\"fid\":\"b9d5c6b646\",\"areaType\":\"column\",\"aggregate\":\"avg\"}]},\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\"},{\"type\":\"paging\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"limit\":1000,\"offset\":0,\"pagedByAllDim\":true}},{\"type\":\"beforeAggregateCondition\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"5e0adf962d\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"bk\"}]},{\"field\":{\"fid\":\"5e0adf962d\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"bk\"}]},{\"field\":{\"fid\":\"e3aec87664\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"V_STORE_NAME\"}]},{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"8e55928f76\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"greaterThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]},{\"field\":{\"fid\":\"8e55928f76\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"lessThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]}]}]}},{\"type\":\"sort\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"sortFields\":[{\"sortType\":\"desc\",\"guid\":\"07b482d2-b2e3-4a64-9d8d-3e30c03dfec6\",\"dimValues\":[],\"groupSort\":false}]}},{\"type\":\"queryConfig\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"needCount\":true,\"queryCount\":false,\"queryDetail\":false}},{\"type\":\"advancedParam\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"autoInsightParam\":{\"enable\":false},\"wordCloudParam\":{},\"summarizeParams\":[],\"trendLineParams\":[],\"forecastParams\":[],\"anomalyDetectionParams\":[],\"clusteringParams\":[],\"groupParam\":null}},{\"type\":\"annotationParam\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"measureThresholdParams\":[],\"inflectionPointParams\":[]}}],\"dataType\":\"pivot\",\"reportId\":\"85c4af04-1910-4005-8e47-742af1acb713\"}";
private static String olapQueryParam_salesDishes = "{\"componentId\":\"8d8a8363-89d8-4bec-9a58-c7c13ae63f15\",\"componentName\":\"菜品销量\",\"configs\":[{\"type\":\"field\",\"config\":{\"fields\":[{\"guid\":\"f8e0f500-ffc6-4821-9190-5cd3b3c906e9\",\"fid\":\"b9ba4f6099\",\"areaType\":\"row\"},{\"guid\":\"1c13f425-828d-48ad-8549-de85dd3c259e\",\"fid\":\"cb3a24e763\",\"areaType\":\"row\"},{\"guid\":\"07b482d2-b2e3-4a64-9d8d-3e30c03dfec6\",\"fid\":\"6d93eb49d3\",\"areaType\":\"column\",\"granularity\":null,\"aggregate\":\"sum\"},{\"guid\":\"a4cfd195-dfd3-4947-a024-076ca806793f\",\"fid\":\"9ff0b93826\",\"areaType\":\"column\",\"aggregate\":\"avg\"}]},\"cubeId\":\"70cd09d1-f416-482f-9616-779081c7f5f8\"},{\"type\":\"paging\",\"cubeId\":\"70cd09d1-f416-482f-9616-779081c7f5f8\",\"config\":{\"limit\":1000,\"offset\":0,\"pagedByAllDim\":true}},{\"type\":\"beforeAggregateCondition\",\"cubeId\":\"70cd09d1-f416-482f-9616-779081c7f5f8\",\"config\":{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"49e47bb912\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"V_STORE_NAME\"}]},{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"83fedb8180\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"greaterThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]},{\"field\":{\"fid\":\"83fedb8180\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"lessThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]}]}]}},{\"type\":\"sort\",\"cubeId\":\"70cd09d1-f416-482f-9616-779081c7f5f8\",\"config\":{\"sortFields\":[{\"sortType\":\"desc\",\"guid\":\"07b482d2-b2e3-4a64-9d8d-3e30c03dfec6\",\"dimValues\":[],\"groupSort\":false}]}},{\"type\":\"queryConfig\",\"cubeId\":\"70cd09d1-f416-482f-9616-779081c7f5f8\",\"config\":{\"needCount\":true,\"queryCount\":false,\"queryDetail\":false}},{\"type\":\"advancedParam\",\"cubeId\":\"70cd09d1-f416-482f-9616-779081c7f5f8\",\"config\":{\"autoInsightParam\":{\"enable\":false},\"wordCloudParam\":{},\"summarizeParams\":[],\"trendLineParams\":[],\"forecastParams\":[],\"anomalyDetectionParams\":[],\"clusteringParams\":[],\"groupParam\":null}},{\"type\":\"annotationParam\",\"cubeId\":\"70cd09d1-f416-482f-9616-779081c7f5f8\",\"config\":{\"measureThresholdParams\":[],\"inflectionPointParams\":[]}}],\"dataType\":\"pivot\",\"reportId\":\"85c4af04-1910-4005-8e47-742af1acb713\"}";
// private static String olapQueryParam_salesDishes = "{\"componentId\":\"8d8a8363-89d8-4bec-9a58-c7c13ae63f15\",\"componentName\":\"菜品销量\",\"configs\":[{\"type\":\"field\",\"config\":{\"fields\":[{\"guid\":\"f8e0f500-ffc6-4821-9190-5cd3b3c906e9\",\"fid\":\"19a1d100cc\",\"areaType\":\"row\"},{\"guid\":\"1c13f425-828d-48ad-8549-de85dd3c259e\",\"fid\":\"2083fd4437\",\"areaType\":\"row\"},{\"guid\":\"07b482d2-b2e3-4a64-9d8d-3e30c03dfec6\",\"fid\":\"0e325d5eed\",\"areaType\":\"column\",\"granularity\":null,\"aggregate\":\"sum\"},{\"guid\":\"a4cfd195-dfd3-4947-a024-076ca806793f\",\"fid\":\"b9d5c6b646\",\"areaType\":\"column\",\"aggregate\":\"avg\"}]},\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\"},{\"type\":\"paging\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"limit\":1000,\"offset\":0,\"pagedByAllDim\":true}},{\"type\":\"beforeAggregateCondition\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"5e0adf962d\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"bk\"}]},{\"field\":{\"fid\":\"5e0adf962d\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"bk\"}]},{\"field\":{\"fid\":\"e3aec87664\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"V_STORE_NAME\"}]},{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"8e55928f76\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"greaterThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]},{\"field\":{\"fid\":\"8e55928f76\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"lessThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]}]}]}},{\"type\":\"sort\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"sortFields\":[{\"sortType\":\"desc\",\"guid\":\"07b482d2-b2e3-4a64-9d8d-3e30c03dfec6\",\"dimValues\":[],\"groupSort\":false}]}},{\"type\":\"queryConfig\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"needCount\":true,\"queryCount\":false,\"queryDetail\":false}},{\"type\":\"advancedParam\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"autoInsightParam\":{\"enable\":false},\"wordCloudParam\":{},\"summarizeParams\":[],\"trendLineParams\":[],\"forecastParams\":[],\"anomalyDetectionParams\":[],\"clusteringParams\":[],\"groupParam\":null}},{\"type\":\"annotationParam\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"measureThresholdParams\":[],\"inflectionPointParams\":[]}}],\"dataType\":\"pivot\",\"reportId\":\"85c4af04-1910-4005-8e47-742af1acb713\"}";
private static String olapQueryParam_salesDishes = "{\"componentId\":\"8d8a8363-89d8-4bec-9a58-c7c13ae63f15\",\"componentName\":\"菜品销量\",\"configs\":[{\"type\":\"field\",\"config\":{\"fields\":[{\"guid\":\"f8e0f500-ffc6-4821-9190-5cd3b3c906e9\",\"fid\":\"19a1d100cc\",\"areaType\":\"row\"},{\"guid\":\"1c13f425-828d-48ad-8549-de85dd3c259e\",\"fid\":\"2083fd4437\",\"areaType\":\"row\"},{\"guid\":\"07b482d2-b2e3-4a64-9d8d-3e30c03dfec6\",\"fid\":\"0e325d5eed\",\"areaType\":\"column\",\"granularity\":null,\"aggregate\":\"sum\"},{\"guid\":\"a4cfd195-dfd3-4947-a024-076ca806793f\",\"fid\":\"b9d5c6b646\",\"areaType\":\"column\",\"aggregate\":\"avg\"}]},\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\"},{\"type\":\"paging\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"limit\":1000,\"offset\":0,\"pagedByAllDim\":true}},{\"type\":\"beforeAggregateCondition\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"5e0adf962d\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"bk\"}]},{\"field\":{\"fid\":\"5e0adf962d\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"bk\"}]},{\"field\":{\"fid\":\"e3aec87664\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"V_STORE_NAME\"}]},{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"8e55928f76\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"greaterThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]},{\"field\":{\"fid\":\"8e55928f76\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"lessThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]}]}]}},{\"type\":\"sort\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"sortFields\":[{\"sortType\":\"desc\",\"guid\":\"07b482d2-b2e3-4a64-9d8d-3e30c03dfec6\",\"dimValues\":[],\"groupSort\":false}]}},{\"type\":\"queryConfig\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"needCount\":true,\"queryCount\":false,\"queryDetail\":false}},{\"type\":\"advancedParam\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"autoInsightParam\":{\"enable\":false},\"wordCloudParam\":{},\"summarizeParams\":[],\"trendLineParams\":[],\"forecastParams\":[],\"anomalyDetectionParams\":[],\"clusteringParams\":[],\"groupParam\":null}},{\"type\":\"annotationParam\",\"cubeId\":\"a16139f4-8f21-4172-afb9-5de69719590e\",\"config\":{\"measureThresholdParams\":[],\"inflectionPointParams\":[]}}],\"dataType\":\"pivot\",\"reportId\":\"85c4af04-1910-4005-8e47-742af1acb713\"}";
// private static String olapQueryParam_purchase = "{\"componentId\":\"1cdfd850-7d65-48ca-b71d-03c9e1b979ac\",\"componentName\":\"采购明细表\",\"configs\":[{\"type\":\"field\",\"config\":{\"fields\":[{\"guid\":\"899dd166-55f9-4ada-9f32-856f86cab0ce\",\"fid\":\"5f2e64d20f\",\"areaType\":\"column\"},{\"guid\":\"bf3d46dd-3759-49a2-a035-424023202ce8\",\"fid\":\"6dd7171857\",\"areaType\":\"column\",\"dateTrunc\":\"day\"},{\"guid\":\"82f79e88-5328-40f6-9ea8-9a5a91c389cd\",\"fid\":\"22b739da7f\",\"areaType\":\"column\"},{\"guid\":\"f563a6d0-6604-4b12-915a-94421dca00d6\",\"fid\":\"c6139dca5d\",\"areaType\":\"column\"},{\"guid\":\"17c3dfb5-a9b5-4d16-965b-36ce7ab704c9\",\"fid\":\"dde06772b7\",\"areaType\":\"column\"},{\"guid\":\"26c3dcd5-3e1e-46cd-8a0a-7af9c0871efa\",\"fid\":\"118f5bd47e\",\"areaType\":\"column\"},{\"guid\":\"665a4b3d-30d0-42bd-a4c6-7096bb252e4e\",\"fid\":\"a112247f18\",\"areaType\":\"column\"}]},\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\"},{\"type\":\"paging\",\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\",\"config\":{\"limit\":1000,\"offset\":0,\"pagedByAllDim\":true}},{\"type\":\"beforeAggregateCondition\",\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\",\"config\":{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"18913ee52b\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"bk\"}]},{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"6dd7171857\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"greaterThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]},{\"field\":{\"fid\":\"6dd7171857\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"lessThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]}]}]}},{\"type\":\"queryConfig\",\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\",\"config\":{\"needCount\":true,\"queryCount\":false,\"queryDetail\":true}},{\"type\":\"advancedParam\",\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\",\"config\":{\"autoInsightParam\":{\"enable\":false},\"wordCloudParam\":{},\"summarizeParams\":[],\"trendLineParams\":[],\"forecastParams\":[],\"anomalyDetectionParams\":[],\"clusteringParams\":[],\"groupParam\":null}},{\"type\":\"annotationParam\",\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\",\"config\":{\"measureThresholdParams\":[],\"inflectionPointParams\":[]}}],\"dataType\":\"general\",\"reportId\":\"85c4af04-1910-4005-8e47-742af1acb713\"}";
private static String olapQueryParam_purchase = "{\"componentId\":\"1cdfd850-7d65-48ca-b71d-03c9e1b979ac\",\"componentName\":\"采购明细表\",\"configs\":[{\"type\":\"field\",\"config\":{\"fields\":[{\"guid\":\"899dd166-55f9-4ada-9f32-856f86cab0ce\",\"fid\":\"5f2e64d20f\",\"areaType\":\"column\"},{\"guid\":\"bf3d46dd-3759-49a2-a035-424023202ce8\",\"fid\":\"6dd7171857\",\"areaType\":\"column\",\"dateTrunc\":\"day\"},{\"guid\":\"82f79e88-5328-40f6-9ea8-9a5a91c389cd\",\"fid\":\"22b739da7f\",\"areaType\":\"column\"},{\"guid\":\"f563a6d0-6604-4b12-915a-94421dca00d6\",\"fid\":\"c6139dca5d\",\"areaType\":\"column\"},{\"guid\":\"17c3dfb5-a9b5-4d16-965b-36ce7ab704c9\",\"fid\":\"dde06772b7\",\"areaType\":\"column\"},{\"guid\":\"26c3dcd5-3e1e-46cd-8a0a-7af9c0871efa\",\"fid\":\"118f5bd47e\",\"areaType\":\"column\"},{\"guid\":\"665a4b3d-30d0-42bd-a4c6-7096bb252e4e\",\"fid\":\"a112247f18\",\"areaType\":\"column\"}]},\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\"},{\"type\":\"paging\",\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\",\"config\":{\"limit\":1000,\"offset\":0,\"pagedByAllDim\":true}},{\"type\":\"beforeAggregateCondition\",\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\",\"config\":{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"18913ee52b\"},\"functionalOperator\":\"in\",\"args\":[{\"valueType\":\"string\",\"value\":\"bk\"}]},{\"logicalOperator\":\"AND\",\"conditions\":[{\"field\":{\"fid\":\"6dd7171857\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"greaterThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]},{\"field\":{\"fid\":\"6dd7171857\",\"dateTrunc\":\"day\"},\"functionalOperator\":\"lessThanOrEqual\",\"args\":[{\"valueType\":\"string\",\"value\":\"VAR_DATE_STR\"}]}]}]}},{\"type\":\"queryConfig\",\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\",\"config\":{\"needCount\":true,\"queryCount\":false,\"queryDetail\":true}},{\"type\":\"advancedParam\",\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\",\"config\":{\"autoInsightParam\":{\"enable\":false},\"wordCloudParam\":{},\"summarizeParams\":[],\"trendLineParams\":[],\"forecastParams\":[],\"anomalyDetectionParams\":[],\"clusteringParams\":[],\"groupParam\":null}},{\"type\":\"annotationParam\",\"cubeId\":\"de60b1eb-37fa-4d0c-b02a-47c6f00b061b\",\"config\":{\"measureThresholdParams\":[],\"inflectionPointParams\":[]}}],\"dataType\":\"general\",\"reportId\":\"85c4af04-1910-4005-8e47-742af1acb713\"}";

62
yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/src/main/java/com/yxt/supervise/dbcenter/zhj/crawl/biz/crawlSalesAmount/CrawlSalesAmountService.java

@ -36,36 +36,36 @@ public class CrawlSalesAmountService extends ServiceImpl<CrawlSalesAmountMapper,
@Autowired
private ConfBrandProportionService confBrandProportionService;
public ResultBean saveCrawlSalesAmount(CrawlSalesAmountDto dto){
public ResultBean saveCrawlSalesAmount(CrawlSalesAmountDto dto) {
ResultBean rb = ResultBean.fireFail();
CrawlSalesAmount amount = new CrawlSalesAmount();
BeanUtil.copyProperties(dto,amount);
BeanUtil.copyProperties(dto, amount);
int insert = baseMapper.insert(amount);
if (insert == 0){
if (insert == 0) {
return rb.setMsg("添加失败");
}
return rb.success().setMsg("添加成功");
}
public PagerVo<CrawlSalesAmountVo> listPageVo(PagerQuery<CrawlSalesAmountQuery> pq){
public PagerVo<CrawlSalesAmountVo> listPageVo(PagerQuery<CrawlSalesAmountQuery> pq) {
CrawlSalesAmountQuery query = pq.getParams();
QueryWrapper<CrawlSalesAmount> qw = new QueryWrapper<>();
if (query != null){
if (query.getStoreName() != null && !query.getStoreName().equals("")){
qw.eq("a.storeName",query.getStoreName());
if (query != null) {
if (query.getStoreName() != null && !query.getStoreName().equals("")) {
qw.eq("a.storeName", query.getStoreName());
}
if (query.getFromTime() != null && !query.getFromTime().equals("")){
qw.ge("a.dataDate",query.getFromTime());
if (query.getFromTime() != null && !query.getFromTime().equals("")) {
qw.ge("a.dataDate", query.getFromTime());
}
if (query.getEndTime() != null && !query.getEndTime().equals("")){
qw.le("a.dataDate",query.getEndTime());
if (query.getEndTime() != null && !query.getEndTime().equals("")) {
qw.le("a.dataDate", query.getEndTime());
}
if (query.getBrandName() != null && !query.getBrandName().equals("")){
qw.eq("b.name",query.getBrandName());
if (query.getBrandName() != null && !query.getBrandName().equals("")) {
qw.eq("b.name", query.getBrandName());
}
}
qw.eq("s.isEnable",1);
qw.gt("a.id",0);
qw.eq("s.isEnable", 1);
qw.gt("a.id", 0);
qw.orderByDesc("a.dataDate");
// IPage<CrawlSalesAmount> crawlSalesAmountIPage = baseMapper.selectPage(page, qw);
// List<CrawlSalesAmount> records = crawlSalesAmountIPage.getRecords();
@ -97,20 +97,20 @@ public class CrawlSalesAmountService extends ServiceImpl<CrawlSalesAmountMapper,
for (CrawlSalesAmountVo record : records) {
List<ConfBrandProportion> proportions = confBrandProportionService.selectBrandProportionByBrandName(record.getName());
List<Map<String, Object>> list = new ArrayList();
if (proportions == null || proportions.size() == 0){
if (proportions == null || proportions.size() == 0) {
record.setProportion(null);
record.setTotalCount(0.0);
}else {
} else {
Map<String, Object> map = null;
Double i = 0.0;
for (ConfBrandProportion proportion : proportions) {
map = new HashMap<>();
Double pro = record.getSalesAmount()* Double.parseDouble(proportion.getProportion()) * 0.01;
Double pro = record.getSalesAmount() * Double.parseDouble(proportion.getProportion()) * 0.01;
DecimalFormat df = new DecimalFormat("#.00");
String format = df.format(pro);
map.put(proportion.getTypeName(),proportion.getTypeName()+ ":" + format);
map.put(proportion.getTypeName(), proportion.getTypeName() + ":" + format);
list.add(map);
i+=Double.parseDouble(format);
i += Double.parseDouble(format);
}
record.setProportion(list);
record.setTotalCount(i);
@ -120,12 +120,12 @@ public class CrawlSalesAmountService extends ServiceImpl<CrawlSalesAmountMapper,
}
public void pullData(String currDay) {
String zhjDate = currDay.replace("-","");
String zhjDate = currDay.replace("-", "");
List<RespSalesAmount> respSalesAmounts = ZhjSpider.crawlSalesAmount(zhjDate);
List<CrawlSalesAmount> entityList = new ArrayList<>();
for (RespSalesAmount rsa:respSalesAmounts){
for (RespSalesAmount rsa : respSalesAmounts) {
CrawlSalesAmount csa = new CrawlSalesAmount();
BeanUtil.copyProperties(rsa,csa);
BeanUtil.copyProperties(rsa, csa);
csa.setDataDate(currDay);
entityList.add(csa);
}
@ -133,23 +133,23 @@ public class CrawlSalesAmountService extends ServiceImpl<CrawlSalesAmountMapper,
super.saveBatch(entityList);
}
public ResultBean handCrawl(Map<String,Object> param){
public ResultBean handCrawl(Map<String, Object> param) {
ResultBean rb = ResultBean.fireFail();
String time = (String)param.get("time");
String time = (String) param.get("time");
Date date = new Date();
SimpleDateFormat d = new SimpleDateFormat("yyyy-MM-dd");
if (time.equals(d.format(date))){
if (time.equals(d.format(date))) {
return rb.setMsg("只能抓取今天之前的数据");
}
if (param.get("data") != null){
Map<String, Object> data = (Map<String, Object>)param.get("data");
if (data.get("salesAmount").toString() != null && !data.get("salesAmount").toString().equals("")){
if (param.get("data") != null) {
Map<String, Object> data = (Map<String, Object>) param.get("data");
if (data.get("salesAmount") != null && "true".equals(data.get("salesAmount").toString())) {
pullData(time);
}
if (data.get("purchase").toString() != null && !data.get("purchase").toString().equals("")){
if (data.get("purchase") != null && "true".equals(data.get("purchase").toString())) {
crawlPurchaseService.pullData(time);
}
if (data.get("salesDishes").toString() != null && !data.get("salesDishes").toString().equals("")){
if (data.get("salesDishes") != null && "true".equals(data.get("salesDishes").toString())) {
crawlSalesDishesService.pullData(time);
}
return rb.success().setMsg("抓取成功");

4
yxt-supervise-dbcenter/yxt-supervise-dbcenter-biz/src/test/java/com/yxt/supervise/dbcenter/YxtSuperviseDbcenterApplicationTests.java

@ -24,11 +24,11 @@ class YxtSuperviseDbcenterApplicationTests {
@Test
void contextLoads() {
String currDay = "2023-07-20";
String currDay = "2023-08-08";
// crawlSalesAmountService.pullData(currDay);
// crawlSalesDishesService.pullData(currDay);
crawlPurchaseService.pullData(currDay);
// crawlPurchaseService.pullData(currDay);
}

2
yxt-supervise-dbcenter/yxt-supervise-dbcenter-ui/.env.development

@ -5,5 +5,5 @@ ENV = 'development'
VUE_APP_BASE_API = '/api'
## 配置测试和本地开发时的 接口地址
VUE_APP_URL = "http://192.168.1.177:7109"
VUE_APP_URL = "http://127.0.0.1:7109"
##VUE_APP_URL = "http://8.130.39.13:8112"

746
yxt-supervise-dbcenter/yxt-supervise-dbcenter-ui/src/views/inquireStatistics/index.vue

@ -1,476 +1,348 @@
<template>
<div class="app-container">
<div class="search">
<el-form ref="queryParams" :inline="true" :model="queryParams" class="tab-header">
<span style="font-size: 16px;font-weight: 500">品牌</span>
<el-select
v-model="queryParams.params.brandName"
placeholder="请选择品牌"
style="width: 120px;margin-left: 10px;"
@change="change($event)"
>
<el-option
v-for="(item, i) in ListName"
:key="i"
:label="item.name"
:value="item.name"
/>
</el-select>
<span style="font-size: 16px;font-weight: 500;margin-left: 10px;">门店</span>
<el-select
v-model="queryParams.params.storeName"
placeholder="请选择门店"
style="width: 120px;margin-left: 10px;"
:disabled="chooseStore"
>
<el-option
v-for="(item, i) in apparatusListName"
:key="i"
:label="item.name"
:value="item.name"
/>
</el-select>
<el-form-item label="到货日期" style="margin-left: 10px;margin-top: 3px;">
<el-date-picker
v-model="queryParams.params.fromTime"
type="date"
clearable
:picker-options="pickerOptions"
value-format="yyyy-MM-dd"
placeholder="选择日期"
/>
<span style="padding: 0 8px"></span>
<el-date-picker
v-model="queryParams.params.endTime"
type="date"
clearable
:picker-options="pickerOptions"
value-format="yyyy-MM-dd"
placeholder="选择日期"
/>
</el-form-item>
<el-button
type="primary"
size="small"
icon="el-icon-search"
@click="dosearch"
>查询</el-button
>
<el-button
type="primary"
size="small"
icon="el-icon-refresh"
@click="resetSearch"
>重置</el-button
>
<el-button
type="primary"
size="small"
icon="el-icon-refresh"
style="margin-left: 108px;"
@click="captruedatas()"
>手动抓取</el-button
>
</el-form>
</div>
<div class="listconadd" style="padding: 20px;">
<el-table v-loading="tableLoading" :default-sort = "{prop: 'date', order: 'descending'}" :data="tableData" border style="width: 100%" >
<el-table-column label="序号" width="55px" :index="indexMethod" type="index" align="center"></el-table-column>
<el-table-column prop="enpName" label="厂家" width="100px" align="center">
</el-table-column>
<el-table-column prop="name" label="品牌" align="center" width="100px">
</el-table-column>
<el-table-column prop="storeName" label="门店" align="center" >
</el-table-column>
<el-table-column prop="dataDate" label="日期" sortable align="center" width="150px">
</el-table-column>
<el-table-column prop="salesAmount" label="销售额" align="center" width="100px">
</el-table-column>
<el-table-column prop="proportion" label="成本信息" align="center" :formatter="to2" >
<template slot-scope="scope">
<div slot="reference" class="name-wrapper" v-for="(item,index) in scope.row.proportion" :key="index">
<div slot="reference" v-for="(item,index) in item" :key="index" >
<div class="search">
<el-form ref="queryParams" :inline="true" :model="queryParams" class="tab-header">
<span style="font-size: 16px;font-weight: 500">品牌</span>
<el-select v-model="queryParams.params.brandName" placeholder="请选择品牌" style="width: 120px;margin-left: 10px;" @change="change($event)">
<el-option v-for="(item, i) in ListName" :key="i" :label="item.name" :value="item.name" />
</el-select>
<span style="font-size: 16px;font-weight: 500;margin-left: 10px;">门店</span>
<el-select v-model="queryParams.params.storeName" placeholder="请选择门店" style="width: 120px;margin-left: 10px;" :disabled="chooseStore">
<el-option v-for="(item, i) in apparatusListName" :key="i" :label="item.name" :value="item.name" />
</el-select>
<el-form-item label="到货日期" style="margin-left: 10px;margin-top: 3px;">
<el-date-picker v-model="queryParams.params.fromTime" type="date" clearable :picker-options="pickerOptions" value-format="yyyy-MM-dd" placeholder="选择日期" />
<span style="padding: 0 8px"></span>
<el-date-picker v-model="queryParams.params.endTime" type="date" clearable :picker-options="pickerOptions" value-format="yyyy-MM-dd" placeholder="选择日期" />
</el-form-item>
<el-button type="primary" size="small" icon="el-icon-search" @click="dosearch">查询</el-button>
<el-button type="primary" size="small" icon="el-icon-refresh" @click="resetSearch">重置</el-button>
<el-button type="primary" size="small" icon="el-icon-refresh" style="margin-left: 108px;" @click="captruedatas()">手动抓取</el-button>
</el-form>
</div>
<div class="listconadd" style="padding: 20px;">
<el-table v-loading="tableLoading" :default-sort="{prop: 'date', order: 'descending'}" :data="tableData" border style="width: 100%">
<el-table-column label="序号" width="55px" :index="indexMethod" type="index" align="center" />
<el-table-column prop="enpName" label="厂家" width="100px" align="center" />
<el-table-column prop="name" label="品牌" align="center" width="100px" />
<el-table-column prop="storeName" label="门店" align="center" />
<el-table-column prop="dataDate" label="日期" sortable align="center" width="150px" />
<el-table-column prop="salesAmount" label="销售额" align="center" width="100px" />
<el-table-column prop="proportion" label="成本信息" align="center" :formatter="to2">
<template slot-scope="scope">
<div v-for="(item,index) in scope.row.proportion" slot="reference" :key="index" class="name-wrapper">
<div v-for="(item,index) in item" slot="reference" :key="index">
{{ item }}
</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="totalCount" label="合计成本金额" align="center" width="100px" :formatter="to2" >
</el-table-column>
<el-table-column label="明细信息" align="center" width="170px">
<template slot-scope="scope">
<el-button
type="primary"
size="mini"
@click="purchase(scope.row)"
>
采购
</el-button>
<el-button type="primary" size="mini" @click="market(scope.row)">
销售
</el-button>
</template>
</el-table-column>
</el-table>
<div class="pages">
<div class="tit" />
<!-- 翻页 -->
<pagination
:total="queryParams.total"
:page.sync="queryParams.current"
:limit.sync="queryParams.size"
@pagination="getPageList"
/>
</div>
<!-- 销售详细信息 -->
<el-dialog
:title="dialogTitle + '详细信息'"
:visible.sync="editDialog"
width="70%"
>
<el-table ref="datalist" @mouseover.native="mouseEnter()" @mouseout.native="mouseLeave()" :data="tableXiaoshou" height="420" border style="width: 100%">
<el-table-column
property="dataDate"
label="数据日期"
width="100px"
align="center"
></el-table-column>
<el-table-column
property="storeName"
label="门店名称"
align="center"
></el-table-column>
<el-table-column
property="dishesName"
label="菜品名称"
align="center"
></el-table-column>
<el-table-column
property="salesCount"
label="数量"
width="100px"
align="center"
></el-table-column>
<el-table-column
property="unit"
label="规格单位"
width="100px"
align="center"
></el-table-column>
<el-table-column
property="salesPrice"
label="单价(元)"
width="100px"
align="center"
></el-table-column>
</el-table-column>
<el-table-column prop="totalCount" label="合计成本金额" align="center" width="100px" :formatter="to2" />
<el-table-column label="明细信息" align="center" width="170px">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="purchase(scope.row)">
采购
</el-button>
<el-button type="primary" size="mini" @click="market(scope.row)">
销售
</el-button>
</template>
</el-table-column>
</el-table>
</el-dialog>
<div class="pages">
<div class="tit" />
<!-- 翻页 -->
<pagination :total="queryParams.total" :page.sync="queryParams.current" :limit.sync="queryParams.size" @pagination="getPageList" />
</div>
<!-- 销售详细信息 -->
<el-dialog :title="dialogTitle + '详细信息'" :visible.sync="editDialog" width="70%">
<el-table ref="datalist" :data="tableXiaoshou" height="420" border style="width: 100%" @mouseover.native="mouseEnter()" @mouseout.native="mouseLeave()">
<el-table-column property="dataDate" label="数据日期" width="100px" align="center" />
<el-table-column property="storeName" label="门店名称" align="center" />
<el-table-column property="dishesName" label="菜品名称" align="center" />
<el-table-column property="salesCount" label="数量" width="100px" align="center" />
<el-table-column property="unit" label="规格单位" width="100px" align="center" />
<el-table-column property="salesPrice" label="单价(元)" width="100px" align="center" />
</el-table>
</el-dialog>
</div>
<!-- 采购详细信息 -->
<el-dialog
:title="dialogTitle + '详细信息'"
:visible.sync="entry"
width="70%"
>
<el-table ref="datalist" @mouseover.native="mouseEnter()" @mouseout.native="mouseLeave()" :data="tableCaigou" height="420" border style="width: 100%">
<el-table-column
property="dataDate"
width="100px"
label="数据日期"
align="center"
></el-table-column>
<el-table-column
property="storeName"
label="门店名称"
align="center"
></el-table-column>
<el-table-column
property="purchaseDate"
label="采购日期"
align="center"
width="100px"
></el-table-column>
<el-table-column
property="materialName"
label="物料名称"
align="center"
></el-table-column>
<el-dialog :title="dialogTitle + '详细信息'" :visible.sync="entry" width="70%">
<el-table ref="datalist" :data="tableCaigou" height="420" border style="width: 100%" @mouseover.native="mouseEnter()" @mouseout.native="mouseLeave()">
<el-table-column property="dataDate" width="100px" label="数据日期" align="center" />
<el-table-column property="storeName" label="门店名称" align="center" />
<el-table-column property="purchaseDate" label="采购日期" align="center" width="100px" />
<el-table-column property="materialName" label="物料名称" align="center" />
<!-- <el-table-column
property="unit"
label="规格单位"
></el-table-column> -->
<el-table-column
property="purchaseCount"
label="采购数量"
align="center"
width="100px"
></el-table-column>
<el-table-column
property="purchaseAmount"
label="采购金额(元)"
align="center"
width="100px"
></el-table-column>
<el-table-column
property="taxPrice"
width="100px"
align="center"
label="含税单价"
></el-table-column>
<el-table-column property="purchaseCount" label="采购数量" align="center" width="100px" />
<el-table-column property="purchaseAmount" label="采购金额(元)" align="center" width="100px" />
<el-table-column property="taxPrice" width="100px" align="center" label="含税单价" />
</el-table>
</el-dialog>
<!-- 手动抓取数据 -->
<el-dialog
:title="dialogTitle + '数据'"
:visible.sync="captrue"
width="40%">
<el-form :model="ruleForm" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="抓取时间" required>
<el-col :span="11">
<el-form-item >
<el-date-picker type="date" placeholder="选择日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions" v-model="ruleForm.time" style="width: 100%;"></el-date-picker>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="抓取内容" required>
<el-checkbox label="抓取实时金额" v-model="ruleForm.data.salesAmount"></el-checkbox>
<el-checkbox label="抓取采购信息" v-model="ruleForm.data.purchase"></el-checkbox>
<el-checkbox label="抓取菜品销量信息" v-model="ruleForm.data.salesDishes"></el-checkbox>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm()">立即抓取</el-button>
<el-button @click="resetForm()">重置</el-button>
</el-form-item>
</el-form>
<!-- 手动抓取数据 -->
<el-dialog :title="dialogTitle + '数据'" :visible.sync="captrue" width="40%">
<el-form ref="ruleForm" :model="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="抓取时间" required>
<el-col :span="11">
<el-form-item>
<el-date-picker v-model="ruleForm.time" type="date" placeholder="选择日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions" style="width: 100%;" />
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="抓取内容" required>
<el-checkbox v-model="ruleForm.data.salesAmount" label="抓取实时金额" />
<el-checkbox v-model="ruleForm.data.salesDishes" label="抓取菜品销量信息" />
<el-checkbox v-model="ruleForm.data.purchase" label="抓取采购信息" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm()">立即抓取</el-button>
<el-button @click="resetForm()">重置</el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
</div>
</template>
<script>
import {listPage,selectPurchaseList,selectSalesDishes,handCrawl,selectBrandList,selectStoreList} from '@/api/Zhj/inquireStatistics/index.js'
import Pagination from '@/components/pagination'
export default {
components: {
Pagination
},
data() {
return {
rollPx:1,
rolltime:50,
dialogTitle: "",
editDialog: false,
entry: false,
tableLoading: false,
captrue:false,
form: {},
rolltimmer:'',
chooseStore:true,
formBackup: Object.assign({}, this.form),
apparatusListName:{},
ListName:{},
tableData: [],
tableCaigou:[],
tableXiaoshou:[],
student: {},
captrueData:{},
ruleForm: {
<script>
import {
listPage,
selectPurchaseList,
selectSalesDishes,
handCrawl,
selectBrandList,
selectStoreList
} from '@/api/Zhj/inquireStatistics/index.js'
import Pagination from '@/components/pagination'
export default {
components: {
Pagination
},
data() {
return {
rollPx: 1,
rolltime: 50,
dialogTitle: '',
editDialog: false,
entry: false,
tableLoading: false,
captrue: false,
form: {},
rolltimmer: '',
chooseStore: true,
formBackup: Object.assign({}, this.form),
apparatusListName: {},
ListName: {},
tableData: [],
tableCaigou: [],
tableXiaoshou: [],
student: {},
captrueData: {},
ruleForm: {
time: '',
data:{
salesAmount:'',
purchase:'',
salesDishes:''
data: {
salesAmount: '',
purchase: '',
salesDishes: ''
}
},
queryParams: {
current: 1,
size: 10,
total: 0,
params: {
StoreName: "",
brandName: "",
fromTime: "",
endTime: "",
queryParams: {
current: 1,
size: 10,
total: 0,
params: {
StoreName: '',
brandName: '',
fromTime: '',
endTime: ''
}
},
},
pickerOptions:{
disabledDate(time){
return time.getTime()> Date.now()- 8.64e7;// -8.64e7
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now() - 8.64e7 // -8.64e7
}
}
}
};
},
mounted() {
selectBrandList().then((res)=>{
this.ListName = res.data
})
},
created() {
this.getPageList()
},
methods: {
resetSearch() {
//
this.queryParams = {
total: 0, //
current: 1, //
size: 10, //
params: {
StoreName: "",
brandName:'',
fromTime: "",
endTime: "",
},
};
this.chooseStore=true
this.getPageList();
},
to2(row,col,val){
return parseFloat(val).toFixed(2)
},
getPageList() {
this.tableLoading = true
const _this=this
listPage(this.queryParams).then((res) => {
this.tableLoading = false
if (res.success) {
this.queryParams.total = res.data.total
_this.tableData=res.data.records
console.log(res.data.records[0].proportion[0]);
} else {
// resp.code
_this.tableData = []
this.queryParams.total = 0
}
}).catch(() => {
this.tableLoading = false
mounted() {
selectBrandList().then((res) => {
this.ListName = res.data
})
},
//
indexMethod(index) {
created() {
this.getPageList()
},
methods: {
resetSearch() {
//
this.queryParams = {
total: 0, //
current: 1, //
size: 10, //
params: {
StoreName: '',
brandName: '',
fromTime: '',
endTime: ''
}
}
this.chooseStore = true
this.getPageList()
},
to2(row, col, val) {
return parseFloat(val).toFixed(2)
},
getPageList() {
this.tableLoading = true
const _this = this
listPage(this.queryParams).then((res) => {
this.tableLoading = false
if (res.success) {
this.queryParams.total = res.data.total
_this.tableData = res.data.records
console.log(res.data.records[0].proportion[0])
} else {
// resp.code
_this.tableData = []
this.queryParams.total = 0
}
}).catch(() => {
this.tableLoading = false
})
},
//
indexMethod(index) {
var pagestart = (this.queryParams.current - 1) * this.queryParams.size
var pageindex = index + 1 + pagestart
return pageindex
},
// uniqueName(arr) {
// const res = new Map();
// return arr.filter((arr) => !res.has(arr.storeName) && res.set(arr.storeName, 1));
// },
// uniqueName1(arr) {
// const res = new Map();
// return arr.filter((arr) => !res.has(arr.name) && res.set(arr.name, 1));
// },
reset() {
this.form = {};
},
//
change(e){
if(e){
this.chooseStore=false
selectStoreList({ brandName: e}).then((res)=>{
this.apparatusListName=res.data
})
}
},
store(){
console.log(777777777);
},
purchase(row) {
this.dialogTitle = "采购";
this.entry = true;
selectPurchaseList(row).then((res)=>{
this.tableCaigou=res.data
})
},
market(row) {
this.dialogTitle = "销售";
this.editDialog = true;
selectSalesDishes(row).then((res)=>{
this.tableXiaoshou=res.data
})
},
//
dosearch() {
this.getPageList();
},
autoRoll(stop){
if(stop){
clearInterval(this.rolltimmer);
return;
}
const table=this.$refs.datalist;
const divData=table.bodyWrapper;
this.rolltimmer=setInterval(()=>{
divData.scrollTop+=this.rollPx;
if(divData.clientHeight+divData.scrollTop>=divData.scrollHeight){
divData.scrollTop=0;
}
},this.rolltime);
},
//
mouseEnter(time){
this.autoRoll(true);
},
//
mouseLeave(){
this.autoRoll();
},
//
captruedatas(){
this.dialogTitle = "抓取";
this.captrue=true
},
submitForm() {
if(this.ruleForm.time===''){
this.$message({
showClose: true,
message: '请选择时间',
type: 'warning'
});
}else if(this.ruleForm.data.salesAmount || this.ruleForm.data.purchase || this.ruleForm.data.salesDishes){
this.captrue=false
handCrawl(this.ruleForm).then((res)=>{
if(res.code==200){
this.$message({
message: '抓取成功',
type: 'success'
});
this.resetForm()
this.getPageList();
}
// uniqueName(arr) {
// const res = new Map();
// return arr.filter((arr) => !res.has(arr.storeName) && res.set(arr.storeName, 1));
// },
// uniqueName1(arr) {
// const res = new Map();
// return arr.filter((arr) => !res.has(arr.name) && res.set(arr.name, 1));
// },
reset() {
this.form = {}
},
//
change(e) {
if (e) {
this.chooseStore = false
selectStoreList({
brandName: e
}).then((res) => {
this.apparatusListName = res.data
})
}
},
store() {
console.log(777777777)
},
purchase(row) {
this.dialogTitle = '采购'
this.entry = true
selectPurchaseList(row).then((res) => {
this.tableCaigou = res.data
})
}else{
this.$message({
showClose: true,
message: '请至少选择一条数据',
type: 'warning'
});
}
},
resetForm() {
this.ruleForm= {
},
market(row) {
this.dialogTitle = '销售'
this.editDialog = true
selectSalesDishes(row).then((res) => {
this.tableXiaoshou = res.data
})
},
//
dosearch() {
this.getPageList()
},
autoRoll(stop) {
if (stop) {
clearInterval(this.rolltimmer)
return
}
const table = this.$refs.datalist
const divData = table.bodyWrapper
this.rolltimmer = setInterval(() => {
divData.scrollTop += this.rollPx
if (divData.clientHeight + divData.scrollTop >= divData.scrollHeight) {
divData.scrollTop = 0
}
}, this.rolltime)
},
//
mouseEnter(time) {
this.autoRoll(true)
},
//
mouseLeave() {
this.autoRoll()
},
//
captruedatas() {
this.dialogTitle = '抓取'
this.captrue = true
},
submitForm() {
if (this.ruleForm.time === '') {
this.$message({
showClose: true,
message: '请选择时间',
type: 'warning'
})
} else if (this.ruleForm.data.salesAmount || this.ruleForm.data.purchase || this.ruleForm.data.salesDishes) {
console.log('KKKKK ', this.ruleForm)
handCrawl(this.ruleForm).then((res) => {
console.log('handCrawl--res', res)
if (res.success) {
this.$message({
message: '抓取成功',
type: 'success'
})
this.captrue = false
this.resetForm()
this.getPageList()
}
}).catch(e => {
console.log('handCrawl--eee', e)
})
} else {
this.$message({
showClose: true,
message: '请至少选择一条数据',
type: 'warning'
})
}
},
resetForm() {
this.ruleForm = {
time: '',
data:{
salesAmount:'',
purchase:'',
salesDishes:''
data: {
salesAmount: '',
purchase: '',
salesDishes: ''
}
}
}
}
},
};
}
</script>
<style scoped="scoped" >
/deep/ .el-dialog__title{
<style scoped="scoped">
/deep/ .el-dialog__title {
color: #000;
font-size: 24px;
}
.my-tabs {
margin-top: 10px;
}
</style>
.my-tabs {
margin-top: 10px;
}
</style>

Loading…
Cancel
Save