This commit is contained in:
1378012178@qq.com 2025-03-20 10:20:41 +08:00
commit d38a2a0a9f
3 changed files with 77 additions and 3 deletions

View File

@ -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;
}

View File

@ -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<ConfigMateria
@Override
public IPage<ConfigMaterialCategory> selectMaterialList(Page<ConfigMaterialCategory> page, QueryWrapper<ConfigMaterialCategory> queryWrapper) {
return baseMapper.selectMaterialList(page,queryWrapper);
IPage<ConfigMaterialCategory> pageList = baseMapper.selectMaterialList(page,queryWrapper);
List<ConfigMaterialCategory> 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<ConfigMaterialCategory> 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<ConfigMaterialCategory> 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<ConfigMaterialCategory> 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

View File

@ -3,7 +3,7 @@
<mapper namespace="com.nu.modules.tplink.region.mapper.RegionInfoMapper">
<select id="getByRegionId" parameterType="java.util.Map" resultType="com.nu.modules.tplink.region.entity.RegionInfo">
select id,
select a.id,
a.region_id as regionId,
a.region_name as regionName,
a.region_level as regionLevel,
@ -19,7 +19,7 @@
a.media_server_id as mediaServerId,
a.backup_media_server_id as backupMediaServerId,
a.bind_type as bindType
from nu_iot_tplink_region a,
from nu_iot_tplink_region a
left join nu_iot_tplink_region p on a.parent_id = p.region_id
where a.region_id = #{regionId}
</select>