啊鑫
2025-07-10 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,27 +12,27 @@
    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 "2":
                //     return InsertData(db, mesSalesReturn, mesSalesReturnDatas,
                //         rohInErpRohIn.FBILLTYPE)
                //         ? 1
                //         : 0;
                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)
                    return SaveOrUpdateData(db, mesSalesReturn,
                        mesSalesReturnDatas, erpSalesReturnDto.Type)
                        ? 1
                        : 0;
                default:
@@ -49,28 +47,30 @@
    {
        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;
        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 (mesSalesReturnDatas.Count > 0)
            db.Deleteable<SalesReturnNoticeDetail>()
                .Where(s => s.ErpHeadId == mesSalesReturn.ErpId).ExecuteCommand();
                .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("插入或更新失败");
    }
@@ -82,8 +82,7 @@
        return result.All(b => b);
    }
    private SalesReturnNotice ConvertErpToSalesReturn(
        ErpSalesReturnDto erpDto)
    private SalesReturnNotice ConvertErpToSalesReturn(ErpSalesReturnDto erpDto)
    {
        DateTime parsedDate;
@@ -91,11 +90,8 @@
        DateTime? ParseDateTime(string dateStr)
        {
            if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",
                    CultureInfo.InvariantCulture,
                    DateTimeStyles.None,
                    out parsedDate))
                return parsedDate;
                    CultureInfo.InvariantCulture, DateTimeStyles.None,
                    out parsedDate)) return parsedDate;
            return null; // 如果转换失败,返回null
        }
@@ -108,15 +104,13 @@
            Currency = erpDto.FSettleCurrld, // 结算币别
            SalesDept = erpDto.FSaleDeptId, //销售部门
            ReturnCustomer = erpDto.FRetcustId, // 退货客户
            TaobaoRemark = erpDto.F_UNW_LargeText_TBKHBZ, // 淘宝客户备注
            ReturnReason = erpDto.FRetcustReason, // 退货原因
            DeliveryLocation = erpDto.FHeadLocId, // 交货地点
            InventoryDept = erpDto.FRetDeptId, // 库存部门
            InventoryGroup = erpDto.FStockerGroupId, // 库存组
            WarehouseManager = erpDto.FStockerId, // 仓管员
            SalesGroup = erpDto.FSaleGroupId, // 销售组
            SalesPerson = erpDto.FSalesManId,//销售员
            ExpressNo = erpDto.F_UNW_Text_KDDH, // 快递单号
            SalesPerson = erpDto.FSalesManId, //销售员
            Receiver = erpDto.FReceiveCusId, // 收货方
            ReceiverContact = erpDto.FReceiveCusContact, // 收货方联系人
            ReceiverAddress = erpDto.FReceiveAddress, // 收货方地址
@@ -135,8 +129,7 @@
            CancelledBy = erpDto.FCancellerId, // 作废人
            CancelDate = ParseDateTime(erpDto.FCancelDate) ?? null, // 作废日期
            CloseStatus = erpDto.FBillCloseStatus, // 关闭状态
            BillStatus  = erpDto.FDocumentStatus //单据状态
            BillStatus = erpDto.FDocumentStatus //单据状态
        };
        var single = base.GetSingle(it => it.ErpId == erpDto.ErpID);
@@ -147,55 +140,52 @@
    private List<SalesReturnNoticeDetail> ConvertErpToSalesReturnDetail(
        List<ErpSalesReturnDetailDto> erpDtoList)
    {
        var salesOrderSubList =
            new List<SalesReturnNoticeDetail>();
        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;
                    CultureInfo.InvariantCulture, DateTimeStyles.None,
                    out parsedDate)) return parsedDate;
            return null; // 如果转换失败,返回null
        }
        foreach (var erpDto in erpDtoList)
        {
            var salesOrderSub = new SalesReturnNoticeDetail
            {
                ErpLineId = erpDto.ErpID,//ERP行ID
                ErpHeadId = erpDto.EHID,//ERP头ID
                SalesOrderId = erpDto.F_UNW_Text_xsddh,//销售订单号
                MaterialId = erpDto.FMaterialId,//物料编号
                MaterialName = erpDto.FMaterialName,// 物料名称
                MaterialSpecification = erpDto.FMaterialModel,//规格型号
                SalesUnitId = erpDto.FUnitID,//销售单位
                SalesQuantity = Convert.ToDecimal(erpDto.FQty),//销售数量
                IsFree = erpDto.FIsFree,//是否赠品
                ReturnDate = ParseDateTime(erpDto.FDeliverydate),//退货日期
                Warehouse = erpDto.FStockId,//仓库
                PlanTrackingNumber = erpDto.FMtoNo,//计划跟踪号
                LotNumber = erpDto.FLot,//批号
                Note = erpDto.FEntryDescription,//备注
                ReturnType = erpDto.FRmType,//退货类型
                SalesClerk = erpDto.F_UNW_Base_GDY,//跟单员
                InventoryUnit = erpDto.FStockUnitID,//库存单位
                InventoryQuantity = Convert.ToDecimal(erpDto.FStockQty),//库存数量
                MaterialCategory = erpDto.FMaterialType,//物料类别
                OwnerTypeId = erpDto.FOwnerTypeID,//货主类型
                OwnerId = erpDto.FOwnerId,//货主
                ErpLineId = erpDto.ErpID, //ERP行ID
                ErpHeadId = erpDto.EHID, //ERP头ID
                MaterialId = erpDto.FMaterialId, //物料编号
                MaterialName = erpDto.FMaterialName, // 物料名称
                MaterialSpecification = erpDto.FMaterialModel, //规格型号
                SalesUnitId = erpDto.FUnitID, //销售单位
                SalesQuantity = Convert.ToDecimal(erpDto.FQty), //销售数量
                IsFree = Convert.ToDecimal(erpDto.FIsFree), //是否赠品
                ReturnDate = ParseDateTime(erpDto.FDeliverydate), //退货日期
                Warehouse = erpDto.FStockId, //仓库
                PlanTrackingNumber = erpDto.FMtoNo, //计划跟踪号
                LotNumber = erpDto.FLot, //批号
                Note = erpDto.FEntryDescription, //备注
                ReturnType = erpDto.FRmType, //退货类型
                InventoryUnit = erpDto.FStockUnitID, //库存单位
                InventoryQuantity = Convert.ToDecimal(erpDto.FStockQty), //库存数量
                MaterialCategory = erpDto.FMaterialType, //物料类别
                OwnerTypeId = erpDto.FOwnerTypeID, //货主类型
                OwnerId = erpDto.FOwnerId, //货主
                SourceBillType = erpDto.FSrcType,
                SourceBillNo = erpDto.FSrcBillNo,
                OrderBillNo = erpDto.FOrderNo
                OrderBillNo = erpDto.FOrderNo,
                SalesOrder = erpDto.F_XSHTH,
                CustOrder = erpDto.F_ZJXF_Text_re5_lee
            };
            var single = _SalesReturnDetailManager.GetSingle(it =>
@@ -207,6 +197,4 @@
        return salesOrderSubList;
    }
}