示例#1
0
 /// <summary>
 /// ͨ计算西药整散比金额
 /// </summary>
 /// <param name="itemId"></param>
 /// <returns></returns>
 public static double GetYpTotalityPriceDiag(BsItem bsItem)
 {
     try
     {
         double result        = bsItem.PriceDiag;
         var    tempUnitRatio = new List <BsUnitRatio>();
         if (!AppSettings.IsMainLocation)
         {
             tempUnitRatio = Orm.Config.Service.DBClientService.GetList <BsUnitRatio>("ItemId = @0 and HospitalId =@1 ", bsItem.GUID, Config.UserProfiles.HospitalID);
             var tempUnitRatioGuid = tempUnitRatio.First().GUID;
             if (tempUnitRatio.First() != null && !string.IsNullOrWhiteSpace(tempUnitRatioGuid))
             {
                 var drugRatio = tempUnitRatio.First().DrugRatio;
                 drugRatio = drugRatio == 0 ? 1 : drugRatio;
                 var actualResult = Math.Round(bsItem.PriceDiag / drugRatio, 4);
                 result = actualResult;
             }
         }
         return(result);
     }
     catch (Exception)
     {
         return(bsItem.PriceDiag);
     }
 }
        public static string GetItemPosInfoUpdate(string code, string feemzId)
        {
            string ItemInfo, content;

            code = GetInterfaceData(code, feemzId, out ItemInfo, out content);
            if (content.Contains("[") & content.Contains("]"))
            {
                List <ApiAddItemInfo> PharmacyInfoListlist = TransformationJsonData(content);
                if (PharmacyInfoListlist.Count == 0)
                {
                    ItemInfo = "没有找到该药品信息,同步操作取消";
                    return(ItemInfo);
                }
                else
                {
                    //单位
                    string _unitId = AddUnit(PharmacyInfoListlist);
                    //厂商
                    string _bsManufacturerId = AddManufacturer(PharmacyInfoListlist);
                    //基础信息
                    BsItem bsItem = null;
                    if (feemzId != "5602")
                    {
                        bsItem = Config.Service.DBClientService.Get <BsItem>("Code=@0 and HospitalId=@1", PharmacyInfoListlist[0].goods_code, (int)EnumMainLocation.总店);
                    }
                    else
                    {
                        bsItem = Config.Service.DBClientService.Get <BsItem>("Code=@0 and HospitalId=@1", "SX" + PharmacyInfoListlist[0].goods_code, (int)EnumMainLocation.总店);
                    }

                    if (bsItem == null || bsItem.GUID == null)
                    {
                        string count;
                        AddItem(feemzId, out ItemInfo, PharmacyInfoListlist, _unitId, _bsManufacturerId, out count);
                        if (!string.IsNullOrEmpty(count))
                        {
                            ItemInfo = "同步成功," + PharmacyInfoListlist[0].goods_code + "," + PharmacyInfoListlist[0].goods_name;
                            return(ItemInfo);
                        }
                    }
                    else
                    {
                        ItemInfo = "已存在相同项目,同步操作取消," + PharmacyInfoListlist[0].goods_code + "," + PharmacyInfoListlist[0].goods_name;
                        return(ItemInfo);
                    }
                }
                return(ItemInfo);
            }
            else
            {
                ItemInfo = "接口返回信息错误";
                return(ItemInfo);
            }
        }
        private static void AddItem(string feemzId, out string ItemInfo, List <ApiAddItemInfo> PharmacyInfoListlist, string _unitId, string _bsManufacturerId, out string count)
        {
            ItemInfo = PharmacyInfoListlist[0].goods_code + "" + PharmacyInfoListlist[0].goods_name;
            BsItem model = new BsItem
            {
                IsOnlyForSys = true,
                Code         = PharmacyInfoListlist[0].goods_code,
                WbCode       = Utilities.PyWbHelper.SixBitWBCode(PharmacyInfoListlist[0].goods_name),
                PyCode       = Utilities.PyWbHelper.SixBitPYCode(PharmacyInfoListlist[0].goods_name),
                Name         = PharmacyInfoListlist[0].goods_name,
                PriceDiag    = PharmacyInfoListlist[0].goods_price,
                PriceIn      = PharmacyInfoListlist[0].goods_price,
                UnitDiagId   = _unitId,
                UnitDiag     = PharmacyInfoListlist[0].unit_name,
                Dosage       = 1,
                FeeMzId      = "cc610dde7cd84afc8611f8892257abd8",//待处理
                IsRpForbid   = false,
                IsActive     = true,
                InsertTime   = Service.DBClientService.GetServerTime(),
                ManuId       = _bsManufacturerId,
                Spec         = PharmacyInfoListlist[0].goods_spec,
                IsDiscounts  = false,
                HospitalId   = UserProfiles.HospitalID,
                GroupMainId  = null,                               //药品分类
                FeeZyId      = null,
                OperId       = "663C86A0855E6986E050AA0A313010F4", //UserProfilesService.UserID,
                Memo         = DateTime.Now.ToString() + "【新增】字典维护导入"
            };

            if (PharmacyInfoListlist[0].unit_name == "十克")
            {
                model.FeeMzIdCode   = 5400;//中药
                model.PharmacyRatio = 10;
            }
            if (feemzId == "5602")
            {
                model.FeeMzId = "";//生鲜
                model.Code    = "SX" + PharmacyInfoListlist[0].goods_code;
            }
            count = Config.Service.DBClientService.Add(model);
        }
        public static string AddBigOrdersInterface(PMSaveBalanceInfo balanceInfo, int LsRepType)
        {
            string shop_code  = string.Empty;
            string jsonString = string.Empty;

            if (balanceInfo.OuInvoice != null && balanceInfo.OuInvoiceDtlList != null)
            {
                foreach (var item in balanceInfo.ouRecipeList)
                {
                    if (LsRepType == 17)
                    {
                        if (item.LsRepType == 17)
                        {
                            shop_code = item.DeptNo;
                        }
                    }
                    else
                    {
                        if (item.LsRepType != 17)
                        {
                            shop_code = item.DeptNo;
                        }
                    }
                }
                if (shop_code == string.Empty)
                {
                    return("NONE");
                }
                List <data_detail> detailList = new List <data_detail>();
                double             ypprice    = 0;
                double             sxprice    = 0;
                foreach (OuInvoiceDtl ouInvoiceDtl in balanceInfo.OuInvoiceDtlList)
                {
                    if (LsRepType == (int)EnumRecipeType.生鲜)//生鲜项目
                    {
                        if (ouInvoiceDtl.FeeId == Config.DBClientBaseInRedis.GetList <BsMzFeety>("Name=@0", "生鲜").FirstOrDefault().GUID)
                        {
                            data_detail data_detail = new data_detail
                            {
                                goods_code = Config.DBClientBaseInRedis.GetModelByGuid <BsItem>(ouInvoiceDtl.ItemId).Code.Substring(2),
                                qty        = ouInvoiceDtl.Totality,
                                price      = ouInvoiceDtl.Price,
                                subtotal   = ouInvoiceDtl.Amount,
                                memo       = ouInvoiceDtl.Memo
                            };
                            sxprice += data_detail.price * data_detail.qty;
                            detailList.Add(data_detail);
                        }
                    }
                    if (LsRepType == (int)EnumRecipeType.西药)
                    {
                        if (ouInvoiceDtl.FeeId == Config.DBClientBaseInRedis.GetList <BsMzFeety>("Name=@0", "西药/中成药").FirstOrDefault().GUID)
                        {
                            data_detail data_detail = new data_detail
                            {
                                goods_code = Config.DBClientBaseInRedis.GetModelByGuid <BsItem>(ouInvoiceDtl.ItemId).Code,
                                qty        = ouInvoiceDtl.Totality,
                                price      = ouInvoiceDtl.Price,
                                subtotal   = ouInvoiceDtl.Amount,
                                memo       = ouInvoiceDtl.Memo
                            };
                            ypprice += data_detail.price * data_detail.qty;
                            detailList.Add(data_detail);
                        }
                        if (ouInvoiceDtl.FeeId == Config.DBClientBaseInRedis.GetList <BsMzFeety>("Name=@0", "中药").FirstOrDefault().GUID)
                        {
                            BsItem bsItems = Config.DBClientBaseInRedis.GetModelByGuid <BsItem>(ouInvoiceDtl.ItemId);
                            //Orm.Config.Common.UtilsLocCache.GetCache<BsItem>(t => t.ID == ouInvoiceDtl.ItemId && t.LocationId== UserProfiles.LocationID);
                            data_detail data_detail = new data_detail
                            {
                                goods_code = bsItems.Code,
                                qty        = ouInvoiceDtl.Totality / (bsItems.PharmacyRatio == 0 ? 10 : bsItems.PharmacyRatio),
                                price      = Math.Round(ouInvoiceDtl.Price * (bsItems.PharmacyRatio == 0 ? 10 : bsItems.PharmacyRatio), 2),
                                subtotal   = Math.Round(ouInvoiceDtl.Amount, 2),
                                memo       = ouInvoiceDtl.Memo
                            };
                            ypprice += data_detail.price * data_detail.qty;
                            detailList.Add(data_detail);
                        }
                    }
                }
                if (detailList.Count == 0)
                {
                    return("NONE");
                }

                string strPayWay = string.Empty;
                if (balanceInfo.OuInvoicePayList != null && balanceInfo.OuInvoicePayList.Count > 0)
                {
                    for (int i = 0; i < balanceInfo.OuInvoicePayList.Count; i++)
                    {
                        if (i == 0)
                        {
                            strPayWay = strPayWay + string.Format("{0}", balanceInfo.OuInvoicePayList[i].PayWayName);
                        }
                        else
                        {
                            strPayWay = strPayWay + string.Format("/{0}", balanceInfo.OuInvoicePayList[i].PayWayName);
                        }
                    }
                }

                //配送相关信息
                string address = string.Empty;
                string deliverytimebymember = string.Empty;
                string mobile_phone         = string.Empty;
                string consignee            = string.Empty;

                if (balanceInfo.ouRecipeList != null && balanceInfo.ouRecipeList.Count > 0)
                {
                    if (balanceInfo.CurrentPatient.IsTakeMedicine > 0)
                    {
                        deliverytimebymember = balanceInfo.CurrentPatient.DistributionPeriod;
                        mobile_phone         = balanceInfo.CurrentPatient.Mobile;
                        consignee            = balanceInfo.CurrentPatient.PatientName;
                        address = balanceInfo.CurrentPatient.DistributionAddress;
                    }
                    else
                    {
                        mobile_phone = balanceInfo.CurrentPatient.Mobile;
                        consignee    = balanceInfo.CurrentPatient.PatientName;
                    }
                }

                IDictionary <string, string> parameters = new Dictionary <string, string>();
                string timestamp, token;
                SetFlagValue(LsRepType);
                SetBaseInterfcaeParameters(out timestamp, out token);

                parameters.Add("tran_serial_no", flag);
                parameters.Add("operate_ip", flag);
                parameters.Add("method", nameof(AddBigOrders));
                parameters.Add("flag", flag);
                parameters.Add("model", AddBigOrders);

                DataMain data_main = new DataMain()
                {
                    shop_code            = shop_code,
                    amount               = 0,
                    order_sn             = balanceInfo.OuInvoice.InvoNo,
                    pay_name             = strPayWay,
                    mobile_phone         = mobile_phone,
                    address              = address,
                    consignee            = consignee,
                    deliverytimebymember = deliverytimebymember,
                    creater              = Orm.Config.UserProfiles.UserName,
                    state       = "1",
                    timestamp   = timestamp,
                    token       = token,
                    data_detail = detailList,
                };
                if (LsRepType == 17)
                {
                    data_main.amount = sxprice;
                }
                else
                {
                    data_main.amount = ypprice;
                }
                string Data_Json = SetParametersJson(parameters, data_main);
                jsonString = HttpRequestHelper.PostPage(strURL, Data_Json);
                if (!jsonString.Contains("ok"))
                {
                    return(jsonString);
                }
                else
                {
                    return(jsonString);
                }
            }
            return(jsonString);
        }