diff --git a/ruoyi-ui/src/api/dashboard/changemouldtime.js b/ruoyi-ui/src/api/dashboard/changemouldtime.js
index 5aba2797e..ee960a27e 100644
--- a/ruoyi-ui/src/api/dashboard/changemouldtime.js
+++ b/ruoyi-ui/src/api/dashboard/changemouldtime.js
@@ -9,14 +9,17 @@ export function getChangeMouldTimeList() {
 }
 
 
-
-export function getDateRangeChangeMouldTime(fDateStart,fDateEnd) {
-
-
+export function getDateRangeChangeMouldTime(fDateStart, fDateEnd) {
   return request({
-    url: '/fx_changemouldtime/rangetimeavg/'+fDateStart+'/'+fDateEnd,
+    url: '/fx_changemouldtime/rangetimeavg/' + fDateStart + '/' + fDateEnd,
     method: 'get'
   })
 }
 
 
+export function DoGetChangeMouldTimeListDateRange(fDateStart, fDateEnd) {
+  return request({
+    url: '/fx_changemouldtime/DoGetChangeMouldTimeListDateRange/' + fDateStart + '/' + fDateEnd,
+    method: 'get'
+  })
+}
diff --git a/ruoyi-ui/src/views/fx_dashboard/dashboard_daterange.vue b/ruoyi-ui/src/views/fx_dashboard/dashboard_daterange.vue
index 4e060a341..6f8a63b2d 100644
--- a/ruoyi-ui/src/views/fx_dashboard/dashboard_daterange.vue
+++ b/ruoyi-ui/src/views/fx_dashboard/dashboard_daterange.vue
@@ -41,7 +41,7 @@
           </el-option>
         </el-select>
         <el-button @click="getData" type="primary">查询</el-button>
-        <el-button @click="exportExcel" type="primary">导出</el-button>
+        <el-button @click="exportExcel" type="primary">导出明细</el-button>
 
 
       </el-col>
@@ -75,11 +75,72 @@
       </el-col>
     </el-row>
 
+    <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
+      <b>汇总统计</b>
+      <div class="ibox-content">
+        <el-col :xs="24" :sm="18" :lg="18">
+        <el-table
+          id="exportTableData"
+          :data="tableDataSum"
+          stripe
+          border
+          style="width: 100%">
+          <el-table-column
+            prop="开线数量"
+            label="开线数量"
+            width="100">
+          </el-table-column>
+          <el-table-column
+            prop="完成箱数"
+            label="完成箱数">
+          </el-table-column>
+          <el-table-column
+            prop="线均箱数"
+            label="线均箱数">
+          </el-table-column>
+          <el-table-column
+            prop="产能达标率"
+            label="产能达标率">
+          </el-table-column>
+          <el-table-column
+            prop="正品达标率"
+            label="正品率">
+          </el-table-column>
+          <el-table-column
+            prop="平均密度"
+            label="平均密度">
+          </el-table-column>
+
+        </el-table>
+        </el-col>
+        <el-col :xs="24" :sm="6" :lg="6">
+
+        <el-table
+          id="exportTableData3"
+          :data="tableDataSum2"
+          stripe
+          border
+          style="width: 100%">
+          <el-table-column
+            prop="换模次数"
+            label="换模次数">
+          </el-table-column>
+          <el-table-column
+            prop="平均换模时间"
+            label="平均换模时间">
+          </el-table-column>
+        </el-table>
+        </el-col>
+
+      </div>
+    </el-row>
+
+
     <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
       <b>产线明细</b>
       <div class="ibox-content">
         <el-table
-          id="exportTableData"
+          id="exportTableData2"
           :data="tableData"
           stripe
           border
@@ -111,7 +172,7 @@
           </el-table-column>
           <el-table-column
             prop="yieldrate"
-            label="正品达标率">
+            label="正品率">
           </el-table-column>
           <el-table-column
             prop="avg_density"
@@ -146,6 +207,9 @@
     data() {
       return {
         tableData: [],
+        tableDataSum: [],
+        tableDataSum2: [],
+
         options: [{
           value: '08:00:01',
           label: '08:00'
@@ -189,8 +253,8 @@
 
       this.daterange_group_value1 = "08:00:01"
       this.daterange_group_value2 = "08:00:01"
-      this.daterange_time1= '2020-07-01'
-      this.daterange_time2= '2020-07-01'
+      this.daterange_time1= '2020-07-16'
+      this.daterange_time2= '2020-07-16'
 
 
     },
@@ -207,8 +271,12 @@
           actualData: []
         }
         this.tableData=[];
+        this.tableDataSum=[];
+        this.tableDataSum2=[];
 
-        getDateRange(fDateStart,fDateEnd).then(response => {
+
+
+          getDateRange(fDateStart,fDateEnd).then(response => {
 
           var j,k,l;
           var avg_zhengpin_avg = 0;
@@ -217,6 +285,7 @@
           var avg_chang_moulding_time = 0;
           var sum_quantity = 0;
           var sum_currentfinishedquantity = 0;
+          var line_sum = 0;
           j = 0;
           k = 0;
           l = 0;
@@ -231,7 +300,7 @@
 
             this.tableData.push({
               line: response.data[i].line,
-              Moulds: response.data[i].Moulds,
+              Moulds: response.data[i].Moulds+'-',
               sumbox: response.data[i].sumbox,
               avg_currentcapacity: (response.data[i].avg_currentcapacity * 1 * response.data[i].sum_box_meter / response.data[i].sum_device_meter).toFixed(2),
               avg_normalcapacity: (response.data[i].avg_normalcapacity * 1).toFixed(2),
@@ -242,6 +311,10 @@
 
             })
 
+
+
+
+
             if (data_ajax[i].lastchangemouldtime >= 10) {
               avg_chang_moulding_time = avg_chang_moulding_time + (data_ajax[i].lastchangemouldtime) * 1;
               j = j + 1;
@@ -287,6 +360,18 @@
           option_energy_avg.series[0].data[0].value = (avg_energy_avg / l * avg_zhengpin_avg / k * 100).toFixed(0);
           chart_energy_avg.setOption(option_energy_avg, true);
 
+            //汇总数据填充
+            this.tableDataSum.push({
+              平均密度:(avg_density / data_ajax.length).toFixed(3),
+              正品达标率: (avg_zhengpin_avg / k * 100).toFixed(0)+'%',
+              产能达标率: (avg_energy_avg / l * avg_zhengpin_avg / k * 100).toFixed(0)+'%',
+              线均箱数: (sum_currentfinishedquantity/(response.data.length)).toFixed(1),
+              完成箱数: sum_currentfinishedquantity.toFixed(1),
+              开线数量: (response.data.length),
+
+
+            })
+
         })
 
 
@@ -299,6 +384,16 @@
 
 
 
+
+          //总表数据填充
+          this.tableDataSum2.push({
+            平均换模时间: (response.data[0].avgchangemouldtime * 1),
+            换模次数:  (response.data[0].num * 1),
+          })
+
+
+
+
         })
 
 
@@ -307,7 +402,7 @@
       },
       exportExcel () {
         /* generate workbook object from table */
-        let wb = XLSX.utils.table_to_book(document.querySelector('#exportTableData'));
+        let wb = XLSX.utils.table_to_book(document.querySelector('#exportTableData2'));
         /* get binary string as output */
         let wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' });
         try {
diff --git a/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_48102.java b/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_48102.java
index 41b607cc4..8c4c78a0e 100644
--- a/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_48102.java
+++ b/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_48102.java
@@ -341,7 +341,6 @@ public class DB_Ajax_DashBoard_48102 {
 					"CAST (" +
 					" REPLACE( db1.line, '#', '' ) AS INT)";
 			Statement stmt = conn.createStatement();//
-			System.out.println(sql);
 			ResultSet rs = stmt.executeQuery(sql);
 			while (rs.next()) {
 				// 截面积(mm2)
diff --git a/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_ChangeMouldTime_48102.java b/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_ChangeMouldTime_48102.java
index b911b232a..9c4a8fff2 100644
--- a/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_ChangeMouldTime_48102.java
+++ b/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_ChangeMouldTime_48102.java
@@ -76,28 +76,78 @@ public class DB_Ajax_DashBoard_ChangeMouldTime_48102 {
 	}
 
 
-
-	public static List<HashMap<String,String>> DoGet_avg_changemouldtime_date_range(String fstarttime, String fendtime) {
+	public static List<HashMap<String,String>> DoGetChangeMouldTimeListDateRange(String fstarttime, String fendtime) {
 		List<HashMap<String,String>> hashMapList = new ArrayList<>();
 		try {
 			Connection conn = getSQLConnection();
-			String sql = "SELECT AVG\r\n" +
-					"	(\r\n" +
-					"	DATEDIFF( MINUTE, StartTime, EndTime )) AS avgchangemouldtime \r\n" +
-					"FROM\r\n" +
-					"	dbo.MouldingDisplayBoard \r\n" +
-					"WHERE\r\n" +
-					"\tChangeMould =  1 and \tDATEDIFF( minute,starttime, endtime) > 20\n" +
-					"	AND Deleted = 0 \r\n" +
-					"	AND StartTime > '" + fstarttime + "' \r\n" +
-					"	AND endtime < '" + fendtime + "'";
+			String sql = "SELECT\n" +
+					"\tLine,\n" +
+					"\tLEFT ( MouldingStyleCode, charindex( '-', MouldingStyleCode ) - 1 ) AS Mould,\n" +
+					"\tMouldingStyleCode,\n" +
+					"\tStartTime,\n" +
+					"\tEndTime,\n" +
+					"\tDATEDIFF( MINUTE, starttime, endtime ) AS ChangeMouldTime \n" +
+					"FROM\n" +
+					"\t[dbo].[MouldingDisplayBoard] \n" +
+					"WHERE\n" +
+					"\tChangeMould = 1 \n" +
+					"\tAND DATEDIFF( MINUTE, starttime, endtime ) > 20 \n" +
+					"\tAND endtime >= '"+fstarttime+"' \n" +
+					"\tAND endtime <= '"+fendtime+"' \n" +
+					"ORDER BY\n" +
+					"\tstarttime DESC";
 			Statement stmt = conn.createStatement();//
 
+			ResultSet rs = stmt.executeQuery(sql);
+			while (rs.next()) {
+				// 截面积(mm2)
+				HashMap<String,String> map = new HashMap<>();
+				map.put("Line",rs.getString("Line"));
+				map.put("Mould",rs.getString("Mould"));
+				map.put("MouldingStyleCode",rs.getString("MouldingStyleCode"));
+				map.put("StartTime",rs.getString("StartTime"));
+				map.put("EndTime",rs.getString("EndTime"));
+				map.put("ChangeMouldTime",rs.getString("ChangeMouldTime"));
+				hashMapList.add(map);
+
+			}
+			rs.close();
+			stmt.close();
+			conn.close();
+		} catch (SQLException e) {
+			e.printStackTrace();
+
+		}
+		return hashMapList;
+	}
+
+
+
+	public static List<HashMap<String,String>> DoGet_avg_changemouldtime_date_range(String fstarttime, String fendtime) {
+		List<HashMap<String,String>> hashMapList = new ArrayList<>();
+		try {
+			Connection conn = getSQLConnection();
+			String sql = "SELECT AVG\n" +
+					"\t(\n" +
+					"\tDATEDIFF( MINUTE, StartTime, EndTime )) AS avgchangemouldtime , count\n" +
+					"\t(\n" +
+					"\tDATEDIFF( MINUTE, StartTime, EndTime )) AS num \n" +
+					"FROM\n" +
+					"\tdbo.MouldingDisplayBoard \n" +
+					"WHERE\n" +
+					"\tChangeMould = 1 \n" +
+					"\tAND DATEDIFF( MINUTE, starttime, endtime ) > 20 \n" +
+					"\tAND Deleted = 0 " +
+					"	AND StartTime > '" + fstarttime + "' \r\n" +
+					"	AND endtime < '" + fendtime + "'";
+			Statement stmt = conn.createStatement();//
 			ResultSet rs = stmt.executeQuery(sql);
 			while (rs.next()) {
 				// 截面积(mm2)
 				HashMap<String,String> map = new HashMap<>();
 				map.put("avgchangemouldtime",rs.getString("avgchangemouldtime"));
+				map.put("num",rs.getString("num"));
+
 				hashMapList.add(map);
 
 			}
diff --git a/ruoyi/src/main/java/com/ruoyi/project/fx_changemouldtime/controller/ChangeMouldTimeController.java b/ruoyi/src/main/java/com/ruoyi/project/fx_changemouldtime/controller/ChangeMouldTimeController.java
index acf9264c5..065a8928b 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/fx_changemouldtime/controller/ChangeMouldTimeController.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/fx_changemouldtime/controller/ChangeMouldTimeController.java
@@ -19,11 +19,19 @@ public class ChangeMouldTimeController extends BaseController
 {
 //    @PreAuthorize("@ss.hasPermi('monitor:server:list')")
     @GetMapping("/list")
-    public AjaxResult get30Day() throws Exception
+    public AjaxResult DoGetChangeMouldTimeList() throws Exception
     {
         return AjaxResult.success(DB_Ajax_DashBoard_ChangeMouldTime_48102.DoGetChangeMouldTimeList());
     }
 
+
+    @GetMapping("/DoGetChangeMouldTimeListDateRange/{fDateStart}/{fDateEnd}")
+    public AjaxResult DoGetChangeMouldTimeListDateRange(@PathVariable String fDateStart, @PathVariable String fDateEnd) throws Exception
+    {
+        return AjaxResult.success(DB_Ajax_DashBoard_ChangeMouldTime_48102.DoGetChangeMouldTimeListDateRange(fDateStart,fDateEnd));
+    }
+
+
     @GetMapping("/rangetimeavg/{fDateStart}/{fDateEnd}")
     public AjaxResult getRangeTimeAvg(@PathVariable String fDateStart, @PathVariable String fDateEnd) throws Exception
     {