diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/controller/BusBiddingLimitListController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/controller/BusBiddingLimitListController.java index 4c77db22..6055b241 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/controller/BusBiddingLimitListController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/controller/BusBiddingLimitListController.java @@ -1,26 +1,24 @@ package org.dromara.bidding.controller; -import java.util.List; - -import lombok.RequiredArgsConstructor; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; -import org.springframework.web.bind.annotation.*; -import org.springframework.validation.annotation.Validated; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.bidding.domain.bo.BusBiddingLimitListBo; +import org.dromara.bidding.domain.vo.BusBiddingLimitListVo; +import org.dromara.bidding.service.IBusBiddingLimitListService; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; -import org.dromara.common.web.core.BaseController; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.core.domain.R; -import org.dromara.common.core.validate.AddGroup; -import org.dromara.common.core.validate.EditGroup; import org.dromara.common.log.enums.BusinessType; -import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.bidding.domain.vo.BusBiddingLimitListVo; -import org.dromara.bidding.domain.bo.BusBiddingLimitListBo; -import org.dromara.bidding.service.IBusBiddingLimitListService; -import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; /** * 成本-投标 @@ -39,10 +37,37 @@ public class BusBiddingLimitListController extends BaseController { /** * 查询成本-投标列表 */ - @SaCheckPermission("bidding:biddingLimitList:list") - @GetMapping("/list") - public TableDataInfo list(BusBiddingLimitListBo bo, PageQuery pageQuery) { - return busBiddingLimitListService.queryPageList(bo, pageQuery); +// @SaCheckPermission("bidding:biddingLimitList:list") +// @GetMapping("/list") +// public TableDataInfo list(BusBiddingLimitListBo bo, PageQuery pageQuery) { +// return busBiddingLimitListService.queryPageList(bo, pageQuery); +// } + + /** + * 查询成本-投标列表 + */ + @SaCheckPermission("bidding:biddingLimitList:getTree") + @GetMapping("/getTree") + public R> getTree(BusBiddingLimitListBo bo) { + return R.ok(busBiddingLimitListService.getTree(bo)); + } + + /** + * 获取所有版本号 + */ + @SaCheckPermission("bidding:biddingLimitList:obtainAllVersionNumbers") + @GetMapping("/obtainAllVersionNumbers") + public R> obtainAllVersionNumbers(BusBiddingLimitListBo bo) { + return R.ok(busBiddingLimitListService.obtainAllVersionNumbers(bo)); + } + + /** + * 获取指定版本的sheet + */ + @SaCheckPermission("bidding:biddingLimitList:sheetList") + @GetMapping("/sheetList") + public R> sheetList(BusBiddingLimitListBo bo) { + return R.ok(busBiddingLimitListService.sheetList(bo)); } /** @@ -56,6 +81,17 @@ public class BusBiddingLimitListController extends BaseController { ExcelUtil.exportExcel(list, "成本-投标", BusBiddingLimitListVo.class, response); } + /** + * 导入成本-投标excel + */ + @SaCheckPermission("bidding:biddingLimitList:importExcelFile") + @Log(title = "成本-投标", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/importExcelFile") + public R importExcelFile(Long projectId, @RequestParam("file") MultipartFile file) { + return toAjax(busBiddingLimitListService.importExcelFile(projectId, file)); + } + /** * 获取成本-投标详细信息 * @@ -64,20 +100,20 @@ public class BusBiddingLimitListController extends BaseController { @SaCheckPermission("bidding:biddingLimitList:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable Long id) { + @PathVariable Long id) { return R.ok(busBiddingLimitListService.queryById(id)); } /** * 新增成本-投标 */ - @SaCheckPermission("bidding:biddingLimitList:add") - @Log(title = "成本-投标", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody BusBiddingLimitListBo bo) { - return toAjax(busBiddingLimitListService.insertByBo(bo)); - } +// @SaCheckPermission("bidding:biddingLimitList:add") +// @Log(title = "成本-投标", businessType = BusinessType.INSERT) +// @RepeatSubmit() +// @PostMapping() +// public R add(@Validated(AddGroup.class) @RequestBody BusBiddingLimitListBo bo) { +// return toAjax(busBiddingLimitListService.insertByBo(bo)); +// } /** * 修改成本-投标 @@ -95,11 +131,11 @@ public class BusBiddingLimitListController extends BaseController { * * @param ids 主键串 */ - @SaCheckPermission("bidding:biddingLimitList:remove") - @Log(title = "成本-投标", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long[] ids) { - return toAjax(busBiddingLimitListService.deleteWithValidByIds(List.of(ids), true)); - } +// @SaCheckPermission("bidding:biddingLimitList:remove") +// @Log(title = "成本-投标", businessType = BusinessType.DELETE) +// @DeleteMapping("/{ids}") +// public R remove(@NotEmpty(message = "主键不能为空") +// @PathVariable Long[] ids) { +// return toAjax(busBiddingLimitListService.deleteWithValidByIds(List.of(ids), true)); +// } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/controller/BusBiddingUserController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/controller/BusBiddingUserController.java index 7046d290..4516dafd 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/controller/BusBiddingUserController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/controller/BusBiddingUserController.java @@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.vo.SysUserVo; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -41,8 +43,17 @@ public class BusBiddingUserController extends BaseController { */ @SaCheckPermission("bidding:biddingUser:list") @GetMapping("/list") - public TableDataInfo list(BusBiddingUserBo bo, PageQuery pageQuery) { - return busBiddingUserService.queryPageList(bo, pageQuery); + public R list(BusBiddingUserBo bo) { + return R.ok(busBiddingUserService.getPersonnel(bo)); + } + + /** + * 查询招投标人员列表 + */ + @SaCheckPermission("bidding:biddingUser:getUser") + @GetMapping("/getUser") + public R> getUser() { + return R.ok(busBiddingUserService.getUser()); } /** @@ -75,7 +86,7 @@ public class BusBiddingUserController extends BaseController { @Log(title = "招投标人员", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody BusBiddingUserBo bo) { + public R add(@RequestBody BusBiddingUserBo bo) { return toAjax(busBiddingUserService.insertByBo(bo)); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/BusBiddingLimitList.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/BusBiddingLimitList.java index 05db6bf6..b684cc03 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/BusBiddingLimitList.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/BusBiddingLimitList.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; +import java.math.BigDecimal; /** * 成本-投标对象 bus_bidding_limit_list @@ -75,12 +76,12 @@ public class BusBiddingLimitList extends BaseEntity { /** * 数量 */ - private Long quantity; + private BigDecimal quantity; /** * 单价 */ - private Long unitPrice; + private BigDecimal unitPrice; /** * 备注 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/BusListOfWinningBids.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/BusListOfWinningBids.java index 23d50f42..0353557f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/BusListOfWinningBids.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/BusListOfWinningBids.java @@ -4,6 +4,9 @@ import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.time.LocalDate; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; @@ -47,12 +50,12 @@ public class BusListOfWinningBids extends BaseEntity { /** * 中标价(原币) */ - private Long winningBidOriginal; + private BigDecimal winningBidOriginal; /** * 汇率 */ - private Long exchangeRate; + private BigDecimal exchangeRate; /** * 币种 @@ -67,17 +70,17 @@ public class BusListOfWinningBids extends BaseEntity { /** * 中标价 */ - private Long winningBid; + private BigDecimal winningBid; /** * 中标日期 */ - private Date bidWinningDate; + private LocalDate bidWinningDate; /** * 投标保证金 */ - private Long bidDeposit; + private BigDecimal bidDeposit; /** * 是否退还 @@ -92,7 +95,7 @@ public class BusListOfWinningBids extends BaseEntity { /** * 总造价 */ - private Long totalCost; + private BigDecimal totalCost; /** * 立项申请人 @@ -107,7 +110,7 @@ public class BusListOfWinningBids extends BaseEntity { /** * 立项申请日期 */ - private Date projectApplicantTime; + private LocalDate projectApplicantTime; /** * 流程状态 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusBiddingLimitListBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusBiddingLimitListBo.java index d47c9535..0e5fb771 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusBiddingLimitListBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusBiddingLimitListBo.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import java.math.BigDecimal; + /** * 成本-投标业务对象 bus_bidding_limit_list * @@ -76,12 +78,12 @@ public class BusBiddingLimitListBo extends BaseEntity { /** * 数量 */ - private Long quantity; + private BigDecimal quantity; /** * 单价 */ - private Long unitPrice; + private BigDecimal unitPrice; /** * 备注 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusListOfWinningBidsBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusListOfWinningBidsBo.java index 05b0340b..d8cf364b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusListOfWinningBidsBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusListOfWinningBidsBo.java @@ -8,6 +8,9 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; + +import java.math.BigDecimal; +import java.time.LocalDate; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; @@ -47,12 +50,12 @@ public class BusListOfWinningBidsBo extends BaseEntity { /** * 中标价(原币) */ - private Long winningBidOriginal; + private BigDecimal winningBidOriginal; /** * 汇率 */ - private Long exchangeRate; + private BigDecimal exchangeRate; /** * 币种 @@ -67,17 +70,17 @@ public class BusListOfWinningBidsBo extends BaseEntity { /** * 中标价 */ - private Long winningBid; + private BigDecimal winningBid; /** * 中标日期 */ - private Date bidWinningDate; + private LocalDate bidWinningDate; /** * 投标保证金 */ - private Long bidDeposit; + private BigDecimal bidDeposit; /** * 是否退还 @@ -92,7 +95,7 @@ public class BusListOfWinningBidsBo extends BaseEntity { /** * 总造价 */ - private Long totalCost; + private BigDecimal totalCost; /** * 立项申请人 @@ -107,7 +110,7 @@ public class BusListOfWinningBidsBo extends BaseEntity { /** * 立项申请日期 */ - private Date projectApplicantTime; + private LocalDate projectApplicantTime; /** * 流程状态 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/vo/BusBiddingLimitListVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/vo/BusBiddingLimitListVo.java index 207c4726..40721d50 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/vo/BusBiddingLimitListVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/vo/BusBiddingLimitListVo.java @@ -7,11 +7,14 @@ import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo; import java.io.Serial; import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; - +import java.util.List; /** @@ -92,13 +95,18 @@ public class BusBiddingLimitListVo implements Serializable { * 数量 */ @ExcelProperty(value = "数量") - private Long quantity; + private BigDecimal quantity; /** * 单价 */ @ExcelProperty(value = "单价") - private Long unitPrice; + private BigDecimal unitPrice; + + /** + * 总价 + */ + private BigDecimal price; /** * 备注 @@ -107,4 +115,9 @@ public class BusBiddingLimitListVo implements Serializable { private String remark; + /** + * 子节点 + */ + private List children = new ArrayList<>(); + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/vo/BusListOfWinningBidsVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/vo/BusListOfWinningBidsVo.java index e8a805c0..04f7cd0f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/vo/BusListOfWinningBidsVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/vo/BusListOfWinningBidsVo.java @@ -1,5 +1,7 @@ package org.dromara.bidding.domain.vo; +import java.math.BigDecimal; +import java.time.LocalDate; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import org.dromara.bidding.domain.BusListOfWinningBids; @@ -57,15 +59,14 @@ public class BusListOfWinningBidsVo implements Serializable { /** * 中标价(原币) */ - @ExcelProperty(value = "中标价", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "原=币") - private Long winningBidOriginal; + @ExcelProperty(value = "中标价(原币)", converter = ExcelDictConvert.class) + private BigDecimal winningBidOriginal; /** * 汇率 */ @ExcelProperty(value = "汇率") - private Long exchangeRate; + private BigDecimal exchangeRate; /** * 币种 @@ -83,19 +84,19 @@ public class BusListOfWinningBidsVo implements Serializable { * 中标价 */ @ExcelProperty(value = "中标价") - private Long winningBid; + private BigDecimal winningBid; /** * 中标日期 */ @ExcelProperty(value = "中标日期") - private Date bidWinningDate; + private LocalDate bidWinningDate; /** * 投标保证金 */ @ExcelProperty(value = "投标保证金") - private Long bidDeposit; + private BigDecimal bidDeposit; /** * 是否退还 @@ -114,7 +115,7 @@ public class BusListOfWinningBidsVo implements Serializable { * 总造价 */ @ExcelProperty(value = "总造价") - private Long totalCost; + private BigDecimal totalCost; /** * 立项申请人 @@ -132,7 +133,7 @@ public class BusListOfWinningBidsVo implements Serializable { * 立项申请日期 */ @ExcelProperty(value = "立项申请日期") - private Date projectApplicantTime; + private LocalDate projectApplicantTime; /** * 流程状态 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/IBusBiddingLimitListService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/IBusBiddingLimitListService.java index 3346d5d2..abde3cac 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/IBusBiddingLimitListService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/IBusBiddingLimitListService.java @@ -7,6 +7,8 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + import java.util.Collection; import java.util.List; @@ -67,4 +69,17 @@ public interface IBusBiddingLimitListService extends IService ids, Boolean isValid); + + /** + * 查询成本-投标表返树形结构数据 + * @param bo + * @return + */ + List getTree(BusBiddingLimitListBo bo); + + Boolean importExcelFile(Long projectId, MultipartFile file); + + List obtainAllVersionNumbers(BusBiddingLimitListBo bo); + + List sheetList(BusBiddingLimitListBo bo); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/IBusBiddingUserService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/IBusBiddingUserService.java index b4264e75..fea9fe73 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/IBusBiddingUserService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/IBusBiddingUserService.java @@ -7,6 +7,9 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.vo.SysUserVo; + import java.util.Collection; import java.util.List; @@ -67,4 +70,12 @@ public interface IBusBiddingUserService extends IService{ * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 获取部门下用户 + * @return + */ + List getUser(); + + BusBiddingUserVo getPersonnel(BusBiddingUserBo bo); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitListServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitListServiceImpl.java index 2019ff04..e026b8ea 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitListServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitListServiceImpl.java @@ -1,24 +1,32 @@ package org.dromara.bidding.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; -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 cn.hutool.core.collection.CollUtil; 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 lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; +import lombok.extern.slf4j.Slf4j; +import org.dromara.bidding.domain.BusBiddingLimitList; import org.dromara.bidding.domain.bo.BusBiddingLimitListBo; import org.dromara.bidding.domain.vo.BusBiddingLimitListVo; -import org.dromara.bidding.domain.BusBiddingLimitList; import org.dromara.bidding.mapper.BusBiddingLimitListMapper; import org.dromara.bidding.service.IBusBiddingLimitListService; +import org.dromara.common.core.constant.HttpStatus; +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.utils.excel.ExcelDynamicReader; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; /** * 成本-投标Service业务层处理 @@ -26,12 +34,11 @@ import java.util.Collection; * @author Lion Li * @date 2025-08-20 */ +@Slf4j @RequiredArgsConstructor @Service public class BusBiddingLimitListServiceImpl extends ServiceImpl implements IBusBiddingLimitListService { - private final BusBiddingLimitListMapper baseMapper; - /** * 查询成本-投标 * @@ -39,7 +46,7 @@ public class BusBiddingLimitListServiceImpl extends ServiceImpl ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public List getTree(BusBiddingLimitListBo bo) { + //获取所有数据 + List listVoList = queryList(bo); + //过滤数量和单价为空的数据并计算总价 + listVoList.stream().filter(vo -> vo.getUnitPrice() != null && vo.getUnitPrice().compareTo(BigDecimal.ZERO) != 0) + .filter(vo -> vo.getQuantity() != null && vo.getQuantity().compareTo(BigDecimal.ZERO) != 0) + .forEach(item -> { + item.setPrice(item.getUnitPrice().multiply(item.getQuantity()).setScale(2, RoundingMode.HALF_UP)); + }); + + //构建父子映射 + Map> parentMap = listVoList.stream() + .collect(Collectors.groupingBy(BusBiddingLimitListVo::getPid)); + //递归组装树形结构 + List treeList = buildTree("0", parentMap); + + return treeList; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean importExcelFile(Long projectId, MultipartFile file) { + + // 跳过1行(表头),读取0到6列(共7列),映射到ExcelData实体类 + List dataList = null; + try { + dataList = ExcelDynamicReader.readExcel( + file, // 上传的文件 + 1, // 跳过1行(表头) + 0, // 从第0列开始 + 12, // 到第12列结束 + BusBiddingLimitListBo.class // 目标实体类 + ); + } catch (Exception e) { + throw new RuntimeException("文件错误" + e.getMessage()); + } + List busBillofquantities = new ArrayList<>(); + List stream = dataList.stream() + .filter(Objects::nonNull) // 过滤掉 null 对象 + .filter(data -> data.getUnitPrice() != null && data.getUnitPrice().compareTo(BigDecimal.ZERO) != 0) + .filter(data -> data.getQuantity() != null && data.getQuantity().compareTo(BigDecimal.ZERO) != 0) + .toList(); + if (CollUtil.isEmpty(stream)) { + throw new ServiceException("表格中无有效数据", HttpStatus.BAD_REQUEST); + } + stream.forEach(item -> { + BusBiddingLimitList limitList = new BusBiddingLimitList(); + limitList.setId(item.getId()); + limitList.setProjectId(item.getProjectId()); + limitList.setUnitPrice(item.getUnitPrice()); + busBillofquantities.add(limitList); + }); + log.info(busBillofquantities.toString()); + + return this.updateBatchById(busBillofquantities); + } + + @Override + public List obtainAllVersionNumbers(BusBiddingLimitListBo bo) { + List busBiddingLimitLists = baseMapper.selectList(new LambdaQueryWrapper() + .select(BusBiddingLimitList::getVersions) + .eq(bo.getProjectId() != null, BusBiddingLimitList::getProjectId, bo.getProjectId()) + .orderByDesc(BusBiddingLimitList::getCreateTime) + .groupBy(BusBiddingLimitList::getVersions)); + return busBiddingLimitLists.stream() + .filter(Objects::nonNull) + .map(BusBiddingLimitList::getVersions) + .collect(Collectors.toList()); + } + + @Override + public List sheetList(BusBiddingLimitListBo bo) { + List busBiddingLimitLists = baseMapper.selectList(new LambdaQueryWrapper() + .select(BusBiddingLimitList::getSheet) + .eq(bo.getProjectId() != null, BusBiddingLimitList::getProjectId, bo.getProjectId()) + .eq(StringUtils.isNotBlank(bo.getVersions()), BusBiddingLimitList::getVersions, bo.getVersions()) + .orderByAsc(BusBiddingLimitList::getSheet) + .groupBy(BusBiddingLimitList::getSheet)); + return busBiddingLimitLists.stream() + .filter(Objects::nonNull) + .map(BusBiddingLimitList::getSheet) + .collect(Collectors.toList()); + } + + /** + * 递归构建树形结构 + * + * @param parentId 父节点ID(顶级节点为0) + * @param parentMap 父子映射表(key=pid,value=子节点列表) + * @return 组装好的子树列表 + */ + private List buildTree(String parentId, Map> parentMap) { + // 获取当前父节点的所有直接子节点 + List children = parentMap.getOrDefault(parentId, Collections.emptyList()); + if (children.isEmpty()) { + return Collections.emptyList(); + } + + // 为每个子节点递归设置其下一级子节点 + for (BusBiddingLimitListVo child : children) { + // 递归查询当前子节点的子节点,设置为它的子树 + List subChildren = buildTree(child.getSid(), parentMap); + // 注意:需要在Vo中添加子节点列表字段,用于存储子树 + child.setChildren(subChildren); + } + + return children; + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingUserServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingUserServiceImpl.java index 1079c284..f28de24a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingUserServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingUserServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.bidding.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.checkerframework.checker.units.qual.A; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -9,6 +10,10 @@ 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.system.domain.SysUser; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.dromara.bidding.domain.bo.BusBiddingUserBo; import org.dromara.bidding.domain.vo.BusBiddingUserVo; @@ -31,6 +36,8 @@ import java.util.Collection; public class BusBiddingUserServiceImpl extends ServiceImpl implements IBusBiddingUserService { private final BusBiddingUserMapper baseMapper; + @Autowired + private ISysUserService sysUserService; /** * 查询招投标人员 @@ -87,6 +94,13 @@ public class BusBiddingUserServiceImpl extends ServiceImpl 0; @@ -130,4 +144,14 @@ public class BusBiddingUserServiceImpl extends ServiceImpl 0; } + + @Override + public List getUser() { + return sysUserService.findThis(); + } + + @Override + public BusBiddingUserVo getPersonnel(BusBiddingUserBo bo) { + return baseMapper.selectVoOne(new LambdaQueryWrapper().eq(BusBiddingUser::getProjectId, bo.getProjectId())); + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/BusBillofquantitiesLimitListController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/BusBillofquantitiesLimitListController.java index 65d3ed62..655a4d01 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/BusBillofquantitiesLimitListController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/BusBillofquantitiesLimitListController.java @@ -90,7 +90,7 @@ public class BusBillofquantitiesLimitListController extends BaseController { /** * 导入excel */ - @SaCheckPermission("design:billofquantitiesLimitList:importExcelFile") + @SaCheckPermission("tender:billofquantitiesLimitList:importExcelFile") @Log(title = "导入excel", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/importExcelFile") diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/BusSegmentedIndicatorPlanningController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/BusSegmentedIndicatorPlanningController.java index 3739c1b0..3331802a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/BusSegmentedIndicatorPlanningController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/BusSegmentedIndicatorPlanningController.java @@ -8,6 +8,7 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import org.dromara.common.core.exception.ServiceException; +import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo; import org.dromara.tender.domain.TenderPlanFile; import org.dromara.tender.service.impl.TenderPlanFileServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -58,6 +59,18 @@ public class BusSegmentedIndicatorPlanningController extends BaseController { return busSegmentedIndicatorPlanningService.queryPageList(bo, pageQuery); } + @SaCheckPermission("tender:segmentedIndicatorPlanning:getMore") + @GetMapping("/getMore") + public R> getMore(BusSegmentedIndicatorPlanningBo bo) { +// if (bo.getProjectId() == null) { +// throw new ServiceException("项目id不能为空"); +// } + if (bo.getId() == null) { + throw new ServiceException("id不能为空"); + } + return R.ok(busSegmentedIndicatorPlanningService.getMore(bo)); + } + /** * 导出分标策划列表 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/bo/BusSegmentedIndicatorPlanningBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/bo/BusSegmentedIndicatorPlanningBo.java index 13686dbe..0aee5c1c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/bo/BusSegmentedIndicatorPlanningBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/bo/BusSegmentedIndicatorPlanningBo.java @@ -35,7 +35,7 @@ public class BusSegmentedIndicatorPlanningBo extends BaseEntity { * 项目Id */ // @NotNull(message = "项目Id不能为空", groups = { AddGroup.class, EditGroup.class }) -// private Long projectId; + private Long projectId; /** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/mapper/BusBillofquantitiesLimitListMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/mapper/BusBillofquantitiesLimitListMapper.java index efbbdc45..4eeada5a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/mapper/BusBillofquantitiesLimitListMapper.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/mapper/BusBillofquantitiesLimitListMapper.java @@ -1,9 +1,12 @@ package org.dromara.tender.mapper; +import org.apache.ibatis.annotations.Param; import org.dromara.tender.domain.BusBillofquantitiesLimitList; import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import java.util.List; + /** * 限价一览Mapper接口 * @@ -12,4 +15,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface BusBillofquantitiesLimitListMapper extends BaseMapperPlus { + + List selectListBySids(@Param("sids") List sids); } 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 f6e857cb..ce589c09 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 @@ -94,4 +94,6 @@ public interface IBusBillofquantitiesLimitListService extends IService getListByIds(List ids); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/IBusSegmentedIndicatorPlanningService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/IBusSegmentedIndicatorPlanningService.java index 851be8c1..65ee155d 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/IBusSegmentedIndicatorPlanningService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/IBusSegmentedIndicatorPlanningService.java @@ -1,5 +1,6 @@ package org.dromara.tender.service; +import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo; import org.dromara.tender.domain.vo.BusSegmentedIndicatorPlanningVo; import org.dromara.tender.domain.bo.BusSegmentedIndicatorPlanningBo; import org.dromara.tender.domain.BusSegmentedIndicatorPlanning; @@ -69,4 +70,6 @@ public interface IBusSegmentedIndicatorPlanningService extends IService ids, Boolean isValid); + + List getMore(BusSegmentedIndicatorPlanningBo bo); } 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 3db3069c..3d9b614c 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 @@ -79,7 +79,7 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl buildQueryWrapper(BusBillofquantitiesLimitListBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.orderByDesc(BusBillofquantitiesLimitList::getId); +// lqw.orderByDesc(BusBillofquantitiesLimitList::getId); lqw.eq(bo.getProjectId() != null, BusBillofquantitiesLimitList::getProjectId, bo.getProjectId()); lqw.eq(StringUtils.isNotBlank(bo.getVersions()), BusBillofquantitiesLimitList::getVersions, bo.getVersions()); lqw.eq(StringUtils.isNotBlank(bo.getSheet()), BusBillofquantitiesLimitList::getSheet, bo.getSheet()); @@ -90,8 +90,7 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl 0; @@ -154,6 +150,7 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl getTree(BusBillofquantitiesLimitListBo bo) { //获取所有数据 List listVoList = queryList(bo); + //过滤数量和单价为空的数据并计算总价 listVoList.stream().filter(vo -> vo.getUnitPrice() !=null && vo.getUnitPrice().compareTo(BigDecimal.ZERO) != 0) .filter(vo ->vo.getQuantity() !=null && vo.getQuantity().compareTo(BigDecimal.ZERO) != 0) .forEach(item -> { @@ -211,32 +208,31 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl busBillofquantities = new ArrayList(); dataList.stream() .filter(Objects::nonNull) // 过滤掉 null 对象 - .filter(data-> data.getUnitPrice() !=null && data.getUnitPrice().compareTo(BigDecimal.ZERO) != 0) - .filter(data ->data.getQuantity() !=null && data.getQuantity().compareTo(BigDecimal.ZERO) != 0) + .filter(data-> data.getUnitPrice() !=null && data.getUnitPrice().compareTo(BigDecimal.ZERO) != 0)//过滤单价为空的数据 + .filter(data ->data.getQuantity() !=null && data.getQuantity().compareTo(BigDecimal.ZERO) != 0)//过滤数量为空的数据 .forEach(item -> { BusBillofquantitiesLimitList limitList = new BusBillofquantitiesLimitList(); limitList.setId(item.getId()); - limitList.setProjectId(item.getProjectId()); + limitList.setProjectId(id); limitList.setUnitPrice(item.getUnitPrice()); busBillofquantities.add(limitList); }); - -// //1、获取到解析数据 -// ExcelReader.ExcelData excelData = ExcelReader.readExcelFromMultipartFile(file); -// // 2. 解析所有工作表,转换为带父子关系的ExcelMaterial列表 解析所有Sheet数据,按规则生成sid和pid -// List allMaterials = new ArrayList<>(); -// for (ExcelReader.SheetData sheetData : excelData.getSheetDataList()) { -//// String sheetName = sheetData.getSheetName(); -// List> rowDataList = sheetData.getData(); -// -// //获取字段为id和单价 -// List limitListArrayList = new ArrayList<>(); -// -// } return baseMapper.updateBatchById(busBillofquantities); } + @Override + public List getListByIds(List ids) { + List limitListList = baseMapper.selectBatchIds(ids); + List sids = new ArrayList<>(); + limitListList.forEach(item -> { + sids.add(item.getSid()); + }); + List listVoList = baseMapper.selectListBySids(sids); + + return listVoList; + } + /** * 递归构建树形结构 * @param parentId 父节点ID(顶级节点为0) 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 321772f7..d24ab49a 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 @@ -10,6 +10,13 @@ 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; @@ -22,13 +29,17 @@ 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; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; /** * 分标策划Service业务层处理 @@ -53,7 +64,7 @@ public class BusSegmentedIndicatorPlanningServiceImpl extends ServiceImpl planningLimitListList = new ArrayList<>(); for (BusIndicatorPlanningLimitListBo limitListBo : bo.getLimitListBos()) { BusIndicatorPlanningLimitList busIndicatorPlanningLimitList = new BusIndicatorPlanningLimitList(); @@ -121,11 +133,13 @@ public class BusSegmentedIndicatorPlanningServiceImpl extends ServiceImpl ids, Boolean isValid) { - if (isValid) { + if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 + //删除子表数据 + for (Long id : ids) { + indicatorPlanningLimitListMapper.delete(new LambdaQueryWrapper() + .eq(BusIndicatorPlanningLimitList::getSegmentedIndicatorId, id)); + + } + } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public List getMore(BusSegmentedIndicatorPlanningBo bo) { + List planningLimitListList = indicatorPlanningLimitListMapper.selectList(new LambdaQueryWrapper() + .eq(BusIndicatorPlanningLimitList::getSegmentedIndicatorId, bo.getId())); + List ids = new ArrayList<>(); + for (BusIndicatorPlanningLimitList planningLimitList : planningLimitListList) { + ids.add(planningLimitList.getLimitListId()); + } + List billofquantitiesLimitListList = busBillofquantitiesLimitListService.getListByIds(ids); + List list = billofquantitiesLimitListList.stream().distinct().collect(Collectors.toList()); + for (BusBillofquantitiesLimitListVo limitList : list) { + for (BusIndicatorPlanningLimitList limitList1 : planningLimitListList) { + if (limitList.getId().equals(limitList1.getLimitListId())){ + limitList.setQuantity(limitList1.getNum()); + if (limitList.getUnitPrice() != null && limitList.getQuantity() != null) { + limitList.setPrice(limitList.getUnitPrice().multiply(limitList.getQuantity()).setScale(2, RoundingMode.HALF_UP)); + } + break; + } + } + } + +// List list = new ArrayList<>(); +// list1.forEach(item -> { +// list.add(MapstructUtils.convert(item, BusBillofquantitiesLimitListVo.class)); +// }); + //构建父子映射 + Map> parentMap = list.stream() + .collect(Collectors.groupingBy(BusBillofquantitiesLimitListVo::getPid)); + //递归组装树形结构 + + return buildTree("0", parentMap); + + } + + /** + * 递归构建树形结构 + * @param parentId 父节点ID(顶级节点为0) + * @param parentMap 父子映射表(key=pid,value=子节点列表) + * @return 组装好的子树列表 + */ + private List buildTree(String parentId, Map> parentMap) { + // 获取当前父节点的所有直接子节点 + List children = parentMap.getOrDefault(parentId, Collections.emptyList()); + if (children.isEmpty()) { + return Collections.emptyList(); + } + + // 为每个子节点递归设置其下一级子节点 + for (BusBillofquantitiesLimitListVo child : children) { + // 递归查询当前子节点的子节点,设置为它的子树 + List subChildren = buildTree(child.getSid(), parentMap); + // 注意:需要在Vo中添加子节点列表字段,用于存储子树 + child.setChildren(subChildren); + } + + return children; + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/tender/BusBillofquantitiesLimitListMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/tender/BusBillofquantitiesLimitListMapper.xml index 16b2f11c..bb871db0 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/tender/BusBillofquantitiesLimitListMapper.xml +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/tender/BusBillofquantitiesLimitListMapper.xml @@ -4,4 +4,65 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + + + + + + + + + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/tender/BusIndicatorPlanningLimitListMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/tender/BusIndicatorPlanningLimitListMapper.xml index a79e61f1..a8954cb5 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/tender/BusIndicatorPlanningLimitListMapper.xml +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/tender/BusIndicatorPlanningLimitListMapper.xml @@ -5,8 +5,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"