sjz
2025-07-28 f1deb7b024e17cba204de5fcb0dac15801436b90
MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs
@@ -10,68 +10,61 @@
{
    //当前类已经继承了 Repository 增、删、查、改的方法
    private readonly SalesDeliveryNoticeDetailManager
        _SalesDeliveryDetailManager = new();
    private readonly SalesDeliveryNoticeDetailManager _SalesDeliveryDetailManager = new();
    //ErpSalesRerurn
    public bool Save(ErpSalesDelivery SalesDelivery)
    {
        var erpSalesDeliveryDto = SalesDelivery.OrderDto;
        var mesSalesDelivery =
            ConvertErpToSalesDelivery(SalesDelivery.OrderDto);
        var mesSalesDeliveryDatas =
            ConvertErpToSalesDeliveryDetail(SalesDelivery.Items);
        var mesSalesDelivery = ConvertErpToSalesDelivery(SalesDelivery.OrderDto);
        var mesSalesDeliveryDatas = ConvertErpToSalesDeliveryDetail(SalesDelivery.Items);
        return UseTransaction(db =>
        {
            switch (erpSalesDeliveryDto.Type)
            {
                case "3":
                    return DeleteData(db, mesSalesDelivery,
                        mesSalesDeliveryDatas)
                        ? 1
                        : 0;
                    return DeleteData(db, mesSalesDelivery,mesSalesDeliveryDatas) ? 1 : 0;
                case "2":
                case "4":
                    return SaveOrUpdateData(db, mesSalesDelivery,
                        mesSalesDeliveryDatas, erpSalesDeliveryDto.Type)
                        ? 1
                        : 0;
                    return SaveOrUpdateData(db, mesSalesDelivery, mesSalesDeliveryDatas, erpSalesDeliveryDto.Type) ? 1 : 0;
                default:
                    throw new NotImplementedException(
                        $"type没有{erpSalesDeliveryDto.Type}这个类型");
                    throw new NotImplementedException($"type没有{erpSalesDeliveryDto.Type}这个类型");
            }
        }) > 0;
    }
    private bool DeleteData(SqlSugarScope db,
        SalesDeliveryNotice mesSalesDelivery,
        List<SalesDeliveryNoticeDetail> mesSalesDeliveryDatas)
    private bool DeleteData(SqlSugarScope db,SalesDeliveryNotice mesSalesDelivery,List<SalesDeliveryNoticeDetail> mesSalesDeliveryDatas)
    {
        var decimals = mesSalesDeliveryDatas.Select(s => s.Id).ToArray();
        var update = base.DeleteById(mesSalesDelivery.Id);
        var insertOrUpdate = db.Deleteable<SalesDeliveryNoticeDetail>()
            .In(decimals).ExecuteCommand() > 0;
        var insertOrUpdate = db.Deleteable<SalesDeliveryNoticeDetail>().In(decimals).ExecuteCommand() > 0;
        if (update && insertOrUpdate) return true;
        if (update && insertOrUpdate)
        {
            return true;
        }
        throw new NotImplementedException("更新失败");
    }
    // 插入或更新数据的方法
    private bool SaveOrUpdateData(SqlSugarScope db,
        SalesDeliveryNotice mesSalesDelivery,
        List<SalesDeliveryNoticeDetail> mesSalesDeliveryDatas, string type)
    private bool SaveOrUpdateData(SqlSugarScope db,SalesDeliveryNotice mesSalesDelivery,List<SalesDeliveryNoticeDetail> mesSalesDeliveryDatas, string type)
    {
        if (mesSalesDelivery.Id != null) base.DeleteById(mesSalesDelivery.Id);
        if (mesSalesDelivery.Id != null)
        {
            base.DeleteById(mesSalesDelivery.Id);
        }
        if (mesSalesDeliveryDatas.Count > 0)
            db.Deleteable<SalesDeliveryNoticeDetail>()
                .Where(s => s.ErpHeadId == mesSalesDelivery.ErpId)
                .ExecuteCommand();
        {
            db.Deleteable<SalesDeliveryNoticeDetail>().Where(s => s.ErpHeadId == mesSalesDelivery.ErpId).ExecuteCommand();
        }
        var orUpdate = base.Insert(mesSalesDelivery);
        var baOrUpdate =
            _SalesDeliveryDetailManager.InsertRange(mesSalesDeliveryDatas);
        if (orUpdate && baOrUpdate) return true;
        var baOrUpdate =_SalesDeliveryDetailManager.InsertRange(mesSalesDeliveryDatas);
        if (orUpdate && baOrUpdate)
        {
            return true;
        }
        throw new NotImplementedException("插入或更新失败");
    }
@@ -83,17 +76,17 @@
        return result.All(b => b);
    }
    private SalesDeliveryNotice ConvertErpToSalesDelivery(
        ErpSalesDeliveryDto erpDto)
    private SalesDeliveryNotice ConvertErpToSalesDelivery(ErpSalesDeliveryDto erpDto)
    {
        DateTime parsedDate;
        // 时间格式转换函数,ERP时间格式为 "yyyy-MM-dd HH:mm:ss"
        DateTime? ParseDateTime(string dateStr)
        {
            if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",
                    CultureInfo.InvariantCulture, DateTimeStyles.None,
                    out parsedDate)) return parsedDate;
            if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture, DateTimeStyles.None,out parsedDate))
            {
                return parsedDate;
            }
            return null; // 如果转换失败,返回null
        }
@@ -141,13 +134,15 @@
        };
        var single = base.GetSingle(it => it.ErpId == erpDto.ErpID);
        if (single != null) salesOrder.Id = single.Id;
        if (single != null)
        {
            salesOrder.Id = single.Id;
        }
        return salesOrder;
    }
    private List<SalesDeliveryNoticeDetail> ConvertErpToSalesDeliveryDetail(
        List<ErpSalesDeliveryDetailDto> erpDtoList)
    private List<SalesDeliveryNoticeDetail> ConvertErpToSalesDeliveryDetail(List<ErpSalesDeliveryDetailDto> erpDtoList)
    {
        var salesOrderSubList = new List<SalesDeliveryNoticeDetail>();
@@ -156,9 +151,10 @@
        // 时间格式转换函数,ERP时间格式为 "yyyy-MM-dd HH:mm:ss"
        DateTime? ParseDateTime(string dateStr)
        {
            if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",
                    CultureInfo.InvariantCulture, DateTimeStyles.None,
                    out parsedDate)) return parsedDate;
            if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture, DateTimeStyles.None,out parsedDate))
            {
                return parsedDate;
            }
            return null; // 如果转换失败,返回null
        }
@@ -182,8 +178,7 @@
                OwnerId = erpDto.FOwnerIdHead, //货主
                InventoryUnit = erpDto.FStockUnitID, //库存单位
                InventoryQuantity = Convert.ToDecimal(erpDto.FStockQty), //库存数量
                PlanDeliveryDate =
                    ParseDateTime(erpDto.FPlanDeliveryDate), //计划发货日期
                PlanDeliveryDate = ParseDateTime(erpDto.FPlanDeliveryDate), //计划发货日期
                OutLmtUnit = erpDto.FOutLmtUnit, //超发控制单位
                OutMaxQty = erpDto.FOutMaxQty, //出库上限
                OutMinQty = erpDto.FOutMinQty, //出库下限
@@ -203,13 +198,19 @@
            };
            if (erpDto.FRemainOutQty == 0)
            {
                salesOrderSub.IsFinish = 1;
            }
            else
            {
                salesOrderSub.IsFinish = 0;
            }
            var single = _SalesDeliveryDetailManager.GetSingle(it =>
                it.ErpLineId == salesOrderSub.ErpLineId);
            if (single != null) salesOrderSub.Id = single.Id;
            var single = _SalesDeliveryDetailManager.GetSingle(it =>it.ErpLineId == salesOrderSub.ErpLineId);
            if (single != null)
            {
                salesOrderSub.Id = single.Id;
            }
            salesOrderSubList.Add(salesOrderSub);
        }