diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/IBusBillofquantitiesLimitListService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/IBusBillofquantitiesLimitListService.java index 151501d8..acdf2e56 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/IBusBillofquantitiesLimitListService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/IBusBillofquantitiesLimitListService.java @@ -105,4 +105,6 @@ public interface IBusBillofquantitiesLimitListService extends IService planningLimitListList = new ArrayList<>(); + Set planningLimitListList = new HashSet<>(); for (BusTenderPlanningLimitListBo limitListBo : bo.getLimitListBos()) { BusTenderPlanningLimitList busTenderPlanningLimitList = new BusTenderPlanningLimitList(); busTenderPlanningLimitList.setLimitListId(limitListBo.getLimitListId()); @@ -167,6 +157,7 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl 0 ? "公招":"邀标"); add.setPrice(price); @@ -391,4 +382,34 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl getPidVO(String pId, Set planningLimitListList, Long id) { + // 终止条件:pId 为 null 或等于 "0",表示已到达根节点 + if (pId == null || Objects.equals(pId, "0")) { + return planningLimitListList; + } + + try { + // 查询当前节点的 VO + BusBillofquantitiesLimitListVo vo = busBillofquantitiesLimitListService.queryBySId(pId); + if (vo == null) { + return planningLimitListList; // 当前节点不存在,直接返回已有集合 + } + + // 创建关联对象并添加到集合 + BusTenderPlanningLimitList tenderPlanningLimitList = new BusTenderPlanningLimitList(); + tenderPlanningLimitList.setBiddingPlanId(id); + tenderPlanningLimitList.setLimitListId(vo.getId()); + planningLimitListList.add(tenderPlanningLimitList); + + // 递归处理父节点 + return getPidVO(vo.getPid(), planningLimitListList, id); + + } catch (Exception e) { + // 异常处理(可选) + log.error("Error while getting parent nodes: ", e); + return planningLimitListList; + } + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBillofquantitiesLimitListServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBillofquantitiesLimitListServiceImpl.java index eb33c3a6..b12f5e49 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBillofquantitiesLimitListServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBillofquantitiesLimitListServiceImpl.java @@ -267,15 +267,9 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl getListByIds(List ids) { - List limitListList = baseMapper.selectBatchIds(ids); - List sids = new ArrayList<>(); - limitListList.forEach(item -> { - sids.add(item.getSid()); - }); - if (sids.isEmpty()) { - return new ArrayList<>(); - } - List listVoList = baseMapper.selectListBySids(sids); + List listVoList = baseMapper.selectVoList(new LambdaQueryWrapper() + .in(BusBillofquantitiesLimitList::getId, ids) + .orderByAsc(BusBillofquantitiesLimitList::getSid)); return listVoList; } @@ -285,6 +279,11 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl().eq(BusBillofquantitiesLimitList::getSid, pid)); + } + /** * 递归构建树形结构 * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusSegmentedIndicatorPlanningServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusSegmentedIndicatorPlanningServiceImpl.java index c12847bc..a6dbe25c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusSegmentedIndicatorPlanningServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusSegmentedIndicatorPlanningServiceImpl.java @@ -4,19 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import lombok.RequiredArgsConstructor; -import org.dromara.common.translation.annotation.Translation; -import org.dromara.tender.domain.BusBillofquantitiesLimitList; import org.dromara.tender.domain.BusIndicatorPlanningLimitList; import org.dromara.tender.domain.BusSegmentedIndicatorPlanning; import org.dromara.tender.domain.bo.BusIndicatorPlanningLimitListBo; @@ -29,11 +23,6 @@ import org.dromara.tender.service.IBusBillofquantitiesLimitListService; import org.dromara.tender.service.IBusSegmentedIndicatorPlanningService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.dromara.tender.domain.bo.BusSegmentedIndicatorPlanningBo; -import org.dromara.tender.domain.vo.BusSegmentedIndicatorPlanningVo; -import org.dromara.tender.domain.BusSegmentedIndicatorPlanning; -import org.dromara.tender.mapper.BusSegmentedIndicatorPlanningMapper; -import org.dromara.tender.service.IBusSegmentedIndicatorPlanningService; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; @@ -124,7 +113,7 @@ public class BusSegmentedIndicatorPlanningServiceImpl extends ServiceImpl planningLimitListList = new ArrayList<>(); + Set planningLimitListList = new HashSet<>(); for (BusIndicatorPlanningLimitListBo limitListBo : bo.getLimitListBos()) { BusIndicatorPlanningLimitList busIndicatorPlanningLimitList = new BusIndicatorPlanningLimitList(); busIndicatorPlanningLimitList.setLimitListId(limitListBo.getLimitListId()); @@ -139,6 +128,7 @@ public class BusSegmentedIndicatorPlanningServiceImpl extends ServiceImpl getPidVO(String pId, Set planningLimitListList, Long id) { + // 终止条件:pId 为 null 或等于 "0",表示已到达根节点 + if (pId == null || Objects.equals(pId, "0")) { + return planningLimitListList; + } + + try { + // 查询当前节点的 VO + BusBillofquantitiesLimitListVo vo = busBillofquantitiesLimitListService.queryBySId(pId); + if (vo == null) { + return planningLimitListList; // 当前节点不存在,直接返回已有集合 + } + + // 创建关联对象并添加到集合 + BusIndicatorPlanningLimitList busIndicatorPlanningLimitList = new BusIndicatorPlanningLimitList(); + busIndicatorPlanningLimitList.setSegmentedIndicatorId(id); + busIndicatorPlanningLimitList.setLimitListId(vo.getId()); + planningLimitListList.add(busIndicatorPlanningLimitList); + + // 递归处理父节点 + return getPidVO(vo.getPid(), planningLimitListList, id); + + } catch (Exception e) { + // 异常处理(可选) + log.error("Error while getting parent nodes: ", e); + return planningLimitListList; + } + } }