啊鑫
2 天以前 ed05efdc17aab076146b134ebe105b6382f221d7
MES.Service/service/BasicData/SalesReturnNoticeManager.cs
@@ -1,10 +1,8 @@
using MES.Service.DB;
using System.Data;
using System.Globalization;
using System.Globalization;
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
using DbType = System.Data.DbType;
namespace MES.Service.service.BasicData;
@@ -14,22 +12,29 @@
    private readonly SalesReturnDetailManager _SalesReturnDetailManager =
        new();
    //ErpSalesRerurn
    public bool Save(ErpSalesRerurn SalesReturn)
    {
        var erpSalesReturnDto = SalesReturn.OrderDto;
        var mesSalesReturn = ConvertErpToSalesReturn(SalesReturn.OrderDto);
        var mesSalesReturnDatas = ConvertErpToSalesReturnDetail(SalesReturn.Items);
        var mesSalesReturnDatas =
            ConvertErpToSalesReturnDetail(SalesReturn.Items);
        return UseTransaction(db =>
        {
            switch (erpSalesReturnDto.Type)
            {
                case "3":
                    return UpdateData(db, mesSalesReturn, mesSalesReturnDatas) ? 1 : 0;
                    return UpdateData(db, mesSalesReturn, mesSalesReturnDatas)
                        ? 1
                        : 0;
                case "2":
                case "4":
                    return SaveOrUpdateData(db, mesSalesReturn, mesSalesReturnDatas, erpSalesReturnDto.Type) ? 1: 0;
                    return SaveOrUpdateData(db, mesSalesReturn,
                        mesSalesReturnDatas, erpSalesReturnDto.Type)
                        ? 1
                        : 0;
                default:
                    throw new NotImplementedException(
                        $"type没有{erpSalesReturnDto.Type}这个类型");
@@ -37,38 +42,34 @@
        }) > 0;
    }
    private bool UpdateData(SqlSugarScope db, SalesReturnNotice mesSalesReturn,List<SalesReturnNoticeDetail> mesSalesReturnDatas)
    private bool UpdateData(SqlSugarScope db, SalesReturnNotice mesSalesReturn,
        List<SalesReturnNoticeDetail> mesSalesReturnDatas)
    {
        var decimals = mesSalesReturnDatas.Select(s => s.Id).ToArray();
        var update = base.DeleteById(mesSalesReturn.Id);
        var insertOrUpdate = db.Deleteable<SalesReturnNoticeDetail>().In(decimals).ExecuteCommand() > 0;
        var insertOrUpdate = db.Deleteable<SalesReturnNoticeDetail>()
            .In(decimals).ExecuteCommand() > 0;
        if (update && insertOrUpdate)
        {
            return true;
        }
        if (update && insertOrUpdate) return true;
        throw new NotImplementedException("更新失败");
    }
    // 插入或更新数据的方法
    private bool SaveOrUpdateData(SqlSugarScope db, SalesReturnNotice mesSalesReturn,List<SalesReturnNoticeDetail> mesSalesReturnDatas,string type)
    private bool SaveOrUpdateData(SqlSugarScope db,
        SalesReturnNotice mesSalesReturn,
        List<SalesReturnNoticeDetail> mesSalesReturnDatas, string type)
    {
        if (mesSalesReturn.Id != null)
        {
            base.DeleteById(mesSalesReturn.Id);
        }
        if (mesSalesReturn.Id != null) base.DeleteById(mesSalesReturn.Id);
        if (mesSalesReturnDatas.Count > 0)
        {
            db.Deleteable<SalesReturnNoticeDetail>().Where(s => s.ErpHeadId == mesSalesReturn.ErpId).ExecuteCommand();
        }
            db.Deleteable<SalesReturnNoticeDetail>()
                .Where(s => s.ErpHeadId == mesSalesReturn.ErpId)
                .ExecuteCommand();
        var orUpdate = base.Insert(mesSalesReturn);
        var baOrUpdate = _SalesReturnDetailManager.InsertRange(mesSalesReturnDatas);
        if (orUpdate && baOrUpdate)
        {
            return true;
        }
        var baOrUpdate =
            _SalesReturnDetailManager.InsertRange(mesSalesReturnDatas);
        if (orUpdate && baOrUpdate) return true;
        
        throw new NotImplementedException("插入或更新失败");
@@ -88,10 +89,9 @@
        // 时间格式转换函数,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
        }
@@ -130,36 +130,32 @@
            CancelDate = ParseDateTime(erpDto.FCancelDate) ?? null, // 作废日期
            CloseStatus = erpDto.FBillCloseStatus, // 关闭状态
            BillStatus  = erpDto.FDocumentStatus //单据状态
        };
        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<SalesReturnNoticeDetail> ConvertErpToSalesReturnDetail(List<ErpSalesReturnDetailDto> erpDtoList)
    private List<SalesReturnNoticeDetail> ConvertErpToSalesReturnDetail(
        List<ErpSalesReturnDetailDto> erpDtoList)
        
    {
        var salesOrderSubList = new List<SalesReturnNoticeDetail>();
        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
        }
        foreach (var erpDto in erpDtoList)
@@ -190,20 +186,15 @@
                OrderBillNo = erpDto.FOrderNo,
                SalesOrder  = erpDto.F_XSHTH,
                CustOrder   = erpDto.F_ZJXF_Text_re5_lee
            };
            var single = _SalesReturnDetailManager.GetSingle(it =>it.ErpLineId == salesOrderSub.ErpLineId);
            if (single != null)
            {
                salesOrderSub.Id = single.Id;
            }
            var single = _SalesReturnDetailManager.GetSingle(it =>
                it.ErpLineId == salesOrderSub.ErpLineId);
            if (single != null) salesOrderSub.Id = single.Id;
            salesOrderSubList.Add(salesOrderSub);
        }
        return salesOrderSubList;
    }
}