def setTable(self, tableName, recordCacheCapacity=300): db = QtGui.qApp.db tableClient = db.table('Client') tableEvent = db.table('Event') tableOrder = db.table('{0}.N3LabOrderLog'.format(getLoggerDbName())) tableOrderSync = db.table('{0}.N3LabOrderSyncLog'.format( getLoggerDbName())) tableOrderSent = tableOrderSync.alias('OrderSent') tableOrderRecv = tableOrderSync.alias('OrderRecv') tableOrderCurrent = tableOrderSync.alias('OrderCurrent') tableTissueType = db.table('rbTissueType') tableTTJ = db.table('TakenTissueJournal') table = tableOrder table = table.leftJoin( tableOrderSent, tableOrderSent['id'].eqStmt( db.selectMin(tableOrderSync, tableOrderSync['id'], [ tableOrderSync['order_id'].eq(tableOrder['id']), tableOrderSync['status'].eq(OrderSyncStatus.OrderSent) ]))) table = table.leftJoin( tableOrderRecv, tableOrderRecv['id'].eqStmt( db.selectMax(tableOrderSync, tableOrderSync['id'], [ tableOrderSync['order_id'].eq(tableOrder['id']), tableOrderSync['status'].eq(OrderSyncStatus.ResultReceived) ]))) table = table.leftJoin( tableOrderCurrent, tableOrderCurrent['id'].eqStmt( db.selectMax(tableOrderSync, tableOrderSync['id'], tableOrderSync['order_id'].eq(tableOrder['id'])))) table = table.leftJoin(tableEvent, tableEvent['id'].eq(tableOrder['event_id'])) table = table.leftJoin(tableClient, tableClient['id'].eq(tableEvent['client_id'])) table = table.leftJoin( tableTTJ, tableTTJ['id'].eq(tableOrder['takenTissueJournal_id'])) table = table.leftJoin( tableTissueType, tableTissueType['id'].eq(tableTTJ['tissueType_id'])) cols = [ tableOrder['orderMisId'], tableOrder['orderUUID'], tableOrder['datetime'], tableOrder['status'], tableOrder['event_id'], tableOrderCurrent['error'], db.concat_ws(' ', tableClient['lastName'], tableClient['firstName'], tableClient['patrName']).alias('clientName'), tableTTJ['externalId'], tableTissueType['name'].alias('tissueTypeName'), tableOrderCurrent['status'].alias('lastSyncStatus'), tableOrderSent['datetime'].alias('sentDatetime'), tableOrderRecv['datetime'].alias('receivedDatetime') ] self._table = table self._recordsCache = CTableRecordCache(db, self._table, cols, recordCacheCapacity)
def reloadOrderList(self, order=None, reverse=False): status = self.cmbOrderStatus.value() syncStatus = self.cmbOrderSyncStatus.value() hasError = self.chkOrderError.isChecked() errorText = forceString(self.edtOrderError.text()) dateFrom = self.edtOrderDateFrom.date( ) if self.chkOrderDateFrom.isChecked() else None dateTo = self.edtOrderDateTo.date() if self.chkOrderDateTo.isChecked( ) else None db = QtGui.qApp.db tableOrder = db.table('{0}.N3LabOrderLog'.format(getLoggerDbName())) tableOrderSync = db.table('{0}.N3LabOrderSyncLog'.format( getLoggerDbName())) tableOrderCurrent = tableOrderSync.alias('OrderCurrent') table = tableOrder cond = [] if status is not None: cond.append(tableOrder['status'].eq(status)) if (syncStatus is not None or hasError): table = table.leftJoin( tableOrderCurrent, tableOrderCurrent['id'].eqStmt( db.selectMax( tableOrderSync, tableOrderSync['id'], tableOrderSync['order_id'].eq(tableOrder['id'])))) if syncStatus is not None: cond.append(tableOrderCurrent['status'].eq(syncStatus)) if errorText: cond.append(tableOrderCurrent['error'].like( u'%{0}%'.format(errorText))) elif hasError: cond.append(tableOrderCurrent['error'].ne('')) if dateFrom: cond.append(tableOrder['datetime'].dateGe(dateFrom)) if dateTo: cond.append(tableOrder['datetime'].dateLe(dateTo)) if order is None: order = [tableOrder['id'].desc()] idList = db.getDistinctIdList(table, tableOrder['id'], cond, order=order) if reverse: idList = idList[::-1] self.tblOrder.model().setIdList(idList) self.lblOrderCount.setText(u'Записей в таблице: {0}'.format( len(idList)))
def setTable(self, tableName, recordCacheCapacity=300): db = QtGui.qApp.db tableClient = db.table('Client') tableEvent = db.table('Event') tableOrderResponse = db.table('{0}.N3LabOrderResponseLog'.format( getLoggerDbName())) tableOrderResponseSync = db.table( '{0}.N3LabOrderResponseSyncLog'.format(getLoggerDbName())) tableOrderResponseSent = tableOrderResponseSync.alias( 'OrderResponseSent') tableOrderResponseCurrent = tableOrderResponseSync.alias( 'OrderResponseCurrent') table = tableOrderResponse table = table.leftJoin( tableOrderResponseSent, tableOrderResponseSent['id'].eqStmt( db.selectMin(tableOrderResponseSync, tableOrderResponseSync['id'], [ tableOrderResponseSync['orderResponse_id'].eq( tableOrderResponse['id']), tableOrderResponseSync['status'].eq( OrderResponseSyncStatus.ResultSent) ]))) table = table.leftJoin( tableOrderResponseCurrent, tableOrderResponseCurrent['id'].eqStmt( db.selectMax( tableOrderResponseSync, tableOrderResponseSync['id'], tableOrderResponseSync['orderResponse_id'].eq( tableOrderResponse['id'])))) table = table.leftJoin( tableEvent, tableEvent['id'].eq(tableOrderResponse['event_id'])) table = table.leftJoin(tableClient, tableClient['id'].eq(tableEvent['client_id'])) cols = [ tableOrderResponse['orderUUID'], tableOrderResponse['orderResponseUUID'], tableOrderResponse['datetime'], tableOrderResponse['status'], tableOrderResponse['event_id'], tableOrderResponseCurrent['error'], db.concat_ws(' ', tableClient['lastName'], tableClient['firstName'], tableClient['patrName']).alias('clientName'), tableOrderResponseCurrent['status'].alias('lastSyncStatus'), tableOrderResponseSent['datetime'].alias('sentDatetime') ] self._table = table self._recordsCache = CTableRecordCache(db, self._table, cols, recordCacheCapacity)
def getEventLogStatus(db, eventId): tableEventLog = db.table( '{logger}.IEMKEventLog'.format(logger=getLoggerDbName())) rec = db.getRecordEx(tableEventLog, tableEventLog['status'], tableEventLog['event_id'].eq(eventId), tableEventLog['id'].desc()) return forceInt(rec.value('status')) if rec else None
def on_actResendOrder_triggered(self): idList = self.tblOrder.model().idList() orderIdList = [ idList[index.row()] for index in self.tblOrder.selectionModel().selectedRows() if index.isValid() ] db = QtGui.qApp.db tableOrder = db.table('{0}.N3LabOrderLog'.format(getLoggerDbName())) cond = [ tableOrder['id'].inlist(orderIdList), tableOrder['status'].inlist( [OrderStatus.Outdated, OrderStatus.HasError]) ] expr = [tableOrder['status'].eq(OrderStatus.NotSent)] db.updateRecords(tableOrder, expr, cond) self.tblOrder.model().recordCache().invalidate(orderIdList)
def getDeAttachQueryLogTable(): u""" Таблица для логгирования исходящих запросов на открепление (от одного МО к другому) """ return '{logger}.DeAttachQueryLog'.format(logger=getLoggerDbName())
def getAttachLogTable(): u""" Таблица для логгирования статусов синхронизации прикреплений с ТФОМС """ return '{logger}.AttachLog'.format(logger=getLoggerDbName())