def companysQuery(): #载入配置 pageIndex = myData_Trans.To_Int(request.args.get('pageIndex', 1)) pageSize = myData_Trans.To_Int(request.args.get('pageSize', 15)) companyID = request.args.get('companyID', "") companyName = request.args.get('companyName', "") companyInStreet = request.args.get('companyInStreet', "") companyInVillage = request.args.get('companyInVillage', "") companyAdrr = request.args.get('companyAdrr', "") companyScale = request.args.get('companyScale', "") companySpecialcase = request.args.get('companySpecialcase', "") companyManangeclass = request.args.get('companyManangeclass', "") companyContacts = request.args.get('companyContacts', "") #组装筛选条件 fliter = "" if (companyID != ""): fliter += " && companyID == " + companyID if (companyName != ""): fliter += " && companyName %like% " + companyName if (companyInStreet != ""): fliter += " && companyInStreet == " + companyInStreet if (companyInVillage != ""): fliter += " && companyInVillage == " + companyInVillage if (companyAdrr != ""): fliter += " && companyAdrr == " + companyAdrr if (companyScale != ""): fliter += " && companyScale == " + companyScale if (companySpecialcase != ""): fliter += " && companySpecialcase == " + companySpecialcase if (companyManangeclass != ""): fliter += " && companyManangeclass == " + companyManangeclass if (companyContacts != ""): fliter += " && companyContacts == " + companyContacts if (fliter != ""): fliter = fliter[4:] #筛选 res = {"success": 1, "data": "", "msg": ""} try: dbCompany = gol._Get_Value('dbCompany') totalCount, pCompanys = dbCompany.getCompanys(param=fliter, isDel=False, page=pageIndex, per_page=pageSize) res['data'] = pCompanys res['totalCount'] = totalCount except Exception as err: res['success'] = 0 res['msg'] = str(err) return myData_Json.Trans_ToJson_str(res)
def get(self): # dataFrequency=1d&stockBars=1&stockTag="10003418.XSHG" # {'dataFrequency': "1d", 'datetimeStart': "2021-06-23 09:00:00", 'stockTag': "10003418.XSHG"} global quoteSource stockTag = request.args.get('queryID', "") dataFrequency = request.args.get('dataFrequency', "1d") params = {'dataFrequency': dataFrequency, 'stockTag': "10003418.XSHG"} stockBars = myData_Trans.To_Int(request.args.get('stockBars', "0")) if(stockBars > 0): params["stockBars"] = stockBars timeEnd = request.args.get('datetimeEnd', "") timeStart = request.args.get('datetimeStart', "") if(timeEnd != ""): params["datetimeEnd"] = timeEnd if(timeStart != ""): params["datetimeStart"] = timeStart #调用 lstReturn = quoteSource.queryHistory(checkTime = False, params = params) pMsg = copy.deepcopy(gol._Get_Setting('Return_strFormat', {})) if(lstReturn != None): datas = [] for x in lstReturn: datas.append(x.toDict_Simple()) pMsg['datas'] = datas pMsg['result'] = True #使用jsonify来讲定义好的数据转换成json格式,并且返回给前端 return jsonify(pMsg)
def _Trans_Value(self, value, utype): if(utype == "string"): return str(value) elif(utype == "float"): if(type(value) == float): return value if(type(value) == int): return value return myData_Trans.To_Float(value) elif(utype == "int"): if(type(value) == int): return value return myData_Trans.To_Int(value) elif(utype == "bool"): if(type(value) == bool): return value return myData_Trans.To_Bool(value) elif(utype == "datetime"): if(type(value) == datetime.datetime): return value return self._Trans_Value_Datetime(value) elif(utype == "list"): if(type(value) == list): return value if(value == None): return [] if(value.count("~*^") > 0): data = list(json.loads(value.replace("~*^", ","))) return data else: return [] return value
def InitBystr(self, strSet, typeTime): self.values = [] self.typeTime = typeTime if(strSet == "*"): self.allVlid = True return #多个配置 if(strSet.count(",") > 0): values = strSet.split(',') for x in values: pSet = myTimeSets.myTimeSet(x, typeTime) self.setTimes.append(pSet) #self.values.append(myData_Trans.To_Int(x)) return #区间配置 if(strSet.count("-") > 0): temps = strSet.split('-') self.minTime = myData_Trans.To_Float(temps[0]) self.maxTime = myData_Trans.To_Float(temps[1]) #self.values = range(myData_Trans.To_Int(temps[0]), myData_Trans.To_Int(temps[1])) return else: if(strSet.count(".") > 0): self.values.append(myData_Trans.To_Float(strSet)) else: self.values.append(myData_Trans.To_Int(strSet))
def _Get_ID(self, tableName=""): fliter = F"select max(id) as maxid from {tableName};" rs = self.pySql.query(fliter) if (len(rs) == 0 or rs[0]['maxid'] == None): return 1 id = myData_Trans.To_Int(rs[0]['maxid'], 0) return id + 1
def get(self): #提取股票信息 pMsg = copy.deepcopy(gol._Get_Setting('Return_strFormat', {})) pRisks = gol._Get_Value('zxcRisk_Control', None) bResult = True # 组装参数并添加 #dicParam = {"边界限制": True,"定量监测": False, "监测间隔": 0.01,"止盈线": 0.20, "止损线": -0.05, "动态止盈": True, "动态止损": True, "止盈回撤": 0.01, "止盈比例": 0.20, "止损回撤": 0.01, "止损比例": 0.20 } usrID = request.args.get('usrID', '') usrTag = request.args.get('usrTag', '') code_id = request.args.get('code_id', "") code_name = request.args.get('code_name', "") removeSet = myData_Trans.To_Bool(request.args.get('removeSet', False)) paramInfo = myData_Trans.Tran_ToDict(request.args.get('setInfo', "{}")) paramInfo['removeSet'] = removeSet dtTrade = request.args.get('time', "") dateTag = request.args.get('dateTag', "") stockPrice = myData_Trans.To_Float( str(request.args.get('stockPrice', 0))) stockNum = myData_Trans.To_Int(str(request.args.get('stockNum', 0))) if (removeSet == False and (stockPrice == 0 or stockNum == 0)): bResult = False pMsg['text'] = "股价、数量不能为0." if (usrID == "" and usrTag == ""): bResult = False pMsg['text'] = "用户信息不能为空." if (bResult): strR = pRisks.addRiskSet(usrID, usrTag, code_id, code_name, stockPrice, stockNum, dtTrade, dateTag, paramInfo) #解析参数 strTag = "风控设置:" + code_name + "\n" if (bResult): if (removeSet == False): if (stockPrice == 0 or stockNum == 0): pMsg['text'] = strTag + " --已成功修改参数信息." else: trade = myData.iif(stockNum > 0, "买入", "卖出") if (stockNum % 100 == 0): pMsg[ 'text'] = strTag + F"新增{trade}:{str(abs(stockNum))} 股.\n{trade}均价:{stockPrice} 元/股)." else: pMsg[ 'text'] = strTag + F"新增{trade}:{str(abs(stockNum))} 张.\n{trade}均价:{stockPrice} 元/张." bResult = True else: pMsg['text'] = strTag + " --设置已成功移除." bResult = True pMsg['result'] = bResult if (bResult == ""): pMsg['text'] = strTag + "操作失败!" return pMsg
def __CreateDict_Field__(self, pList): #解析数据 pDict = Item_Field() if(pList[2] == ""): return pDict #初始对象 pDict.Name = pList[0] #参数名称 pDict.Name_En = pList[1] #参数_英文 pDict.ID_Node = 10 #参数编号-所在节点编号 pDict.ID = myData_Trans.To_Int(pList[2]) #参数集编号 pDict.ID_Start = myData_Trans.To_Int(pList[3]) #参数集起始编号 pDict.ID_End = myData_Trans.To_Int(pList[4]) #参数集结束编号 pDict.ID_Parent = 0 #参数编号-父编号 if(pDict.ID_Start > 0 and pDict.ID_End <= 0): pDict.ID_Parent = pDict.ID_Start #参数编号-父编号 pDict.IsNode = False #是否为节点 if(pDict.ID_Start > 0 and pDict.ID_End > 0): pDict.IsNode = True pDict.Unit = pList[6] #参数单位 pDict.Unit_En = pList[7] #参数单位_英文 if(pDict.ID == 110530): pp = 2 pDict.DataType = myData_Trans.Tran_ToEnum(pList[8], myDataType) #参数类型 pDict.ValueRange_str = pList[9] #参数范围字串 if(pList[9] != ""): pDict.ValueRange = myData.Interval(pDict.ValueRange_str) #参数范围字串 pDict.Value_Default = pList[10] #参数默认值 pDict.Remark = pList[11] #备注信息 pDict.List = [] #下属节点信息 #print("Fields.Name: %s" ,len(pList)) #print("Fields.Na22me: %s" ,pList[8]) return pDict
def Add_Row_BySimply(self, strInfo, updata = False, bSave = True): lines = strInfo.replace('\r\n', '').replace('\n', '').split(',') ind = 1 rowInfo = {} for x in self.fields: rowInfo[x] = lines[ind] ind = ind + 1 #系统字段初始 rowInfo["ID"] = myData_Trans.To_Int(lines[0]) if(len(lines) - 2 == len(self.fields)): rowInfo["isDel"] = myData_Trans.To_Bool(lines[len(self.fields) + 1]) return self.Add_Row(rowInfo, updata, bSave)
def Done_Swap_MsgOut(self, msg, isGroup=False): if (msg or len(msg) > 1): myDebug.Debug("消息接收::", msg['Text']) if (str(msg['Text']) == '[]'): return if (msg.get('Type', "") == 'System'): return #特殊消息处理 try: destPath = "" dtTime = myData_Trans.Tran_ToTime_byInt( myData_Trans.To_Int(str(msg.get('CreateTime', 0)))) msgType = msg['MsgType'] if (msgType == 3): # 图片 destPath = self.dirPic + "Temps/" + msg.fileName msg.download(destPath) time.sleep(1) elif (msgType == 49): # 文件 destPath = self.dirFile + "Temps/" + msg.fileName msg.download(destPath) time.sleep(1) #组装消息内容 wxMsg = self.pMMsg.OnCreatMsg() wxMsg['usrID'] = msg['User']['UserName'] wxMsg['usrName'] = msg['User']['NickName'] wxMsg['usrNameNick'] = msg['User']['RemarkName'] wxMsg['groupID'] = myData.iif(isGroup, msg['User']['UserName'], "") if (wxMsg['groupID'] != ""): wxMsg['usrNameNick'] = msg['ActualNickName'] if (wxMsg['usrNameNick'] == ""): if (msg['FromUserName'] == self.usrName): wxMsg['usrNameNick'] = self.usrName_Alias wxMsg['msgID'] = msg['MsgId'] wxMsg['msgType'] = msg['Type'].upper() wxMsg['msg'] = msg['Text'] wxMsg['msgContent'] = msg.get('Content', '') wxMsg['usrPlat'] = "wx" wxMsg['msgTime'] = myData_Trans.Tran_ToTime_str(dtTime) if (destPath != ""): wxMsg['msg'] = destPath #保存 if (msgType == 1 or msgType == 10002): if (wxMsg['msg'] != ""): self.swapOut.SwapData_Out(wxMsg) except Exception as ex: myError.Error(ex) return
def initHwnd(self, strText='', icoUrl="", isShow=True, infCmd=None): #提取命令信息 super().initHwnd(strText, icoUrl, isShow) if (infCmd != None): typeCmd = infCmd.get("typeCmd", "") if (typeCmd != "quote"): return #按照行情匹配图标 value = myData_Trans.To_Int(str(infCmd.get("value", ""))) if (value < -10): value = -10 if (value > 10): value = 10 self.icoUrl = myData.iif(value >= 0, "Rise-", "Fall-") + str( abs(value)) + ".png" self.strText = infCmd.get("msg", strText) super().initHwnd(self.strText, self.icoUrl, isShow)
def toDict_Simple(self): dictValue = {} dictValue["idTag"] = myData.iif(self.idTag == "", self.id, self.idTag) dictValue["id"] = self.id dictValue["name"] = self.name dictValue["openPrice"] = self.toValueFloat(str(self.openPrice)) dictValue["preClose"] = self.toValueFloat(str(self.preClose)) dictValue["lastPrice"] = self.toValueFloat(str(self.lastPrice)) dictValue["highPrice"] = self.toValueFloat(str(self.highPrice)) dictValue["lowPrice"] = self.toValueFloat(str(self.lowPrice)) dictValue["buyPrice"] = self.toValueFloat(str(self.buyPrice)) dictValue["sellPrice"] = self.toValueFloat(str(self.sellPrice)) dictValue["tradeValume"] = myData_Trans.To_Int(str(self.tradeValume)) dictValue["tradeTurnover"] = self.toValueFloat(str(self.tradeTurnover)) dictValue["datetime"] = self.date + " " + self.time dictValue["quotePlat"] = self.quotePlat dictValue["quoteTimeType"] = self.quoteTimeType return dictValue
def _Done_Text(self, Text, msgID = "", usrInfo = {}): #提取命令内容@* if(Text.count("@*") != 1): return "" cmds = Text.strip()[2:].split(" ") cmd = cmds[0].strip() nNum = len(cmds) myDebug.Print(Text.strip()) #命令处理 strReturn = "" if(cmd == "帮助"): return self._Title_Helper() elif(cmd == "排名"): if("墨紫" == usrInfo.get('usrNameNick', "")): #提取排名信息 pDB = gol._Get_Setting('zxcdbStockReturns') nTop = 10 if(len(cmds) > 1 and myData_Trans.Is_Numberic(cmds[1])): nTop = myData_Trans.To_Int(cmds[1]) lstRanks = pDB.Get_Ranks(nTop = nTop) strRanks = "年收益排名(" + str(datetime.datetime.now().year) + "):" + myData_Trans.Tran_ToStr(lstRanks, "\r\n") return strRanks return strReturn
def createDB_ByFile(self, dbName, dbSet_MdFile='', isRecover=False): try: #读取表字段信息集 if (dbSet_MdFile == ""): strDir, strName = myIO.getPath_ByFile(__file__) dirBase = os.path.abspath(os.path.join(strDir, "..")) dir = dirBase + "/Data/DB_Data/" dbSet_MdFile = dir + dbName + ".md" pMD = myIO_md.myMD(dbSet_MdFile) if (len(pMD.nodesMD) < 1): return False #数据库创建,不存在或者强制覆盖 bReusult = True if (self.isExist_DB(dbName) == False or isRecover == True): bReusult = bReusult & (self.createDB(dbName) >= 0) #循环更新创建表信息 self.initConnect(dbName) for x in pMD[0].Childs: #提取表信息 pTable = x.getTable() bRecover = x.titleName.count("-*r") == 1 tbName = x.titleName.replace("-*r", "") #创建表-检查存在,如果覆盖则重建 if (bRecover == True): bReusult = bReusult & (self.dropTable(tbName) >= 0) if (self.isExist_Table(tbName) == False or bRecover == True): bReusult = bReusult & (self.createTable(tbName) >= 0) #循环所有字段,创建或更新字段信息 for ind in range(1, pTable.rows): fieldName = pTable['字段名'].values[ind] fieldType = pTable['字段类型'].values[ind] fieldLength = myData_Trans.To_Int( pTable['字段长度'].values[ind]) nullable = myData_Trans.To_Bool(pTable['是否可空'].values[ind]) isIndex = myData_Trans.To_Bool(pTable['是否索引'].values[ind]) default = pTable['默认值'].values[ind].replace('-', '') indexType = pTable['索引类型'].values[ind].replace('-', '') #创建字段 tableInfo = { 'tb_name': tbName, 'fields': [{ "columnName": fieldName, "dataType": fieldType, "fieldLength": fieldLength, 'nullable': nullable, 'columnDefault': default }] } bReusult = bReusult & (self.createField(tableInfo) >= 0) #创建索引 if (isIndex and indexType != ""): bReusult = bReusult & (self.createIndex( tbName, indexType, indexType + "_" + fieldName, fieldName) >= 0) #创建默认字段 tableInfo = { 'tb_name': tbName, 'fields': [{ "columnName": 'isDel', "dataType": 'bool', "fieldLength": 0, 'nullable': False }] } bReusult = bReusult & (self.createField(tableInfo) >= 0) tableInfo = { 'tb_name': tbName, 'fields': [{ "columnName": 'editTime', "dataType": 'datetime', "fieldLength": 0, 'nullable': False }] } bReusult = bReusult & (self.createField(tableInfo) >= 0) return bReusult except Exception as e: myDebug.Debug(f'error:{e}') return False
def IsValid(self, dtTime = None): if(dtTime == None): dtTime = datetime.datetime.now() weekday = myData_Trans.To_Int(dtTime.strftime("%w")) return self.M.IsValid(dtTime.minute) and (self.H.IsValid(dtTime.hour) or self.H.IsValid(dtTime.hour + dtTime.minute/60)) and self.D.IsValid(dtTime.day) and self.m.IsValid(dtTime.month) and self.d.IsValid(weekday)