diff --git a/nursing-unit-config/nu-config-biz/src/main/java/com/nu/modules/ConfigMaterial/entity/ConfigMaterialCategory.java b/nursing-unit-config/nu-config-biz/src/main/java/com/nu/modules/ConfigMaterial/entity/ConfigMaterialCategory.java index 14762d7..9b7d7f6 100644 --- a/nursing-unit-config/nu-config-biz/src/main/java/com/nu/modules/ConfigMaterial/entity/ConfigMaterialCategory.java +++ b/nursing-unit-config/nu-config-biz/src/main/java/com/nu/modules/ConfigMaterial/entity/ConfigMaterialCategory.java @@ -80,4 +80,9 @@ public class ConfigMaterialCategory implements Serializable { private String typeId; @TableField(exist = false) private String medicationId; + + @TableField(exist = false) + private Integer categoryRowSpan; + @TableField(exist = false) + private Integer typeRowSpan; } diff --git a/nursing-unit-config/nu-config-biz/src/main/java/com/nu/modules/ConfigMaterial/service/impl/ConfigMaterialCategoryServiceImpl.java b/nursing-unit-config/nu-config-biz/src/main/java/com/nu/modules/ConfigMaterial/service/impl/ConfigMaterialCategoryServiceImpl.java index 243f697..51b11bb 100644 --- a/nursing-unit-config/nu-config-biz/src/main/java/com/nu/modules/ConfigMaterial/service/impl/ConfigMaterialCategoryServiceImpl.java +++ b/nursing-unit-config/nu-config-biz/src/main/java/com/nu/modules/ConfigMaterial/service/impl/ConfigMaterialCategoryServiceImpl.java @@ -10,6 +10,7 @@ import com.nu.modules.ConfigMaterial.mapper.ConfigMaterialCategoryMapper; import com.nu.modules.ConfigMaterial.mapper.ConfigMaterialMedicationMapper; import com.nu.modules.ConfigMaterial.mapper.ConfigMaterialTypeMapper; import com.nu.modules.ConfigMaterial.service.IConfigMaterialCategoryService; +import com.nu.modules.serviceDirective.entity.ConfigServiceDirective; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -35,7 +36,75 @@ public class ConfigMaterialCategoryServiceImpl extends ServiceImpl selectMaterialList(Page page, QueryWrapper queryWrapper) { - return baseMapper.selectMaterialList(page,queryWrapper); + IPage pageList = baseMapper.selectMaterialList(page,queryWrapper); + List list = pageList.getRecords(); + //按照list 的categoryId字段获取相同数据开始和结束标记 + String categoryId = list.get(0).getCategoryId(); + int outerStart = 0; // 一级分组起始索引 + for (int i = 0; i < list.size(); i++) { + ConfigMaterialCategory configMaterialCategory = list.get(i); + // 当遇到不同的categoryId时处理当前分组 + if (!configMaterialCategory.getCategoryId().equals(categoryId)) { + processAllGroups(list, outerStart, i - 1); // 处理完整个一级分组 + outerStart = i; // 重置一级起始位置 + categoryId = configMaterialCategory.getCategoryId(); + } + } + processAllGroups(list, outerStart, list.size() - 1); // 处理最后一组 + return pageList; + } + + + /** + * 处理完整个一级分组(包含二级和三级分组) + * + * @param records 记录列表 + * @param start 当前分组的起始索引 + * @param end 当前分组的结束索引 + */ + private void processAllGroups(List records, int start, int end) { + processOuterGroup(records, start, end); // 处理一级categoryRowSpan + + int innerStart = start; // 二级分组起始索引 + String currentTypeId = records.get(innerStart).getTypeId(); + + // 二级循环:处理当前一级分组内的typeId分组 + for (int j = innerStart + 1; j <= end; j++) { + if (!records.get(j).getTypeId().equals(currentTypeId)) { + processMiddleGroup(records, innerStart, j - 1); // 处理完整个二级分组 + innerStart = j; + currentTypeId = records.get(j).getTypeId(); + } + } + processMiddleGroup(records, innerStart, end); // 处理最后一组二级数据 + } + + // 处理一级categoryRowSpan(与之前保持一致) + private void processOuterGroup(List records, int start, int end) { + int count = end - start + 1; + if (count > 1) { + records.get(start).setCategoryRowSpan(count); + for (int i = start + 1; i <= end; i++) { + records.get(i).setCategoryRowSpan(0); + } + } + } + + /** + * 处理二级typeId分组(包含三级instructionTagId分组) + * + * @param records 记录列表 + * @param start 当前分组的起始索引 + * @param end 当前分组的结束索引 + */ + private void processMiddleGroup(List records, int start, int end) { + int count = end - start + 1; + if (count > 1) { + records.get(start).setTypeRowSpan(count); + for (int i = start + 1; i <= end; i++) { + records.get(i).setTypeRowSpan(0); + } + } } @Override diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/mapper/xml/RegionInfoMapper.xml b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/mapper/xml/RegionInfoMapper.xml index 80840c8..386464a 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/mapper/xml/RegionInfoMapper.xml +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/mapper/xml/RegionInfoMapper.xml @@ -3,7 +3,7 @@