From dfa9258c8879dbb0d1bfc00d7f939031d0bb623b Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 29 一月 2026 18:32:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java                        |    4 +
 src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java |   16 +++++
 src/main/java/com/ruoyi/production/mapper/SalesLedgerProductionAccountingMapper.java            |    1 
 src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml                  |   20 ++++++
 src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java                  |    6 ++
 src/main/resources/mapper/production/ProductionProductMainMapper.xml                            |   64 ++++++++++++++------
 src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java    |   16 +++++
 src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java                      |    3 +
 src/main/java/com/ruoyi/production/service/SalesLedgerProductionAccountingService.java          |    4 +
 src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java                            |    8 ++
 10 files changed, 120 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index 55d2ed0..ca0cc8e 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -123,12 +123,14 @@
         LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ApproveNode::getApproveProcessId, id);
         queryWrapper.eq(ApproveNode::getDeleteFlag, 0);
+        queryWrapper.eq(ApproveNode::getApproveNodeStatus, 0);
         List<ApproveNode> list = list(queryWrapper);
         // 鎸夌収 approveNodeOrder 瀛楁鍗囧簭鎺掑簭
         list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder));
         LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
         approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveId, id)
                 .eq(ApproveProcess::getApproveDelete, 0)
+                .eq(ApproveProcess::getApproveStatus, 0)
                 .last("limit 1");
         ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper);
         if(approveProcess != null && approveProcess.getApproveStatus() == 3){
@@ -154,6 +156,7 @@
         LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
         approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveId, approveNode.getApproveProcessId())
                 .eq(ApproveProcess::getApproveDelete, 0)
+                .eq(ApproveProcess::getApproveStatus, 0)
                 .last("limit 1");
         ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper);
         if(approveProcess == null) throw new RuntimeException("瀹℃壒涓嶅瓨鍦�");
@@ -161,6 +164,7 @@
         approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approveNode.getApproveProcessId())
                 .eq(ApproveNode::getApproveNodeOrder, approveNode.getApproveNodeOrder() + 1)
                 .eq(ApproveNode::getDeleteFlag, 0)
+                .eq(ApproveNode::getApproveNodeStatus, 0)
                 .last("limit 1");
         ApproveNode approveNode1 = approveNodeMapper.selectOne(approveNodeLambdaQueryWrapper);
         approveProcess.setApproveStatus(status);
diff --git a/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java b/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java
index 0473c3a..50fa4aa 100644
--- a/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java
+++ b/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java
@@ -8,11 +8,14 @@
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.production.dto.ProductOrderDto;
 import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
 import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
+import com.ruoyi.production.service.SalesLedgerProductionAccountingService;
 import com.ruoyi.production.service.impl.SalesLedgerProductionAccountingServiceImpl;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -33,7 +36,7 @@
 public class SalesLedgerProductionAccountingController extends BaseController {
 
     @Autowired
-    private SalesLedgerProductionAccountingServiceImpl salesLedgerProductionAccountingService;
+    private SalesLedgerProductionAccountingService salesLedgerProductionAccountingService;
 
     @GetMapping("/listPage")
     @ApiOperation("鐢熶骇鏍哥畻-鍒嗛〉鏌ヨ")
@@ -53,5 +56,16 @@
         ExcelUtil<SalesLedgerProductionAccountingDto> util = new ExcelUtil<SalesLedgerProductionAccountingDto>(SalesLedgerProductionAccountingDto.class);
         util.exportExcel(response, list, "鐢熶骇鏍哥畻鏁版嵁");
     }
+//----------------------------------------------------------------------------------------------------------------------------------------------------
+    @GetMapping("/page")
+    @ApiModelProperty("鏌ヨ宸ヤ汉鐢熶骇宸ヨ祫淇℃伅")
+    public R pageProductionAccounting(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page){
+        return R.ok(salesLedgerProductionAccountingService.pageProductionAccounting(salesLedgerProductionAccountingDto, page));
+    }
 
+    @GetMapping("/listProductionDetails")
+    @ApiModelProperty("鏌ヨ宸ヤ汉鐢熶骇宸ヨ祫淇℃伅")
+    public R listProductionDetails(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page){
+        return R.ok(salesLedgerProductionAccountingService.listProductionDetails(salesLedgerProductionAccountingDto,page));
+    }
 }
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
index 08d65fa..f34124b 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -7,6 +7,7 @@
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 @Data
@@ -46,4 +47,11 @@
     //閿�鍞悎鍚屽彿
     @Excel(name = "閿�鍞悎鍚屽彿")
     private String salesContractNo;
+
+    private LocalDate scheduleDate;
+    private String schedulingUserName;
+    private String customerName;
+    private String process;
+    private BigDecimal workHours;
+    private BigDecimal wages;
 }
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
index 6707622..c86d7bb 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
@@ -70,4 +70,10 @@
     @ApiModelProperty(value = "缁撴潫鏃堕棿")
     private String entryDateEnd;
 
+
+    private BigDecimal outputNum;
+
+    private BigDecimal outputRate;
+
+
 }
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
index 2bdefa3..1958e05 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.production.dto.ProductionProductMainDto;
+import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
 import com.ruoyi.production.pojo.ProductOrder;
 import com.ruoyi.production.pojo.ProductionProductMain;
 import org.apache.ibatis.annotations.Mapper;
@@ -27,4 +28,6 @@
      * @return
      */
     ProductOrder getOrderByMainId(@Param("productMainId") Long productMainId);
+
+    IPage<ProductionProductMainDto> listProductionDetails(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page);
 }
diff --git a/src/main/java/com/ruoyi/production/mapper/SalesLedgerProductionAccountingMapper.java b/src/main/java/com/ruoyi/production/mapper/SalesLedgerProductionAccountingMapper.java
index 64477b5..aad58ed 100644
--- a/src/main/java/com/ruoyi/production/mapper/SalesLedgerProductionAccountingMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/SalesLedgerProductionAccountingMapper.java
@@ -17,4 +17,5 @@
     IPage<SalesLedgerProductionAccountingDto> listPage(Page page,@Param("salesLedgerDto") SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto);
 
 
+    IPage<SalesLedgerProductionAccountingDto> pageProductionAccounting(Page page, @Param("ew") SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto);
 }
diff --git a/src/main/java/com/ruoyi/production/service/SalesLedgerProductionAccountingService.java b/src/main/java/com/ruoyi/production/service/SalesLedgerProductionAccountingService.java
index 11c62f4..bf0176b 100644
--- a/src/main/java/com/ruoyi/production/service/SalesLedgerProductionAccountingService.java
+++ b/src/main/java/com/ruoyi/production/service/SalesLedgerProductionAccountingService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.production.dto.ProductionProductMainDto;
 import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
 import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
 
@@ -16,4 +17,7 @@
     IPage<SalesLedgerProductionAccountingDto> listPage(Page page, SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto);
 
 
+    IPage<SalesLedgerProductionAccountingDto> pageProductionAccounting(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page);
+
+    IPage<ProductionProductMainDto> listProductionDetails(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page);
 }
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..76ac503 100644
--- a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
@@ -3,7 +3,9 @@
 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.production.dto.ProductionProductMainDto;
 import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
+import com.ruoyi.production.mapper.ProductionProductMainMapper;
 import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper;
 import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
 import com.ruoyi.production.service.SalesLedgerProductionAccountingService;
@@ -23,7 +25,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 +40,17 @@
         return list;
     }
 
+    @Override
+    public IPage<SalesLedgerProductionAccountingDto> pageProductionAccounting(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page) {
+        // TODO 绠$悊鍛樻煡璇㈡墍鏈夛紝鍏朵粬浜哄彧鑳芥煡鑷繁
+        return salesLedgerProductionAccountingMapper.pageProductionAccounting(page, salesLedgerProductionAccountingDto);
+    }
+
+    @Override
+    public IPage<ProductionProductMainDto> listProductionDetails(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page) {
+        return productionProductMainMapper.listProductionDetails(salesLedgerProductionAccountingDto, page);
+    }
+
     public static boolean isNumeric(String str) {
         if (str == null || str.isEmpty()) {
             return false;
diff --git a/src/main/resources/mapper/production/ProductionProductMainMapper.xml b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
index 5c64617..ccc29e0 100644
--- a/src/main/resources/mapper/production/ProductionProductMainMapper.xml
+++ b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
@@ -14,24 +14,24 @@
 
     <select id="listPageProductionProductMainDto" resultType="com.ruoyi.production.dto.ProductionProductMainDto">
         select ppm.*,
-               pwo.work_order_no as workOrderNo,
-               pwo.status as workOrderStatus,
-               u.nick_name as nickName,
-               p.product_name as productName,
-               pm.model as productModelName,
-               ppo.quantity,
-               ppo.scrap_qty,
-               pm.unit,
-               sl.sales_contract_no salesContractNo
+        pwo.work_order_no as workOrderNo,
+        pwo.status as workOrderStatus,
+        u.nick_name as nickName,
+        p.product_name as productName,
+        pm.model as productModelName,
+        ppo.quantity,
+        ppo.scrap_qty,
+        pm.unit,
+        sl.sales_contract_no salesContractNo
         from
-            production_product_main ppm
-                left join product_work_order pwo on pwo.id = ppm.work_order_id
-                left join product_order po on po.id = pwo.product_order_id
-                left join production_product_output ppo on ppm.id = ppo.product_main_id
-                left join product_model pm on pm.id = ppo.product_model_id
-                left join product p on p.id = pm.product_id
-                left join sales_ledger sl on sl.id = po.sales_ledger_id
-                left join sys_user u on u.user_id = ppm.user_id
+        production_product_main ppm
+        left join product_work_order pwo on pwo.id = ppm.work_order_id
+        left join product_order po on po.id = pwo.product_order_id
+        left join production_product_output ppo on ppm.id = ppo.product_main_id
+        left join product_model pm on pm.id = ppo.product_model_id
+        left join product p on p.id = pm.product_id
+        left join sales_ledger sl on sl.id = po.sales_ledger_id
+        left join sys_user u on u.user_id = ppm.user_id
         <where>
             <if test="c.nickName != null and c.nickName != ''">
                 and u.nick_name like concat('%',#{c.nickName},'%')
@@ -52,9 +52,33 @@
     <select id="getOrderByMainId" resultType="com.ruoyi.production.pojo.ProductOrder">
         select po.*
         from product_order po
-        left join  product_work_order pwo on po.id = pwo.product_order_id
-        left join production_product_main pm on work_order_id=pwo.id
-        where pm.id=#{productMainId}
+                 left join product_work_order pwo on po.id = pwo.product_order_id
+                 left join production_product_main pm on work_order_id = pwo.id
+        where pm.id = #{productMainId}
+    </select>
+    <select id="listProductionDetails" resultType="com.ruoyi.production.dto.ProductionProductMainDto">
+        SELECT
+            slpa.scheduling_date,
+            slpa.scheduling_user_name,
+            sl.sales_contract_no,
+            sl.customer_name,
+            p.product_name,
+            pm.model,
+            pm.unit,
+            slpa.process,
+            ppo.quantity,
+            slpa.work_hours,
+            slpa.work_hours * slpa.finished_num AS wages
+        FROM
+            production_product_main ppm
+                LEFT JOIN sales_ledger_production_accounting slpa ON slpa.sales_ledger_work_id = ppm.id
+                LEFT JOIN production_product_output ppo ON ppm.id = ppo.product_main_id
+                LEFT JOIN product_work_order pwo ON pwo.id = ppm.work_order_id
+                LEFT JOIN product_order po ON po.id = pwo.product_order_id
+                LEFT JOIN process_route pr ON pr.id = po.route_id
+                LEFT JOIN product_model pm ON po.product_model_id = pm.id
+                LEFT JOIN product p ON p.id = pm.product_id
+                LEFT JOIN sales_ledger sl ON po.sales_ledger_id = sl.id
     </select>
 
     <delete id="deleteByWorkOrderIds" parameterType="java.util.List">
diff --git a/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml b/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
index ea766e6..ac3ccc5 100644
--- a/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
+++ b/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
@@ -50,4 +50,24 @@
         group by t4.id
         order by t4.scheduling_date desc
     </select>
+    <select id="pageProductionAccounting"
+            resultType="com.ruoyi.production.dto.SalesLedgerProductionAccountingDto">
+        SELECT
+            slpa.scheduling_user_id,
+            slpa.scheduling_user_name,
+               sum(ppout.quantity) as output_num,
+               sum(slpa.finished_num * work_hours) as  wages,
+               SUM(slpa.finished_num) / SUM(ppout.quantity) as output_rate
+        FROM sales_ledger_production_accounting slpa
+                 LEFT JOIN production_product_main ppm ON slpa.sales_ledger_work_id = ppm.id
+                 LEFT JOIN production_product_output ppout ON ppm.id = ppout.product_main_id
+        <where>
+            <if test="ew.schedulingUserName != null and ew.schedulingUserName !=''" >
+                and slpa.scheduling_user_name  = #{ew.schedulingUserName}
+            </if>
+        </where>
+        GROUP BY slpa.scheduling_user_name
+
+    </select>
+
 </mapper>

--
Gitblit v1.9.3