From 8276722de62e0be1e68adf65f150686a236268bd Mon Sep 17 00:00:00 2001
From: zjh <2207896513@qq.com>
Date: 星期五, 18 七月 2025 10:08:44 +0800
Subject: [PATCH] 产测接口代码提交

---
 StandardPda/MES.Service/service/WomcaaManager.cs |  292 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 292 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..014a5fc
--- /dev/null
+++ b/StandardPda/MES.Service/service/WomcaaManager.cs
@@ -0,0 +1,292 @@
+锘縰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)
+        {
+            //瀹氫箟杈撳叆鍙傛暟
+            var inputParam1 = new SugarParameter("P_WORK_NO", mesWomcaa.Caa001);
+            // 瀹氫箟杈撳嚭鍙傛暟
+            var outParam1 = new SugarParameter("c_Result", null, true);
+            var outParam2 = new SugarParameter("C_MSG", null, true);
+            // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
+            Db.Ado.ExecuteCommand("BEGIN PRC_UPDATE_DAA(:P_WORK_NO,:c_Result,:C_MSG); END;", inputParam1, outParam1, outParam2);
+            // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+            int result = int.Parse((string)outParam1.Value);
+            string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value;
+            if (result == 1)
+            {
+                //瀛樺偍杩囩▼澶辫触鍒欎簨鍔¤繘琛屽洖婊�
+                //db.Ado.RollbackTran();
+                throw new Exception(message);
+            }
+            // 鎻愪氦浜嬪姟
+            //db.Ado.CommitTran();
+            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,
+            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,
+            Caa020 = dto.FBillNo,
+            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,
+            PrdOrg = dto.FPrdOrgId,
+            TrustOrg = dto.FEnTrustOrgId,
+            Bomtype = dto.FBOMType,
+            Bommaster = dto.FBOMMaster,
+            Bomaltrnate = dto.FBOMAlternate,
+            Bomeffedate = dto.FBOMEffeDate,
+            Routingalternate = dto.FRoutingAlternate,
+            Routingeffedate = dto.FRoutingEffeDate,
+            Mrpqty = dto.FMRPQty,
+            Actualstartdate = dto.FActualStartDate,
+            Actualcompletedate = dto.FActualCompleteDate,
+            Mosourcedoctype = dto.FMOSourceDocType,
+            Project = dto.FProject,
+            Ownerorg = dto.FOwnerOrg,
+            Createdby =  dto.FCreatedBy,
+            Createdon = dto.FCreatedOn,
+            Totalstartqty =  dto.FTotalStartQty,
+            Totalcompleteqty = dto.FTotalCompleteQty,
+            Totalrcvqty = dto.FTotalRcvQty,
+            Totalreworkingqty = dto.FTotalReworkingQty,
+            Reasonforrework = dto.FReasonForRework,
+            Isforcewholeset = dto.FIsForceWholeSet,
+            PREVMO = dto.FPrevMO,
+            Typea = dto.TypeA
+        };
+
+
+        var single = base.GetSingle(it => it.Erpid == entity.Erpid);
+        if (single != null) entity.Id = single.Id;
+
+        //Caa006 = dto.FMaterialId,
+        var mesLinkU9 = Db.Queryable<MesLinkU9>()
+            .Where(x => x.U9Id == dto.FMaterialId
+                        && x.OrgId == dto.FPrdOrgId
+                        && x.TableType == "MES_ITEMS").First();
+
+        var mesLinkU9_xm = Db.Queryable<MesLinkU9>()
+           .Where(x => x.U9Id == Convert.ToString(dto.FProject)
+                       && x.OrgId == dto.FPrdOrgId
+                       && x.TableType == "MES_PROJECT").First();
+
+        if (mesLinkU9 != null) entity.Caa006 = mesLinkU9.MesId;
+        if (mesLinkU9_xm != null) entity.Project = Convert.ToInt64(mesLinkU9_xm.MesId);
+
+        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,
+                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,
+              
+                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,
+                Project  = dto.FProject,
+                Bomreqqty = dto.FBOMReqQty,
+                Materialtype = dto.FMaterialType,
+                IsOverIssue = dto.FIsOverIssue,
+                StandardMaterialscale = dto.FStandardMaterialScale,
+                Fixedmaterialnum = dto.FFixedMaterialNum,
+                IsSubstitute = dto.FIsSubstitute,
+                Substituteditem = dto.FSubstitutedItem,
+                Issueuom = dto.FIssueUOM,
+                Qpa = dto.FQPA,
+                Scraptype = dto.FScrapType,
+                Bfopportunity = dto.FBFOpportunity,
+                Supplywh = dto.FSupplyWh,
+                Mocompletesetcheck = dto.FMOCompleteSetCheck,
+                Mostartsetcheck = dto.FMOStartSetCheck,
+                Iscoupleissue = dto.FIsCoupleIssue,
+                FDescription  = dto.FDescription,
+                TypeB = dto.TypeB
+
+            };
+
+            var entity = Db.Queryable<Womcab>()
+                .Where(s => s.Erpid == womcab.Erpid).Single();
+            if (entity != null) womcab.Id = entity.Id;
+
+            //Cab003 = dto.FMaterialID
+            var mesLinkU9 = Db.Queryable<MesLinkU9>()
+                .Where(x => x.U9Id == dto.FMaterialID
+                            && x.OrgId == "1002011210000095"
+                            && x.TableType == "MES_ITEMS").First();
+
+            var mesLinkU9_xm = Db.Queryable<MesLinkU9>()
+         .Where(x => x.U9Id == Convert.ToString(dto.FProject)
+                     && x.OrgId == "1002011210000095"
+                     && x.TableType == "MES_PROJECT").First();
+
+            if (mesLinkU9 != null) womcab.Cab003 = mesLinkU9.MesId;
+            if (mesLinkU9_xm != null) womcab.Project = mesLinkU9_xm.MesId;
+
+            womcabList.Add(womcab);
+        }
+
+        return womcabList;
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3