From c0a9f70dc2192da1f5e7c9d5a4d02c258ef9b003 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期三, 08 四月 2026 17:18:20 +0800
Subject: [PATCH] feat(product-structure): 新增按父节点筛选的产品结构查询接口

---
 src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 58 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
index 3fcb8f2..a1e9c9c 100644
--- a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
@@ -1,17 +1,27 @@
 package com.ruoyi.production.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.production.dto.ProductionProductMainDto;
 import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
+import com.ruoyi.production.dto.UserAccountDto;
+import com.ruoyi.production.dto.UserProductionAccountingDto;
+import com.ruoyi.production.mapper.ProductionProductMainMapper;
 import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper;
 import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
 import com.ruoyi.production.service.SalesLedgerProductionAccountingService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.tuple.Pair;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @author :yys
@@ -23,7 +33,8 @@
 public class SalesLedgerProductionAccountingServiceImpl extends ServiceImpl<SalesLedgerProductionAccountingMapper, SalesLedgerProductionAccounting> implements SalesLedgerProductionAccountingService {
   
     private final SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
-  
+    private final ProductionProductMainMapper productionProductMainMapper;
+
     @Override
     public IPage<SalesLedgerProductionAccountingDto> listPage(Page page, SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto) {
         IPage<SalesLedgerProductionAccountingDto> list = salesLedgerProductionAccountingMapper.listPage(page, salesLedgerProductionAccountingDto);
@@ -37,6 +48,52 @@
         return list;
     }
 
+    @Override
+    public IPage<SalesLedgerProductionAccountingDto> pageProductionAccounting(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page) {
+        // TODO 绠$悊鍛樻煡璇㈡墍鏈夛紝鍏朵粬浜哄彧鑳芥煡鑷繁
+        boolean admin = SecurityUtils.isAdmin(SecurityUtils.getUserId());
+        if (!admin) {
+            salesLedgerProductionAccountingDto.setSchedulingUserName(SecurityUtils.getUsername());
+        }
+        if (salesLedgerProductionAccountingDto.getDateType().equals("month"))  {
+            salesLedgerProductionAccountingDto.setEntryDate(null);
+        }else {
+            salesLedgerProductionAccountingDto.setEntryDateStart(null);
+            salesLedgerProductionAccountingDto.setEntryDateEnd(null);
+        }
+        IPage<SalesLedgerProductionAccountingDto> salesLedgerProductionAccountingDtoIPage = salesLedgerProductionAccountingMapper.pageProductionAccounting(page, salesLedgerProductionAccountingDto);
+        salesLedgerProductionAccountingDtoIPage.getRecords().forEach(it->{
+            // 鎷垮埌鏈哄彴缁熻 鍒嗛挓-鏈哄彴, 杩欐牱鎺掑垪
+            String deviceWorkInfo = it.getDeviceWorkInfo();
+            List<String> str = StrUtil.split(deviceWorkInfo, ">>>");
+            List<Pair<String,Integer>> collect = str.stream().map(n1 -> {
+                List<String> strPair = StrUtil.split(n1, "|$|");
+                if (strPair.size() == 2) {
+                    return Pair.of(strPair.get(1),Integer.parseInt(strPair.get(0)));
+                }
+                return null;
+            }).filter(Objects::nonNull).collect(Collectors.toList());
+            it.setDeviceWorkInfoPairList(collect);
+        });
+        return salesLedgerProductionAccountingDtoIPage;
+    }
+
+    @Override
+    public IPage<ProductionProductMainDto> listProductionDetails(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page) {
+        if (salesLedgerProductionAccountingDto.getDateType().equals("month"))  {
+            salesLedgerProductionAccountingDto.setEntryDate(null);
+        }else {
+            salesLedgerProductionAccountingDto.setEntryDateStart(null);
+            salesLedgerProductionAccountingDto.setEntryDateEnd(null);
+        }
+        return productionProductMainMapper.listProductionDetails(salesLedgerProductionAccountingDto, page);
+    }
+
+    @Override
+    public UserAccountDto getByUserId(UserProductionAccountingDto userProductionAccountingDto) {
+        return salesLedgerProductionAccountingMapper.getByUserId( userProductionAccountingDto);
+    }
+
     public static boolean isNumeric(String str) {
         if (str == null || str.isEmpty()) {
             return false;

--
Gitblit v1.9.3