From 2a5ca0e2e98e2556bd218cade91975830e55b781 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期一, 14 四月 2025 12:16:16 +0800
Subject: [PATCH] womcaa接口表更新

---
 StandardPda/MES.Service/service/WomcaaManager.cs |  214 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 214 insertions(+), 0 deletions(-)

diff --git a/StandardPda/MES.Service/service/WomcaaManager.cs b/StandardPda/MES.Service/service/WomcaaManager.cs
new file mode 100644
index 0000000..76e5a52
--- /dev/null
+++ b/StandardPda/MES.Service/service/WomcaaManager.cs
@@ -0,0 +1,214 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using SqlSugar;
+
+namespace MES.Service.service;
+
+public class WomcaaManager : Repository<Womcaa>
+{
+    private readonly WomcabManager _womcabManager = new();
+
+    public bool SaveList(List<ErpWOM> rohIns)
+    {
+        var result = rohIns.Select(Save).ToList();
+        return result.All(b => b);
+    }
+
+    public bool Save(ErpWOM wom)
+    {
+        var womErpCaa = wom.ErpCaa;
+        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa);
+        var mesWomcabs =
+            MapErpCABtoWomcab(wom.ErpCabs);
+
+        return UseTransaction(db =>
+        {
+            switch (womErpCaa.Type)
+            {
+                case "3":
+                    return UpdateData(db, mesWomcaa, mesWomcabs) ? 1 : 0;
+                case "2":
+                case "4":
+                case "5":
+                    return SaveOrUpdateData(db, mesWomcaa, mesWomcabs)
+                        ? 1
+                        : 0;
+                default:
+                    throw new NotImplementedException(
+                        $"type绫诲瀷涓簕womErpCaa.Type}鐨勪笉瀛樺湪");
+            }
+        }) > 0;
+    }
+
+    private bool SaveOrUpdateData(SqlSugarScope db, Womcaa mesWomcaa,
+        List<Womcab> mesWomcabs)
+    {
+        if (mesWomcaa.Id != null) base.DeleteById(mesWomcaa.Id);
+
+        if (mesWomcabs.Count > 0)
+            db.Deleteable<Womcab>()
+                .Where(s => s.Eid == mesWomcaa.Erpid).ExecuteCommand();
+
+        var orUpdate = db.Insertable(mesWomcaa)
+            .IgnoreColumns(true).ExecuteCommand() > 0;
+
+        var baOrUpdate = db.Insertable(mesWomcabs).PageSize(1)
+            .IgnoreColumnsNull()
+            .ExecuteCommand() > 0;
+
+        if (orUpdate && baOrUpdate) return true;
+        throw new NotImplementedException("鏇存柊澶辫触");
+    }
+
+    private bool UpdateData(SqlSugarScope db, Womcaa mesWomcaa,
+        List<Womcab> mesWomcabs)
+    {
+        var decimals = mesWomcabs.Select(s => s.Id).ToArray();
+        var update = base.DeleteById(mesWomcaa.Id);
+        var insertOrUpdate = db
+            .Deleteable<Womcab>().In(decimals)
+            .ExecuteCommand() > 0;
+
+        if (update && insertOrUpdate) return true;
+        throw new NotImplementedException("鏇存柊澶辫触");
+    }
+
+    private Womcaa MapErpCAAtoWomcaa(ErpCAA dto)
+    {
+        var entity = new Womcaa
+        {
+            Erpid = Convert.ToInt64(dto.Id),
+            Caa001 = dto.FBillNo,
+            Caa021 = dto.FWorkShopID,
+            RoutingId = dto.FRoutingId,
+            WorkShopId = dto.FREMWorkShopId,
+            DepotCode = dto.FStockId,
+            CreateDate = dto.FDate,
+            Caa004 = dto.FBillType,
+            Caa023 = dto.FStatus,
+            Caa006 = dto.FMaterialId,
+            Caa009 = dto.FUnitId,
+            Caa012 = !string.IsNullOrEmpty(dto.FQty)
+                ? Convert.ToDecimal(dto.FQty)
+                : null,
+            WorkGroupId = dto.FWorkGroupId,
+            PlanId = dto.FPlannerID,
+            Caa010 = dto.FPlanStartDate,
+            Caa011 = dto.FPlanFinishDate,
+            Caa005 = dto.FConveyDate,
+            StockInlimith = dto.FStockInLimitH,
+            StockInlimitl = dto.FStockInLimitL,
+            Mtono = dto.FMTONO,
+            Lot = dto.FLot,
+            Caa013 = dto.FBomId,
+
+            CreateType = dto.FCreateType,
+            Caa018 = !string.IsNullOrEmpty(dto.PLAN_ID)
+                ? Convert.ToInt64(dto.PLAN_ID)
+                : null,
+            Caa019 = !string.IsNullOrEmpty(dto.PLAN_SEQ)
+                ? Convert.ToInt64(dto.PLAN_SEQ)
+                : null,
+            Caa020 = dto.PLAN_NUM,
+            SrcBillType = dto.FSrcBillType,
+            SrcBillNo = dto.FSrcBillNo,
+            SrcBillentryseq = dto.FSrcBillEntrySeq,
+            SaleOrderNo = dto.FSaleOrderNo,
+            SaleOrderEntryseq = dto.FSaleOrderEntrySeq,
+            ForceCloserid = dto.FForceCloserId,
+            CloseType = dto.FCloseType,
+            SrcSplitBillno = dto.FSrcSplitBillNo,
+            Caa016 = dto.FDescription,
+            //BTBZ = dto.BTBZ,  
+            PrdOrg = dto.FPrdOrgId,
+            TrustOrg = dto.FEnTrustOrgId
+            //Typea = dto.TypeA
+        };
+
+
+        var single = base.GetSingle(it => it.Erpid == entity.Erpid);
+        if (single != null) entity.Id = single.Id;
+
+        return entity;
+    }
+
+    private List<Womcab> MapErpCABtoWomcab(List<ErpCAB> dtoList)
+    {
+        var womcabList = new List<Womcab>();
+
+        foreach (var dto in dtoList)
+        {
+            var womcab = new Womcab
+            {
+                Erpid = !string.IsNullOrEmpty(dto.ID)
+                    ? Convert.ToDecimal(dto.ID)
+                    : throw new Exception("瀛愯〃id涓嶅厑璁镐负绌�"),
+                Cab001 = dto.FBillNo,
+                Cab002 = dto.FSeq,
+                Cab003 = dto.FMaterialID,
+                Cab006 = !string.IsNullOrEmpty(dto.FNeedQty)
+                    ? Convert.ToDecimal(dto.FNeedQty)
+                    : null,
+                MustQty = !string.IsNullOrEmpty(dto.FMustQty)
+                    ? Convert.ToDecimal(dto.FMustQty)
+                    : null,
+                Cab007 = !string.IsNullOrEmpty(dto.FPickedQty)
+                    ? Convert.ToDecimal(dto.FPickedQty)
+                    : null,
+                PositionNo = dto.FPositionNO,
+                SupplyOrganization = dto.FChildSupplyOrgId,
+                IssuingOrganization = dto.FSupplyOrg,
+                OwnerId = dto.FOwnerID,
+                Mtono = dto.FMTONO,
+                Lot = dto.FLot,
+                DepotCode = dto.FStockID,
+                IssueType = dto.FIssueType,
+                Cab009 = dto.FUnitID,
+                SupplyType = dto.FSupplyType,
+                Cab012 = !string.IsNullOrEmpty(dto.FStdQty)
+                    ? Convert.ToDecimal(dto.FStdQty)
+                    : null,
+                FreplaceGroup = !string.IsNullOrEmpty(dto.FReplaceGroup)
+                    ? Convert.ToInt64(dto.FReplaceGroup)
+                    : null,
+                UseRate = !string.IsNullOrEmpty(dto.FUseRate)
+                    ? Convert.ToDecimal(dto.FUseRate)
+                    : null,
+                MaterialType = dto.FMaterialType,
+                Cab014 = !string.IsNullOrEmpty(dto.FIsKeyItem)
+                    ? Convert.ToInt64(dto.FIsKeyItem)
+                    : null,
+                Numerator = !string.IsNullOrEmpty(dto.FNumerator)
+                    ? Convert.ToDecimal(dto.FNumerator)
+                    : null,
+                Denominator = !string.IsNullOrEmpty(dto.FDenominator)
+                    ? Convert.ToDecimal(dto.FDenominator)
+                    : null,
+                Pid = !string.IsNullOrEmpty(dto.FID)
+                    ? Convert.ToDecimal(dto.FID)
+                    : throw new Exception("鐖秈d涓嶅厑璁镐负绌�"),
+                Eid = !string.IsNullOrEmpty(dto.FID)
+                    ? Convert.ToDecimal(dto.FID)
+                    : throw new Exception("鐖秈d涓嶅厑璁镐负绌�"),
+                Scrapqty = !string.IsNullOrEmpty(dto.FFixScrapQty)
+                    ? Convert.ToDecimal(dto.FFixScrapQty)
+                    : null,
+                Scraprate = !string.IsNullOrEmpty(dto.FScrapRate)
+                    ? Convert.ToDecimal(dto.FScrapRate)
+                    : null,
+                TypeB = dto.TypeB
+                // WR_F_XIFG_Base_qtr = dto.F_XIFG_Base_qtr,
+                // WR_F_XIFG_Base_83g = dto.F_XIFG_Base_83g
+            };
+
+            var entity = Db.Queryable<Womcab>()
+                .Where(s => s.Erpid == womcab.Erpid).Single();
+            if (entity != null) womcab.Id = entity.Id;
+
+            womcabList.Add(womcab);
+        }
+
+        return womcabList;
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3