From 5612526544b3532c5efc9c002d1c97b4af286bd1 Mon Sep 17 00:00:00 2001
From: sjz <1240968267@qq.com>
Date: 星期二, 02 九月 2025 15:45:08 +0800
Subject: [PATCH] 分步式调拨

---
 MES.Service/service/FBSDB/FbsDbManager.cs |  153 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 152 insertions(+), 1 deletions(-)

diff --git a/MES.Service/service/FBSDB/FbsDbManager.cs b/MES.Service/service/FBSDB/FbsDbManager.cs
index 8cfd820..c6f690b 100644
--- a/MES.Service/service/FBSDB/FbsDbManager.cs
+++ b/MES.Service/service/FBSDB/FbsDbManager.cs
@@ -1,8 +1,159 @@
 锘�
 
+using MES.Service.DB;
+using MES.Service.Dto.webApi;
+using MES.Service.Dto.webApi.FbsDb;
+using MES.Service.Modes;
+using MES.Service.Modes.FBSDB;
+using MES.Service.service.BasicData;
+using SqlSugar;
+
 namespace MES.Service.service.FBSDB;
 
-internal class FbsDbManager
+public class FbsDbManager:Repository<MesInvItemMoves>
 {
+    private readonly FbsDbBManager _dbBManager = new();
 
+    public bool SaveList(List<ErpDb> dbs)
+    {
+        var result = dbs.Select(Save).ToList();
+        return result.All(b => b);
+    }
+
+    public bool Save(ErpDb dbs)
+    {
+        var dba = dbs.erpDbcka;
+        var mesDbA = FbaDbA(dba);
+        var mesDbB = FbsDbB(dbs.erpDbckB,dba.FBillNo);
+        return UseTransaction(db =>
+        {
+            switch (dba.Type)
+            {
+                case "3":
+                    return DeleteData(db, mesDbA, mesDbB) ? 1 : 0;
+                case "1":
+                case "2":
+                case "4":
+                case "5":
+                    return SaveOrUpdateData(db, mesDbA, mesDbB) ? 1 : 0;
+                default:
+                    throw new NotImplementedException($"type娌℃湁{dba.Type}杩欎釜绫诲瀷");
+            }
+        }) > 0;
+    }
+
+    // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶
+    private bool SaveOrUpdateData(SqlSugarScope db, MesInvItemMoves fbsdba, List<MesInvItemMoveItems> fbsdbb)
+    {
+        if (fbsdba.Id != null)
+        {
+            base.DeleteById(fbsdba.Id);
+        }
+
+        if (fbsdbb.Count > 0)
+        {
+            db.Deleteable<MesInvItemMoveItems>().Where(s => s.ItemMoveId == fbsdba.Erpid).ExecuteCommand();
+        }
+        var orUpdate = base.Insert(fbsdba);
+        var baOrUpdate = _dbBManager.InsertRange(fbsdbb);
+        if (orUpdate && baOrUpdate)
+        {
+            return true;
+        }
+        throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
+    }
+
+    private bool DeleteData(SqlSugarScope db, MesInvItemMoves mesDbA, List<MesInvItemMoveItems> mesDbB)
+    {
+        var decimals = mesDbB.Select(s => s.Id).ToArray();
+        var update = base.DeleteById(mesDbA.Id);
+        var insertOrUpdate = db.Deleteable<MesInvItemMoveItems>().In(decimals).ExecuteCommand() > 0;
+
+        if (update && insertOrUpdate)
+        {
+            return true;
+        }
+        throw new NotImplementedException("鍒犻櫎澶辫触");
+    }
+
+    private MesInvItemMoves FbaDbA(FbsDbA dto)
+    {
+
+        var entity = new MesInvItemMoves
+        {
+            Erpid = Convert.ToDecimal(dto.Erpid),
+            BillNo = dto.FBillNo,
+            CreateBy = dto.FCreateBy,
+            CreateDate = dto.FDate != null ? DateTime.ParseExact(dto.FDate, "yyyy-MM-dd HH:mm:ss", null) : null,
+            Status = 1,
+            Remark = dto.FRemarks,
+            BillTypeId = 300,
+            TransactionNo = 302,
+            SapStatus = 0,
+            Factory = "1000",
+            Company = "1000",
+            Ts =0,
+            DbStatus="鏈皟鎷�",
+            FBillTypeId=dto.FBillTypeID,
+            FDocumentStatus=dto.FDocumentStatus,
+            FTransferDirect=dto.FTransferDirect,
+            FTransType=dto.FTRANSTYPE,
+            FBusinessType=dto.FBusinessType,
+            FOwnerTypeIdHead=dto.FOwnerTypeIdHead,
+            FOwnerTypeInIdHead=dto.FOwnerTypeInIdHead,
+            FAppOrgId=Convert.ToDecimal(dto.FAPPORGID)
+
+        };
+
+        var single = base.GetSingle(it => it.Erpid == entity.Erpid);
+        if (single != null)
+        {
+            entity.Id = single.Id;
+        }
+
+        return entity;
+    }
+
+    private List<MesInvItemMoveItems> FbsDbB(List<FbsDbB> dtoList,string billno)
+    {
+        var dbList = new List<MesInvItemMoveItems>();
+
+        foreach (var dto in dtoList)
+        {
+            var entitys = new MesInvItemMoveItems
+            {
+                ErpId = Convert.ToDecimal(dto.erpid),
+                ItemMoveId = Convert.ToDecimal(dto.eid),
+                ItemId =Convert.ToDecimal(dto.FMATERIALID),
+                ItemUnit = Convert.ToDecimal(dto.FUNITID),
+                SqNum = Convert.ToDecimal(dto.FQty),
+                Remark = dto.FNote,
+                BillNo = billno,
+                MoveIn = 0,
+                MoveOut = 0,
+                CreateDate = DateTime.Now,
+                IsTb = 0,
+                FOwnerTypeId = dto.FOwnerTypeId,
+                FOwnerId = dto.FOwnerId,
+                FStockId = dto.FStockId,
+                FOwnerTypeInId = dto.FOwnerTypeInId,
+                FOwnerInId = dto.FOwnerInId,
+                FStockInId = dto.FStockInId,
+                FStockOrgId = Convert.ToDecimal(dto.FStockOrgId),
+                FStockOrgInId = Convert.ToDecimal(dto.FStockOrgInId),
+                FLot=dto.FLot,
+                FMtono=dto.FMtoNo
+            };
+
+            var entity = Db.Queryable<MesInvItemMoveItems>().Where(s => s.ErpId == entitys.ErpId).Single();
+            if (entity != null)
+            {
+                entitys.Id = entity.Id;
+            }
+
+            dbList.Add(entitys);
+        }
+
+        return dbList;
+    }
 }

--
Gitblit v1.9.3