From ccc519c681dacd75cd4079a1f3740c6f891430bd Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期三, 26 二月 2025 08:33:31 +0800
Subject: [PATCH] 1.MES->ERP调拨出库

---
 service/Warehouse/TransferOutManager.cs |   94 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 67 insertions(+), 27 deletions(-)

diff --git a/service/Warehouse/TransferOutManager.cs b/service/Warehouse/TransferOutManager.cs
index 55ff835..a0d6fdc 100644
--- a/service/Warehouse/TransferOutManager.cs
+++ b/service/Warehouse/TransferOutManager.cs
@@ -1,5 +1,6 @@
 锘縰sing System.Data;
 using System.Data.SqlClient;
+using MES.Service.Modes;
 using NewPdaSqlServer.DB;
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
@@ -11,7 +12,7 @@
 ///     璋冩嫧鍑哄叆搴撶鐞嗙被
 ///     璐熻矗澶勭悊璋冩嫧鍑哄簱鐩稿叧鐨勪笟鍔¢�昏緫
 /// </summary>
-public class TransferOutManager : Repository<TransferOut>
+public class TransferOutManager : Repository<MesDbck>
 {
     /// <summary>
     ///     鑾峰彇鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃
@@ -20,7 +21,7 @@
     public List<string> GetTransferOutNoList()
     {
         // 鍏堜粠鏁版嵁搴撹幏鍙朤ransfer_Out_ETAIL琛ㄧ殑鏁版嵁
-        var transferOutDetails = Db.Queryable<TransferOutDetail>().ToList();
+        var transferOutDetails = Db.Queryable<MesDbckDetail>().ToList();
 
         // 浣跨敤LINQ瀵硅幏鍙栫殑鏁版嵁杩涜鍒嗙粍鍜岀瓫閫�
         // 绛涢�夋潯浠�:鐢宠鏁伴噺(sq)涓嶇瓑浜庡凡鎵暟閲�(ys)鐨勮褰�
@@ -29,17 +30,18 @@
             .Select(g => new
             {
                 pid = g.Key,
-                sq = g.Sum(x => x.ShNum), // 鐢宠鏁伴噺鍚堣
-                ys = g.Sum(x => x.YsNum) // 宸叉壂鏁伴噺鍚堣
+                sq = g.Sum(x => x.FQty), // 鐢宠鏁伴噺鍚堣
+                ys = g.Sum(x => x.SQty), // 璋冨嚭宸叉壂鏁伴噺鍚堣
+                rs = g.Sum(x => x.RQty), // 璋冨叆宸叉壂鏁伴噺鍚堣
             })
-            .Where(x => (x.sq ?? 0) != (x.ys ?? 0))
+            .Where(x => !((x.sq ?? 0) == (x.ys ?? 0) && (x.sq ?? 0) == (x.rs ?? 0)))
             .Select(x => x.pid)
             .ToList();
 
         // 鏍规嵁pid鏌ヨ瀵瑰簲鐨勫嚭搴撳崟鍙�
-        var billNos = Db.Queryable<TransferOut>()
-            .Where(x => result.Contains(x.Guid))
-            .Select(x => x.BillNo)
+        var billNos = Db.Queryable<MesDbck>()
+            .Where(x => result.Contains(x.Id) && x.FApproveStatus == 1)
+            .Select(x => x.FBillNo)
             .ToList();
 
         return billNos;
@@ -50,7 +52,7 @@
     /// </summary>
     /// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param>
     /// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns>
-    public List<TransferOutDetail> GetTransferOutDetailListByBillNo(
+    public List<TransferOutDetailModel> GetTransferOutDetailListByBillNo(
         WarehouseQuery query)
     {
         var p_bill_no = query.billNo;
@@ -58,25 +60,63 @@
         // 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏
         // 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛�
         // 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳
-        var result = Db.Queryable<TransferOutDetail, TransferOut, MesItems>(
+        var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>(
                 (b, a, s) => new JoinQueryInfos(
-                    JoinType.Left, b.Pid == a.Guid,
-                    JoinType.Left, b.ItemId == s.Id))
+                    JoinType.Left, b.Pid == a.Id,
+                    JoinType.Left, b.FMaterialId == s.Id.ToString()))
             .Where((b, a, s) =>
-                (b.ShNum ?? 0) - (b.YsNum ?? 0) > 0 // 鏈畬鎴愭暟閲忓ぇ浜�0
-                && a.BillNo == p_bill_no // 鍖归厤鍗曟嵁鍙�
-                && a.Status == 1) // 鍗曟嵁宸插鏍�
+                !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0))
+                && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙�
+                && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍�
             .OrderBy((b, a, s) => s.ItemNo)
-            .Select((b, a, s) => new TransferOutDetail
+            .Select((b, a, s) => new TransferOutDetailModel
             {
                 ItemNo = s.ItemNo,
+                ItemName = s.ItemName,
                 ItemModel = s.ItemModel,
-                ShNum = b.ShNum, // 鐢宠鏁伴噺
-                YsNum = b.YsNum, // 宸叉壂鏁伴噺
+                FQty = b.FQty, // 鐢宠鏁伴噺
+                SQty = b.SQty, // 宸叉壂鏁伴噺
+                RQty = b.RQty, // 宸叉壂鏁伴噺
                 // 淇濈暀鍏朵粬蹇呰瀛楁...
-                Pid = b.Pid,
-                ItemId = b.ItemId,
-                Guid = b.Guid
+                Pid = b.Pid.ToString(),
+                FMaterialId = b.FMaterialId,
+                Id = b.Id.ToString()
+            })
+            .ToList();
+
+        if(result.Count < 1) throw new Exception("璇ヨ皟鎷ㄥ崟涓嶅瓨鍦ㄦ垨宸叉壂瀹岋紝璇烽噸鏂版壂鎻�");
+
+        return result;
+    }
+
+    public List<TransferOutDetailModel> GetDBCKDetal(
+        WarehouseQuery query)
+    {
+        var p_bill_no = query.billNo;
+
+        // 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏
+        // 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛�
+        // 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳
+        var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>(
+                (b, a, s) => new JoinQueryInfos(
+                    JoinType.Left, b.Pid == a.Id,
+                    JoinType.Left, b.FMaterialId == s.Id.ToString()))
+            .Where((b, a, s) =>
+                (b.FQty ?? 0) - (b.SQty ?? 0) > 0 // 鏈畬鎴愭暟閲忓ぇ浜�0
+                && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙�
+                && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍�
+            .OrderBy((b, a, s) => s.ItemNo)
+            .Select((b, a, s) => new TransferOutDetailModel
+            {
+                ItemNo = s.ItemNo,
+                ItemName = s.ItemName,
+                ItemModel = s.ItemModel,
+                FQty = b.FQty, // 鐢宠鏁伴噺
+                SQty = b.SQty, // 宸叉壂鏁伴噺
+                // 淇濈暀鍏朵粬蹇呰瀛楁...
+                Pid = b.Pid.ToString(),
+                FMaterialId = b.FMaterialId,
+                Id = b.Id.ToString()
             })
             .ToList();
 
@@ -88,7 +128,7 @@
     /// </summary>
     /// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param>
     /// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns>
-    public (WarehouseQuery form, List<TransferOutDetail> items)
+    public (WarehouseQuery form, List<TransferOutDetailModel> items)
         ScanMoveBarcode(WarehouseQuery query)
     {
         var p_bill_no = query.billNo;
@@ -98,8 +138,8 @@
         if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
 
         // 鏌ヨ鍑哄簱鍗曞苟楠岃瘉鐘舵��
-        var transferOut = Db.Queryable<TransferOut>()
-            .Where(x => x.BillNo == p_bill_no && x.Status == 1)
+        var transferOut = Db.Queryable<MesDbck>()
+            .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1)
             .First();
         if (transferOut == null) throw new Exception("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�");
 
@@ -158,7 +198,7 @@
                     query.Fum = Convert.ToDecimal(splitNum);
 
                     // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏
-                    return (query, GetTransferOutDetailListByBillNo(query));
+                    return (query, GetDBCKDetal(query));
                 }
                 catch (Exception ex)
                 {
@@ -177,7 +217,7 @@
     /// </summary>
     /// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param>
     /// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns>
-    public (WarehouseQuery form, List<TransferOutDetail> items)
+    public (WarehouseQuery form, List<TransferOutDetailModel> items)
         ScanReceiveBarcode(WarehouseQuery query)
     {
         var p_bill_no = query.billNo;
@@ -248,7 +288,7 @@
                     query.Fum = Convert.ToDecimal(splitNum);
 
                     // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏
-                    return (query, GetTransferOutDetailListByBillNo(query));
+                    return (query, GetDBCKDetal(query));
                 }
                 catch (Exception ex)
                 {

--
Gitblit v1.9.3