From 4d2a2186c9f29d6f99dfc00297b155f876003034 Mon Sep 17 00:00:00 2001 From: dfdg <2710245601@qq.com> Date: Sat, 13 Sep 2025 18:03:14 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9=E5=92=8C=E6=89=B9?= =?UTF-8?q?=E6=AC=A1=E9=9C=80=E6=B1=82=E8=AE=A1=E5=88=92=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BusMrpBaseController.java | 42 ++++++++++++++-- .../domain/BusMaterialbatchdemandplan.java | 2 + .../bo/BusMaterialbatchdemandplanBo.java | 2 + .../vo/BusMaterialbatchdemandplanVo.java | 4 ++ .../service/IBusMrpBaseService.java | 5 +- ...BusMaterialbatchdemandplanServiceImpl.java | 14 +++++- .../service/impl/BusMrpBaseServiceImpl.java | 26 ++++++---- ...usBillofquantitiesVersionsServiceImpl.java | 48 +++++++++---------- .../TenderSupplierInputController.java | 1 + .../domain/vo/TenderSupplierInputVo.java | 2 +- ...sBillofquantitiesLimitListServiceImpl.java | 6 +-- .../impl/TenderSupplierInputServiceImpl.java | 1 + 12 files changed, 108 insertions(+), 45 deletions(-) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java index 00602079..cf023d7e 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java @@ -1,7 +1,11 @@ package org.dromara.cailiaoshebei.controller; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; @@ -16,8 +20,10 @@ import org.dromara.common.core.exception.ServiceException; import org.dromara.design.domain.BusBillofquantities; import org.dromara.design.domain.BusBillofquantitiesVersions; import org.dromara.design.domain.bo.CoryObtainTheListReq; +import org.dromara.design.domain.vo.ObtainTheListRes; import org.dromara.design.service.IBusBillofquantitiesService; import org.dromara.design.service.IBusBillofquantitiesVersionsService; +import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; @@ -134,7 +140,7 @@ public class BusMrpBaseController extends BaseController { * 获取剩余量 */ @GetMapping("/remaining") - public R remaining(Long suppliespriceId,Long mrpBaseId) { + public R> remaining(Long suppliespriceId,Long mrpBaseId) { return R.ok(busMrpBaseService.remaining(suppliespriceId,mrpBaseId)); } @@ -173,7 +179,7 @@ public class BusMrpBaseController extends BaseController { */ @SaCheckPermission("cailiaoshebei:purchaseDoc:coryEngineeringList") @GetMapping("/coryEngineeringList") - public R> obtainTheList(CoryObtainTheListReq req) { + public R> obtainTheList(CoryObtainTheListReq req) { BusBillofquantitiesVersions one = busBillofquantitiesVersionsService.getOne(Wrappers.lambdaQuery() .eq(BusBillofquantitiesVersions::getWorkOrderType, "3") //物资工程量清单 .eq(BusBillofquantitiesVersions::getProjectId, req.getProjectId()) @@ -187,6 +193,36 @@ public class BusMrpBaseController extends BaseController { List list = busBillofquantitiesService.list(Wrappers.lambdaQuery() .eq(BusBillofquantities::getVersions, one.getVersions()) ); - return R.ok(list); + List obtainTheListRes = new ArrayList<>(); + list.forEach(billofquantities -> { + ObtainTheListRes res = new ObtainTheListRes(); + BeanUtils.copyProperties(billofquantities, res); + obtainTheListRes.add(res); + }); + + Map> parentMap = obtainTheListRes.stream() + .collect(Collectors.groupingBy(ObtainTheListRes::getPid)); + + // 3. 递归组装树形结构,从顶级节点(pid=0)开始 + List treeList = buildTree("0", parentMap); + return R.ok(treeList); + } + + private List buildTree(String parentId, Map> parentMap) { + // 获取当前父节点的所有直接子节点 + List children = parentMap.getOrDefault(parentId, Collections.emptyList()); + if (children.isEmpty()) { + return Collections.emptyList(); + } + + // 为每个子节点递归设置其下一级子节点 + for (ObtainTheListRes 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/cailiaoshebei/domain/BusMaterialbatchdemandplan.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusMaterialbatchdemandplan.java index 600278c7..629d097f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusMaterialbatchdemandplan.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusMaterialbatchdemandplan.java @@ -51,6 +51,8 @@ public class BusMaterialbatchdemandplan extends BaseEntity { */ private Long suppliespriceId; + private Long suppliespricePid; + /** * 基础信息ID */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMaterialbatchdemandplanBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMaterialbatchdemandplanBo.java index 5b3e0a22..90bf40fa 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMaterialbatchdemandplanBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMaterialbatchdemandplanBo.java @@ -120,4 +120,6 @@ public class BusMaterialbatchdemandplanBo extends BaseEntity { * 供应商id */ private Long supplierId; + + private Long suppliespricePid; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusMaterialbatchdemandplanVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusMaterialbatchdemandplanVo.java index 881d8776..3abfca73 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusMaterialbatchdemandplanVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusMaterialbatchdemandplanVo.java @@ -72,6 +72,10 @@ public class BusMaterialbatchdemandplanVo implements Serializable { @ExcelProperty(value = "物资清单ID") private Long suppliespriceId; + private Long suppliespricePid; + + private String suppliespricePname; + /** * 物料编码 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java index 0d757edd..0f09408e 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java @@ -10,11 +10,10 @@ 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.bind.annotation.RequestBody; -import java.math.BigDecimal; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 物资-批次需求计划基础信息Service接口 @@ -87,5 +86,5 @@ public interface IBusMrpBaseService extends IService{ /** * 获取物资已有数量 */ - BigDecimal remaining(Long suppliespriceId,Long mrpBaseId); + Map remaining(Long suppliespriceId, Long mrpBaseId); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java index 268ceb6e..2621d80a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java @@ -22,6 +22,8 @@ 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.design.domain.BusBillofquantities; +import org.dromara.design.service.IBusBillofquantitiesService; import org.dromara.tender.domain.bo.BusBiddingPlanBo; import org.dromara.tender.domain.vo.BusBiddingPlanVo; import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo; @@ -67,6 +69,10 @@ public class BusMaterialbatchdemandplanServiceImpl extends ServiceImpl busBiddingPlanVos = busBiddingPlanService.getBillofquantitiesLimitListVo(bo1); if (busBiddingPlanVos == null || busBiddingPlanVos.isEmpty()) { @@ -108,6 +114,12 @@ public class BusMaterialbatchdemandplanServiceImpl extends ServiceImpl { + if (vo.getSuppliespricePid() != null){ + BusBillofquantities billofquantities = busBillofquantitiesService.getById(vo.getSuppliespricePid()); + vo.setSuppliespricePname(billofquantities.getName()); + } + }); return TableDataInfo.build(result); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMrpBaseServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMrpBaseServiceImpl.java index 03cb1ad4..11481301 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMrpBaseServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMrpBaseServiceImpl.java @@ -28,7 +28,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.common.utils.excel.ExcelDynamicReader; import org.dromara.design.domain.BusBillofquantities; -import org.dromara.design.domain.DesCollect; import org.dromara.design.service.IBusBillofquantitiesService; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; @@ -40,10 +39,7 @@ import org.dromara.cailiaoshebei.service.IBusMrpBaseService; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; import java.util.stream.Collectors; /** @@ -79,8 +75,8 @@ public class BusMrpBaseServiceImpl extends ServiceImpl voList = planservice.queryList(planBo); for (BusMaterialbatchdemandplanVo vo : voList) { - BigDecimal remaining = remaining(vo.getSuppliespriceId(), id); - vo.setRemaining(remaining); + Map map = remaining(vo.getSuppliespriceId(), id); + vo.setRemaining(Convert.toBigDecimal(map.get("remainingQuantity"))); } busMrpVo.setMrpBaseBo(busMrpBaseVo); busMrpVo.setPlanList(voList); @@ -236,6 +232,11 @@ public class BusMrpBaseServiceImpl extends ServiceImpl plans = MapstructUtils.convert(dto.getPlanList(), BusMaterialbatchdemandplan.class); plans.forEach(item -> { + BusBillofquantities byId = busBillofquantitiesService.getById(item.getSuppliespriceId()); + if (!"0".equals(byId.getPid())) { + BusBillofquantities one = busBillofquantitiesService.getOne(new LambdaQueryWrapper().eq(BusBillofquantities::getSid, byId.getPid())); + item.setSuppliespricePid(one.getId()); + } item.setMrpBaseId(convert.getId()); item.setProjectId(convert.getProjectId()); }); @@ -271,7 +272,8 @@ public class BusMrpBaseServiceImpl extends ServiceImpl remaining(Long suppliespriceId, Long mrpBaseId) { + Map map = new HashMap<>(); BusBillofquantities byId = busBillofquantitiesService.getById(suppliespriceId); // 获取数据库中已有的数量 List existingList = planservice.list( @@ -285,8 +287,12 @@ public class BusMrpBaseServiceImpl extends ServiceImpl allMaterials = new ArrayList<>(); for (ExcelReader.SheetData sheetData : excelData.getSheetDataList()) { @@ -239,26 +239,26 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl dataList = ExcelDynamicReader.readExcel( - file, // 上传的文件 - 1, // 跳过1行(表头) - 0, // 从第0列开始 - 5, // 到第5列结束 - MaterialsAndEquipmentExcelDto.class // 目标实体类 - ); - List busBillofquantities = BeanUtil.copyToList(dataList, BusBillofquantities.class); - for (BusBillofquantities busBillofquantity : busBillofquantities) { - busBillofquantity.setProjectId(bo.getProjectId()); - busBillofquantity.setVersions(banBen); - } - boolean b = busBillofquantitiesService.saveBatch(busBillofquantities); - if (!b) { - throw new RuntimeException("导入失败"); - } - return true; - } +// } else { +// // 跳过1行(表头),读取0到6列(共7列),映射到ExcelData实体类 +// List dataList = ExcelDynamicReader.readExcel( +// file, // 上传的文件 +// 1, // 跳过1行(表头) +// 0, // 从第0列开始 +// 5, // 到第5列结束 +// MaterialsAndEquipmentExcelDto.class // 目标实体类 +// ); +// List busBillofquantities = BeanUtil.copyToList(dataList, BusBillofquantities.class); +// for (BusBillofquantities busBillofquantity : busBillofquantities) { +// busBillofquantity.setProjectId(bo.getProjectId()); +// busBillofquantity.setVersions(banBen); +// } +// boolean b = busBillofquantitiesService.saveBatch(busBillofquantities); +// if (!b) { +// throw new RuntimeException("导入失败"); +// } +// return true; +// } } @@ -270,9 +270,9 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl> parentMap = flatList.stream() .collect(Collectors.groupingBy(ObtainTheListRes::getPid)); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/TenderSupplierInputController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/TenderSupplierInputController.java index 2dd7bc3d..933454dd 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/TenderSupplierInputController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/TenderSupplierInputController.java @@ -93,6 +93,7 @@ public class TenderSupplierInputController extends BaseController { TenderSupplierInput newTenderSupplierInput = new TenderSupplierInput(); BeanUtils.copyProperties(tenderSupplierInputVo, newTenderSupplierInput); newTenderSupplierInput.setProjectId(projectId); + newTenderSupplierInput.setState("draft"); tenderSupplierInputs.add(newTenderSupplierInput); } return toAjax(tenderSupplierInputService.saveOrUpdateBatch(tenderSupplierInputs)); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/vo/TenderSupplierInputVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/vo/TenderSupplierInputVo.java index c77b57ff..57412e03 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/vo/TenderSupplierInputVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/vo/TenderSupplierInputVo.java @@ -235,7 +235,7 @@ public class TenderSupplierInputVo implements Serializable { /** * 审核状态 */ - @ExcelProperty(value = "审核状态") +// @ExcelProperty(value = "审核状态") private String state; 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 b7a5c3db..aa5bb0b1 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 @@ -203,9 +203,9 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl { item.setPrice(item.getUnitPrice().multiply(item.getQuantity()).setScale(4, RoundingMode.HALF_UP)); }); - if (bo.getType().equals(LimitListTypeEnum.SPECIAL.getCode())) { - return listVoList; - } +// if (bo.getType().equals(LimitListTypeEnum.SPECIAL.getCode())) { +// return listVoList; +// } //构建父子映射 Map> parentMap = listVoList.stream() diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/TenderSupplierInputServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/TenderSupplierInputServiceImpl.java index 4330dcc9..183ef588 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/TenderSupplierInputServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/TenderSupplierInputServiceImpl.java @@ -172,6 +172,7 @@ public class TenderSupplierInputServiceImpl extends ServiceImpl getList(TenderSupplierInputBo bo) { + bo.setState("finish"); LambdaQueryWrapper lqw = buildQueryWrapper(bo); List tenderSupplierInputVos = baseMapper.selectVoList(lqw); List list = new ArrayList<>();