From 731b8bb1d234884764d14f78ec20cb5c062dbbab Mon Sep 17 00:00:00 2001 From: lcj <2331845269@qq.com> Date: Thu, 18 Dec 2025 09:27:02 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E5=A4=A7=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProgressBigScreenController.java | 7 +- .../progress/MaterialProgressDetailVo.java | 5 ++ .../service/ProgressBigScreenService.java | 2 +- .../impl/ProgressBigScreenServiceImpl.java | 38 ++++++++--- .../service/impl/BusMrpBaseServiceImpl.java | 65 +++++++++---------- 5 files changed, 68 insertions(+), 49 deletions(-) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProgressBigScreenController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProgressBigScreenController.java index f6d19401..db45560b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProgressBigScreenController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProgressBigScreenController.java @@ -73,9 +73,8 @@ public class ProgressBigScreenController extends BaseController { /** * 获取材料进度详情 */ - @GetMapping("/materialProgress/detail/{projectId}") - public R> getMaterialProgressDetail(@NotNull(message = "项目主键不能为空") - @PathVariable Long projectId) { - return R.ok(progressBigScreenService.getMaterialProgressDetail(projectId)); + @GetMapping("/materialProgress/detail") + public R> getMaterialProgressDetail(Long project, String name, String specification) { + return R.ok(progressBigScreenService.getMaterialProgressDetail(project, name, specification)); } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/progress/MaterialProgressDetailVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/progress/MaterialProgressDetailVo.java index a643f4fb..eddfa0f4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/progress/MaterialProgressDetailVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/progress/MaterialProgressDetailVo.java @@ -44,6 +44,11 @@ public class MaterialProgressDetailVo implements Serializable { // region 接收单数据 + /** + * 表单编号 + */ + private String formCode; + /** * 合同名称 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/ProgressBigScreenService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/ProgressBigScreenService.java index 5d11397b..c69cfcab 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/ProgressBigScreenService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/ProgressBigScreenService.java @@ -55,7 +55,7 @@ public interface ProgressBigScreenService { * @param projectId 项目 id * @return 物料进度详情 */ - List getMaterialProgressDetail(Long projectId); + List getMaterialProgressDetail(Long projectId, String name, String specification); /** * 获取物资进度 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProgressBigScreenServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProgressBigScreenServiceImpl.java index 49a8b6b3..95baefc4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProgressBigScreenServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProgressBigScreenServiceImpl.java @@ -21,6 +21,7 @@ import org.dromara.materials.domain.MatMaterialReceive; import org.dromara.materials.domain.MatMaterialReceiveItem; import org.dromara.materials.service.IMatMaterialReceiveItemService; import org.dromara.materials.service.IMatMaterialReceiveService; +import org.dromara.materials.service.IMatMaterialsService; import org.dromara.progress.constant.PgsProgressCategoryConstant; import org.dromara.progress.domain.PgsConstructionSchedulePlan; import org.dromara.progress.domain.PgsProgressCategory; @@ -88,6 +89,9 @@ public class ProgressBigScreenServiceImpl implements ProgressBigScreenService { @Resource private IBusMrpBaseService mrpBaseService; + @Resource + private IMatMaterialsService matMaterialsService; + /** * 获取项目总进度 * @@ -336,20 +340,19 @@ public class ProgressBigScreenServiceImpl implements ProgressBigScreenService { * @return 物料进度详情 */ @Override - public List getMaterialProgressDetail(Long projectId) { - List receiveList = materialReceiveService.lambdaQuery() - .eq(MatMaterialReceive::getProjectId, projectId) - .list(); - if (CollUtil.isEmpty(receiveList)) { - return List.of(); - } - List ids = receiveList.stream().map(MatMaterialReceive::getId).toList(); + public List getMaterialProgressDetail(Long projectId, String name, String specification) { + // 根据名称 规格获取材料 List itemList = materialReceiveItemService.lambdaQuery() - .in(MatMaterialReceiveItem::getReceiveId, ids) + .eq(MatMaterialReceiveItem::getName, name) + .eq(MatMaterialReceiveItem::getSpecification, specification) .list(); if (CollUtil.isEmpty(itemList)) { return List.of(); } + Set ids = itemList.stream().map(MatMaterialReceiveItem::getReceiveId).collect(Collectors.toSet()); + List receiveList = materialReceiveService.lambdaQuery() + .in(MatMaterialReceive::getId, ids) + .list(); Map receiveMap = receiveList.stream() .collect(Collectors.toMap(MatMaterialReceive::getId, receive -> receive)); return itemList.stream().map(item -> { @@ -364,6 +367,7 @@ public class ProgressBigScreenServiceImpl implements ProgressBigScreenService { vo.setQuantity(item.getQuantity()); vo.setAcceptedQuantity(item.getAcceptedQuantity()); vo.setShortageQuantity(item.getShortageQuantity()); + vo.setFormCode(receive.getFormCode()); vo.setContractName(receive.getContractName()); vo.setOrderingUnit(receive.getOrderingUnit()); vo.setSupplierUnit(receive.getSupplierUnit()); @@ -380,6 +384,20 @@ public class ProgressBigScreenServiceImpl implements ProgressBigScreenService { */ @Override public List getMaterialProgress(Long projectId) { - return mrpBaseService.wzxqysjdhdb(projectId); + List wzxqysjdhdb = mrpBaseService.wzxqysjdhdb(projectId); + Map> map = wzxqysjdhdb.stream() + .collect(Collectors.groupingBy(o -> o.getName() + o.getSpecification())); + List wzxqysjdhdbList = new ArrayList<>(); + map.forEach((k, v) -> { + wzxqysjdhdbVo vo = new wzxqysjdhdbVo(); + vo.setName(v.getFirst().getName()); + vo.setSpecification(v.getFirst().getSpecification()); + BigDecimal design = v.stream().map(wzxqysjdhdbVo::getDesignTotalPrices).reduce(BigDecimal.ZERO, BigDecimal::add); + vo.setDesignTotalPrices(design); + BigDecimal arrival = v.stream().map(wzxqysjdhdbVo::getArrivalTotalPrices).reduce(BigDecimal.ZERO, BigDecimal::add); + vo.setArrivalTotalPrices(arrival); + wzxqysjdhdbList.add(vo); + }); + return wzxqysjdhdbList; } } 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 e4d423ce..d7f408ab 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 @@ -4,21 +4,30 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; +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.annotation.Resource; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.bigscreen.domain.vo.designAndArrivalComparisonVo; import org.dromara.bigscreen.domain.vo.wzxqysjdhdbVo; import org.dromara.cailiaoshebei.domain.BusMaterialbatchdemandplan; +import org.dromara.cailiaoshebei.domain.BusMrpBase; import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation; import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo; +import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseBo; import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseReq; import org.dromara.cailiaoshebei.domain.dto.BusMaterialbatchdemandplanExportDto; import org.dromara.cailiaoshebei.domain.dto.BusMrpDto; import org.dromara.cailiaoshebei.domain.dto.BusMrpExportDto; import org.dromara.cailiaoshebei.domain.vo.BusMaterialbatchdemandplanVo; +import org.dromara.cailiaoshebei.domain.vo.BusMrpBaseVo; import org.dromara.cailiaoshebei.domain.vo.BusMrpVo; +import org.dromara.cailiaoshebei.mapper.BusMrpBaseMapper; import org.dromara.cailiaoshebei.service.IBusMaterialbatchdemandplanService; +import org.dromara.cailiaoshebei.service.IBusMrpBaseService; import org.dromara.cailiaoshebei.service.IBusPlanDocAssociationService; import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessEvent; @@ -27,15 +36,9 @@ import org.dromara.common.core.enums.BusinessStatusEnum; 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.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.mybatis.core.page.TableDataInfo; import org.dromara.common.utils.excel.ExcelDynamicReader; -import org.dromara.design.domain.BusBillofquantities; -import org.dromara.design.service.IBusBillofquantitiesService; import org.dromara.materials.domain.MatMaterialReceiveItem; import org.dromara.materials.service.IMatMaterialReceiveItemService; import org.dromara.tender.domain.BusBillofquantitiesLimitList; @@ -47,11 +50,6 @@ import org.jetbrains.annotations.NotNull; import org.springframework.context.annotation.Lazy; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; -import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseBo; -import org.dromara.cailiaoshebei.domain.vo.BusMrpBaseVo; -import org.dromara.cailiaoshebei.domain.BusMrpBase; -import org.dromara.cailiaoshebei.mapper.BusMrpBaseMapper; -import org.dromara.cailiaoshebei.service.IBusMrpBaseService; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; @@ -77,14 +75,13 @@ public class BusMrpBaseServiceImpl extends ServiceImpl { String name = item.getName() != null ? item.getName() : ""; - return "名称:“"+name + "”"; + return "名称:“" + name + "”"; }) .orElse("未知物料"); throw new ServiceException(itemName + "超出数量"); @@ -312,7 +309,7 @@ public class BusMrpBaseServiceImpl extends ServiceImpl remaining(Long projectId, Long limitListId,Long mrpBaseId) { + public Map remaining(Long projectId, Long limitListId, Long mrpBaseId) { Map map = new HashMap<>(); List busTenderPlanningLimitLists = tenderPlanningLimitListService.getBaseMapper() .selectList(new LambdaQueryWrapper() @@ -326,23 +323,23 @@ public class BusMrpBaseServiceImpl extends ServiceImpl existingList = planservice.list( Wrappers.lambdaQuery(BusMaterialbatchdemandplan.class) - .eq(BusMaterialbatchdemandplan::getSuppliespriceId ,limitListId) - .ne(mrpBaseId!=null,BusMaterialbatchdemandplan::getMrpBaseId, mrpBaseId)// 排除当前批次 + .eq(BusMaterialbatchdemandplan::getSuppliespriceId, limitListId) + .ne(mrpBaseId != null, BusMaterialbatchdemandplan::getMrpBaseId, mrpBaseId)// 排除当前批次 ); BigDecimal reduce = BigDecimal.ZERO; - if(CollectionUtil.isNotEmpty(existingList)){ - reduce = existingList.stream() + if (CollectionUtil.isNotEmpty(existingList)) { + reduce = existingList.stream() .map(BusMaterialbatchdemandplan::getDemandQuantity) .reduce(BigDecimal.ZERO, BigDecimal::add); } - map.put("remainingQuantity",quantity.subtract(reduce)); - map.put("suppliespriceId",limitListId); + map.put("remainingQuantity", quantity.subtract(reduce)); + map.put("suppliespriceId", limitListId); if (busBillofquantities != null) { - map.put("specification",busBillofquantities.getSpecification()); - map.put("unit",busBillofquantities.getUnit()); - map.put("unitPrice",busBillofquantities.getUnitPrice()); - map.put("remark",busBillofquantities.getRemark()); - map.put("name",busBillofquantities.getName()); + map.put("specification", busBillofquantities.getSpecification()); + map.put("unit", busBillofquantities.getUnit()); + map.put("unitPrice", busBillofquantities.getUnitPrice()); + map.put("remark", busBillofquantities.getRemark()); + map.put("name", busBillofquantities.getName()); } return map; } @@ -357,26 +354,26 @@ public class BusMrpBaseServiceImpl extends ServiceImpl iterator = busMaterialbatchdemandplans.iterator(); Set mrpIds = new HashSet<>(); - while (iterator.hasNext()){ + while (iterator.hasNext()) { BusMaterialbatchdemandplan next = iterator.next(); List busPlanDocAssociations = planDocAssociationService.getBaseMapper().selectList(new LambdaQueryWrapper() .eq(BusPlanDocAssociation::getProjectId, req.getProjectId()) .eq(BusPlanDocAssociation::getPlanId, next.getId())); BigDecimal demandQuantity = BigDecimal.ZERO; busPlanDocAssociations.forEach(busPlanDocAssociation -> { - demandQuantity.add(busPlanDocAssociation.getDemandQuantity()); + demandQuantity.add(busPlanDocAssociation.getDemandQuantity()); }); if (demandQuantity.compareTo(next.getDemandQuantity()) >= 0) { iterator.remove(); - }else { + } else { mrpIds.add(next.getMrpBaseId()); } } - if (mrpIds.isEmpty()){ + if (mrpIds.isEmpty()) { return null; } return baseMapper.selectVoList(new LambdaQueryWrapper() - .eq(BusMrpBase::getStatus,BusinessStatusEnum.FINISH.getStatus()).in(BusMrpBase::getId,mrpIds)); + .eq(BusMrpBase::getStatus, BusinessStatusEnum.FINISH.getStatus()).in(BusMrpBase::getId, mrpIds)); } @Override @@ -411,14 +408,14 @@ public class BusMrpBaseServiceImpl extends ServiceImpl planIds = matMaterialReceiveItems.stream() .map(MatMaterialReceiveItem::getPlanId) .collect(Collectors.toSet()); - if (CollUtil.isEmpty(planIds)){ + if (CollUtil.isEmpty(planIds)) { return new HashMap<>(); } Map planMap = matMaterialReceiveItems.stream() .filter(matMaterialReceiveItem -> matMaterialReceiveItem.getPlanId() != null) .collect(Collectors.groupingBy( MatMaterialReceiveItem::getPlanId, - Collectors.reducing(BigDecimal.ZERO, MatMaterialReceiveItem::getQuantity, BigDecimal::add) + Collectors.reducing(BigDecimal.ZERO, MatMaterialReceiveItem::getAcceptedQuantity, BigDecimal::add) )); // 根据入库数据反查批次需求计划数据 bus_materialbatchdemandplan List materialbatchdemandplans = planservice.getBaseMapper().selectList(new LambdaQueryWrapper()