yanjinhui
4 天以前 f42e4c5c9f91d983ae2e87d3b6b600d1c8e54087
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/MedicineGoodsServices.cs
@@ -7,6 +7,7 @@
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
@@ -26,173 +27,7 @@
        }
        public IRepository<Dt_MedicineGoods> Repository => BaseDal;
        static string SearchDate = "";
        /// <summary>
        /// èŽ·å–è¯å“åŸºç¡€ä¿¡æ¯åŒæ­¥æŽ¥å£
        /// </summary>
        /// <returns></returns>
        public WebResponseContent GetMedicineGoodsInfom()
        {
            var responseContent = new WebResponseContent();
            try
            {
              var url = "http://121.37.118.63:80/GYZ2/95fck/goodsInfo";
                if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                //请求参数
                var requestData = new
                {
                    searchDate = "2009-01-10 20:45:16"  // æ­£ç¡®çš„æ ¼å¼
                };
                //if (string.IsNullOrEmpty(SearchDate))
                //{
                //    // é»˜è®¤æŸ¥è¯¢è¿‡åŽ»24小时的数据
                //    SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
                //}
                //// è¯·æ±‚参数
                //var requestData = new
                //{
                //    searchDate = SearchDate
                //};
                //SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
                // å‘起请求
                var result = HttpHelper.Post(url, requestData.ToJsonString());
                // ååºåˆ—化
                var response = JsonConvert.DeserializeObject<UpstreamResponse<MedicationsInfo>>(result);
                if (response.resultCode != "0")
                {
                    // è°ƒç”¨å¼‚常接口
                    SendErrorToUpstream(5, "", response.resultMsg ?? "上游接口返回失败", "");
                    return responseContent.Error(response.resultMsg ?? "上游接口返回失败");
                }
                if (response.data == null || !response.data.Any())
                {
                    return responseContent.OK("无新药品数据");
                }
                //获取所有已存在的商品编号
                var existingGoodsNos = BaseDal.Db.Queryable<Dt_MaterielInfo>()
                    .Select(g => g.MaterielCode)
                    .ToList();
                // æ”¶é›†æ‰€æœ‰è¦æ’入的实体
                var entityList = response.data.Where(Medicat => !existingGoodsNos.Contains(Medicat.goods_no)).Select(Medicat => new Dt_MaterielInfo
                {
                    MaterielCode = Medicat.goods_no,
                    MaterielErpType = Medicat.materialCode,
                    item = Medicat.goods_tym, //通用名
                    MaterielName = Medicat.goods_spm,//物料名称
                    MaterielSpec = Medicat.model,
                    Factory = Medicat.factory,
                    MaterielUnit = Medicat.unit,//单位
                    // ä½¿ç”¨ ?? è¿ç®—符提供默认值
                    MaterielLength = (float?)Medicat.item_length ,
                    MaterielWide = (float?)Medicat.item_width,
                    MaterielHeight = (float?)Medicat.item_hight,
                    MaterielVolume = (float?)Medicat.item_volumn,
                    MaterielWeight = (float?)Medicat.item_weight,
                    MaterielStoragecondition = float.TryParse(Medicat.storage_confition, out var val) ? val : null, //储存条件
                    Remark = Medicat.remark,
                    GoodStatusState = "未下发",
                    ModifyDate = Medicat.modify_date
                }).ToList();
                // ä¸€æ¬¡æ€§æ‰¹é‡æ’入数据库
                BaseDal.Db.Insertable(entityList).ExecuteCommand();
                ProductSynchronous();
                return responseContent.OK("同步成功");
            }
            catch (Exception ex)
            {
                SendErrorToUpstream(5, "", ex.Message, "");
                return responseContent.Error(ex.Message);
            }
        }
        /// <summary>
        /// å‘给下游wcs同步药品信息
        /// </summary>
        /// <returns></returns>
        public WebResponseContent ProductSynchronous()
        {
            try
            {
                //先找到所有未下发的药品
                //var list = BaseDal.QueryData(x => x.GoodStatus == "未下发").ToList();
                var list =BaseDal.Db.Queryable<Dt_MaterielInfo>().Where(x => x.GoodStatusState == "未下发").ToList();
                if (list == null || !list.Any())
                {
                    return new WebResponseContent().OK("无未下发药品");
                }
                //找到了就将整个list发给下游系统
                foreach (var item in list)
                {
                    var medicineDTO = new ProductInfo
                    {
                        //用户code
                        customerCode = "905",
                        //物料类型
                        materialCode =item.MaterielErpType,
                        //产品编码
                        productCode= item.MaterielCode,
                        //产品名
                        productName =item.MaterielName,
                        //产品条码
                        productBarCode= item.MaterielCode,
                        //规格
                        productSpecifications=item.MaterielSpec,
                        //单位
                        unit = item.MaterielUnit,
                        //长
                        singleProductLongNum = item.MaterielLength.ToString(),
                        //宽
                        singleProductWideNum = item.MaterielWide.ToString(),
                        //高
                        singleProductHighNum = item.MaterielHeight.ToString(),
                        //重量
                        singleProductWeight = item.MaterielWeight.ToString(),
                        //体积
                        singleProductVolume = item.MaterielVolume.ToString(),
                        //是否取消 0是不删除,1删除
                        isDelete = "0"
                    };
                    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")
                    {
                        //更新药品状态-已完成
                        BaseDal.Db.Updateable<Dt_MaterielInfo>()
                            .SetColumns(x => x.GoodStatusState == "下发完成")
                            .Where(x => x.GoodStatusState == item.MaterielCode)
                            .ExecuteCommand();
                    }
                    else
                    {
                        SendErrorToUpstream(5, medicineDTO.materialCode, resp?.msg ?? "WCS药品信息同步失败", "");
                        return new WebResponseContent { Status = false, Message = "订单推送失败" };
                    }
                }
                return new WebResponseContent { Status = true, Message = "成功" };
            }
            catch (Exception ex)
            {
                Console.WriteLine("ProductSynchronous å¼‚常:" + ex.Message);
                return new WebResponseContent { Status = false, Message = ex.Message };
            }
        }
        /// <summary>
        /// åŒæ­¥åˆ é™¤åˆ é™¤å•†å“ä¿¡æ¯ 
@@ -203,7 +38,7 @@
        {
            try
            {
                var goods = BaseDal.Db.Queryable< Dt_MaterielInfo >().Where(x => x.MaterielCode == goodsno).First();
                var goods = BaseDal.Db.Queryable<Dt_MaterielInfo>().Where(x => x.MaterielCode == goodsno).First();
                if (goods == null)
                {
                    return new WebResponseContent
@@ -257,8 +92,7 @@
            }
            catch (Exception ex)
            {
              return new WebResponseContent { Status=false,Message = ex.Message };
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
@@ -289,7 +123,8 @@
                Console.WriteLine("异常接口推送失败:" + e.Message);
            }
        }
    }
}