diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java index 6b08ca5e74..bff1f1a999 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java @@ -15,11 +15,18 @@ import java.util.List; /** * desc:单元格合并策略 + * * @author liujianjun */ public class ExcelFillCellMergeStrategy implements CellWriteHandler { + /** + * 需要合并的列 下标 + */ private int[] mergeColumnIndex; + /** + * 从下标n行开始合并 + */ private int mergeRowIndex; public ExcelFillCellMergeStrategy() { @@ -45,19 +52,18 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler { public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List> list, Cell cell, Head head, Integer integer, Boolean aBoolean) { int curRowIndex = cell.getRowIndex(); int curColIndex = cell.getColumnIndex(); - int size = list.size(); - System.out.println(size); + if (curRowIndex <= mergeRowIndex) { + return; + } + //如果不指定 合并的列则全部列进行 合并判断 if (mergeColumnIndex == null) { - if (curRowIndex > 2) { - mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex); - } - }else{ - if (curRowIndex > mergeRowIndex) { - for (int i = 0; i < mergeColumnIndex.length; i++) { - if (curColIndex == mergeColumnIndex[i]) { - mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex); - break; - } + mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex); + } else { + //合并指定的列号 + for (int columnIndex : mergeColumnIndex) { + if (curColIndex == columnIndex) { + mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex); + break; } } } @@ -72,7 +78,6 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler { * @param curColIndex 当前列 */ private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, Cell cell, int curRowIndex, int curColIndex) { - //writeSheetHolder.getExcelWriteHeadProperty(). // 当前行的第一个Cell Cell curFirstCell = cell.getSheet().getRow(curRowIndex).getCell(0); Object curFirstData = curFirstCell.getCellType() == CellType.STRING ? curFirstCell.getStringCellValue() : curFirstCell.getNumericCellValue(); @@ -88,7 +93,10 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler { Boolean dataBool = preData.equals(curData); //此处需要注意:因为我是按照序号确定是否需要合并的,所以获取每一行第一列数据和上一行第一列数据进行比较,如果相等合并 Boolean bool = cell.getRow().getCell(0).getStringCellValue().equals(cell.getSheet().getRow(curRowIndex - 1).getCell(0).getStringCellValue()); - if (dataBool && bool) { + + if (!dataBool || !bool) { + return; + } Sheet sheet = writeSheetHolder.getSheet(); List mergeRegions = sheet.getMergedRegions(); boolean isMerged = false; @@ -107,7 +115,7 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler { CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, curColIndex); sheet.addMergedRegion(cellRangeAddress); } - } + } } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelMergeStrategy.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelMergeStrategy.java deleted file mode 100644 index 141c7de5d7..0000000000 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelMergeStrategy.java +++ /dev/null @@ -1,213 +0,0 @@ -package com.epmet.commons.tools.utils.poi.excel.handler; - -/** - * desc: - * - * @author: LiuJanJun - * @date: 2022/4/26 1:36 下午 - * @version: 1.0 - */ - -import com.alibaba.excel.enums.CellDataTypeEnum; -import com.alibaba.excel.metadata.Head; -import com.alibaba.excel.metadata.data.CellData; -import com.alibaba.excel.metadata.data.WriteCellData; -import com.alibaba.excel.write.handler.CellWriteHandler; -import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; -import com.alibaba.excel.write.metadata.holder.WriteTableHolder; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellType; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.util.CellRangeAddress; - -import java.util.List; -import java.util.Objects; -import java.util.stream.IntStream; - -/** - * 相同值合并策略 - */ - -public class ExcelMergeStrategy implements CellWriteHandler { - - /** - * 合并起始行 - */ - - private int mergeRowIndex; - /** - * 多少行合并一次 - */ - - private int eachRow; - - /** - * 合并字段的下标 - */ - - private int[] mergeColumnIndex; - - public ExcelMergeStrategy(int mergeRowIndex, int[] mergeColumnIndex, int eachRow) { - - if (mergeRowIndex < 0) { - - throw new IllegalArgumentException("mergeRowIndex must be greater than 0"); - - } - - if (eachRow < 0) { - - throw new IllegalArgumentException("eachRow must be greater than 0"); - - } - - this.mergeRowIndex = mergeRowIndex; - - this.mergeColumnIndex = mergeColumnIndex; - - this.eachRow = eachRow; - - } - - @Override - - public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) { - } - - @Override - - public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { - } - - // @Override - public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { - - int curRowIndex = cell.getRowIndex(); - -//当前列 - - int curColIndex = cell.getColumnIndex(); - -//合并条件: - -//1.当前行>合并起始行,默认标题行(0)不参加合并 - -//2.间隔行(eachRow)的上下两条不参加合并 - -//2.1间隔行(eachRow)==0时,不设置间隔 - - if (isMerge(curRowIndex)) { - - IntStream.range(0, mergeColumnIndex.length).anyMatch(i -> { - - if (curColIndex == mergeColumnIndex[i]) { - - mergeWithPrevRow(writeSheetHolder, cellData, cell, curRowIndex, curColIndex); - - return true; - - } - - return false; - - }); - - } - - } - - @Override - public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { - } - - /** - * 判断是否合并 - *

- * 1.当前位置必须大于开始位置:curRowIndex > mergeRowIndex - *

- * 2.根据eachRow 判断数据分割的间隔 - *

- * 2.1如果根据eachRow=0,默认不合并 - *

- * 2.2如果1如果根据eachRow>0,分割后的第一条数据不会与之前的合并:(curRowIndex-mergeRowIndex)%eachRow==0 - * - * @return - */ - - private boolean isMerge(Integer curRowIndex) { - if ((curRowIndex > mergeRowIndex) && eachRow > 0) { - - if ((curRowIndex - mergeRowIndex) % eachRow == 0) { - - return false; - - } - - return true; - - } - return false; - - } - - private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, CellData cellData, Cell cell, int curRowIndex, int curColIndex) { - -//获取当前行的当前列的数据和上一行的当前列列数据,通过上一行数据是否相同进行合并 - - Object curData = cellData.getType() == CellDataTypeEnum.STRING ? cellData.getStringValue() : cellData.getNumberValue(); - - Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex); - - Object preData = preCell.getCellTypeEnum() == CellType.STRING ? preCell.getStringCellValue() : - - preCell.getNumericCellValue(); - -// 比较当前行的第一列的单元格与上一行是否相同,相同合并当前单元格与上一行 - - if (Objects.equals(curData, preData)) { - - Sheet sheet = writeSheetHolder.getSheet(); - - List mergeRegions = sheet.getMergedRegions(); - - boolean isMerged = false; - - for (int i = 0; i < mergeRegions.size() && !isMerged; i++) { - - CellRangeAddress cellRangeAddr = mergeRegions.get(i); - -// 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元 - - if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) { - - sheet.removeMergedRegion(i); - - cellRangeAddr.setLastRow(curRowIndex); - - sheet.addMergedRegion(cellRangeAddr); - - isMerged = true; - - } - - } - -// 若上一个单元格未被合并,则新增合并单元 - - if (!isMerged) { - - CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, - - curColIndex); - - sheet.addMergedRegion(cellRangeAddress); - - } - - } - - } - -} - diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/FreezeAndFilter.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/FreezeAndFilter.java similarity index 95% rename from epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/FreezeAndFilter.java rename to epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/FreezeAndFilter.java index 6b5d5e55c5..13ef447219 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/FreezeAndFilter.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/FreezeAndFilter.java @@ -1,4 +1,4 @@ -package com.epmet.commons.tools.utils.poi.excel; +package com.epmet.commons.tools.utils.poi.excel.handler; /** * desc:easyExcel 冻结标题 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcFollowUpRecordController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcFollowUpRecordController.java index b3ed2ab6d8..7428da58be 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcFollowUpRecordController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcFollowUpRecordController.java @@ -12,7 +12,7 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; -import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.DefaultGroup; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java index 1098aa680e..bcb2a2d134 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java @@ -16,12 +16,11 @@ import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.*; -import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcNatDTO; import com.epmet.dto.form.AddIcNatFormDTO; -import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.MyNatListFormDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.MyNatListResultDTO; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 63372e0bd6..dc788d30bb 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -44,7 +44,7 @@ import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.*; -import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constant.SystemMessageType; import com.epmet.constants.ImportTaskConstants; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcTripReportRecordController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcTripReportRecordController.java index cd79899c15..6e1aff48ff 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcTripReportRecordController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcTripReportRecordController.java @@ -17,7 +17,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.*; -import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constant.IcResiUserConstant; import com.epmet.constants.ImportTaskConstants; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java index 07f3e9305c..9eaefe9513 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java @@ -16,10 +16,9 @@ import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.*; -import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constants.ImportTaskConstants; -import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.VaccineListFormDTO; import com.epmet.dto.result.IcVaccineListCommonExcelResultDTO; import com.epmet.dto.result.IcVaccineListResultDTO; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java index e35eabdace..ada878c1be 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java @@ -1,5 +1,6 @@ package com.epmet.service; +import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.dto.result.FormItemResult; import com.epmet.service.impl.IcResiUserImportServiceImpl; @@ -51,4 +52,15 @@ public interface IcResiUserImportService { * @return */ Map listRemoteOptions(String pureUri, String cascadeItemId, Map columnWrappers, String currUserAgencyId, String purpose); + + /** + * desc:获取级联的远程 选项 + * @param part + * @param part1 + * @param columnWrappers + * @param currentStaffAgencyId + * @param query + * @return + */ + Map listRemoteCascadeOptions(String part, String part1, Map columnWrappers, String currentStaffAgencyId, String query); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java index d4370edeb0..966e294733 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java @@ -12,6 +12,7 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.enums.FormItemTypeEnum; import com.epmet.commons.tools.enums.IcFormCodeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; @@ -21,7 +22,7 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.SpringContextUtils; -import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.utils.poi.excel.handler.ExcelFillCellMergeStrategy; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constant.IcResiUserConstant; @@ -119,7 +120,6 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { } int[] mergeColumnIndex = mergeColumnIndexList.stream().filter(Objects::nonNull).mapToInt(i->i).toArray(); - // 从那一列开始合并 int mergeRowIndex = exportConfigData.getHeaderRow(); @@ -130,15 +130,15 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); + //todo 表头固定不正确 FreezeAndFilter writeHandler = new FreezeAndFilter(); excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("居民基本信息.xlsx", response)) .registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex, mergeColumnIndex)) - .registerWriteHandler(writeHandler).build(); - - WriteSheet writeSheet = EasyExcel.writerSheet() .registerWriteHandler(horizontalCellStyleStrategy) .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) - .head(exportConfigData.getHeaders()).build(); + .registerWriteHandler(writeHandler).build(); + + WriteSheet writeSheet = EasyExcel.writerSheet().head(exportConfigData.getHeaders()).build(); String staffOrgPath = null; if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) { @@ -163,7 +163,6 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { result.forEach(o -> { List singleResult = new ArrayList<>(); Map originalConditionMap = new ConcurrentHashMap<>(); - log.info("==========居民信息:{}",JSON.toJSONString(o)); o.forEach((key,value) -> { List showSqlColumns = exportConfigData.getShowSqlColumns(); Map itemMap = showSqlColumns.stream().collect(Collectors.toMap(IcCustomExportResultDTO.SqlColumn::getColumnName, item -> item)); @@ -195,7 +194,6 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { }); resultData.add(singleResult); }); - log.info("需要写入的data长度:{}", resultData.size()); excelWriter.write(resultData, writeSheet); //todo break; @@ -209,6 +207,11 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { } } + /** + * desc:校验查询表单参数 + * @param tokenDto + * @param exportResiUserFormDTO + */ public void validateSearchForm(TokenDto tokenDto, ExportResiUserFormDTO exportResiUserFormDTO) { IcResiUserPageFormDTO searchForm = exportResiUserFormDTO.getSearchForm(); searchForm.setCustomerId(tokenDto.getCustomerId()); @@ -246,8 +249,6 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { private static Map> remoteOptionCacheMap = new HashMap<>(); private void putRemoteValue(Set conditionItemSet, String currentStaffAgencyId, Map map, Map originalConditionMap, FormItemResult e, String columnName, String vauleStr) { try { - log.info("========putRemoteValue:formItemResult:{}",e.getLabel()); - log.info("========putRemoteValue:columnName:{},vauleStr:{}",columnName,vauleStr); Map columnWrappers = new HashMap<>(); if (e.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){ for (FormItemResult o : conditionItemSet) { @@ -267,23 +268,37 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { } else { String[] parts = icResiUserImportService.splitOptionSourceUrl(e.getOptionSourceValue()); - //todo 不支持多个itemId - Map remoteOptions = icResiUserImportService.listRemoteOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query"); - log.info("========putRemoteValue:条件:{}", JSON.toJSONString(columnWrappers)); - log.info("========putRemoteValue:结果:{}", JSON.toJSONString(remoteOptions)); - if (FormItemTypeEnum.CHECKBOX.getCode().equals(e.getItemType())) { - remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? StrConstant.YES : StrConstant.NO)); - } else if (FormItemTypeEnum.SELECT.getCode().equals(e.getItemType())) { - remoteOptions.forEach((label, value) -> { + if (FormItemTypeEnum.CASCADER.getCode().equals(e.getItemType())) { + Map remoteOptions = icResiUserImportService.listRemoteCascadeOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query"); + List listOptions = new ArrayList<>(); + remoteOptions.forEach((value,label) -> { + //todo 看看怎么更好的利用本地缓存 if (vauleStr.equals(value)) { - map.put(columnName, label); + listOptions.add(label.getLabel()); } - cache.put(value,label); }); + String join = Joiner.on("-").join(listOptions); + cache.put(vauleStr,join); + map.put(columnName, join); + }else { + //todo 不支持多个itemId + Map remoteOptions = icResiUserImportService.listRemoteOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query"); + if (FormItemTypeEnum.CHECKBOX.getCode().equals(e.getItemType())) { + remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? StrConstant.YES : StrConstant.NO)); + } else if (FormItemTypeEnum.SELECT.getCode().equals(e.getItemType())) { + remoteOptions.forEach((label, value) -> { + if (vauleStr.equals(value)) { + map.put(columnName, label); + } + //放if外面是为了下次取得时候 可以有值 + cache.put(value,label); + }); + } } + } } catch (Exception ex) { - log.error("listRemoteOptions url", ex); + log.warn("listRemoteOptions url", ex); } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 824c8329eb..14b1f5cdae 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -23,10 +23,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.EpmetRequestHolder; -import com.epmet.commons.tools.utils.FileUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcResiUserDao; import com.epmet.dao.IcUserChangeDetailedDao; @@ -1285,6 +1282,46 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } + @Override + public Map listRemoteCascadeOptions(String pureUri, String cascadeItemId, Map columnWrappers, String currentStaffAgencyId, String query) { + ColumnWrapper cascadeItemColumnWrapper = null; + + // 根据uri上的id,找到关联的itemid,从而找到关联的item的值 + if (columnWrappers != null && StringUtils.isNotBlank(cascadeItemId)){ + cascadeItemColumnWrapper = columnWrappers.get(cascadeItemId); + } + + List options = null; + switch (pureUri) { + case "/heart/icresidemanddict/demandoption": + options = getResultDataOrThrowsException(epmetUserOpenFeignClient.getDemandOptions(), ServiceConstant.EPMET_USER_SERVER, + EpmetErrorCode.SERVER_ERROR.getCode(), null, null); + break; + } + if (options == null) { + return null; + } + Map resultMap = new HashMap<>(); + options.forEach(option-> getChildren(option,resultMap)); + return resultMap; + } + + /** + * desc:递归获取children + * @param option + * @param resultMap + * todo 利用泛型 提取到公共类中 + */ + public void getChildren(OptionResultDTO option, Map resultMap) { + resultMap.put(option.getValue(),option); + if (CollectionUtils.isNotEmpty(option.getChildren())){ + option.getChildren().forEach(o->{ + resultMap.put(o.getValue(),o); + getChildren(o,resultMap); + }); + } + } + /** * 更新主表中人员类别标记 * @param icResiUserTableEnum diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 298d1be7eb..c1f5da6855 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -774,8 +774,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl subTables =subTablesRes.getData(); // log.info("1、所有的子表subTables:"+JSON.toJSONString(subTables,true)); //关联哪些子表:查询条件用到的表名+查询的列对应的表 并集去重 - Set whereConditionTables=conditions.stream().map(ResiUserQueryValueDTO::getTableName).collect(Collectors.toSet()); - Set tables = new HashSet<>(whereConditionTables); + Set tables = conditions.stream().map(ResiUserQueryValueDTO::getTableName).collect(Collectors.toSet()); tables.add(resultTableName); if (CollectionUtils.isNotEmpty(exportNeedTableList)){ tables.addAll(exportNeedTableList); @@ -794,7 +793,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl(groupByTables)); return map; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java index d267f45e2a..8a0d48152e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java @@ -42,7 +42,7 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.YuShanSysApiService; -import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.constant.SystemMessageType; import com.epmet.dao.PatrolRoutineWorkDao; import com.epmet.dao.StatsStaffPatrolRecordDailyDao;