From bdf5a76a8eab8304176a1379a175e2248fa90ca7 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期一, 02 十二月 2024 08:56:56 +0800
Subject: [PATCH] 采购退料扫码

---
 service/Warehouse/MesInvItemOutsManager.cs |  112 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 91 insertions(+), 21 deletions(-)

diff --git a/service/Warehouse/MesInvItemOutsManager.cs b/service/Warehouse/MesInvItemOutsManager.cs
index 14a12de..59c5394 100644
--- a/service/Warehouse/MesInvItemOutsManager.cs
+++ b/service/Warehouse/MesInvItemOutsManager.cs
@@ -2,6 +2,7 @@
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
 using NewPdaSqlServer.util;
+using Newtonsoft.Json;
 using SqlSugar;
 
 namespace NewPdaSqlServer.service.Warehouse;
@@ -376,14 +377,15 @@
     {
         var message = MesToErpParam(query);
 
-        // var executeReturnIdentity =
-        //     Db.Insertable(message).ExecuteReturnIdentity();
-        // if (executeReturnIdentity > 0)
-        // {
-        //     message.Id = executeReturnIdentity;
-        //     message.Pid = executeReturnIdentity;
-        //     return message;
-        // }
+        var newGuid = Guid.NewGuid();
+        message.Guid = newGuid;
+        message.Pid = newGuid;
+        var executeReturnIdentity =
+            Db.Insertable(message).IgnoreColumns(true).ExecuteCommand();
+        if (executeReturnIdentity > 0)
+        {
+            return message;
+        }
 
         throw new Exception("鑾峰彇鏁版嵁澶辫触");
     }
@@ -415,7 +417,10 @@
 
         if (mesInvItemStocks == null) return dto;
 
-        dto.ItemNo = mesInvItemStocks.ItemNo;
+        var mesItems = Db.Queryable<MesItems>()
+            .Where(s => s.Id == mesInvItemStocks.ItemId).Single();
+
+        dto.ItemNo = mesItems.ItemNo;
         dto.Quantity = mesInvItemStocks.Quantity;
 
         return dto;
@@ -443,6 +448,7 @@
             .Where((b, bar, c, d) => b.ItemOutId == parsedGuid)
             .Select((b, bar, c, d) => new MesInvItemOutCDetails
             {
+                Guid = b.Guid,
                 Quantity = b.Quantity,
                 DepotSectionCode = b.DepotSectionCode,
                 DepotCode = b.DepotCode,
@@ -464,12 +470,12 @@
         var tableName = "MES_INV_ITEM_OUTS_" + query.Type;
         if ("A".Equals(query.Type))
         {
-            //erpParameters = GetErpParameters(query.billNo);
+            erpParameters = GetErpParameters(query.id);
             title = "閲囪喘閫�璐у崟" + query.billNo + "瀹℃牳";
         }
         else if ("B".Equals(query.Type))
         {
-            //erpParameters = GetDeApprovePam(query.id);
+            erpParameters = GetDeApprovePam(query.id);
             title = "閲囪喘閫�璐у崟" + query.billNo + "鍙嶅鏍�";
         }
 
@@ -492,6 +498,72 @@
             ContentType = "application/x-www-form-urlencoded"
         };
         return message;
+    }
+
+    private string GetErpParameters(string? id)
+    {
+        var guid = Guid.Empty;
+        if (string.IsNullOrEmpty(id)) return "";
+
+        var isValid = Guid.TryParse(id, out guid);
+        if (!isValid)
+            throw new ApplicationException("GUID杞崲閿欒");
+
+        var materials = Db
+            .Queryable<MesInvItemOuts, MesInvItemOutItems,
+                MesItems, MesUnit, MesInvItemArnDetail, MesDepots>(
+                (a, b, c, d, e, f) => new JoinQueryInfos(
+                    JoinType.Left, a.Guid == b.ItemOutId,
+                    JoinType.Left, b.ItemId == c.Id,
+                    JoinType.Left, d.Id.ToString() == c.ItemUnit,
+                    JoinType.Left,
+                    e.CbillNo == b.WorkNo && e.ItemId == b.ItemId,
+                    JoinType.Left, f.DepotId == a.DepotId
+                )).Where((a, b, c, d, e, f) => b.Guid == guid)
+            .Select<Material>((a, b, c, d, e, f) => new Material
+            {
+                FMaterialId = c.ItemNo,
+                FRMREALQTY = b.Quantity.ToString(),
+                FStockId = f.DepotCode,
+                FUnitID = d.Fnumber,
+                FLot = b.WorkNo,
+                F_MES_ENTRYID = b.Guid,
+                FsrcEntryId = e.Guid.ToString(),
+            }).ToList();
+
+
+        var mm = Db.Queryable<MesInvItemOuts>()
+            .Where(a => a.Guid == guid).First();
+
+        var jsonEntries = materials.Select(d => new
+        {
+            FMaterialId = d.FMaterialId,
+            FRMREALQTY = d.FRMREALQTY,
+            FStockId = d.FStockId,
+            FUnitID = d.FUnitID,
+            FLot = d.FLot,
+            F_MES_ENTRYID = d.F_MES_ENTRYID.ToString(),
+            FsrcEntryId = d.FsrcEntryId,
+        }).ToList();
+        var fdate = DateTime.Now.ToString("yyyy-MM-dd");
+        var jsonString = JsonConvert.SerializeObject(jsonEntries);
+        var encodedUrl = "taskname=CGTL&mesid=" + guid +
+                         "&optype=create&datajson={\"F_MES_ID\":\"" + guid
+                         + "\",\"FDate\":\"" + fdate
+                         + "\",\"FSRCBillTypeId\":\"" + "閲囪喘鍏ュ簱鍗�"
+                         + "\",\"FDESCRIPTION\":\"" + mm.Remark
+                         + "\",\"FMRMODE\":\"" + mm.Fmrmode
+                         + "\",\"cgtlentry\":" + jsonString
+                         + "}";
+        return encodedUrl;
+    }
+
+    private string GetDeApprovePam(string? id)
+    {
+        var encodedUrl = "taskname=CGTL&mesid=" + id +
+                         "&optype=delete&datajson={}";
+
+        return encodedUrl;
     }
 
     public bool ScanCode(WarehouseQuery query)
@@ -582,17 +654,15 @@
 
         sql = string.Format(@"
                 SELECT SUM(C.QUANTITY) AS SQ_QTY, SUM(D.QUANTITY_OK) AS OK_QTY
-                FROM MES_INV_ITEM_OUT_ITEMS C
-                LEFT JOIN (
-                    SELECT ITEM_OUT_ID, ITEM_NO, PBILL_NO, RK_NO, SUM(QUANTITY) AS QUANTITY_OK
+            FROM MES_INV_ITEM_OUT_ITEMS C
+         LEFT JOIN (SELECT ITEM_OUT_ID, ITEM_ID, PBILL_NO, RK_NO, SUM(QUANTITY) AS QUANTITY_OK
                     FROM MES_INV_ITEM_OUT_C_DETAILS
-                    GROUP BY ITEM_OUT_ID, ITEM_NO, PBILL_NO, RK_NO
-                ) D
-                ON D.ITEM_OUT_ID = C.ITEM_OUT_ID
-                AND D.ITEM_NO = C.ITEM_NO
-                AND D.RK_NO = C.RK_NO
-                AND isnull(C.PBILL_NO, '0') = isnull(D.PBILL_NO, '0')
-                WHERE C.ITEM_OUT_ID = '{0}'", mesInvItemOuts.Guid);
+                    GROUP BY ITEM_OUT_ID, ITEM_ID, PBILL_NO, RK_NO) D
+                   ON D.ITEM_OUT_ID = C.ITEM_OUT_ID
+                       AND D.ITEM_ID = C.ITEM_ID
+                       AND isnull(C.PBILL_NO, '0') = isnull(D.PBILL_NO, '0')
+                    WHERE C.ITEM_OUT_ID = '{0}'",
+            mesInvItemOuts.Guid);
 
         var queryResult = Db.Ado.SqlQuerySingle<dynamic>(sql);
 

--
Gitblit v1.9.3