| 
					
				 | 
			
			
				@@ -21,12 +21,14 @@ import org.apache.poi.xddf.usermodel.chart.BarDirection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.poi.xssf.usermodel.XSSFCellStyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.poi.xssf.usermodel.XSSFSheet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.bind.annotation.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.annotation.Resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.io.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.BufferedOutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.InputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.OutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.math.RoundingMode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.net.URLEncoder; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -63,24 +65,6 @@ public class ApiController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private AsyncServiceImpl asyncService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private BrokenYarnExportServiceImpl brokenYarnExportService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${excel.total}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private String totalExcelTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${excel.formula}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private String formulaExcelTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${excel.gram}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private String gramExcelTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${excel.stops}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private String stopsExcelTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${excel.stopsType}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private String stopsTypeExcelTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${excel.stopDetail}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private String stopDetailExcelTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${excel.alarms}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private String alarmsExcelTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${excel.yarn}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private String yarnExcelTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${excel.brokenYarn}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private String brokenYarnExcelTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @ApiOperation("在线设备") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @GetMapping("/device/online") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -246,7 +230,7 @@ public class ApiController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Date sd = Date.from(localDate.atStartOfDay(ZoneOffset.of("+8")).toInstant()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<TwinCalcDay> calcDayList = twinCalcDayService.selectTwinCalcDayListByTime(sd, sd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Map<Long, BigDecimal> decimalMap = calcDayList.stream().collect(Collectors.toMap(TwinCalcDay::getDeviceId, TwinCalcDay::getLength)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try (FileInputStream inputStream = new FileInputStream(yarnExcelTemplate); XSSFWorkbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/yarn.xlsx"); XSSFWorkbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Sheet sheet = wb.getSheetAt(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 AtomicInteger rowNum = new AtomicInteger(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 CellStyle percentStyle = wb.createCellStyle(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -400,7 +384,7 @@ public class ApiController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (total != null && detail != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<GramMass> list = (List<GramMass>) total; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<GramMassDetail> details = (List<GramMassDetail>) detail; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try (FileInputStream inputStream = new FileInputStream(gramExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/gram.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Sheet sheet = wb.getSheetAt(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 CreationHelper creationHelper = wb.getCreationHelper(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -488,7 +472,7 @@ public class ApiController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (d != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<FormulaDetail> list = (List<FormulaDetail>) d; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             list = list.stream().filter(detail -> detail.getFormula_data_15().equals(height)).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try (FileInputStream inputStream = new FileInputStream(formulaExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/formula.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Sheet sheet = wb.getSheetAt(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 AtomicInteger rowNum = new AtomicInteger(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -528,7 +512,7 @@ public class ApiController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         localDate = LocalDate.parse(end); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date ed = Date.from(localDate.atStartOfDay(ZoneOffset.of("+8")).toInstant()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<TwinCalcDay> list = twinCalcDayService.selectTwinCalcDayListByTime(sd, ed); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try (FileInputStream inputStream = new FileInputStream(totalExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/total.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CreationHelper creationHelper = wb.getCreationHelper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CellStyle percentStyle = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             percentStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00%")); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -574,7 +558,7 @@ public class ApiController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @CrossOrigin(origins = "*") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void brokenYarnExport(String date, HttpServletResponse response) throws ParseException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         LocalDate localDate = LocalDate.parse(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try (FileInputStream inputStream = new FileInputStream(brokenYarnExcelTemplate); XSSFWorkbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/brokenYarn.xlsx"); XSSFWorkbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //1.基本信息表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             brokenYarnExportService.base(wb, localDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //2.停机原因分析 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -833,7 +817,7 @@ public class ApiController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 totalTime.updateAndGet(v -> v + t); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try (FileInputStream inputStream = new FileInputStream(stopsExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/stops.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CreationHelper creationHelper = wb.getCreationHelper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CellStyle percentStyle = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             percentStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00%")); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -925,7 +909,7 @@ public class ApiController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             stopList.sort(Comparator.comparing(StopDetailVO::getDeviceId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             int[] nums = new int[7]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             String[] devices = new String[7]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try (FileInputStream inputStream = new FileInputStream(stopDetailExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/stopDetail.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 CellStyle p2 = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 p2.setDataFormat(wb.createDataFormat().getFormat("0.00")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Sheet sheet2 = wb.getSheetAt(1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1077,7 +1061,7 @@ public class ApiController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //1停经片停机,2-CCD停机(相机号+断纱/故障),3-人工停机,4-断电停机,5-设备故障停机,6-落布米数达到停机,7-盘头剩余圈数达到停机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String[] stopStr = {"断纱", "断纱", "人工停机", "断电停机", "设备故障停机", "下卷", "叫料"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try (FileInputStream inputStream = new FileInputStream(stopsTypeExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/stopsType.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CreationHelper creationHelper = wb.getCreationHelper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CellStyle percentStyle = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             percentStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00%")); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1169,7 +1153,7 @@ public class ApiController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Long, TwinDevice> deviceMap = deviceService.deviceMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Long, List<TwinCalcAlarms>> alarmsGroup = list.stream().collect(Collectors.groupingBy(TwinCalcAlarms::getDeviceId, LinkedHashMap::new, Collectors.toList())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String[] alarmStr = {"GB1伺服通讯故障", "GB2伺服通讯故障", "GB3伺服通讯故障", "GB4伺服通讯故障", "GB5伺服通讯故障", "牵引伺服通讯故障", "卷曲伺服通讯故障", "断纱故障", "电源故障", "联动未完全啮合", "米长到达", "GB1剩余圈数报警", "GB2剩余圈数报警", "GB3剩余圈数报警", "GB4剩余圈数报警", "GB5剩余圈数报警", "主轴变频掉线", "主轴变频故障", "GB1伺服故障", "GB2伺服故障", "GB3伺服故障", "GB4伺服故障", "GB5伺服故障", "牵引伺服故障", "卷曲伺服故障", "拍照自停", "CCD位置报警信息显示"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try (FileInputStream inputStream = new FileInputStream(alarmsExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/alarms.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CreationHelper creationHelper = wb.getCreationHelper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CellStyle percentStyle = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             percentStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00%")); 
			 |