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