diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesVersionsServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesVersionsServiceImpl.java index 8fb95244..8e9428e2 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesVersionsServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesVersionsServiceImpl.java @@ -47,9 +47,12 @@ import org.dromara.system.service.ISysOssService; import org.dromara.tender.domain.BusBLimitListVersions; import org.dromara.tender.domain.BusBillofquantitiesLimitList; import org.dromara.tender.domain.vo.BusBLimitListVersionsVo; +import org.dromara.tender.enums.LimitListTypeEnum; import org.dromara.tender.service.IBusBLimitListVersionsService; import org.dromara.tender.service.IBusBillofquantitiesLimitListService; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj; import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjService; import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService; import org.dromara.xzd.domain.XzdProject; import org.dromara.xzd.service.IXzdProjectService; @@ -87,6 +90,7 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl().eq(BusProjectDept::getProjectId, versions.getProjectId())); + if (projectDept != null){ + zjhcb.setDeptId(projectDept.getDeptId()); + } + zjhcb.setVesions(busBLimitListVersions.getVersions()); + zjhcb.setSysProjectId(versions.getProjectId()); + String banBen = BatchNumberGenerator.generateBatchNumber("LXCBJDCBFJZC-"); + zjhcb.setDocCode(banBen); + XzdProject xzdProject = xzdProjectService.getBaseMapper().selectOne(new LambdaQueryWrapper().eq(XzdProject::getSysProjectId, versions.getProjectId())); + if (xzdProject != null){ + zjhcb.setProjectId(xzdProject.getId()); + zjhcb.setProjectLeader(xzdProject.getManagerResponsible()); + Long count = xzdCbysJdcbfjService.getBaseMapper().selectCount(new LambdaQueryWrapper() + .eq(XzdCbysJdcbfj::getSysProjectId, versions.getProjectId()) + .eq(XzdCbysJdcbfj::getVesions, busBLimitListVersions.getVersions()) + .eq(XzdCbysJdcbfj::getType, LimitListTypeEnum.SUB_COMPANY.getCode())); + zjhcb.setDocTitle(count == 0 ? xzdProject.getProjectName() :xzdProject.getProjectName()+count); + }else { + zjhcb.setDocTitle(banBen); + } + zjhcb.setDocDate(LocalDate.now()); + zjhcb.setBudgetCategory("1"); + zjhcb.setType(LimitListTypeEnum.SUB_COMPANY.getCode()); + boolean save1 = xzdCbysJdcbfjService.save(zjhcb); + if (!save1) { + log.info("新增失败"); + } } } @@ -845,6 +877,34 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl().eq(BusProjectDept::getProjectId, versions.getProjectId())); + if (projectDept != null){ + zjhcb.setDeptId(projectDept.getDeptId()); + } + zjhcb.setVesions(busBLimitListVersions.getVersions()); + zjhcb.setSysProjectId(versions.getProjectId()); + String banBen = BatchNumberGenerator.generateBatchNumber("LXCBJDCBFJWZ-"); + zjhcb.setDocCode(banBen); + XzdProject xzdProject = xzdProjectService.getBaseMapper().selectOne(new LambdaQueryWrapper().eq(XzdProject::getSysProjectId, versions.getProjectId())); + if (xzdProject != null){ + zjhcb.setProjectId(xzdProject.getId()); + zjhcb.setProjectLeader(xzdProject.getManagerResponsible()); + Long count = xzdCbysJdcbfjService.getBaseMapper().selectCount(new LambdaQueryWrapper() + .eq(XzdCbysJdcbfj::getSysProjectId, versions.getProjectId()) + .eq(XzdCbysJdcbfj::getVesions, busBLimitListVersions.getVersions()) + .eq(XzdCbysJdcbfj::getType, LimitListTypeEnum.SPECIAL.getCode())); + zjhcb.setDocTitle(count == 0 ? xzdProject.getProjectName() :xzdProject.getProjectName()+count); + }else { + zjhcb.setDocTitle(banBen); + } + zjhcb.setDocDate(LocalDate.now()); + zjhcb.setBudgetCategory("1"); + zjhcb.setType(LimitListTypeEnum.SPECIAL.getCode()); + boolean save1 = xzdCbysJdcbfjService.save(zjhcb); + if (!save1) { + log.info("新增失败"); + } } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java index 17777b6e..b0d92c90 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java @@ -571,9 +571,9 @@ public class BusProjectServiceImpl extends ServiceImpl getZjhcbTree(BusBillofquantitiesLimitListBo bo); List getVoByVersion(Long sysProjectId, String vesion); + + List getJdcbfjTree(BusBillofquantitiesLimitListBo 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 248fdf6a..25d8721e 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 @@ -396,6 +396,26 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl getJdcbfjTree(BusBillofquantitiesLimitListBo bo) { + //获取所有数据 + List listVoList = baseMapper.selectVoList(new LambdaQueryWrapper() + .eq(bo.getProjectId() != null,BusBillofquantitiesLimitList::getProjectId, bo.getProjectId()) + .eq(StringUtils.isNotBlank(bo.getType()),BusBillofquantitiesLimitList::getType, bo.getType()) + .eq(StringUtils.isNotBlank(bo.getVersions()),BusBillofquantitiesLimitList::getVersions, bo.getVersions()) + .eq(StringUtils.isNotBlank(bo.getSheet()),BusBillofquantitiesLimitList::getSheet, bo.getSheet())); + + //构建父子映射 + Map> parentMap = listVoList.stream() + .collect(Collectors.groupingBy(BusBillofquantitiesLimitListVo::getPid)); + //递归组装树形结构 + List treeList = buildTree("0", parentMap); + for (BusBillofquantitiesLimitListVo item : treeList) { + calculateTreePrice(item); + } + return treeList; + } + /** * 递归构建树形结构 * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysJdcbfjController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysJdcbfjController.java index 77543222..d24dc77d 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysJdcbfjController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysJdcbfjController.java @@ -16,6 +16,9 @@ import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; +import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo; +import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo; +import org.dromara.tender.enums.LimitListTypeEnum; import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo; import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo; import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo; @@ -49,6 +52,26 @@ public class XzdCbysJdcbfjController extends BaseController { @Lazy private final IXzdCbysZjhcbService xzdCbysZjhcbService; + /** + * 获取指定版本的sheet + */ + @SaCheckPermission(value = {"costBudget:cbysJdcbfj:list","costBudget:cbysJdcbfj:add","costBudget:cbysJdcbfj:edit"},mode = SaMode.OR) + @GetMapping("/sheetList") + public R> sheetList(XzdCbysJdcbfjBo bo) { + bo.setType(LimitListTypeEnum.SUB_COMPANY.getCode()); + return R.ok(xzdCbysJdcbfjService.sheetList(bo)); + } + + /** + * 查询限价一览列表 + */ + @SaCheckPermission(value = {"costBudget:cbysJdcbfj:list","costBudget:cbysJdcbfj:add","costBudget:cbysJdcbfj:edit"},mode = SaMode.OR) + @GetMapping("/getTree") + public R> getTree(BusBillofquantitiesLimitListBo bo) { + bo.setType(LimitListTypeEnum.SUB_COMPANY.getCode()); + return R.ok(xzdCbysJdcbfjService.getTree(bo)); + } + /** * 查询立项及成本-成本预算-总体计划成本列表 */ @@ -77,6 +100,7 @@ public class XzdCbysJdcbfjController extends BaseController { @SaCheckPermission("costBudget:cbysJdcbfj:list") @GetMapping("/list") public TableDataInfo list(XzdCbysJdcbfjBo bo, PageQuery pageQuery) { + bo.setType(LimitListTypeEnum.SPECIAL.getCode()); return xzdCbysJdcbfjService.queryPageList(bo, pageQuery); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysJdcbfjWzController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysJdcbfjWzController.java new file mode 100644 index 00000000..da69407d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysJdcbfjWzController.java @@ -0,0 +1,176 @@ +package org.dromara.xzd.costProjectApproval.costBudget.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +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.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo; +import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo; +import org.dromara.tender.enums.LimitListTypeEnum; +import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjService; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService; +import org.dromara.xzd.domain.bo.XzdBusinessSealBo; +import org.dromara.xzd.domain.vo.XzdBusinessSealVo; +import org.dromara.xzd.service.IXzdBusinessSealService; +import org.springframework.context.annotation.Lazy; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 立项及成本-成本预算-阶段成本分解 + * + * @author Lion Li + * @date 2025-10-17 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/xzd/costBudget/cbysJdcbfjwz") +public class XzdCbysJdcbfjWzController extends BaseController { + + private final IXzdCbysJdcbfjService xzdCbysJdcbfjService; + private final IXzdBusinessSealService xzdBusinessSealService; + + @Lazy + @Resource + private IXzdCbysZjhcbService xzdCbysZjhcbService; + + /** + * 获取指定版本的sheet + */ + @SaCheckPermission(value = {"costBudget:cbysJdcbfjwz:list","costBudget:cbysJdcbfjwz:add","costBudget:cbysJdcbfjwz:edit"},mode = SaMode.OR) + @GetMapping("/sheetList") + public R> sheetList(XzdCbysJdcbfjBo bo) { + bo.setType(LimitListTypeEnum.SPECIAL.getCode()); + return R.ok(xzdCbysJdcbfjService.sheetList(bo)); + } + + /** + * 查询限价一览列表 + */ + @SaCheckPermission(value = {"costBudget:cbysJdcbfjwz:list","costBudget:cbysJdcbfjwz:add","costBudget:cbysJdcbfjwz:edit"},mode = SaMode.OR) + @GetMapping("/getTree") + public R> getTree(BusBillofquantitiesLimitListBo bo) { + bo.setType(LimitListTypeEnum.SPECIAL.getCode()); + return R.ok(xzdCbysJdcbfjService.getTree(bo)); + } + + /** + * 查询立项及成本-成本预算-总体计划成本列表 + */ + @SaCheckPermission(value = {"costBudget:cbysJdcbfjwz:add","costBudget:cbysJdcbfjwz:edit","costBudget:cbysJdcbfjwz:list"}, mode = SaMode.OR) + @GetMapping("/getList") + public TableDataInfo list(XzdCbysZjhcbBo bo, PageQuery pageQuery) { + return xzdCbysZjhcbService.queryPageList(bo, pageQuery); + } + + + /** + * 获取立项及成本-成本预算-总体计划成本详细信息 + * + * @param id 主键 + */ + @SaCheckPermission(value = {"costBudget:cbysJdcbfjwz:add","costBudget:cbysJdcbfjwz:edit","costBudget:cbysJdcbfjwz:list"},mode = SaMode.OR) + @GetMapping("/get/{id}") + public R getCbysZjhcbInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdCbysZjhcbService.queryById(id)); + } + + /** + * 查询立项及成本-成本预算-阶段成本分解列表 + */ + @SaCheckPermission("costBudget:cbysJdcbfjwz:list") + @GetMapping("/list") + public TableDataInfo list(XzdCbysJdcbfjBo bo, PageQuery pageQuery) { + bo.setType(LimitListTypeEnum.SPECIAL.getCode()); + return xzdCbysJdcbfjService.queryPageList(bo, pageQuery); + } + + /** + * 导出立项及成本-成本预算-阶段成本分解列表 + */ + @SaCheckPermission("costBudget:cbysJdcbfjwz:export") + @Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdCbysJdcbfjBo bo, HttpServletResponse response) { + List list = xzdCbysJdcbfjService.queryList(bo); + ExcelUtil.exportExcel(list, "立项及成本-成本预算-阶段成本分解", XzdCbysJdcbfjVo.class, response); + } + + /** + * 获取立项及成本-成本预算-阶段成本分解详细信息 + * + * @param id 主键 + */ +// @SaCheckPermission("costBudget:cbysJdcbfjwz:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdCbysJdcbfjService.queryById(id)); + } + + /** + * 新增立项及成本-成本预算-阶段成本分解 + */ + @SaCheckPermission("costBudget:cbysJdcbfjwz:add") + @Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdCbysJdcbfjBo bo) { + return toAjax(xzdCbysJdcbfjService.insertByBo(bo)); + } + + /** + * 修改立项及成本-成本预算-阶段成本分解 + */ + @SaCheckPermission("costBudget:cbysJdcbfjwz:edit") + @Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdCbysJdcbfjBo bo) { + return toAjax(xzdCbysJdcbfjService.updateByBo(bo)); + } + + /** + * 删除立项及成本-成本预算-阶段成本分解 + * + * @param ids 主键串 + */ + @SaCheckPermission("costBudget:cbysJdcbfjwz:remove") + @Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdCbysJdcbfjService.deleteWithValidByIds(List.of(ids), true)); + } + + /** + * 查询印章帮助列表 + */ + @SaCheckPermission(value = {"costBudget:cbysJdcbfjwz:add","costBudget:cbysJdcbfjwz:edit","costBudget:cbysJdcbfjwz:list"}, mode = SaMode.OR) + @GetMapping("/businessSealList") + public TableDataInfo list(XzdBusinessSealBo bo, PageQuery pageQuery) { + return xzdBusinessSealService.queryPageList(bo, pageQuery); + } + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysJdcbfj.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysJdcbfj.java index 797d0e44..4de7ffb4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysJdcbfj.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysJdcbfj.java @@ -34,6 +34,14 @@ public class XzdCbysJdcbfj extends BaseEntity { * 部门id */ private Long deptId; + /** + *限价一览版本id + */ + private String vesions; + /** + * 系统项目id + */ + private Long sysProjectId; /** * 单据编码(带*,必填) @@ -117,4 +125,10 @@ public class XzdCbysJdcbfj extends BaseEntity { private String auditStatus; + /** + * 2.招采 3.物资 + */ + private String type; + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysJdcbfjBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysJdcbfjBo.java index b307fb21..fc240761 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysJdcbfjBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysJdcbfjBo.java @@ -1,5 +1,6 @@ package org.dromara.xzd.costProjectApproval.costBudget.domain.bo; +import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo; import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -37,6 +38,19 @@ public class XzdCbysJdcbfjBo extends BaseEntity { */ private Long deptId; + /** + *限价一览版本id + */ + private String vesions; + /** + * 系统项目id + */ + private Long sysProjectId; + + /** + * 2.招采 3.物资 + */ + private String type; /** * 单据编码(带*,必填) */ @@ -124,7 +138,13 @@ public class XzdCbysJdcbfjBo extends BaseEntity { /** * 副表数据 */ - List xzdCbysJdcbfjFubiao; +// List xzdCbysJdcbfjFubiao; + + /** + * 限价一览 + */ + List bos; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysJdcbfjVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysJdcbfjVo.java index 557de91a..4a823640 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysJdcbfjVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysJdcbfjVo.java @@ -4,6 +4,8 @@ import java.math.BigDecimal; import org.dromara.common.translation.annotation.Translation; import org.dromara.common.translation.constant.TransConstant; +import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo; +import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo; import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -46,6 +48,15 @@ public class XzdCbysJdcbfjVo implements Serializable { */ private Long deptId; + /** + *限价一览版本id + */ + private String vesions; + /** + * 系统项目id + */ + private Long sysProjectId; + /** * 单据编码(带*,必填) */ @@ -152,10 +163,21 @@ public class XzdCbysJdcbfjVo implements Serializable { */ private String auditStatus; +// /** +// * 副表数据 +// */ +// List xzdCbysJdcbfjFubiao; + + /** - * 副表数据 + * 限价一览 */ - List xzdCbysJdcbfjFubiao; + List bos; + + /** + * 2.招采 3.物资 + */ + private String type; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysJdcbfjService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysJdcbfjService.java index 8b06ca96..6a23618e 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysJdcbfjService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysJdcbfjService.java @@ -1,5 +1,7 @@ package org.dromara.xzd.costProjectApproval.costBudget.service; +import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo; +import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo; import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo; import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo; import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj; @@ -67,4 +69,20 @@ public interface IXzdCbysJdcbfjService extends IService{ * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 查询sheet列表 + * + * @param bo 查询条件 + * @return sheet列表 + */ + List sheetList(XzdCbysJdcbfjBo bo); + + /** + * 获取树结构 + * + * @param bo 查询条件 + * @return 树结构 + */ + List getTree(BusBillofquantitiesLimitListBo bo); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysJdcbfjServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysJdcbfjServiceImpl.java index d97cb960..f1aae547 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysJdcbfjServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysJdcbfjServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.xzd.costProjectApproval.costBudget.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessEvent; @@ -17,12 +18,18 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.utils.BatchNumberGenerator; import org.dromara.system.service.ISysUserService; import org.dromara.system.service.impl.SysOssServiceImpl; +import org.dromara.tender.domain.BusBillofquantitiesLimitList; +import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo; +import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo; +import org.dromara.tender.enums.LimitListTypeEnum; +import org.dromara.tender.service.IBusBillofquantitiesLimitListService; import org.dromara.xzd.costProjectApproval.costBudget.domain.*; import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo; import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjFubiaoService; import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService; import org.dromara.xzd.service.impl.XzdProjectServiceImpl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo; import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo; @@ -30,6 +37,7 @@ import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysJdcbfjMapper import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjService; import java.util.*; +import java.util.stream.Collectors; /** * 立项及成本-成本预算-阶段成本分解Service业务层处理 @@ -55,6 +63,10 @@ public class XzdCbysJdcbfjServiceImpl extends ServiceImpl { - String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-"); - item.setBudgetItemCode(code); - item.setMainTableId(add.getId()); - }); - xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao()); - } +// if (bo.getXzdCbysJdcbfjFubiao() != null && !bo.getXzdCbysJdcbfjFubiao().isEmpty()) { +// bo.getXzdCbysJdcbfjFubiao().forEach(item -> { +// String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-"); +// item.setBudgetItemCode(code); +// item.setMainTableId(add.getId()); +// }); +// xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao()); +// } return flag; } @@ -155,15 +168,16 @@ public class XzdCbysJdcbfjServiceImpl extends ServiceImpl().eq(XzdCbysJdcbfjFubiao::getMainTableId, bo.getId())); - if (bo.getXzdCbysJdcbfjFubiao() != null && !bo.getXzdCbysJdcbfjFubiao().isEmpty()) { - bo.getXzdCbysJdcbfjFubiao().forEach(item -> { - String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-"); - item.setBudgetItemCode(code); - item.setMainTableId(bo.getId()); - }); - xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao()); - } +// xzdCbysJdcbfjFubiaoService.remove(new LambdaQueryWrapper().eq(XzdCbysJdcbfjFubiao::getMainTableId, bo.getId())); +// if (bo.getXzdCbysJdcbfjFubiao() != null && !bo.getXzdCbysJdcbfjFubiao().isEmpty()) { +// bo.getXzdCbysJdcbfjFubiao().forEach(item -> { +// String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-"); +// item.setBudgetItemCode(code); +// item.setMainTableId(bo.getId()); +// }); +// xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao()); +// } + Boolean b = limitListService.updateByBo(bo.getBos()); return baseMapper.updateById(update) > 0; } @@ -205,14 +219,40 @@ public class XzdCbysJdcbfjServiceImpl extends ServiceImpl 0; } + @Override + public List sheetList(XzdCbysJdcbfjBo bo) { + XzdCbysJdcbfjVo xzdCbysZjhcbVo = baseMapper.selectVoOne(new LambdaQueryWrapper().eq(XzdCbysJdcbfj::getSysProjectId, bo.getSysProjectId()).eq(XzdCbysJdcbfj::getType,bo.getType())); + if (xzdCbysZjhcbVo != null){ + List busBillofquantitiesLimitLists = limitListService.getBaseMapper().selectList(new LambdaQueryWrapper() + .select(BusBillofquantitiesLimitList::getSheet) + .eq(xzdCbysZjhcbVo.getSysProjectId() != null, BusBillofquantitiesLimitList::getProjectId, xzdCbysZjhcbVo.getSysProjectId()) + .eq(StringUtils.isNotBlank(bo.getType()),BusBillofquantitiesLimitList::getType, bo.getType()) + .eq(StringUtils.isNotBlank(xzdCbysZjhcbVo.getVesions()), BusBillofquantitiesLimitList::getVersions, xzdCbysZjhcbVo.getVesions()) + .orderByAsc(BusBillofquantitiesLimitList::getSheet) + .groupBy(BusBillofquantitiesLimitList::getSheet)); + return busBillofquantitiesLimitLists.stream() + .filter(Objects::nonNull) + .map(BusBillofquantitiesLimitList::getSheet) + .collect(Collectors.toList()); + } + return List.of(); + } + + @Override + public List getTree(BusBillofquantitiesLimitListBo bo) { + return limitListService.getJdcbfjTree(bo); + } + /** * 获取扣款与奖励项 * @param vo */ private void getHttk(XzdCbysJdcbfjVo vo) { - List xzdCbysZtjhcbBgjls = xzdCbysJdcbfjFubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdCbysJdcbfjFubiao::getMainTableId, vo.getId())); - vo.setXzdCbysJdcbfjFubiao(xzdCbysZtjhcbBgjls); +// List xzdCbysZtjhcbBgjls = xzdCbysJdcbfjFubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdCbysJdcbfjFubiao::getMainTableId, vo.getId())); +// vo.setXzdCbysJdcbfjFubiao(xzdCbysZtjhcbBgjls); + List vos = limitListService.getVoByVersion(vo.getSysProjectId(), vo.getVesions()); + vo.setBos(vos); } @@ -261,5 +301,48 @@ public class XzdCbysJdcbfjServiceImpl extends ServiceImpl