н¨Îļþ¼Ð/WIDESEA_WMSServer/ClassLibrary2/MaterielInfoService.cs
@@ -1,6 +1,7 @@
using HslCommunication;
using Newtonsoft.Json;
using Quartz.Util;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -26,7 +27,7 @@
        public IRepository<Dt_MaterielInfo> Repository => BaseDal;
        static string SearchDate = "2025-11-01 00:00:00";
        static string SearchDate = "2016-11-01 00:00:00";
        /// <summary>
        /// èŽ·å–è¯å“åŸºç¡€ä¿¡æ¯åŒæ­¥æŽ¥å£
@@ -38,7 +39,7 @@
            try
            {
                var url = "http://121.37.118.63:80/GYZ2/95fck/goodsInfo";
                var url = "http://192.168.1.100:80/GYZ2/95fck/goodsInfo";
                if (string.IsNullOrEmpty(SearchDate))
                {
                    // é»˜è®¤æŸ¥è¯¢è¿‡åŽ»24小时的数据
@@ -56,8 +57,7 @@
                // ååºåˆ—化
                var response = JsonConvert.DeserializeObject<UpstreamResponse<MedicationsInfo>>(result);
                if (response == null || response.resultCode != "0")
                if (response == null || response.resultCode != "0"||response.data==null)
                {
                    // è°ƒç”¨å¼‚常接口
                    //SendErrorToUpstream(5, "", response.resultMsg ?? "上游接口返回失败", "");
@@ -81,7 +81,7 @@
                    MaterielErpType = Medicat.goods_type,
                    item = Medicat.goods_tym, //通用名
                    MaterielName = Medicat.goods_spm,//物料名称
                    Dosage_form = GetDosageForm(Medicat.dosage_form),//药剂
                    Dosage_form = Medicat.dosage_form,//药剂
                    Barcode = Medicat.barcode,//条形吗
                    MaterielSpec = Medicat.model,
                    Factory = Medicat.factory,
@@ -167,137 +167,146 @@
            return "未知";
        }
        public WebResponseContent ProductSynchronous()
        {
            try
            {
                List<Dt_MaterielInfo> materielInfos = BaseDal.QueryData(x => x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart && x.BoxQty > 0 && x.MinQty > 0 && x.GoodStatusState == "未下发").ToList();
                if (materielInfos.Count < 1) return WebResponseContent.Instance.Error("无未下发药品");
                var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous";
                foreach (var item in materielInfos)
                {
                    var medicineDTO = new ProductInfo
                    {
                        //用户code
                        customerCode = "905",
                        //物料类型
                        materialCode = item.MaterielErpType,
                        //产品编码
                        productCode = item.MaterielCode,
                        //产品名
                        productName = item.MaterielName,
                        //产品条码
                        productBarCode = item.Barcode,
                        //药剂
                        medicine = item.Dosage_form,//这里要调用方法,转化方法
                        //规格
                        productSpecifications = item.MaterielSpec,
                        //单位
                        unit = item.MaterielUnit,
                        //长
                        singleProductLongNum = (item.MaterielLength ?? 0).ToString(),
                        //宽
                        singleProductWideNum = (item.MaterielWide ?? 0).ToString(),
                        //高
                        singleProductHighNum = (item.MaterielHeight ?? 0).ToString(),
                        //重量
                        singleProductWeight = (item.MaterielWeight ?? 0).ToString(),
                        //体积
                        singleProductVolume = (item.MaterielVolume ?? 0).ToString(),
                        //是否取消 0是不删除,1删除
                        isDelete = "0"
                    };
                    var result = HttpHelper.Post(url, medicineDTO.ToJsonString());
                    var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
                    if (resp != null && resp.code == "0") item.GoodStatusState = "下发完成";
                }
                BaseDal.UpdateData(materielInfos);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                Console.WriteLine("下发WCS物料信息异常:" + ex.Message);
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// å‘给下游wcs同步药品信息 
        /// </summary>
        /// <returns></returns>
        public WebResponseContent ProductSynchronous1()
        #region åŒæ­¥ä¸‹æ¸¸ç‰©æ–™æŽ¥å£
        //public WebResponseContent ProductSynchronous()
        //{
        //    try
        //    {
        //        List<Dt_MaterielInfo> materielInfos = BaseDal.QueryData(x => x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart && x.BoxQty > 0 && x.MinQty > 0 && x.GoodStatusState == "未下发").ToList();
        //        if (materielInfos.Count < 1) return WebResponseContent.Instance.Error("无未下发药品");
        //        var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous";
        //        foreach (var item in materielInfos)
        //        {
        //            var medicineDTO = new ProductInfo
        //            {
        //                //用户code
        //                customerCode = "905",
        //                //物料类型
        //                materialCode = item.MaterielErpType,
        //                //产品编码
        //                productCode = item.MaterielCode,
        //                //产品名
        //                productName = item.MaterielName,
        //                //产品条码
        //                productBarCode = item.Barcode,
        //                //药剂
        //                medicine = item.Dosage_form,//这里要调用方法,转化方法
        //                //规格
        //                productSpecifications = item.MaterielSpec,
        //                //单位
        //                unit = item.MaterielUnit,
        //                //长
        //                singleProductLongNum = (item.MaterielLength ?? 0).ToString(),
        //                //宽
        //                singleProductWideNum = (item.MaterielWide ?? 0).ToString(),
        //                //高
        //                singleProductHighNum = (item.MaterielHeight ?? 0).ToString(),
        //                //重量
        //                singleProductWeight = (item.MaterielWeight ?? 0).ToString(),
        //                //体积
        //                singleProductVolume = (item.MaterielVolume ?? 0).ToString(),
        //                //是否取消 0是不删除,1删除
        //                isDelete = "0"
        //            };
        //            var result = HttpHelper.Post(url, medicineDTO.ToJsonString());
        //            var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
        //            if (resp != null && resp.code == "0") item.GoodStatusState = "下发完成";
        //        }
        //        BaseDal.UpdateData(materielInfos);
        //        return WebResponseContent.Instance.OK();
        //    }
        //    catch (Exception ex)
        //    {
        //        Console.WriteLine("下发WCS物料信息异常:" + ex.Message);
        //        return WebResponseContent.Instance.Error(ex.Message);
        //    }
        //}
        #endregion
        #region æ‰‹åŠ¨å…³é—­æ•°æ®åº“è¿žæŽ¥ åŒæ­¥ä¸‹æ¸¸ç‰©æ–™
        public WebResponseContent ProductSynchronous()
        {
            try
            using (var db = new SqlSugarClient(new ConnectionConfig
            {
                //把小件未下发的的信息和箱规为0,最低库存为0的过滤掉
                //var list = BaseDal.Db.Queryable<Dt_MaterielInfo>().Where(x => x.GoodStatusState == "未下发" && x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart).ToList();
                var list = BaseDal.QueryData(x => x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart && x.BoxQty > 0 && x.MinQty > 0 && x.GoodStatusState == "未下发").ToList();
                if (list.Count < 1)
                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()
                {
                    return new WebResponseContent().OK("无未下发药品");
                    IsAutoRemoveDataCache = true
                }
                //找到了就将整个list发给下游系统
                foreach (var item in list)
            }))
            {
                try
                {
                    var medicineDTO = new ProductInfo
                    List<Dt_MaterielInfo> materielInfos = db.Queryable<Dt_MaterielInfo>().Where(x => x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart && x.BoxQty > 0 && x.MinQty > 0 && x.GoodStatusState == "未下发").ToList();
                    if (materielInfos.Count < 1)
                    {
                        //用户code
                        customerCode = "905",
                        //物料类型
                        materialCode = item.MaterielErpType,
                        //产品编码
                        productCode = item.MaterielCode,
                        //产品名
                        productName = item.MaterielName,
                        //产品条码
                        productBarCode = item.Barcode,
                        //药剂
                        medicine = item.Dosage_form,//这里要调用方法,转化方法
                        //规格
                        productSpecifications = item.MaterielSpec,
                        //单位
                        unit = item.MaterielUnit,
                        //长
                        singleProductLongNum = (item.MaterielLength ?? 0).ToString(),
                        //宽
                        singleProductWideNum = (item.MaterielWide ?? 0).ToString(),
                        //高
                        singleProductHighNum = (item.MaterielHeight ?? 0).ToString(),
                        //重量
                        singleProductWeight = (item.MaterielWeight ?? 0).ToString(),
                        //体积
                        singleProductVolume = (item.MaterielVolume ?? 0).ToString(),
                        //是否取消 0是不删除,1删除
                        isDelete = "0"
                    };
                        return WebResponseContent.Instance.Error("无未下发药品");
                    }
                    var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous";
                    var result = HttpHelper.Post(url, medicineDTO.ToJsonString());
                    var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
                    if (resp != null && resp.code == "0")
                    foreach (var item in materielInfos)
                    {
                        item.GoodStatusState = "下发完成";
                    }
                    else
                    {
                        continue;
                    }
                        var medicineDTO = new ProductInfo
                        {
                            //用户code
                            customerCode = "905",
                            //物料类型
                            materialCode = item.MaterielErpType,
                            //产品编码
                            productCode = item.MaterielCode,
                            //产品名
                            productName = item.MaterielName,
                            //产品条码
                            productBarCode = item.Barcode,
                            //药剂
                            medicine = item.Dosage_form,//这里要调用方法,转化方法
                            //规格
                            productSpecifications = item.MaterielSpec,
                            //单位
                            unit = item.MaterielUnit,
                            //长
                            singleProductLongNum = (item.MaterielLength ?? 0).ToString(),
                            //宽
                            singleProductWideNum = (item.MaterielWide ?? 0).ToString(),
                            //高
                            singleProductHighNum = (item.MaterielHeight ?? 0).ToString(),
                            //重量
                            singleProductWeight = (item.MaterielWeight ?? 0).ToString(),
                            //体积
                            singleProductVolume = (item.MaterielVolume ?? 0).ToString(),
                            //是否取消 0是不删除,1删除
                            isDelete = "0"
                        };
                        var result = HttpHelper.Post(url, medicineDTO.ToJsonString());
                        var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
                        if (resp != null && resp.code == "0") item.GoodStatusState = "下发完成";
                    }
                    db.Updateable(materielInfos).ExecuteCommand();
                    return WebResponseContent.Instance.OK();
                }
                BaseDal.UpdateData(list);
                //Db.Updateable(list).ExecuteCommand();
                return new WebResponseContent { Status = true, Message = "成功" };
                catch (Exception ex)
                {
                    Console.WriteLine("下发WCS物料信息异常:" + ex.Message);
                    return WebResponseContent.Instance.Error(ex.Message);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("ProductSynchronous å¼‚常:" + ex.Message);
                return new WebResponseContent { Status = false, Message = ex.Message };
            }
        }
        #endregion
        public override WebResponseContent DeleteData(object[] keys)
        {
            WebResponseContent content = new WebResponseContent();