zjh
5 天以前 18ca42bc7a74433f735336bdfeaeb81c81633f39
StandardPda/MES.Service/service/BasicData/MesRohInManager.cs
@@ -1,7 +1,9 @@
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using MES.Service.util;
using SqlSugar;
using System.Collections.Generic;
namespace MES.Service.service.BasicData;
@@ -17,12 +19,17 @@
        var mesRohInDatas =
            GetMesRohInDatas(rohIn.ErpRohinDatas, rohInErpRohIn.Type);
         var erpLineDetailsDB = GetErpLineDetailsDB(rohIn.ErpLineDetails, rohInErpRohIn.Type);
        return UseTransaction(db =>
        {
            return rohInErpRohIn.Type switch
            {
                "2" or "4" or "5" => SaveOrUpdateData(db, mesRohIn,
                    mesRohInDatas)
                    mesRohInDatas, erpLineDetailsDB)
                    ? 1
                    : 0,
                "3" => DeleteData(db, mesRohIn, mesRohInDatas) ? 1 : 0,
@@ -57,14 +64,16 @@
    // 插入或更新数据的方法
    private bool SaveOrUpdateData(SqlSugarScope db, MesRohIn mesRohIn,
        List<MesRohInData> mesRohInDatas)
        List<MesRohInData> mesRohInDatas, List<ErpLineDetailsDB> erpLineDetails)
    {
        if (mesRohIn.Id != null) base.DeleteById(mesRohIn.Id);
        if (mesRohInDatas.Count > 0)
            db.Deleteable<MesRohInData>()
                .Where(s => s.ErpId == mesRohIn.EbelnK3id).ExecuteCommand();
        if (mesRohInDatas.Count > 0)
            db.Deleteable<ErpLineDetailsDB>()
                .Where(s => s.Eid == mesRohIn.EbelnK3id).ExecuteCommand();
        //var orUpdate = base.Insert(mesRohIn);
        //var baOrUpdate = rohInDataManager.InsertRange(mesRohInDatas);
        var orUpdate = db.Insertable(mesRohIn)
@@ -75,8 +84,15 @@
            .IgnoreColumnsNull()
            .ExecuteCommand() > 0;
        var ba1OrUpdate = db.Insertable(erpLineDetails).PageSize(1)
       .IgnoreColumnsNull()
       .ExecuteCommand() > 0;
        if (erpLineDetails==null ||erpLineDetails.Count==0)
        {
            ba1OrUpdate = true;
        }
        if (orUpdate && baOrUpdate) return true;
        if (orUpdate && baOrUpdate&& ba1OrUpdate) return true;
        throw new NotImplementedException("插入或更新失败");
    }
@@ -90,11 +106,18 @@
    // 将 ErpRohIn 对象转换为 MesRohIn 对象的方法
    private MesRohIn GetMesRohIn(ErpRohIn rohIn)
    {
        var eid = Convert.ToDecimal(rohIn.id);
        var eid = rohIn.id;
        var mesRohIn = new MesRohIn();
        var single = base.GetSingle(it => it.EbelnK3id == eid);
        if (single != null) mesRohIn.Id = single.Id;
        var mesLinkU9 = Db.Queryable<MesLinkU9>()
            .Where(s => s.U9Id == rohIn.FSupplierId
                        && s.OrgId == rohIn.FReceiveOrgId
                        && s.TableType == "MES_SUPPLIER").First();
        if (mesLinkU9 != null) mesRohIn.Supplier = mesLinkU9.MesId;
        mesRohIn.EbelnK3id = eid;
        mesRohIn.BillNo = rohIn.FBillNo;
@@ -104,7 +127,7 @@
        if (rohIn.FDate != null)
            mesRohIn.PurchaseDate = DateTime.ParseExact(rohIn.FDate,
                "yyyy-MM-dd HH:mm:ss", null);
        mesRohIn.Supplier = rohIn.FSupplierId;
        mesRohIn.CloseStatus = rohIn.FCloseStatus;
        mesRohIn.PurchaseOrg = rohIn.FPurchaseOrgId;
        mesRohIn.PurchaseDept = rohIn.FPurchaseDeptId;
@@ -125,9 +148,8 @@
        mesRohIn.ErpCheckBy = rohIn.FApproverId;
        mesRohIn.ErpCheckDate = rohIn.FApproveDate;
        mesRohIn.Changereason = rohIn.PubDescSeg2;
        mesRohIn.ReceiveOrg = Convert.ToDecimal(rohIn.FReceiveOrgId);
        mesRohIn.ReceiveOrg = rohIn.FReceiveOrgId;
        mesRohIn.Remarks = rohIn.Remarks;
        mesRohIn.SrcDocType = rohIn.FSrcDocType;
        mesRohIn.SrcDoc = rohIn.FSrcDoc;
        mesRohIn.TradePathName = rohIn.FTradePathName;
@@ -137,7 +159,7 @@
        mesRohIn.Version = rohIn.FVersion;
        //作废的相关字段
        // mesRohIn.CancellationStatus = rohIn.FCancelStatus;
        mesRohIn.CancellationStatus = rohIn.FCancelStatus;
        // mesRohIn.CancellationPerson = rohIn.FCancellerId;
        //
        // if (rohIn.FCancelDate != null)
@@ -152,17 +174,18 @@
    private List<MesRohInData> GetMesRohInDatas(
        List<ErpRohinData> erpRohinDatas, string type)
    {
        return erpRohinDatas.Select(s =>
        return erpRohinDatas.DistinctByConcurrent(x => x.id).Select(s =>
        {
            var entity = new MesRohInData
            {
                EbelnK3id = Convert.ToDecimal(s.id),
                ErpId = Convert.ToDecimal(s.Eid),
                EbelnK3id = s.id,
                ErpId = s.Eid,
                BillNo = s.FBillNo,
                OrderLineId = s.FSeq,
                BusinessFreeze = s.FStatus,
                PurchaseOrderLineNumber = s.FSeq,
                SalesOrderId = s.FDemandBillEntrySeq,
                ItemId = s.FMaterialId,
                PurchaseUnit = s.FUnitId,
                PurchaseQty = Convert.ToDecimal(s.FQty),
                PricingUnit = s.FPriceUnitId,
@@ -190,14 +213,71 @@
                DemandDocumentId = s.FDemandBillNo,
                DemandDocumentLineId = s.FDemandBillEntrySeq,
                RdProject = s.RdProject,
                Project = s.Project,
                ProjectPurchaser = s.ProjectPurchaser
            };
            if (s.FDeliveryDate != null)
                entity.DeliveryDate =
                    DateTime.ParseExact(s.FDeliveryDate,
                        "yyyy-MM-dd HH:mm:ss", null);
            var single = rohInDataManager.GetSingle(it =>
                it.EbelnK3id == entity.EbelnK3id);
            if (single != null) entity.Id = single.Id;
            //ItemId = s.FMaterialId,
            var mesLinkU9 = Db.Queryable<MesLinkU9>()
                .Where(x => x.U9Id == s.FMaterialId
                            && x.OrgId == s.FReceiveOrgId
                            && x.TableType == "MES_ITEMS").First();
            if (mesLinkU9 != null) entity.ItemId = mesLinkU9.MesId;
            var mesLinkU92 = Db.Queryable<MesLinkU9>()
                .Where(x => x.U9Id == s.Project
                            && x.OrgId == s.FReceiveOrgId
                            && x.TableType == "MES_PROJECT").First();
            if (mesLinkU92 != null) entity.Project = mesLinkU92.MesId;
            return entity;
        }).ToList();
    }
    private List<ErpLineDetailsDB> GetErpLineDetailsDB(
        List<ErpLineDetails> erpLineDetails, string type)
    {
        if (erpLineDetails ==null)
        {
            return null;
        }
        return erpLineDetails.Select(s =>
        {
            var entity = new ErpLineDetailsDB
            {
                Mid= s.Mid,
                Eid = s.Eid,
                FlineNo = s.FlineNo,
                FMaterialId = s.FMaterialId,
                ReqQty = s.ReqQty,
                PlannedQty = s.PlannedQty,
                SupplierConfirmsQty = s.SupplierConfirmsQty,
                RequestDeliveryDate = s.RequestDeliveryDate,
                ActualArrivalQty = s.ActualArrivalQty
            };
            //ItemId = s.FMaterialId,
            var mesLinkU9 = Db.Queryable<MesLinkU9>()
                .Where(x => x.U9Id == s.FMaterialId
                            && x.OrgId == s.FMaterialId
                            && x.TableType == "MES_ITEMS").First();
            if (mesLinkU9 != null) entity.FMaterialId = mesLinkU9.MesId;
            return entity;
        }).ToList();
    }