yanjinhui
2025-11-13 465a67a2e9e68c5395871338ae8223efaddc1fdc
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs
@@ -19,6 +19,7 @@
using static WIDESEA_DTO.SquareCabin.AlarmDto;
using OfficeOpenXml.Style;
using System.Security.Policy;
using SqlSugar;
namespace WIDESEA_SquareCabinServices
{
@@ -43,157 +44,355 @@
        }
        #region ä¸‹å‘立库入库单
        //public WebResponseContent EdiIn()
        //{
        //    try
        //    {
        //        var reslut = WarehouseEnum.立库.ObjToInt().ToString("000");
        //        var orders = _cabinOrderServices.Repository.QueryData(x => x.OdrderStatus == "新建" && x.Warehouse_no == reslut).ToList();
        //        if (orders.Count < 1) return WebResponseContent.Instance.OK();
        //        //string url = "http://172.16.1.2:9357/file-admin/api/in/ediIn";
        //        var cabinOrderDetails = _cabinDetailServices.Repository.QueryData(x => orders.Select(x => x.Id).ToList().Contains(x.OrderId)).ToList();
        //        var materielInfos = _materielInfoService.Repository.QueryData(x => cabinOrderDetails.Select(x => x.Goods_no).Contains(x.MaterielCode)).ToList();
        //        foreach (var order in orders)
        //        {
        //            order.Details = cabinOrderDetails.Where(x => x.OrderId == order.Id).ToList();
        //            foreach (var item in order.Details)
        //            {
        //                item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First();
        //            }
        //            #region ä¸‹å‘WCS
        //            string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY";
        //            var ediDto = new ToediInInfo
        //            {
        //                //客户代码
        //                customerCode = "905",
        //                //物料类型
        //                materialCode = materialCode,
        //                //入库单号
        //                externalOrderNo = order.Order_no,
        //                //入库单类型
        //                inOrderType = order.Order_type == "5" ? "20" : "10",
        //                //优先级
        //                priority = 0,
        //                //是否取消
        //                Is_cancel = 0,
        //                details = order.Details.Select(d => new ToediInDetail
        //                {
        //                    //批号
        //                    batchNo = d.Batch_num,
        //                    //产品
        //                    productCode = d.Goods_no,
        //                    //sku名称
        //                    productName = d.MedicineGoods.MaterielName,
        //                    //sku规格
        //                    productSpecifications = d.MedicineGoods.MaterielSpec,
        //                    //数量
        //                    quantity = (int)d.Order_qty,
        //                    //效期
        //                    validityPeriod = d.Exp_date,
        //                    //生产厂家
        //                    manufacturer = d.MedicineGoods.Factory,
        //                    //房号
        //                    libraryNo = order.Warehouse_no,
        //                }).ToList()
        //            };
        //            var result = HttpHelper.Post(url, ediDto.ToJsonString());
        //            var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
        //            if (resp != null && resp.code == "0")
        //            {
        //                order.OdrderStatus = "开始";
        //                foreach (var item in cabinOrderDetails.Where(x => x.OrderId == order.Id))
        //                {
        //                    item.Status = 1;
        //                    item.OrderDetailStatus = "开始";
        //                }
        //            }
        //            #endregion
        //        }
        //        _cabinOrderServices.UpdateData(orders);
        //        _cabinDetailServices.UpdateData(cabinOrderDetails);
        //        return WebResponseContent.Instance.OK();
        //    }
        //    catch (Exception ex)
        //    {
        //        Console.WriteLine("下发WCS入库单异常:" + ex.Message);
        //        return WebResponseContent.Instance.Error(ex.Message);
        //    }
        //}
        #endregion
        #region ä¸‹å‘立库出库单
        //public WebResponseContent EdiOut()
        //{
        //    try
        //    {
        //        var reslut = WarehouseEnum.立库.ObjToInt().ToString("000");
        //        var orders = _deliveryOrderServices.Repository.QueryData(x => x.OutStatus == "新建" && x.Warehouse_no == reslut).ToList();
        //        if (orders.Count < 1) return WebResponseContent.Instance.OK();
        //        string url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
        //        var deliveryOrderDetails = _deliveryOrderDetailServices.Repository.QueryData(x => orders.Select(x => x.Id).ToList().Contains(x.DeliveryOrderId)).ToList();
        //        var materielInfos = _materielInfoService.Repository.QueryData(x => deliveryOrderDetails.Select(x => x.Goods_no).Contains(x.MaterielCode)).ToList();
        //        foreach (var order in orders)
        //        {
        //            order.Details = deliveryOrderDetails.Where(x => x.DeliveryOrderId == order.Id).ToList();
        //            foreach (var item in order.Details)
        //            {
        //                item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First();
        //            }
        //            #region ä¸‹å‘WCS
        //            string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY";
        //            var ediDto = new ToediOutInfo
        //            {
        //                //客户代码
        //                customerCode = "905",
        //                //物料类型
        //                materialCode = materialCode,
        //                externalOrderNo = order.Out_no,
        //                outOrderType = order.Out_type,
        //                priority = 1,
        //                Is_cancel = 0,
        //                details = order.Details.Select(d => new ToeOutdiInDetail
        //                {
        //                    batchNo = d.Batch_num,
        //                    productCode = d.Goods_no,
        //                    productName = d.MedicineGoods.MaterielName,
        //                    productSpecifications = d.MedicineGoods.MaterielModel,
        //                    quantity = (int)d.Order_qty,
        //                }).ToList()
        //            };
        //            switch (order.Out_type)
        //            {
        //                case "1"://正常出库
        //                case "3"://入库退货
        //                    ediDto.outOrderType = "10";//一般交易出库单
        //                    break;
        //                case "6"://盘亏出库
        //                    ediDto.outOrderType = "30";//盘亏出库单
        //                    break;
        //            }
        //            var result = HttpHelper.Post(url, ediDto.ToJsonString());
        //            var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
        //            if (resp != null && resp.code == "0")
        //            {
        //                order.OutStatus = "开始";
        //                foreach (var item in deliveryOrderDetails.Where(x => x.DeliveryOrderId == order.Id))
        //                {
        //                    item.Status = 1;
        //                    item.OotDetailStatus = "开始";
        //                }
        //            }
        //            #endregion
        //        }
        //        _deliveryOrderServices.UpdateData(orders);
        //        _deliveryOrderDetailServices.UpdateData(deliveryOrderDetails);
        //        return WebResponseContent.Instance.OK();
        //    }
        //    catch (Exception ex)
        //    {
        //        Console.WriteLine("下发WCS出库单异常:" + ex.Message);
        //        return WebResponseContent.Instance.Error(ex.Message);
        //    }
        //}
        #endregion
        // ä½¿ç”¨ SqlSugar çš„ Ado.Connection æ‰‹åŠ¨ç®¡ç†
        #region ä¸‹å‘立库入库单
        public WebResponseContent EdiIn()
        {
            try
            // åˆ›å»ºç‹¬ç«‹çš„ SqlSugarClient
            using (var db = new SqlSugarClient(new ConnectionConfig
            {
                var reslut = WarehouseEnum.立库.ObjToInt().ToString("000");
                var orders = _cabinOrderServices.Repository.QueryData(x => x.OdrderStatus == "新建" && x.Warehouse_no == reslut).ToList();
                if (orders.Count < 1) return WebResponseContent.Instance.OK();
                string url = "http://172.16.1.2:9357/file-admin/api/in/ediIn";
                var cabinOrderDetails = _cabinDetailServices.Repository.QueryData(x => orders.Select(x => x.Id).ToList().Contains(x.OrderId)).ToList();
                var materielInfos = _materielInfoService.Repository.QueryData(x => cabinOrderDetails.Select(x => x.Goods_no).Contains(x.MaterielCode)).ToList();
                foreach (var order in orders)
                ConnectionString = "Data Source=.;Initial Catalog=WIDESEA_WMSDBF_Z22;User ID=sa;Password=48PYX_h7KS@f;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
                DbType = DbType.SqlServer,
                IsAutoCloseConnection = true,  // å…³é”®é…ç½®ï¼Œè‡ªåŠ¨å…³é—­è¿žæŽ¥
                MoreSettings = new ConnMoreSettings()
                {
                    order.Details = cabinOrderDetails.Where(x => x.OrderId == order.Id).ToList();
                    foreach (var item in order.Details)
                    {
                        item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First();
                    }
                    #region ä¸‹å‘WCS
                    string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY";
                    var ediDto = new ToediInInfo
                    {
                        //客户代码
                        customerCode = "905",
                        //物料类型
                        materialCode = materialCode,
                        //入库单号
                        externalOrderNo = order.Order_no,
                        //入库单类型
                        inOrderType = order.Order_type == "5" ? "20" : "10",
                        //优先级
                        priority = 0,
                        //是否取消
                        Is_cancel = 0,
                        details = order.Details.Select(d => new ToediInDetail
                        {
                            //批号
                            batchNo = d.Batch_num,
                            //产品
                            productCode = d.Goods_no,
                            //sku名称
                            productName = d.MedicineGoods.MaterielName,
                            //sku规格
                            productSpecifications = d.MedicineGoods.MaterielSpec,
                            //数量
                            quantity = (int)d.Order_qty,
                            //效期
                            validityPeriod = d.Exp_date,
                            //生产厂家
                            manufacturer = d.MedicineGoods.Factory,
                            //房号
                            libraryNo = order.Warehouse_no,
                        }).ToList()
                    };
                    var result = HttpHelper.Post(url, ediDto.ToJsonString());
                    var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
                    if (resp != null && resp.code == "0")
                    {
                        order.OdrderStatus = "开始";
                        foreach (var item in cabinOrderDetails.Where(x => x.OrderId == order.Id))
                        {
                            item.Status = 1;
                            item.OrderDetailStatus = "开始";
                        }
                    }
                    #endregion
                    IsAutoRemoveDataCache = true
                }
                _cabinOrderServices.UpdateData(orders);
                _cabinDetailServices.UpdateData(cabinOrderDetails);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            }))
            {
                Console.WriteLine("下发WCS入库单异常:" + ex.Message);
                return WebResponseContent.Instance.Error(ex.Message);
            }
                try
                {
                    var reslut = WarehouseEnum.立库.ObjToInt().ToString("000");
                    // ä½¿ç”¨æ–°çš„ db å®žä¾‹æ‰§è¡Œæ‰€æœ‰æŸ¥è¯¢
                    var orders = db.Queryable<Dt_CabinOrder>()
                        .Where(x => x.OdrderStatus == "新建" && x.Warehouse_no == reslut)
                        .ToList();
                    if (orders.Count < 1) return WebResponseContent.Instance.OK();
                    string url = "http://172.16.1.2:9357/file-admin/api/in/ediIn";
                    var orderIds = orders.Select(x => x.Id).ToList();
                    var cabinOrderDetails = db.Queryable<Dt_CabinOrderDetail>()
                        .Where(x => orderIds.Contains(x.OrderId))
                        .ToList();
                    var goodsCodes = cabinOrderDetails.Select(x => x.Goods_no).Distinct().ToList();
                    var materielInfos = db.Queryable<Dt_MaterielInfo>()
                        .Where(x => goodsCodes.Contains(x.MaterielCode))
                        .ToList();
                    foreach (var order in orders)
                    {
                        order.Details = cabinOrderDetails.Where(x => x.OrderId == order.Id).ToList();
                        foreach (var item in order.Details) //手动创建与物料表的连接
                        {
                            item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First();
                        }
                        #region ä¸‹å‘WCS
                        string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY";
                        var ediDto = new ToediInInfo
                        {
                            customerCode = "905",
                            materialCode = materialCode,
                            externalOrderNo = order.Order_no,
                            inOrderType = order.Order_type == "5" ? "20" : "10",
                            priority = 0,
                            Is_cancel = 0,
                            details = order.Details.Select(d => new ToediInDetail
                            {
                                batchNo = d.Batch_num,
                                productCode = d.Goods_no,
                                productName = d.MedicineGoods.MaterielName,
                                productSpecifications = d.MedicineGoods.MaterielSpec,
                                quantity = (int)d.Order_qty,
                                validityPeriod = d.Exp_date,
                                manufacturer = d.MedicineGoods.Factory,
                                libraryNo = order.Warehouse_no,
                            }).ToList()
                        };
                        var result = HttpHelper.Post(url, ediDto.ToJsonString());
                        var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
                        if (resp != null && resp.code == "0")
                        {
                            order.OdrderStatus = "开始";
                            foreach (var item in cabinOrderDetails.Where(x => x.OrderId == order.Id))
                            {
                                item.Status = 1;
                                item.OrderDetailStatus = "开始";
                            }
                        }
                        #endregion
                    }
                    // ä½¿ç”¨åŒä¸€ä¸ª db å®žä¾‹æ‰§è¡Œæ›´æ–°
                    db.Updateable(orders).ExecuteCommand();
                    db.Updateable(cabinOrderDetails).ExecuteCommand();
                    return WebResponseContent.Instance.OK();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("下发WCS入库单异常:" + ex.Message);
                    return WebResponseContent.Instance.Error(ex.Message);
                }
            } // è¿™é‡Œä¼šè‡ªåŠ¨å…³é—­è¿žæŽ¥ï¼Œä¸éœ€è¦æ‰‹åŠ¨ç®¡ç†
        }
        #endregion
        #region ä¸‹å‘立库出库单
        public WebResponseContent EdiOut()
        {
            try
            using (var db = new SqlSugarClient(new ConnectionConfig
            {
                var reslut = WarehouseEnum.立库.ObjToInt().ToString("000");
                var orders = _deliveryOrderServices.Repository.QueryData(x => x.OutStatus == "新建" && x.Warehouse_no == reslut).ToList();
                if (orders.Count < 1) return WebResponseContent.Instance.OK();
                string url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
                var deliveryOrderDetails = _deliveryOrderDetailServices.Repository.QueryData(x => orders.Select(x => x.Id).ToList().Contains(x.DeliveryOrderId)).ToList();
                var materielInfos = _materielInfoService.Repository.QueryData(x => deliveryOrderDetails.Select(x => x.Goods_no).Contains(x.MaterielCode)).ToList();
                foreach (var order in orders)
                ConnectionString = "Data Source=.;Initial Catalog=WIDESEA_WMSDBF_Z22;User ID=sa;Password=48PYX_h7KS@f;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
                DbType = DbType.SqlServer,
                IsAutoCloseConnection = true,  // å…³é”®é…ç½®ï¼Œè‡ªåŠ¨å…³é—­è¿žæŽ¥
                MoreSettings = new ConnMoreSettings()
                {
                    order.Details = deliveryOrderDetails.Where(x => x.DeliveryOrderId == order.Id).ToList();
                    foreach (var item in order.Details)
                    {
                        item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First();
                    }
                    #region ä¸‹å‘WCS
                    string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY";
                    var ediDto = new ToediOutInfo
                    {
                        //客户代码
                        customerCode = "905",
                        //物料类型
                        materialCode = materialCode,
                        externalOrderNo = order.Out_no,
                        outOrderType = order.Out_type,
                        priority = 1,
                        Is_cancel = 0,
                        details = order.Details.Select(d => new ToeOutdiInDetail
                        {
                            batchNo = d.Batch_num,
                            productCode = d.Goods_no,
                            productName = d.MedicineGoods.MaterielName,
                            productSpecifications = d.MedicineGoods.MaterielModel,
                            quantity = (int)d.Order_qty,
                        }).ToList()
                    };
                    switch (order.Out_type)
                    {
                        case "1"://正常出库
                        case "3"://入库退货
                            ediDto.outOrderType = "10";//一般交易出库单
                            break;
                        case "6"://盘亏出库
                            ediDto.outOrderType = "30";//盘亏出库单
                            break;
                    }
                    var result = HttpHelper.Post(url, ediDto.ToJsonString());
                    var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
                    if (resp != null && resp.code == "0")
                    {
                        order.OutStatus = "开始";
                        foreach (var item in deliveryOrderDetails.Where(x => x.DeliveryOrderId == order.Id))
                        {
                            item.Status = 1;
                            item.OotDetailStatus = "开始";
                        }
                    }
                    #endregion
                    IsAutoRemoveDataCache = true
                }
                _deliveryOrderServices.UpdateData(orders);
                _deliveryOrderDetailServices.UpdateData(deliveryOrderDetails);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            }))
            {
                Console.WriteLine("下发WCS出库单异常:" + ex.Message);
                return WebResponseContent.Instance.Error(ex.Message);
                try
                {
                    var reslut = WarehouseEnum.立库.ObjToInt().ToString("000");
                    var orders = db.Queryable<Dt_DeliveryOrder>().Where(x => x.OutStatus == "新建" && x.Warehouse_no == reslut).ToList();
                    if (orders.Count < 1)
                    {
                        return WebResponseContent.Instance.OK();
                    }
                    string url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
                    var deliveryOrderDetails = db.Queryable<Dt_DeliveryOrderDetail>().Where(x => orders.Select(x => x.Id).ToList().Contains(x.DeliveryOrderId)).ToList();
                    var materielInfos = db.Queryable<Dt_MaterielInfo>().Where(x => deliveryOrderDetails.Select(x => x.Goods_no).Contains(x.MaterielCode)).ToList();
                    foreach (var order in orders)
                    {
                        order.Details = deliveryOrderDetails.Where(x => x.DeliveryOrderId == order.Id).ToList();
                        #region ä¸‹å‘WCS
                        foreach (var item in order.Details) //手动创建与物料表的连接
                        {
                            item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First();
                        }
                        string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY";
                        var ediDto = new ToediOutInfo
                        {
                            //客户代码
                            customerCode = "905",
                            //物料类型
                            materialCode = materialCode,
                            externalOrderNo = order.Out_no,
                            outOrderType = order.Out_type,
                            priority = 1,
                            Is_cancel = 0,
                            details = order.Details.Select(d => new ToeOutdiInDetail
                            {
                                batchNo = d.Batch_num,
                                productCode = d.Goods_no,
                                productName = d.MedicineGoods.MaterielName,
                                productSpecifications = d.MedicineGoods.MaterielModel,
                                quantity = (int)d.Order_qty,
                            }).ToList()
                        };
                        switch (order.Out_type)
                        {
                            case "1"://正常出库
                            case "3"://入库退货
                                ediDto.outOrderType = "10";//一般交易出库单
                                break;
                            case "6"://盘亏出库
                                ediDto.outOrderType = "30";//盘亏出库单
                                break;
                        }
                        var result = HttpHelper.Post(url, ediDto.ToJsonString());
                        var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
                        if (resp != null && resp.code == "0")
                        {
                            order.OutStatus = "开始";
                            foreach (var item in deliveryOrderDetails.Where(x => x.DeliveryOrderId == order.Id))
                            {
                                item.Status = 1;
                                item.OotDetailStatus = "开始";
                            }
                        }
                        #endregion
                    }
                    db.Updateable(orders).ExecuteCommand();
                    db.Updateable(deliveryOrderDetails).ExecuteCommand();
                    return WebResponseContent.Instance.OK();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("下发WCS出库单异常:" + ex.Message);
                    return WebResponseContent.Instance.Error(ex.Message);
                }
            }
        }
        #endregion
        #region å…¥åº“完成上报ERP
        /// <summary>
@@ -214,6 +413,7 @@
                var url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk";
                foreach (var item in Orders.GroupBy(x => x.Order_no))
                {
                    //只有当该订单号下的所有记录都是"已完成"状态时,才继续处理
                    if (!item.Where(x => x.OdrderStatus != "已完成").Any())
                    {
                        if (item.First().Order_type == InOrderTypeEnum.Allocat.ObjToInt().ToString())
@@ -293,7 +493,7 @@
                        }
                        else
                        {
                            if (item.First().Out_type == "3") url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk";//入库退货
                            if (item.First().Out_type == "3") url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk";//入库退货 å‡ºåº“单
                            var result = HttpHelper.Post(url, new { order_no = item.Key }.ToJsonString());
                            var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
                            if (response != null && response.resultCode == "0")
@@ -327,5 +527,6 @@
            }
        }
        #endregion
    }
}