Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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) 
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
        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))
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
    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
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
 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
Ejemplo n.º 12
0
 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
Ejemplo n.º 13
0
    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
Ejemplo n.º 14
0
 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)