Merge remote-tracking branch 'origin/main'

This commit is contained in:
2026-08-19 16:43:47 +08:00
52 changed files with 591 additions and 128 deletions
@@ -402,6 +402,10 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl<ProposalInfo> imp
keywordCondition.orLike("info.createUserName", keyword);
keywordCondition.orLike("info.createUserLoginName", keyword);
}
// 立案编号由立案环节生成,选中该搜索来源时按编号进行模糊匹配。
if (ArrayUtil.contains(pageForm.getOrigins(), "caseFilingCode")) {
keywordCondition.orLike("info.caseFilingCode", keyword);
}
if (searchAnswer) {
keywordCondition.orLike("JSON_EXTRACT(replyTask.variable,'$.tf_opinion')", keyword);
}
@@ -29,6 +29,7 @@ import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
@@ -75,6 +76,7 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
private static final String WORK_SUGGESTION_SECTION_MARKER = "__WORK_SUGGESTION_SECTION__";
private static final int UNDERTAKE_UNIT_EXPORT_COLUMN_COUNT = 6;
private static final int UNDERTAKE_UNIT_SECOND_TITLE_ROW_INDEX = 1;
@Inject
private ProposalCommonService proposalCommonService;
@@ -448,12 +450,12 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
*/
private Workbook buildUndertakeUnitWorkbook(String title, String unitName, List<NutMap> excelRows) {
List<ExcelExportEntity> exportEntities = new ArrayList<>();
exportEntities.add(new ExcelExportEntity("立案编号", "caseFilingCode", 18));
exportEntities.add(new ExcelExportEntity("提案名称", "name", 65));
exportEntities.add(new ExcelExportEntity("提案人", "createUserName", 15));
exportEntities.add(new ExcelExportEntity("主办单位", "masterUnitNames", 28));
exportEntities.add(new ExcelExportEntity("协办单位", "slaveUnitNames", 28));
exportEntities.add(new ExcelExportEntity("工作建议送达单位", "workSuggestionUnitNames", 32));
exportEntities.add(new ExcelExportEntity("立案编号", "caseFilingCode", 11));
exportEntities.add(new ExcelExportEntity("提案名称", "name", 43));
exportEntities.add(new ExcelExportEntity("提案人", "createUserName", 13));
exportEntities.add(new ExcelExportEntity("主办单位", "masterUnitNames", 19));
exportEntities.add(new ExcelExportEntity("协办单位", "slaveUnitNames", 25));
exportEntities.add(new ExcelExportEntity("工作建议送达单位", "workSuggestionUnitNames", 17));
for (ExcelExportEntity exportEntity : exportEntities) {
exportEntity.setWrap(true);
}
@@ -467,9 +469,54 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
exportParams.setHeight((short) 13);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, excelRows);
mergeWorkSuggestionSection(workbook);
applyUndertakeUnitWorkbookStyle(workbook);
return workbook;
}
/**
* 为承办单位表的全部有效单元格设置细实线边框并保证第二行承办单位名称加粗且水平垂直居中
* 相同原始样式复用同一个克隆样式避免按单元格重复创建样式导致工作簿样式数量过多
*/
private void applyUndertakeUnitWorkbookStyle(Workbook workbook) {
Sheet sheet = workbook.getSheetAt(0);
Map<String, CellStyle> borderedStyles = new HashMap<>();
Font unitNameFont = workbook.createFont();
unitNameFont.setFontName("宋体");
unitNameFont.setFontHeightInPoints((short) 11);
unitNameFont.setBold(true);
for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
Row row = sheet.getRow(rowIndex);
if (row == null) {
continue;
}
boolean centerUnitName = rowIndex == UNDERTAKE_UNIT_SECOND_TITLE_ROW_INDEX;
for (int columnIndex = 0; columnIndex < UNDERTAKE_UNIT_EXPORT_COLUMN_COUNT; columnIndex++) {
Cell cell = row.getCell(columnIndex);
if (cell == null) {
cell = row.createCell(columnIndex);
}
CellStyle sourceStyle = cell.getCellStyle();
String styleKey = sourceStyle.getIndex() + ":" + centerUnitName;
CellStyle borderedStyle = borderedStyles.get(styleKey);
if (borderedStyle == null) {
borderedStyle = workbook.createCellStyle();
borderedStyle.cloneStyleFrom(sourceStyle);
borderedStyle.setBorderTop(BorderStyle.THIN);
borderedStyle.setBorderRight(BorderStyle.THIN);
borderedStyle.setBorderBottom(BorderStyle.THIN);
borderedStyle.setBorderLeft(BorderStyle.THIN);
if (centerUnitName) {
borderedStyle.setAlignment(HorizontalAlignment.CENTER);
borderedStyle.setVerticalAlignment(VerticalAlignment.CENTER);
borderedStyle.setFont(unitNameFont);
}
borderedStyles.put(styleKey, borderedStyle);
}
cell.setCellStyle(borderedStyle);
}
}
}
/**
* 查找工作建议标记行将承办单位表的全部单元格合并并设置为居中的分组标题
*/