diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ed8368a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,47 @@
+######################################################################
+# Build Tools
+
+.gradle
+/build/
+!gradle/wrapper/gradle-wrapper.jar
+
+target/
+!.mvn/wrapper/maven-wrapper.jar
+
+######################################################################
+# IDE
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### JRebel ###
+rebel.xml
+
+### NetBeans ###
+nbproject/private/
+build/*
+nbbuild/
+dist/
+nbdist/
+.nb-gradle/
+
+######################################################################
+# Others
+*.log
+*.xml.versionsBackup
+*.swp
+
+!*/build/*.java
+!*/build/*.html
+!*/build/*.xml
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..7b016a8
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "java.compile.nullAnalysis.mode": "automatic"
+}
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..8564f29
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2018 RuoYi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/bin/clean.bat b/bin/clean.bat
new file mode 100644
index 0000000..24c0974
--- /dev/null
+++ b/bin/clean.bat
@@ -0,0 +1,12 @@
+@echo off
+echo.
+echo [信息] 清理工程target生成路径。
+echo.
+
+%~d0
+cd %~dp0
+
+cd ..
+call mvn clean
+
+pause
\ No newline at end of file
diff --git a/bin/package.bat b/bin/package.bat
new file mode 100644
index 0000000..c693ec0
--- /dev/null
+++ b/bin/package.bat
@@ -0,0 +1,12 @@
+@echo off
+echo.
+echo [信息] 打包Web工程,生成war/jar包文件。
+echo.
+
+%~d0
+cd %~dp0
+
+cd ..
+call mvn clean package -Dmaven.test.skip=true
+
+pause
\ No newline at end of file
diff --git a/bin/run.bat b/bin/run.bat
new file mode 100644
index 0000000..41efbd0
--- /dev/null
+++ b/bin/run.bat
@@ -0,0 +1,14 @@
+@echo off
+echo.
+echo [信息] 使用Jar命令运行Web工程。
+echo.
+
+cd %~dp0
+cd ../ruoyi-admin/target
+
+set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
+
+java -jar %JAVA_OPTS% ruoyi-admin.jar
+
+cd bin
+pause
\ No newline at end of file
diff --git a/carbon-admin/pom.xml b/carbon-admin/pom.xml
new file mode 100644
index 0000000..93a3a44
--- /dev/null
+++ b/carbon-admin/pom.xml
@@ -0,0 +1,96 @@
+
+
+
+ com.zhonghui
+ carbon
+ 1.0.0
+
+ 4.0.0
+ jar
+ carbon-admin
+
+
+ web鏈嶅姟鍏ュ彛
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ true
+
+
+
+
+ io.springfox
+ springfox-boot-starter
+
+
+
+
+ io.swagger
+ swagger-models
+ 1.6.2
+
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+
+ com.zhonghui
+ carbon-framework
+
+
+
+
+ com.zhonghui
+ carbon-quartz
+
+
+
+
+ com.zhonghui
+ carbon-generator
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.1.RELEASE
+
+ true
+
+
+
+
+ repackage
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.1.0
+
+ false
+ ${project.artifactId}
+
+
+
+ carbon
+
+
+
\ No newline at end of file
diff --git a/carbon-admin/src/main/java/com/zhonghui/CarbonApplication.java b/carbon-admin/src/main/java/com/zhonghui/CarbonApplication.java
new file mode 100644
index 0000000..9edd066
--- /dev/null
+++ b/carbon-admin/src/main/java/com/zhonghui/CarbonApplication.java
@@ -0,0 +1,21 @@
+package com.zhonghui;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+
+/**
+ * 鍚姩绋嬪簭
+ *
+ * @author zhonghui
+ */
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
+public class CarbonApplication
+{
+ public static void main(String[] args)
+ {
+ // System.setProperty("spring.devtools.restart.enabled", "false");
+ SpringApplication.run(CarbonApplication.class, args);
+
+ }
+}
diff --git a/carbon-admin/src/main/java/com/zhonghui/CarbonServletInitializer.java b/carbon-admin/src/main/java/com/zhonghui/CarbonServletInitializer.java
new file mode 100644
index 0000000..2b1b294
--- /dev/null
+++ b/carbon-admin/src/main/java/com/zhonghui/CarbonServletInitializer.java
@@ -0,0 +1,18 @@
+package com.zhonghui;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+/**
+ * web瀹瑰櫒涓繘琛岄儴缃
+ *
+ * @author zhonghui
+ */
+public class CarbonServletInitializer extends SpringBootServletInitializer
+{
+ @Override
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
+ {
+ return application.sources(CarbonApplication.class);
+ }
+}
diff --git a/carbon-admin/src/main/java/com/zhonghui/carbonReport/controller/BaseReportController.java b/carbon-admin/src/main/java/com/zhonghui/carbonReport/controller/BaseReportController.java
new file mode 100644
index 0000000..d067a76
--- /dev/null
+++ b/carbon-admin/src/main/java/com/zhonghui/carbonReport/controller/BaseReportController.java
@@ -0,0 +1,325 @@
+package com.zhonghui.carbonReport.controller;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.RandomUtil;
+import com.zhonghui.carbonReport.domain.TmpEnergyConsume;
+import com.zhonghui.carbonReport.service.ITmpEnergyConsumeService;
+import com.zhonghui.common.core.controller.BaseController;
+import com.zhonghui.common.utils.DateUtils;
+import com.zhonghui.dc.service.IDcChangedCarbonEmissionsService;
+import com.zhonghui.dc.service.IDcFixedCarbonEmissionsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.RoundingMode;
+import java.util.Date;
+import java.util.List;
+
+@RestController
+public class BaseReportController extends BaseController {
+
+ @Autowired
+ private ITmpEnergyConsumeService tmpEnergyConsumeService;
+
+ @Autowired
+ private IDcChangedCarbonEmissionsService dcChangedCarbonEmissionsService;
+
+ @Autowired
+ private IDcFixedCarbonEmissionsService dcFixedCarbonEmissionsService;
+
+ /**
+ * 妯℃嫙鐢熶骇鐢ㄦ按骞存暟鎹
+ *
+ * @param year
+ */
+ protected double mockPrdWaterConsumeByYear(String year) {
+ double total = 0;
+ for (int i = 1; i < 13; i++) {
+ String month = i < 10 ? ("0" + i) : (i + "");
+ double consume = mockPrdWaterConsumeByMonth(year + "-" + month);
+ total = total + consume;
+ // 鍙粺璁″埌鏈勾鏈堟暟鎹
+ if (Integer.parseInt(year) == DateUtil.year(new Date()) && i == DateUtil.month(new Date())) {
+ break;
+ }
+ }
+ return total;
+ }
+
+ /**
+ * 妯℃嫙鍔炲叕鐢ㄦ按骞存暟鎹
+ *
+ * @param year
+ */
+ protected double mockOfficeWaterConsumeByYear(String year) {
+ double total = 0;
+ for (int i = 1; i < 13; i++) {
+ String month = i < 10 ? ("0" + i) : (i + "");
+ double consume = mockOfficeWaterConsumeByMonth(year + "-" + month);
+ total = total + consume;
+ // 鍙粺璁″埌鏈勾鏈堟暟鎹
+ if (Integer.parseInt(year) == DateUtil.year(new Date()) && i == DateUtil.month(new Date())) {
+ break;
+ }
+ }
+ return total;
+ }
+
+ /**
+ * 妯℃嫙鍔炲叕鐢ㄧ數骞存暟鎹
+ *
+ * @param year
+ */
+ protected double mockOfficePowerConsumeByYear(String year) {
+ double total = 0;
+ for (int i = 1; i < 13; i++) {
+ String month = i < 10 ? ("0" + i) : (i + "");
+ double consume = mockOfficePowerConsumeByMonth(year + "-" + month);
+ total = total + consume;
+ // 鍙粺璁″埌鏈勾鏈堟暟鎹
+ if (Integer.parseInt(year) == DateUtil.year(new Date()) && i == DateUtil.month(new Date())) {
+ break;
+ }
+ }
+ return total;
+ }
+
+ /**
+ * 妯℃嫙鐢熶骇鐢ㄦ按鏈堟暟鎹
+ *
+ * @param yearMonth
+ */
+ protected double mockPrdWaterConsumeByMonth(String yearMonth) {
+ double total = 0;
+ String fullDate = yearMonth + "-01";
+ TmpEnergyConsume tmpConsume = new TmpEnergyConsume();
+ tmpConsume.setMonth(yearMonth);
+ tmpConsume.setCategory(2);
+ tmpConsume.setType(0);
+ tmpConsume.setItemCategory(3);
+ List prdPwConsumeList = tmpEnergyConsumeService.selectTmpEnergyConsumeList(tmpConsume);
+ if (prdPwConsumeList != null && !prdPwConsumeList.isEmpty()) {
+ TmpEnergyConsume monthSavePw = prdPwConsumeList.get(0);
+ total = monthSavePw.getEnergy();
+ } else {
+ Date first = DateUtil.beginOfMonth(DateUtils.parseDate(fullDate));
+ int year = DateUtil.year(first);
+ double ratio = RandomUtil.randomDouble(0.5, 1, 1, RoundingMode.FLOOR);
+ double consumePw = dcFixedCarbonEmissionsService.getProductWaterConsumeByMonth();
+ total = consumePw * ratio;
+ // 鏂板涓鏉′复鏃剁敓浜х敤姘撮噺鏁版嵁
+ TmpEnergyConsume newTmpConsume = new TmpEnergyConsume();
+ newTmpConsume.setYear(String.valueOf(year));
+ newTmpConsume.setMonth(yearMonth);
+ newTmpConsume.setCategory(2);
+ newTmpConsume.setType(0);
+ newTmpConsume.setItemCategory(3);
+ newTmpConsume.setEnergy(total);
+ tmpEnergyConsumeService.insertTmpEnergyConsume(newTmpConsume);
+ }
+ return total;
+ }
+
+ /**
+ * 妯℃嫙鍔炲叕鐢ㄦ按鏈堟暟鎹
+ *
+ * @param yearMonth
+ */
+ protected double mockOfficeWaterConsumeByMonth(String yearMonth) {
+ double total = 0;
+ String fullDate = yearMonth + "-01";
+ TmpEnergyConsume tmpConsume = new TmpEnergyConsume();
+ tmpConsume.setMonth(yearMonth);
+ tmpConsume.setCategory(2);
+ tmpConsume.setType(0);
+ tmpConsume.setItemCategory(4);
+ List prdPwSaveList = tmpEnergyConsumeService.selectTmpEnergyConsumeList(tmpConsume);
+ if (prdPwSaveList != null && !prdPwSaveList.isEmpty()) {
+ TmpEnergyConsume monthSavePw = prdPwSaveList.get(0);
+ total = monthSavePw.getEnergy();
+ } else {
+ Date first = DateUtil.beginOfMonth(DateUtils.parseDate(fullDate));
+ int year = DateUtil.year(first);
+ double ratio = RandomUtil.randomDouble(0.5, 1, 1, RoundingMode.FLOOR);
+ double consumePw = dcFixedCarbonEmissionsService.getOfficeWaterConsumeByMonth();
+ total = consumePw * ratio;
+ // 鏂板涓鏉′复鏃跺姙鍏敤姘撮噺鏁版嵁
+ TmpEnergyConsume newTmpConsume = new TmpEnergyConsume();
+ newTmpConsume.setYear(String.valueOf(year));
+ newTmpConsume.setMonth(yearMonth);
+ newTmpConsume.setCategory(2);
+ newTmpConsume.setType(0);
+ newTmpConsume.setItemCategory(4);
+ newTmpConsume.setEnergy(total);
+ tmpEnergyConsumeService.insertTmpEnergyConsume(newTmpConsume);
+ }
+ return total;
+ }
+
+ /**
+ * 妯℃嫙鍔炲叕鐢ㄧ數鏈堟暟鎹
+ *
+ * @param yearMonth
+ */
+ protected double mockOfficePowerConsumeByMonth(String yearMonth) {
+ double total = 0;
+ String fullDate = yearMonth + "-01";
+ TmpEnergyConsume tmpConsume = new TmpEnergyConsume();
+ tmpConsume.setMonth(yearMonth);
+ tmpConsume.setCategory(1);
+ tmpConsume.setType(0);
+ tmpConsume.setItemCategory(2);
+ List prdPwSaveList = tmpEnergyConsumeService.selectTmpEnergyConsumeList(tmpConsume);
+ if (prdPwSaveList != null && !prdPwSaveList.isEmpty()) {
+ TmpEnergyConsume monthSavePw = prdPwSaveList.get(0);
+ total = monthSavePw.getEnergy();
+ } else {
+ Date first = DateUtil.beginOfMonth(DateUtils.parseDate(fullDate));
+ int year = DateUtil.year(first);
+ double ratio = RandomUtil.randomDouble(0.5, 1, 1, RoundingMode.FLOOR);
+ double consumePw = dcFixedCarbonEmissionsService.getOfficePowerConsumeByMonth();
+ total = consumePw * ratio;
+ // 鏂板涓鏉′复鏃跺姙鍏楃數閲忔暟鎹
+ TmpEnergyConsume newTmpConsume = new TmpEnergyConsume();
+ newTmpConsume.setYear(String.valueOf(year));
+ newTmpConsume.setMonth(yearMonth);
+ newTmpConsume.setCategory(1);
+ newTmpConsume.setType(0);
+ newTmpConsume.setItemCategory(2);
+ newTmpConsume.setEnergy(total);
+ tmpEnergyConsumeService.insertTmpEnergyConsume(newTmpConsume);
+ }
+ return total;
+ }
+
+ /**
+ * 妯℃嫙鐢熶骇鑺傜數鏈堟暟鎹
+ *
+ * @param yearMonth
+ */
+ protected double mockPrdPowerSaveByMonth(String yearMonth) {
+ double total = 0;
+ String fullDate = yearMonth + "-01";
+ TmpEnergyConsume tmpConsume = new TmpEnergyConsume();
+ tmpConsume.setMonth(yearMonth);
+ tmpConsume.setCategory(1);
+ tmpConsume.setType(1);
+ tmpConsume.setItemCategory(3);
+ List prdPwSaveList = tmpEnergyConsumeService.selectTmpEnergyConsumeList(tmpConsume);
+ if (prdPwSaveList != null && !prdPwSaveList.isEmpty()) {
+ TmpEnergyConsume monthSavePw = prdPwSaveList.get(0);
+ total = monthSavePw.getEnergy();
+ } else {
+ Date first = DateUtil.beginOfMonth(DateUtils.parseDate(fullDate));
+ Date last = DateUtil.endOfMonth(DateUtils.parseDate(fullDate));
+ int year = DateUtil.year(first);
+ long days = DateUtil.betweenDay(first, last, true) + 1;
+ double ratio = RandomUtil.randomDouble(0.5, 1, 1, RoundingMode.FLOOR);
+ double savePw = dcChangedCarbonEmissionsService.getProductPowerSaveAmount((int) days);
+ total = savePw * ratio;
+ // 鏂板涓鏉′复鏃剁敓浜ц妭鐢甸噺鏁版嵁
+ TmpEnergyConsume newTmpConsume = new TmpEnergyConsume();
+ newTmpConsume.setYear(String.valueOf(year));
+ newTmpConsume.setMonth(yearMonth);
+ newTmpConsume.setCategory(1);
+ newTmpConsume.setType(1);
+ newTmpConsume.setItemCategory(3);
+ newTmpConsume.setEnergy(total);
+ tmpEnergyConsumeService.insertTmpEnergyConsume(newTmpConsume);
+ }
+ return total;
+ }
+
+ /**
+ * 妯℃嫙鍔炲叕鑺傜數鏈堟暟鎹
+ *
+ * @param yearMonth
+ */
+ protected double mockOfficePowerSaveByMonth(String yearMonth) {
+ double total = 0;
+ String fullDate = yearMonth + "-01";
+ TmpEnergyConsume tmpConsume = new TmpEnergyConsume();
+ tmpConsume.setMonth(yearMonth);
+ tmpConsume.setCategory(1);
+ tmpConsume.setType(1);
+ tmpConsume.setItemCategory(4);
+ List officePwSaveList = tmpEnergyConsumeService.selectTmpEnergyConsumeList(tmpConsume);
+ if (officePwSaveList != null && !officePwSaveList.isEmpty()) {
+ TmpEnergyConsume monthSavePw = officePwSaveList.get(0);
+ total = monthSavePw.getEnergy();
+ } else {
+ Date first = DateUtil.beginOfMonth(DateUtils.parseDate(fullDate));
+ Date last = DateUtil.endOfMonth(DateUtils.parseDate(fullDate));
+ int year = DateUtil.year(first);
+ long days = DateUtil.betweenDay(first, last, true) + 1;
+ double savePw = dcChangedCarbonEmissionsService.getOfficePowerSaveAmount((int) days);
+ double ratio = RandomUtil.randomDouble(0.5, 1, 1, RoundingMode.FLOOR);
+ total = savePw * ratio;
+ // 鏂板涓鏉′复鏃跺姙鍏妭鐢甸噺鏁版嵁
+ TmpEnergyConsume newTmpConsume = new TmpEnergyConsume();
+ newTmpConsume.setYear(String.valueOf(year));
+ newTmpConsume.setMonth(yearMonth);
+ newTmpConsume.setCategory(1);
+ newTmpConsume.setType(1);
+ newTmpConsume.setItemCategory(4);
+ newTmpConsume.setEnergy(total);
+ tmpEnergyConsumeService.insertTmpEnergyConsume(newTmpConsume);
+ }
+ return total;
+ }
+
+ protected double mockOfficePowerSaveByYear(String year) {
+ double total = 0;
+ for (int i = 1; i < 13; i++) {
+ String month = i < 10 ? ("0" + i) : (i + "");
+ double consume = mockOfficePowerSaveByMonth(year + "-" + month);
+ total = total + consume;
+ // 鍙粺璁″埌鏈勾鏈堟暟鎹
+ if (Integer.parseInt(year) == DateUtil.year(new Date()) && i == DateUtil.month(new Date())) {
+ break;
+ }
+ }
+ return total;
+ }
+
+ protected double mockPrdPowerSaveByYear(String year) {
+ double total = 0;
+ for (int i = 1; i < 13; i++) {
+ String month = i < 10 ? ("0" + i) : (i + "");
+ double consume = mockPrdPowerSaveByMonth(year + "-" + month);
+ total = total + consume;
+ // 鍙粺璁″埌鏈勾鏈堟暟鎹
+ if (Integer.parseInt(year) == DateUtil.year(new Date()) && i == DateUtil.month(new Date())) {
+ break;
+ }
+ }
+ return total;
+ }
+
+ protected double mockDaysEmission(int days, double monthEmission, Integer itemCategory) {
+ double mockConsume = 0;
+ TmpEnergyConsume tmpConsume = new TmpEnergyConsume();
+ tmpConsume.setDay(DateUtil.today());
+ tmpConsume.setCategory(1);
+ tmpConsume.setType(0);
+ tmpConsume.setItemCategory(itemCategory);
+ List emissionList = tmpEnergyConsumeService.selectTmpEnergyConsumeList(tmpConsume);
+ if (emissionList != null && !emissionList.isEmpty()) {
+ TmpEnergyConsume emission = emissionList.get(0);
+ mockConsume = emission.getEnergy();
+ } else {
+ double ratio = RandomUtil.randomDouble(0.5, 1, 2, RoundingMode.FLOOR);
+ mockConsume = NumberUtil.round((monthEmission / days) * ratio, 2).doubleValue();
+ // 鏂板涓鏉′复鏃剁⒊鎺掓斁鏁版嵁
+ TmpEnergyConsume newTmpConsume = new TmpEnergyConsume();
+ newTmpConsume.setDay(DateUtil.today());
+ newTmpConsume.setCategory(1);
+ newTmpConsume.setType(0);
+ newTmpConsume.setItemCategory(itemCategory);
+ newTmpConsume.setEnergy(mockConsume);
+ tmpEnergyConsumeService.insertTmpEnergyConsume(newTmpConsume);
+ }
+ return mockConsume;
+ }
+}
diff --git a/carbon-admin/src/main/java/com/zhonghui/carbonReport/controller/BigScreenReportController.java b/carbon-admin/src/main/java/com/zhonghui/carbonReport/controller/BigScreenReportController.java
new file mode 100644
index 0000000..91a01f7
--- /dev/null
+++ b/carbon-admin/src/main/java/com/zhonghui/carbonReport/controller/BigScreenReportController.java
@@ -0,0 +1,102 @@
+package com.zhonghui.carbonReport.controller;
+
+import com.zhonghui.carbonReport.service.IViewScmSaleContractService;
+import com.zhonghui.carbonReport.service.IViewScmSaleScheduleDetailsService;
+import com.zhonghui.common.core.controller.BaseController;
+import com.zhonghui.common.utils.DateUtils;
+import com.zhonghui.response.BaseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+
+@Api(tags = {"鏁版嵁鍙鍖栧浘琛ㄥ睍绀"})
+@RestController
+@RequestMapping("/carbonReport")
+public class BigScreenReportController extends BaseController {
+
+ @Autowired
+ private IViewScmSaleContractService viewScmSaleContractService;
+
+ @Autowired
+ private IViewScmSaleScheduleDetailsService viewScmSaleScheduleDetailsService;
+
+ @GetMapping("/saleOverall")
+ @ApiOperation("閿鍞昏锛氭湰骞淬佹湰鏈堛佹湰鏃ラ攢鍞")
+ public BaseResult