@ -15,10 +15,13 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.dromara.common.core.enums.FormatsType ;
import org.dromara.common.core.exception.ServiceException ;
import org.dromara.common.core.utils.DateUtils ;
import org.dromara.common.core.utils.StringUtils ;
import org.dromara.common.web.core.BaseController ;
import org.dromara.manager.weathermanager.WeatherConstant ;
import org.dromara.manager.weathermanager.WeatherManager ;
import org.dromara.manager.weathermanager.vo.WeatherVo ;
import org.dromara.mechanical.domain.BusMechanicalrewriting ;
import org.dromara.mechanical.service.IBusMechanicalrewritingService ;
import org.dromara.progress.domain.dto.export.ReportExportDto ;
import org.dromara.progress.domain.vo.export.* ;
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryByDayVo ;
@ -49,10 +52,7 @@ import java.net.URL;
import java.text.ParseException ;
import java.text.SimpleDateFormat ;
import java.time.LocalDate ;
import java.util.ArrayList ;
import java.util.Arrays ;
import java.util.Date ;
import java.util.List ;
import java.util.* ;
import java.util.stream.Collectors ;
@Validated
@ -71,6 +71,8 @@ public class PgsReportExportController extends BaseController {
private IHseSafetyInspectionService safetyInspectionService ;
@Resource
private ISysOssService ossService ;
@Resource
private IBusMechanicalrewritingService busMechanicalrewritingService ;
@Resource
private WeatherManager weatherManager ;
@ -187,6 +189,8 @@ public class PgsReportExportController extends BaseController {
List < MaterialInspectionData > inspectionList = projectData . getInspectionList ( ) ;
String projectName = projectData . getProjectName ( ) ;
String projectDate = projectData . getProjectDate ( ) ;
String processName = projectData . getProcessName ( ) ;
String nextPlanStr = projectData . getNextPlanStr ( ) ;
// ==============================================
// 1. 第一行: A1-M1合并( 加上行偏移量和列偏移量)
@ -303,7 +307,7 @@ public class PgsReportExportController extends BaseController {
// 15. 光伏场区标题行( C6-M6合并)
// ==============================================
CellRangeAddress fieldTitleRegion = new CellRangeAddress ( 5 + rowOffset , 5 + rowOffset , 2 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , fieldTitleRegion , " 光伏场区 " , headerStyle ) ;
mergeAndFill ( sheet , fieldTitleRegion , processName , headerStyle ) ;
drawBorderForRegion ( sheet , fieldTitleRegion , workbook ) ;
Row fieldTitleRow = sheet . getRow ( 5 + rowOffset ) ;
if ( fieldTitleRow = = null ) {
@ -361,7 +365,7 @@ public class PgsReportExportController extends BaseController {
mergeAndFill ( sheet , processRegion , " 施工形象及进度 " , headerStyle ) ;
drawBorderForRegion ( sheet , processRegion , workbook ) ;
headerRow . setHeightInPoints ( 25 ) ;
headerRow . setHeightInPoints ( 30 ) ;
// ==============================================
// 17. 动态填充进度数据
@ -417,7 +421,7 @@ public class PgsReportExportController extends BaseController {
mergeAndFill ( sheet , processDataRegion , data . getProcess ( ) , contentStyle ) ;
drawBorderForRegion ( sheet , processDataRegion , workbook ) ;
dataRow . setHeightInPoints ( 2 0) ;
dataRow . setHeightInPoints ( 3 0) ;
}
}
@ -437,7 +441,7 @@ public class PgsReportExportController extends BaseController {
// F-M列合并: 无
CellRangeAddress noteContentRegion = new CellRangeAddress ( noteRowNum , noteRowNum , 5 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , noteContentRegion , " 无 ", contentStyle ) ;
mergeAndFill ( sheet , noteContentRegion , " " , contentStyle ) ;
drawBorderForRegion ( sheet , noteContentRegion , workbook ) ;
noteRow . setHeightInPoints ( 25 ) ;
@ -460,7 +464,7 @@ public class PgsReportExportController extends BaseController {
}
}
int rowCount = endMergeRow - startMergeRow + 1 ;
int baseHeight = 2 0;
int baseHeight = 3 0;
int extraHeight = ( int ) ( totalHeight - rowCount * baseHeight ) ; // 额外高度分配给首行
Row firstRow = sheet . getRow ( startMergeRow ) ;
if ( firstRow ! = null ) {
@ -535,11 +539,7 @@ public class PgsReportExportController extends BaseController {
drawBorderForRegion ( sheet , siteSubTitleRegion , workbook ) ;
// F-M列合并: 详细内容
String siteContent = " 一.光伏区施工情况 \ n " +
" 1.1#、3#、5#方阵支架、组件安装; \ n " +
" 2.2#方阵直流电缆敷设。 \ n \ n " +
" 二.验收情况 \ n " +
" 今日无验收。 " ;
String siteContent = " " ;
CellRangeAddress siteContentRegion = new CellRangeAddress ( siteRowNum , siteRowNum , 5 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , siteContentRegion , siteContent , contentStyle ) ;
drawBorderForRegion ( sheet , siteContentRegion , workbook ) ;
@ -626,7 +626,7 @@ public class PgsReportExportController extends BaseController {
mergeAndFill ( sheet , remarkRegion1 , " 备注 " , headerStyle ) ;
drawBorderForRegion ( sheet , remarkRegion1 , workbook ) ;
titleRow2 . setHeightInPoints ( 2 5) ;
titleRow2 . setHeightInPoints ( 3 5) ;
// ==============================================
// 26. 动态填充参建单位人员数据
@ -724,7 +724,7 @@ public class PgsReportExportController extends BaseController {
// C-M列合并: 光伏场区工程: ( 左对齐)
CellRangeAddress machineHeaderRegion = new CellRangeAddress ( machineTitleRow , machineTitleRow , 2 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , machineHeaderRegion , " 光伏场区 工程:" , leftHeaderStyle ) ;
mergeAndFill ( sheet , machineHeaderRegion , processName + " 工程: " , leftHeaderStyle ) ;
drawBorderForRegion ( sheet , machineHeaderRegion , workbook ) ;
machineTitle . setHeightInPoints ( 25 ) ;
@ -745,7 +745,7 @@ public class PgsReportExportController extends BaseController {
drawBorderForRegion ( sheet , machineCountRegion , workbook ) ;
// E-M列合并: 设备清单( 逗号分隔)
String equipmentListStr = " RTK-0、清孔工具-0、电动扳手-20、小蜜蜂-0 " ;
String equipmentListStr = paramData . getDevice ( ) ;
CellRangeAddress equipmentRegion = new CellRangeAddress ( machineDataRow , machineDataRow , 4 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , equipmentRegion , equipmentListStr , contentStyle ) ;
drawBorderForRegion ( sheet , equipmentRegion , workbook ) ;
@ -849,7 +849,7 @@ public class PgsReportExportController extends BaseController {
mergeAndFill ( sheet , remarkRegion2 , " 备注 " , headerStyle ) ;
drawBorderForRegion ( sheet , remarkRegion2 , workbook ) ;
eqHeaderRow . setHeightInPoints ( 2 0) ;
eqHeaderRow . setHeightInPoints ( 3 0) ;
// ==============================================
// 33. 动态填充设备进场数据
@ -908,7 +908,7 @@ public class PgsReportExportController extends BaseController {
mergeAndFill ( sheet , remarkDataRegion2 , data . getRemark ( ) , contentStyle ) ;
drawBorderForRegion ( sheet , remarkDataRegion2 , workbook ) ;
dataRow . setHeightInPoints ( 2 0) ;
dataRow . setHeightInPoints ( 3 0) ;
}
}
@ -928,10 +928,10 @@ public class PgsReportExportController extends BaseController {
// F-M列合并: 待生产
CellRangeAddress eqNoteContentRegion = new CellRangeAddress ( equipmentNoteRow , equipmentNoteRow , 5 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , eqNoteContentRegion , " 待生产 ", contentStyle ) ;
mergeAndFill ( sheet , eqNoteContentRegion , " " , contentStyle ) ;
drawBorderForRegion ( sheet , eqNoteContentRegion , workbook ) ;
eqNoteRow . setHeightInPoints ( 2 0) ;
eqNoteRow . setHeightInPoints ( 3 0) ;
// ==============================================
// 35. 主要材料进场情况标题行(情况说明行下一行)
@ -946,7 +946,7 @@ public class PgsReportExportController extends BaseController {
mergeAndFill ( sheet , materialHeaderRegion , " 主要材料进场情况: " , leftHeaderStyle ) ;
drawBorderForRegion ( sheet , materialHeaderRegion , workbook ) ;
materialTitle . setHeightInPoints ( 2 0) ;
materialTitle . setHeightInPoints ( 3 0) ;
// ==============================================
// 36. 光伏场区工程标题行(主要材料标题行下一行)
@ -958,10 +958,10 @@ public class PgsReportExportController extends BaseController {
}
CellRangeAddress materialSubHeaderRegion = new CellRangeAddress ( materialSubTitleRow , materialSubTitleRow , 2 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , materialSubHeaderRegion , " 1.光伏场区 工程:" , leftHeaderStyle ) ;
mergeAndFill ( sheet , materialSubHeaderRegion , processName + " 工程: " , leftHeaderStyle ) ;
drawBorderForRegion ( sheet , materialSubHeaderRegion , workbook ) ;
materialSubTitle . setHeightInPoints ( 2 0) ;
materialSubTitle . setHeightInPoints ( 3 0) ;
// ==============================================
// 37. 材料进场情况表头行(光伏场区工程标题行下一行)
@ -1003,7 +1003,7 @@ public class PgsReportExportController extends BaseController {
CellRangeAddress materialMRegion = new CellRangeAddress ( materialHeaderRow , materialHeaderRow , 12 + columnOffset , 12 + columnOffset ) ;
drawBorderForRegion ( sheet , materialMRegion , workbook ) ;
materialHeader . setHeightInPoints ( 2 0) ;
materialHeader . setHeightInPoints ( 3 0) ;
// ==============================================
// 38. 动态填充材料进场数据
@ -1052,7 +1052,7 @@ public class PgsReportExportController extends BaseController {
CellRangeAddress inspectionRegion = new CellRangeAddress ( rowNum , rowNum , 12 + columnOffset , 12 + columnOffset ) ;
drawBorderForRegion ( sheet , inspectionRegion , workbook ) ;
dataRow . setHeightInPoints ( 2 0) ;
dataRow . setHeightInPoints ( 3 0) ;
}
}
@ -1069,7 +1069,7 @@ public class PgsReportExportController extends BaseController {
mergeAndFill ( sheet , inspectionHeaderRegion , " 主要材料送检情况: " , leftHeaderStyle ) ;
drawBorderForRegion ( sheet , inspectionHeaderRegion , workbook ) ;
inspectionTitle . setHeightInPoints ( 2 0) ;
inspectionTitle . setHeightInPoints ( 3 0) ;
// ==============================================
// 40. 材料送检情况表头行(标题行下一行)
@ -1109,7 +1109,7 @@ public class PgsReportExportController extends BaseController {
mergeAndFill ( sheet , inspRecordRegion , " 送检记录 " , headerStyle ) ;
drawBorderForRegion ( sheet , inspRecordRegion , workbook ) ;
inspectionHeader . setHeightInPoints ( 2 0) ;
inspectionHeader . setHeightInPoints ( 3 0) ;
// ==============================================
// 41. 动态填充材料送检数据
@ -1154,7 +1154,7 @@ public class PgsReportExportController extends BaseController {
mergeAndFill ( sheet , recordRegion , data . getInspectionRecord ( ) , contentStyle ) ;
drawBorderForRegion ( sheet , recordRegion , workbook ) ;
dataRow . setHeightInPoints ( 2 0) ;
dataRow . setHeightInPoints ( 3 0) ;
}
}
@ -1174,10 +1174,10 @@ public class PgsReportExportController extends BaseController {
// F-M列合并: 无
CellRangeAddress inspNoteContentRegion = new CellRangeAddress ( inspectionNoteRow , inspectionNoteRow , 5 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , inspNoteContentRegion , " 无 ", contentStyle ) ;
mergeAndFill ( sheet , inspNoteContentRegion , " " , contentStyle ) ;
drawBorderForRegion ( sheet , inspNoteContentRegion , workbook ) ;
inspNoteRow . setHeightInPoints ( 2 0) ;
inspNoteRow . setHeightInPoints ( 3 0) ;
// ==============================================
// 关键调整: AB列从设备进场标题行到最终情况说明行合并
@ -1202,7 +1202,7 @@ public class PgsReportExportController extends BaseController {
totalRegionHeight + = row . getHeightInPoints ( ) ;
}
}
float baseHeight1 = 2 0;
float baseHeight1 = 3 0;
float extraHeight1 = totalRegionHeight - totalRowCount * baseHeight1 ;
Row equipmentTitleRowObj = sheet . getRow ( equipmentTitleRow ) ;
if ( equipmentTitleRowObj ! = null ) {
@ -1231,7 +1231,7 @@ public class PgsReportExportController extends BaseController {
// C-M列合并: 今日无
CellRangeAddress sxContentRegion = new CellRangeAddress ( sxNoteRow , sxNoteRow , 2 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , sxContentRegion , " 今日无 ", contentStyle ) ;
mergeAndFill ( sheet , sxContentRegion , " " , contentStyle ) ;
drawBorderForRegion ( sheet , sxContentRegion , workbook ) ;
sxRow . setHeightInPoints ( 30 ) ; // 适配可能的换行
@ -1252,10 +1252,10 @@ public class PgsReportExportController extends BaseController {
// C-M列合并: 部分区域坡度较大。
CellRangeAddress wxContentRegion = new CellRangeAddress ( wxNoteRow , wxNoteRow , 2 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , wxContentRegion , " 部分区域坡度较大。 ", contentStyle ) ;
mergeAndFill ( sheet , wxContentRegion , " " , contentStyle ) ;
drawBorderForRegion ( sheet , wxContentRegion , workbook ) ;
wxRow . setHeightInPoints ( 30 ) ; // 适配可能的换行
wxRow . setHeightInPoints ( 95 ) ; // 适配可能的换行
// ==============================================
// 45. 现场施工照片行
@ -1409,7 +1409,7 @@ public class PgsReportExportController extends BaseController {
drawBorderForRegion ( sheet , tomorrowABRegion , workbook ) ;
// C-M列合并: 输入工作计划内容
String tomorrowPlanContent = " 支架、组件安装37人, 计划完成支架8组, 组件7组; \ n直流电缆敷设15人, 计划完成3500米。 " ;
String tomorrowPlanContent = nextPlanStr ;
CellRangeAddress tomorrowContentRegion = new CellRangeAddress ( tomorrowPlanRowNum , tomorrowPlanRowNum , 2 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , tomorrowContentRegion , tomorrowPlanContent , contentStyle ) ;
drawBorderForRegion ( sheet , tomorrowContentRegion , workbook ) ;
@ -1432,7 +1432,7 @@ public class PgsReportExportController extends BaseController {
// C-M列合并
CellRangeAddress otherContentRegion = new CellRangeAddress ( otherMattersRowNum , otherMattersRowNum , 2 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , otherContentRegion , " 无 ", contentStyle ) ;
mergeAndFill ( sheet , otherContentRegion , " " , contentStyle ) ;
drawBorderForRegion ( sheet , otherContentRegion , workbook ) ;
otherMattersRow . setHeightInPoints ( 25 ) ; // 设置行高
@ -1453,11 +1453,7 @@ public class PgsReportExportController extends BaseController {
// C-M列合并
CellRangeAddress personnelContentRegion = new CellRangeAddress ( sitePersonnelRowNum , sitePersonnelRowNum , 2 + columnOffset , 12 + columnOffset ) ;
mergeAndFill ( sheet , personnelContentRegion , " 1.管理人员2人; \ n " +
" 2.支架、组件安装36人; \ n " +
" 3.直流电缆敷设15人; \ n " +
" 4.无人机飞手2人; \ n " +
" 5.合计55人。 " , contentStyle ) ;
mergeAndFill ( sheet , personnelContentRegion , " " , contentStyle ) ;
drawBorderForRegion ( sheet , personnelContentRegion , workbook ) ;
sitePersonnelRow . setHeightInPoints ( 25 ) ; // 设置行高
@ -1784,6 +1780,11 @@ public class PgsReportExportController extends BaseController {
paramData . setSafety ( collect ) ;
}
List < BusMechanicalrewriting > list4 = busMechanicalrewritingService . lambdaQuery ( )
. eq ( BusMechanicalrewriting : : getProjectId , project . getId ( ) ) . list ( ) ;
String collect = list4 . stream ( ) . map ( BusMechanicalrewriting : : getDevicename ) . filter ( StringUtils : : isNotBlank ) . distinct ( ) . collect ( Collectors . joining ( " , " ) ) ;
paramData . setDevice ( collect ) ;
return paramData ;
}
@ -1803,6 +1804,8 @@ public class PgsReportExportController extends BaseController {
for ( PgsProgressCategoryByDayVo vo : subProjectList ) {
ProjectData projectData = new ProjectData ( ) ;
projectData . setProjectName ( vo . getProjectName ( ) ) ;
projectData . setProcessName ( " 光伏场区 " ) ;
projectData . setNextPlanStr ( vo . getNextPlanStr ( ) ) ;
List < ProgressData > progressList = new ArrayList < > ( ) ;
List < PgsProgressCategoryDetailByDayVo > photovoltaicArea = vo . getPhotovoltaicArea ( ) ;
@ -1863,6 +1866,8 @@ public class PgsReportExportController extends BaseController {
List < ProjectData > sy = new ArrayList < > ( ) ;
ProjectData projectData = new ProjectData ( ) ;
projectData . setProjectName ( " 升压站 " ) ;
projectData . setProcessName ( " 升压站 " ) ;
projectData . setNextPlanStr ( project . getNextPlanStr ( ) ) ;
List < ProgressData > progressList = new ArrayList < > ( ) ;
List < PgsProgressCategoryDetailByDayVo > boosterStation = project . getBoosterStation ( ) ;
@ -1902,6 +1907,8 @@ public class PgsReportExportController extends BaseController {
List < ProjectData > jd = new ArrayList < > ( ) ;
ProjectData jdProjectData = new ProjectData ( ) ;
jdProjectData . setProjectName ( " 集电线路 " ) ;
jdProjectData . setProcessName ( " 集电线路 " ) ;
jdProjectData . setNextPlanStr ( project . getNextPlanStr ( ) ) ;
List < ProgressData > jdProgressList = new ArrayList < > ( ) ;
List < PgsProgressCategoryDetailByDayVo > collectingLine = project . getCollectingLine ( ) ;
@ -1941,6 +1948,8 @@ public class PgsReportExportController extends BaseController {
List < ProjectData > sc = new ArrayList < > ( ) ;
ProjectData scProjectData = new ProjectData ( ) ;
scProjectData . setProjectName ( " 送出线路 " ) ;
scProjectData . setProcessName ( " 送出线路 " ) ;
scProjectData . setNextPlanStr ( project . getNextPlanStr ( ) ) ;
List < ProgressData > scProgressList = new ArrayList < > ( ) ;
List < PgsProgressCategoryDetailByDayVo > sendLine = project . getSendLine ( ) ;
@ -1980,9 +1989,12 @@ public class PgsReportExportController extends BaseController {
List < ProjectData > qt = new ArrayList < > ( ) ;
ProjectData qtProjectData = new ProjectData ( ) ;
qtProjectData . setProjectName ( " 其他工程 " ) ;
qtProjectData . setProcessName ( " 其他工程 " ) ;
qtProjectData . setNextPlanStr ( project . getNextPlanStr ( ) ) ;
List < ProgressData > qtProgressList = new ArrayList < > ( ) ;
List < PgsProgressCategoryDetailByDayVo > otherProject = project . getOtherProject ( ) ;
int qtNum = 1 ;
for ( PgsProgressCategoryDetailByDayVo vo1 : otherProject ) {
ProgressData progressData = new ProgressData ( ) ;