11
啊鑫
3 天以前 646ac6f3e1e77d0481e46ea15a6eb6db4ecba065
MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs
@@ -14,8 +14,7 @@
        //当前类已经继承了 Repository 增、删、查、改的方法
        private readonly SalesDeliveryNoticeDetailManager _SalesDeliveryDetailManager =
            new();
        private readonly SalesDeliveryNoticeDetailManager _SalesDeliveryDetailManager = new();
        //ErpSalesRerurn
        public bool Save(ErpSalesDelivery SalesDelivery)
        {
@@ -27,51 +26,47 @@
            {
                switch (erpSalesDeliveryDto.Type)
                {
                    // case "2":
                    //     return InsertData(db, mesSalesReturn, mesSalesReturnDatas,
                    //         rohInErpRohIn.FBILLTYPE)
                    //         ? 1
                    //         : 0;
                    case "3":
                        return UpdateData(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 UpdateData(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;
            if (orUpdate && baOrUpdate)
            {
                return true;
            }
            throw new NotImplementedException("插入或更新失败");
@@ -84,19 +79,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))
                if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture,DateTimeStyles.None, out parsedDate))
                {
                    return parsedDate;
                }
                return null; // 如果转换失败,返回null
            }
@@ -109,9 +102,7 @@
                BillType = erpDto.FBillTypeID, // 单据类型
                Currency = erpDto.FSettleCurrld, // 结算币别
                SalesDept = erpDto.FSaleDeptId, //销售部门
                CustomerOrderNo = erpDto.F_UNW_Text_KHDD, // 客户订单
                Customer = erpDto.FCustomerID, // 客户
                TaobaoRemark = erpDto.F_UNW_LargeText_TBKHBZ, // 淘宝客户备注
                DeliveryMethod = erpDto.FHeadDeliveryWay, // 交货方式
                DeliveryLocation = erpDto.FHeadLocId, // 交货地点
                Carrier = erpDto.FCarrierID, // 承运商
@@ -147,28 +138,26 @@
            };
            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>();
            var salesOrderSubList = new List<SalesDeliveryNoticeDetail>();
            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))
                if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture,DateTimeStyles.None,out parsedDate))
                {
                    return parsedDate;
                }
                return null; // 如果转换失败,返回null
            }
@@ -180,13 +169,10 @@
                {
                    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,//是否赠品
                    IsFree = Convert.ToDecimal(erpDto.FIsFree),//是否赠品
                    DeliveryDate = ParseDateTime(erpDto.FDeliverydate),//要货日期
                    Warehouse = erpDto.FStockId,//出货仓库
                    PlanTrackingNumber = erpDto.FMtoNo,//计划跟踪号
@@ -196,7 +182,6 @@
                    OwnerId = erpDto.FOwnerIdHead,//货主
                    InventoryUnit = erpDto.FStockUnitID,//库存单位
                    InventoryQuantity = Convert.ToDecimal(erpDto.FStockQty),//库存数量
                    //MaterialCategory = erpDto.FMaterialType,//物料类别
                    PlanDeliveryDate = ParseDateTime(erpDto.FPlanDeliveryDate),//计划发货日期
                    OutLmtUnit = erpDto.FOutLmtUnit,//超发控制单位
                    OutMaxQty = erpDto.FOutMaxQty,//出库上限
@@ -208,13 +193,29 @@
                    TerminationStatus = erpDto.FTerminationStatus,//终止状态
                    TerminationDate = ParseDateTime(erpDto.FTerminateDate),//业务终止日期
                    SumOutQty = erpDto.FSumOutQty,//累计出库数量
                    RemainOutQty = erpDto.FRemainOutQty//未出库数量
                    RemainOutQty = erpDto.FRemainOutQty,//未出库数量
                    SalesOrder   = erpDto.FXSHTH,//销售订单号
                    CustOrder    = erpDto.F_ZJXF_TEXT_QTR_LEE,//客户订单号
                    SalesContractNo = erpDto.FXSHTBH,//销售合同编号
                    F_KHWLBM=erpDto.F_KHWLBM,
                    F_KHWLMC=erpDto.F_KHWLMC,
                };
                var single = _SalesDeliveryDetailManager.GetSingle(it =>
                    it.ErpLineId == salesOrderSub.ErpLineId);
                if (single != null) salesOrderSub.Id = single.Id;
                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;
                }
                salesOrderSubList.Add(salesOrderSub);
            }