/// <summary> /// 7.根据商品编号获取所属的商品类别 /// </summary> /// <param name="commodityCode">商品代码</param> /// <param name="type">是不是港股</param> /// <returns></returns> public static CM_BreedClass GetBreedClassByCommodityCode(string commodityCode, int type) { if (string.IsNullOrEmpty(commodityCode)) { return(null); } if (type == 1) {//非港股 CM_Commodity commodity = CommonDataCacheProxy.Instanse.GetCacheCommodityByCode(commodityCode); if (commodity == null || !commodity.BreedClassID.HasValue) { return(null); } return(CommonDataCacheProxy.Instanse.GetCacheCM_BreedClassByKey(commodity.BreedClassID.Value)); } else {//港股 HK_Commodity commodity = CommonDataCacheProxy.Instanse.GetCacheHKCommodityByCode(commodityCode); if (commodity == null || !commodity.BreedClassID.HasValue) { return(null); } return(CommonDataCacheProxy.Instanse.GetCacheCM_BreedClassByKey(commodity.BreedClassID.Value)); } }
/// <summary> /// 根据港股代码返回品种标识 /// </summary> /// <param name="code">港股代码</param> /// <returns>商品</returns> public int?GetBreedClassIdByHKCommodityCode(string code) { HK_Commodity commdity = GetHKCommodityByCommodityCode(code); int?result = null; if (commdity != null) { result = commdity.BreedClassID; } return(result); }
/// <summary> /// 根据港股商品代码返回所属交易所 /// </summary> /// <param name="code">代码</param> /// <returns></returns> public static CM_BourseType GetHK_BourseTypeByCommodityCode(string code) { HK_Commodity commodity = CommonDataCacheProxy.Instanse.GetCacheHKCommodityByCode(code); if (commodity == null || commodity.BreedClassID.HasValue == false) { return(null); } CM_BreedClass breedClassEntry = CommonDataCacheProxy.Instanse.GetCacheCM_BreedClassByKey((int)commodity.BreedClassID); if (breedClassEntry == null || breedClassEntry.BourseTypeID.HasValue == false) { return(null); } return(CommonDataCacheProxy.Instanse.GetCacheCM_BourseTypeByKey((int)breedClassEntry.BourseTypeID)); }
/// <summary> /// 根据港股商品代码获取港股对应转换单位股的量 /// </summary> /// <param name="code">商品代码</param> /// <returns>商品</returns> public int GetHKPerHandThighOrShareByCode(string code, out string errMsg) { errMsg = ""; HK_Commodity hkcom = GetHKCommodityByCommodityCode(code); if (hkcom == null) { errMsg = "GT-8114:无法根据商品编码获取到相应的港股实体"; return(0); } else { if (!hkcom.PerHandThighOrShare.HasValue) { errMsg = "GT-8114:获取商品编码相应的港股实体无相关的转换值"; return(0); } return(hkcom.PerHandThighOrShare.Value); } }
public override bool Validate(HKOrderRequest request, ref string strMessage) { string errMsg = "港股最小单位检验失败!"; string errCode = "GT-1250"; int unitID = (int)request.OrderUnitType; int tradeWayID = (int)request.BuySell; if (Utils.IsNullOrEmpty(MinVolumeOfBusinessList)) { strMessage = errCode + ":" + errMsg; return(false); } //======update 2009-11-08 李健华====== //港股只有手对股的转换,这里特殊处理,而进入此方法后的验证单位和量都转换成了股单位, //而对应的规则表(XH_MinVolumeOfBusiness表)中只有手的转换,因此这里要特殊转换 //判断是否包含有股的转换 ,没有就自行模拟加入 bool isThigh = false; List <ReckoningCounter.DAL.SpotTradingDevolveService.XH_MinVolumeOfBusiness> minVolumesList = new List <ReckoningCounter.DAL.SpotTradingDevolveService.XH_MinVolumeOfBusiness>(MinVolumeOfBusinessList); //minVolumesList = new List<ReckoningCounter.DAL.SpotTradingDevolveService.XH_MinVolumeOfBusiness>(MinVolumeOfBusinessList); // minVolumesList =MinVolumeOfBusinessList; foreach (var item in MinVolumeOfBusinessList) { if (item.UnitID == (int)CommonObject.Types.UnitType.Thigh) { isThigh = true; break; } } //判断是否包含有股的转换 ,没有就自行模拟加入 if (!isThigh) { HK_Commodity hkComm = MCService.HKTradeRulesProxy.GetHKCommodityByCommodityCode(request.Code); ReckoningCounter.DAL.SpotTradingDevolveService.XH_MinVolumeOfBusiness itembuy = new ReckoningCounter.DAL.SpotTradingDevolveService.XH_MinVolumeOfBusiness(); itembuy.UnitID = (int)CommonObject.Types.UnitType.Thigh; itembuy.VolumeOfBusiness = hkComm.PerHandThighOrShare; itembuy.TradeWayID = (int)CommonObject.Types.TransactionDirection.Buying; minVolumesList.Add(itembuy); ReckoningCounter.DAL.SpotTradingDevolveService.XH_MinVolumeOfBusiness itemSell = new ReckoningCounter.DAL.SpotTradingDevolveService.XH_MinVolumeOfBusiness(); itemSell.UnitID = (int)CommonObject.Types.UnitType.Thigh; itemSell.VolumeOfBusiness = hkComm.PerHandThighOrShare; itemSell.TradeWayID = (int)CommonObject.Types.TransactionDirection.Selling; minVolumesList.Add(itemSell); } var minVolumes = from minVolume in minVolumesList where minVolume.UnitID.Value == unitID && minVolume.TradeWayID.Value == tradeWayID select minVolume; //当此品种没有此交易单位时检验不通过。如权证 下单80股则检验失败(单位只有手和份) if (minVolumes.Count() == 0) { strMessage = errCode + ":" + errMsg; return(false); } //================== //if (request.BuySell == CommonObject.Types.TransactionDirection.Buying) //{ foreach (ReckoningCounter.DAL.SpotTradingDevolveService.XH_MinVolumeOfBusiness volume in minVolumes) { if ((int)request.OrderUnitType == volume.UnitID) { if (request.OrderAmount < volume.VolumeOfBusiness.Value || (request.OrderAmount % volume.VolumeOfBusiness.Value != 0)) { strMessage = errCode + ":" + errMsg; return(false); } } } #region 目前只验证所有的改单不分卖买验证,其他的都作为下单后验证 //} ////卖的话需要进行零股处理 //else //{ // //委托单位转换为计价单位 // decimal scale = MCService.GetTradeUnitScale(CommonObject.Types.BreedClassTypeEnum.HKStock, request.Code, request.OrderUnitType); // var amount = (decimal)request.OrderAmount * scale; // //持仓单位(默认为撮合单位)转为计价单位 // decimal scale2 = MCService.GetMatchUnitScale(CommonObject.Types.BreedClassTypeEnum.HKStock, request.Code); // var position = m_Position * scale2; // if (amount > position) // { // strMessage = errCode + ":" + "超过可用持仓"; // return false; // } // //港股最小单位零股检验 // foreach (ReckoningCounter.DAL.SpotTradingDevolveService.XH_MinVolumeOfBusiness volume in minVolumes) // { // if ((int)request.OrderUnitType == volume.UnitID) // { // if (request.OrderAmount < volume.VolumeOfBusiness.Value || // (request.OrderAmount % volume.VolumeOfBusiness.Value != 0)) // { // if (amount != position) // { // strMessage = errCode + ":" + errMsg; // return false; // } // } // } // } //} #endregion return(true); }
/// <summary> /// 确定按钮操作 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOK_Click(object sender, EventArgs e) { if (m_EditType == 1) { #region 添加操作 try { HK_Commodity hK_Commodity = new HK_Commodity(); if (!string.IsNullOrEmpty(this.txtHKCommodityCode.Text)) { if (!HKManageCommon.IsExistHKCommodityCode(this.txtHKCommodityCode.Text)) { ShowMessageBox.ShowInformation("代码已经存在!"); return; } if (InputTest.zeroStartIntTest(this.txtHKCommodityCode.Text)) { if (this.txtHKCommodityCode.Text.Length == 5) { hK_Commodity.HKCommodityCode = this.txtHKCommodityCode.Text; } else { ShowMessageBox.ShowInformation("港股代码是五位数!"); return; } } else { ShowMessageBox.ShowInformation("请输入数字!"); return; } } else { ShowMessageBox.ShowInformation("请填写代码!"); return; } if (!string.IsNullOrEmpty(this.txtHKCommodityName.Text)) { if (!HKManageCommon.IsExistHKCommodityName(this.txtHKCommodityName.Text)) { ShowMessageBox.ShowInformation("代码名称已经存在!"); return; } hK_Commodity.HKCommodityName = this.txtHKCommodityName.Text; } else { ShowMessageBox.ShowInformation("请填写代码名称!"); return; } if (!string.IsNullOrEmpty(this.txtStockPinYin.Text)) { hK_Commodity.StockPinYin = this.txtStockPinYin.Text; } else { ShowMessageBox.ShowInformation("拼音简称不能为空!"); return; } if (!string.IsNullOrEmpty(this.cmbBreedClassID.Text)) { hK_Commodity.BreedClassID = ((UComboItem)this.cmbBreedClassID.SelectedItem).ValueIndex; } else { //cM_Commodity.BreedClassID = AppGlobalVariable.INIT_INT; ShowMessageBox.ShowInformation("请选择品种类型!"); return; } if (!string.IsNullOrEmpty(this.dtMarketDate.Text)) { hK_Commodity.MarketDate = Convert.ToDateTime(this.dtMarketDate.Text); } else { //cM_Commodity.MarketDate = AppGlobalVariable.INIT_DATETIME; ShowMessageBox.ShowInformation("请选择上市日期!"); return; } if (!string.IsNullOrEmpty(this.txtturnovervolume.Text)) { if (InputTest.intTest(this.txtturnovervolume.Text)) { hK_Commodity.turnovervolume = Convert.ToDouble(this.txtturnovervolume.Text); } else { ShowMessageBox.ShowInformation("请输入正整数!"); return; } } else { ShowMessageBox.ShowInformation("流通股数不能为空!"); return; } if (!string.IsNullOrEmpty(this.txtPerHandThighOrShare.Text)) { if (InputTest.intTest(this.txtPerHandThighOrShare.Text)) { hK_Commodity.PerHandThighOrShare = Convert.ToInt32(this.txtPerHandThighOrShare.Text); } else { ShowMessageBox.ShowInformation("请输入正整数!"); return; } } else { ShowMessageBox.ShowInformation("每手股数不能为空!"); return; } hK_Commodity.ISSysDefaultCode = (int)GTA.VTS.Common.CommonObject.Types.IsYesOrNo.No; //用户添加的代码不是系统默认代码 m_Result = HKManageCommon.AddHKCommodity(hK_Commodity); if (m_Result) { ShowMessageBox.ShowInformation("添加成功!"); this.ClearAll(); this.QueryHKCommodity(); } else { ShowMessageBox.ShowInformation("添加失败!"); } } catch (Exception ex) { string errCode = "GL-7703"; string errMsg = "添加港股交易商品失败!"; VTException exception = new VTException(errCode, errMsg, ex); LogHelper.WriteError(exception.ToString(), exception.InnerException); return; } #endregion } else if (m_EditType == 2) { #region 修改操作 try { HK_Commodity hK_Commodity = new HK_Commodity(); if (string.IsNullOrEmpty(this.txtHKCommodityCode.Text)) { ShowMessageBox.ShowInformation("请选择更新数据!"); return; } hK_Commodity.HKCommodityCode = this.txtHKCommodityCode.Text; if (!string.IsNullOrEmpty(this.cmbBreedClassID.Text)) { hK_Commodity.BreedClassID = ((UComboItem)this.cmbBreedClassID.SelectedItem).ValueIndex; } else { //cM_Commodity.BreedClassID = AppGlobalVariable.INIT_INT; ShowMessageBox.ShowInformation("请选择品种类型!"); return; } //注释掉修改港股代码的系统默认代码值 //hK_Commodity.ISSysDefaultCode = AppGlobalVariable.INIT_INT;//用户添加的代码不是系统默认代码 hK_Commodity.ISSysDefaultCode = m_ISSysDefaultCode; //当是修改时不改变原来的系统默认代码默认值 m_Result = HKManageCommon.UpdateHKCommodity(hK_Commodity); if (m_Result) { ShowMessageBox.ShowInformation("修改成功!"); this.ClearAll(); } else { ShowMessageBox.ShowInformation("修改失败!"); } this.QueryHKCommodity(); //this.txtHKCommodityCode.Enabled = true;//操作结束代码变成可输入状态 m_ISSysDefaultCode = AppGlobalVariable.INIT_INT; this.ClearAll(); } catch (Exception ex) { string errCode = "GL-7704"; string errMsg = "修改港股交易商品失败!"; VTException exception = new VTException(errCode, errMsg, ex); LogHelper.WriteError(exception.ToString(), exception.InnerException); return; } #endregion } }