sjz
5 天以前 6761b0ed84fd7a03400b557244d0835f671dad94
MES.Service/service/BasicData/MesRohInManager.cs
@@ -8,8 +8,6 @@
public class MesRohInManager : Repository<MesRohIn>
{
    private readonly MesRohInDataManager rohInDataManager = new();
    // Save 方法用于保存单个 RohIn 记录,根据类型执行不同的操作
    public bool Save(RohIn rohIn)
    {
        var rohInErpRohIn = rohIn.ErpRohIn;
@@ -20,95 +18,46 @@
        {
            switch (rohInErpRohIn.Type)
            {
                // case "2":
                //     return InsertData(db, mesRohIn, mesRohInDatas,
                //         rohInErpRohIn.FBILLTYPE)
                //         ? 1
                //         : 0;
                case "3":
                    return UpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0;
                case "2":
                case "4":
                case "5":
                case "B":
                    return SaveOrUpdateData(db, mesRohIn, mesRohInDatas)
                        ? 1
                        : 0;
                    return SaveOrUpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0;
                default:
                    throw new NotImplementedException(
                        $"type没有{rohInErpRohIn.Type}这个类型");
                    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,
        List<MesRohInData> mesRohInDatas)
    private bool UpdateData(SqlSugarScope db, MesRohIn mesRohIn,List<MesRohInData> mesRohInDatas)
    {
        var decimals = mesRohInDatas.Select(s => s.Id).ToArray();
        var update = base.DeleteById(mesRohIn.Id);
        var insertOrUpdate = db
            .Deleteable<MesRohInData>().In(decimals)
            .ExecuteCommand() > 0;
        var insertOrUpdate = db.Deleteable<MesRohInData>().In(decimals).ExecuteCommand() > 0;
        if (update && insertOrUpdate) return true;
        if (update && insertOrUpdate)
        {
            return true;
        }
        throw new NotImplementedException("更新失败");
    }
    // 插入或更新数据的方法
    private bool SaveOrUpdateData(SqlSugarScope db, MesRohIn mesRohIn,
        List<MesRohInData> mesRohInDatas)
    private bool SaveOrUpdateData(SqlSugarScope db, MesRohIn mesRohIn,List<MesRohInData> mesRohInDatas)
    {
        if (mesRohIn.Id != null) base.DeleteById(mesRohIn.Id);
        if (mesRohIn.Id != null)
        {
            base.DeleteById(mesRohIn.Id);
        }
        if (mesRohInDatas.Count > 0)
            db.Deleteable<MesRohInData>()
                .Where(s => s.ErpId == mesRohIn.EbelnK3id).ExecuteCommand();
        {
            db.Deleteable<MesRohInData>().Where(s => s.ErpId == mesRohIn.EbelnK3id).ExecuteCommand();
        }
        var orUpdate = base.Insert(mesRohIn);
        var baOrUpdate = rohInDataManager.InsertRange(mesRohInDatas);
        if (orUpdate && baOrUpdate) return true;
@@ -129,7 +78,10 @@
        var mesRohIn = new MesRohIn();
        var single = base.GetSingle(it => it.EbelnK3id == eid);
        if (single != null) mesRohIn.Id = single.Id;
        if (single != null)
        {
            mesRohIn.Id = single.Id;
        }
        mesRohIn.EbelnK3id = eid;
        mesRohIn.BillNo = rohIn.FBillNo;
@@ -137,7 +89,9 @@
        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.PurchaseDate = DateTime.ParseExact(rohIn.FDate, "yyyy-MM-dd HH:mm:ss", null);
        }
        mesRohIn.Supplier = rohIn.FSupplierId;
        mesRohIn.CloseStatus = rohIn.FCloseStatus;
        mesRohIn.PurchaseOrg = rohIn.FPurchaseOrgId;
@@ -151,17 +105,16 @@
        mesRohIn.CancellationPerson = rohIn.FCancellerId;
        if (rohIn.FCancelDate != null)
            mesRohIn.CancellationDate =
                DateTime.ParseExact(rohIn.FCancelDate,
                    "yyyy-MM-dd HH:mm:ss", null);
        {
            mesRohIn.CancellationDate = DateTime.ParseExact(rohIn.FCancelDate, "yyyy-MM-dd HH:mm:ss", null);
        }
        mesRohIn.CreateBy = rohIn.FCreatorId;
        mesRohIn.LastupdateBy = rohIn.FModifierId;
        if (rohIn.FModifyDate != null)
            mesRohIn.LastupdateDate = DateTime.ParseExact(rohIn.FModifyDate,
                "yyyy-MM-dd HH:mm:ss", null);
        {
            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;
@@ -172,8 +125,7 @@
    }
    // 将 ErpRohinData 对象转换为 MesRohInData 对象的方法
    public List<MesRohInData> GetMesRohInDatas(
        List<ErpRohinData> erpRohinDatas, string type)
    public List<MesRohInData> GetMesRohInDatas(List<ErpRohinData> erpRohinDatas, string type)
    {
        return erpRohinDatas.Select(s =>
        {
@@ -191,18 +143,9 @@
                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,
                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,
                IsGift = s.FGiveAway,
                Remarks = s.FNote,
                SupplierItemCode = s.FSupMatId,
@@ -212,23 +155,17 @@
                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,
                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,
                TerminateTime = s.FTerminateDate != null ? DateTime.ParseExact(s.FTerminateDate,"yyyy-MM-dd HH:mm:ss", null) : null,
                TotalReceivedQty = Convert.ToDecimal(s.FQty)-Convert.ToDecimal(s.FRemainReceiveQty),
                RemainingReceivedQty = Convert.ToDecimal(s.FRemainReceiveQty),
                TotalStoredQty = Convert.ToDecimal(s.FQty) - Convert.ToDecimal(s.FRemainStockINQty),
                RemainingStoredQty = Convert.ToDecimal(s.FRemainStockINQty),
                TotalReturnedQty = Convert.ToDecimal(s.FMrbQty),
                ReturnableReceivedQty = Convert.ToDecimal(s.FBaseCheckRetQty),
                ReturnableStoredQty = Convert.ToDecimal(s.FBaseStockRetQty),
                ReturnableReceivedQty = Convert.ToDecimal(s.Fcheckretqty),
                ReturnableStoredQty = Convert.ToDecimal(s.Fstockretqty),
                SourceDocumentType = s.FSrcBillTypeId,
                SourceDocumentId = s.FSrcBillNo,
                DemandTrackingId = s.FReqTraceNo,
@@ -241,15 +178,17 @@
                DemandOrg = s.FRequireOrgId,
                Receiving = s.FReceiveOrgId,
                ReceivingOrg = s.FReceiveOrgId,
                Settlement = s.FEntrySettleOrgId,
                SettlementOrg = s.FEntrySettleOrgId,
                Settlement = s.Fsettleorgid,
                SettlementOrg = s.Fsettleorgid,
                DemandDept = s.FRequireDeptId,
                ReceivingDept = s.FReceiveDeptId
            };
            var single = rohInDataManager.GetSingle(it =>
                it.EbelnK3id == entity.EbelnK3id);
            if (single != null) entity.Id = single.Id;
            var single = rohInDataManager.GetSingle(it =>it.EbelnK3id == entity.EbelnK3id);
            if (single != null)
            {
                entity.Id = single.Id;
            }
            return entity;
        }).ToList();