StandardPda/MES.Service/service/BasicData/MesRohInManager.cs
@@ -1,8 +1,8 @@
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using MES.Service.util;
using SqlSugar;
using System.Security.AccessControl;
namespace MES.Service.service.BasicData;
@@ -15,7 +15,8 @@
    {
        var rohInErpRohIn = rohIn.ErpRohIn;
        var mesRohIn = GetMesRohIn(rohInErpRohIn);
        var mesRohInDatas = GetMesRohInDatas(rohIn.ErpRohinDatas, rohInErpRohIn.Type);
        var mesRohInDatas =
            GetMesRohInDatas(rohIn.ErpRohinDatas, rohInErpRohIn.Type);
        return UseTransaction(db =>
        {
@@ -25,59 +26,15 @@
                    mesRohInDatas)
                    ? 1
                    : 0,
                "3" => UpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0,
                "3" => DeleteData(db, mesRohIn, mesRohInDatas) ? 1 : 0,
                _ => throw new NotImplementedException(
                    $"type没有{rohInErpRohIn.Type}这个类型")
            };
        }) > 0;
    }
    // 插入数据的方法
    private bool InsertData(SqlSugarScope db, MesRohIn mesRohIn,
        List<MesRohInData> mesRohInDatas, string FBILLTYPE)
    {
        switch (FBILLTYPE)
        {
            case "A":
            {
                var decimals = mesRohInDatas.Select(s => s.Id).ToArray();
                if (mesRohIn.Id != null) base.DeleteById(mesRohIn.Id);
                if (decimals.Length > 0)
                    db.Deleteable<MesRohInData>().In(decimals).ExecuteCommand();
                var insert = base.Insert(mesRohIn);
                var insertRange =
                    rohInDataManager.InsertRange(mesRohInDatas);
                if (insert && insertRange) return true;
                throw new NotImplementedException("插入失败");
            }
            case "B":
            {
                var decimals = mesRohInDatas.Select(s => s.Id).ToArray();
                if (base.DeleteById(mesRohIn.Id) && db
                        .Deleteable<MesRohInData>().In(decimals)
                        .ExecuteCommand() > 0)
                {
                    var insert = base.Insert(mesRohIn);
                    var insertRange =
                        rohInDataManager.InsertRange(mesRohInDatas);
                    if (insert && insertRange) return true;
                    throw new NotImplementedException("插入失败");
                }
                break;
            }
        }
        throw new NotImplementedException("采购订单类型错误");
    }
    // 更新数据的方法
    private bool UpdateData(SqlSugarScope db, MesRohIn mesRohIn,
    private bool DeleteData(SqlSugarScope db, MesRohIn mesRohIn,
        List<MesRohInData> mesRohInDatas)
    {
        var decimals = mesRohInDatas.Select(s => s.Id).ToArray();
@@ -112,7 +69,7 @@
        //var orUpdate = base.Insert(mesRohIn);
        //var baOrUpdate = rohInDataManager.InsertRange(mesRohInDatas);
        var orUpdate = db.Insertable(mesRohIn)
    .IgnoreColumns(true).ExecuteCommand() > 0;
            .IgnoreColumns(true).ExecuteCommand() > 0;
        var baOrUpdate = db.Insertable(mesRohInDatas).PageSize(1)
@@ -132,41 +89,34 @@
    }
    // 将 ErpRohIn 对象转换为 MesRohIn 对象的方法
    public MesRohIn GetMesRohIn(ErpRohIn rohIn)
    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;
        mesRohIn.DocumentStatus = rohIn.FDocumentStatus;
        mesRohIn.DocumentType = rohIn.FBillTypeID;
        mesRohIn.DocumentType = rohIn.FBillTypeId;
        mesRohIn.BusinessType = rohIn.FBusinessType;
        if (rohIn.FDate != null)
            mesRohIn.PurchaseDate = DateTime.ParseExact(rohIn.FDate,"yyyy-MM-dd HH:mm:ss", null);
        mesRohIn.Supplier = rohIn.FSupplierId;
            mesRohIn.PurchaseDate = DateTime.ParseExact(rohIn.FDate,
                "yyyy-MM-dd HH:mm:ss", null);
        mesRohIn.CloseStatus = rohIn.FCloseStatus;
        mesRohIn.PurchaseOrg = rohIn.FPurchaseOrgId;
        mesRohIn.PurchaseDept = rohIn.FPurchaseDeptId;
        mesRohIn.PurchaseGroup = rohIn.FPurchaserGroupId;
        mesRohIn.Purchaser = rohIn.FPurchaserId;
        //新增 验收方式
        mesRohIn.ACCTYPE = rohIn.Acctype;
        mesRohIn.SettlementParty = rohIn.FSettleId;
        mesRohIn.PaymentParty = rohIn.FChargeId;
        //mesRohIn.Email = rohIn.FProviderEMail;
        mesRohIn.CancellationStatus = rohIn.FCancelStatus;
        mesRohIn.CancellationPerson = rohIn.FCancellerId;
        if (rohIn.FCancelDate != null)
            mesRohIn.CancellationDate =
                DateTime.ParseExact(rohIn.FCancelDate,
                    "yyyy-MM-dd HH:mm:ss", null);
        mesRohIn.CreateBy = rohIn.FCreatorId;
@@ -180,78 +130,59 @@
            mesRohIn.LastupdateDate = DateTime.ParseExact(rohIn.FModifyDate,
                "yyyy-MM-dd HH:mm:ss", null);
        mesRohIn.ErpCheckBy = rohIn.FApproverId;
        mesRohIn.ErpCheckDate = rohIn.FApproveDate;
        mesRohIn.Changereason = rohIn.FChangeReason;
        mesRohIn.Changereason = rohIn.PubDescSeg2;
        mesRohIn.ReceiveOrg = rohIn.FReceiveOrgId;
        mesRohIn.Remarks = rohIn.Remarks;
        mesRohIn.SrcDocType = rohIn.FSrcDocType;
        mesRohIn.SrcDoc = rohIn.FSrcDoc;
        mesRohIn.TradePathName = rohIn.FTradePathName;
        mesRohIn.SubType = rohIn.FSubType;
        mesRohIn.IsReDo = short.Parse(rohIn.FIsReDo ?? "0");
        mesRohIn.PrivateDescSeg1 = rohIn.PrivateDescSeg1;
        mesRohIn.Version = rohIn.FVersion;
        //if (rohIn.Prearrivaldate != null)
        //    mesRohIn.Prearrivaldate = DateTime.ParseExact(rohIn.Prearrivaldate,
        //        "yyyy-MM-dd HH:mm:ss", null);
        mesRohIn.ReceiveOrg = Convert.ToDecimal(rohIn.FReceiveOrgId);
        //作废的相关字段
        mesRohIn.CancellationStatus = rohIn.FCancelStatus;
        // mesRohIn.CancellationPerson = rohIn.FCancellerId;
        //
        // if (rohIn.FCancelDate != null)
        //     mesRohIn.CancellationDate =
        //         DateTime.ParseExact(rohIn.FCancelDate,
        //             "yyyy-MM-dd HH:mm:ss", null);
        return mesRohIn;
    }
    // 将 ErpRohinData 对象转换为 MesRohInData 对象的方法
    public List<MesRohInData> GetMesRohInDatas(
    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),
                InventoryUnit = s.FStockUnitID,
                PricingUnit = s.FPriceUnitId,
                PricingQty = Convert.ToDecimal(s.FPriceUnitQty),
                DeliveryDate = s.FDeliveryDate != null
                    ? DateTime.ParseExact(s.FDeliveryDate,
                        "yyyy-MM-dd HH:mm:ss", null)
                    : null,
                EarliestDeliveryDate = s.FDeliveryEarlyDate != null
                    ? DateTime.ParseExact(s.FDeliveryEarlyDate,
                        "yyyy-MM-dd HH:mm:ss", null)
                    : null,
                LatestDeliveryDate = s.FDeliveryLastDate != null
                    ? DateTime.ParseExact(s.FDeliveryLastDate,
                        "yyyy-MM-dd HH:mm:ss", null)
                    : null,
                Demand = s.FRequireOrgId,
                Receiving = s.FReceiveOrgId,
                ReceivingDepartment = s.FReceiveDeptId,
                Settlement = s.FEntrySettleOrgId,
                ReceivingDept = s.FReceiveDeptId,
                DemandOrg = s.FRequireOrgId,
                ReceivingOrg = s.FReceiveOrgId,
                SettlementOrg = s.FEntrySettleOrgId,
                IsGift = s.FGiveAway,
                Remarks = s.FEntryNote,
                SupplierItemCode = s.FSupMatId,
                SupplierItemName = s.FSupMatName,
                OutsourcingOrderId = s.FSubreqBillNo,
                BatchNumber = s.FLot,
                BusinessClose = s.FMRPCloseStatus,
                BusinessFreeze = s.FMRPFreezeStatus,
                Freezer = s.FFreezerId,
                FreezeTime = s.FFreezeDate != null
                    ? DateTime.ParseExact(s.FFreezeDate,
                        "yyyy-MM-dd HH:mm:ss", null)
                    : null,
                BusinessTerminate = s.FMRPTerminateStatus,
                Terminator = s.FTerminaterId,
                TerminateTime = s.FTerminateDate != null
                    ? DateTime.ParseExact(s.FTerminateDate,
                        "yyyy-MM-dd HH:mm:ss", null)
                    : null,
                TotalReceivedQty = Convert.ToDecimal(s.FReceiveQty), //累计收料数
                RemainingReceivedQty =
                    Convert.ToDecimal(s.FRemainReceiveQty),
@@ -263,23 +194,38 @@
                ReturnableStoredQty = Convert.ToDecimal(s.FSTOCKRETQTY), //库存可退数
                SourceDocumentType = s.FSrcBillTypeId,
                SourceDocumentId = s.FSrcBillNo,
                DemandTrackingId = s.FReqTraceNo,
                PlanTrackingId = s.FMtoNo,
                ChangeFlag = s.FChangeFlag,
                DemandSource = s.FDemandType,
                DemandDocumentId = s.FDemandBillNo,
                DemandDocumentLineId = s.FDemandBillEntrySeq,
                DemandDept = s.FRequireDeptId,
                FCGDDSctzda = s.F_CGDD_SCTZDA,
                FCGDDXHA = s.F_CGDD_XHA,
                FXifgTextApv = s.F_XIFG_Text_apv
                RdProject = s.RdProject,
                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();
    }