コード例 #1
0
    def explain(self, info: AttrDict) -> str:
        'Format the query results.'
        info.arrDep = dict(A='到达', D='离开').get(info.arrDepId, '到达')
        info.cdyName = dict(E='空车', L=info.cdyName).get(info.carLE, '')
        if info.cdyName[-1].isdigit():
            info.cdyName += '类货物'
        if not info.carKind.endswith('车'):
            info.carKind += '车'
        if not info.wbID:
            info.wbID = info.wbNbr

        explaination = '''
        截至 {eventDate} 时为止,您查询的{conName[由{}托运的]}
        {carNo[ {} 号]}{carType[ {} 型]}{carKind}

        %s已{arrDep}{eventProvince[位于{}{eventCity}的]}
        {eventAdm}{eventStation}站
        {dzlc[,距离终点站{destStation}站还有 {} km]}。
        '''

        explaination %= '''
        已被编入由{cdyAdm}{cdyStation}站
        开{destAdm[往{}]}{destStation[{}站]}
        的 {trainId} 次列车机后第 {trainOrder} 位,
        负责运送{wbID[编号为 {} 的]}{cdyName}。
        该列车现
        ''' if int(info.trainOrder) else ''

        return self.format(strip_lines(explaination), **info)
コード例 #2
0
ファイル: tracking.py プロジェクト: goddess5321/emu-tools
    def explain(self, info: AttrDict) -> str:
        'Convert the query result to a human-readable text message.'
        # remove trailing whitespace and null values
        for k, v in info.items():
            info[k] = str(v).rstrip()
            if info[k] in ['0', '-1', '发货人']:
                info[k] = ''

        # rename some fields to fit into the template
        converters = {
            'fz': 'cdyStation',
            'dz': 'destStation',
            'pm': 'cdyName',
            'xh': 'carNo',
            'xt': 'arrDepId',
            'carType': 'carKind',
            'tyrName': 'shpName',
            'conName': 'shpName',
            'wbID': 'wbNbr',
        }
        for k, v in converters.items():
            info[k] = info.get(k, '')
            info[v] = info.get(v) or info[k]

        if info.conName == info.shpName:
            info.conName = ''
        elif info.conName:
            info.conName = ',发往' + info.conName

        if info.xh:
            info.carKind = '集装箱'
            info.carLE = 'L' if info.cdyName else 'E'
        elif info.carType.startswith(info.carKind):
            info.carKind = '车辆'

        if not info.cdyName:
            status = ''
        elif info.carLE == 'L':
            status = '负责运送{wbNbr[单号为 {} 的]}{cdyName}'
            if info.cdyName[-1:].isdigit():
                info.cdyName += '型集装箱'
        else:
            status = '当前状态为{cdyName}{wbNbr[,运单号为 {}]}'
            if info.cdyName.endswith('空'):
                info.cdyName += '车'
        if info.get('trainId'):
            info.train = ' %s 次列车' % info.trainId

        info.arrDep = {
            'A': '到达',
            'D': '离开',
            '在站': '到达',
            '在途': '离开',
        }.get(info.arrDepId, '到达')

        explanation = '''
        截至 {eventDate} 时为止,您查询的{shpName[由{}托运{conName}的]}
        {carNo[ {} 号]}{carType[ {} 型]}{carKind}
        {cdyStation[已从{cdyAdm}{}站发出,]}
        {destStation[正前往{destAdm}{}站,]}%s{cdyName[。该车]}
        {train[现被编入{}]}{trainOrder[机后第 {} 位]}{train[,]}
        目前已{arrDep}{eventProvince[位于{}{eventCity}的]}
        {eventAdm}{eventStation}站
        {dzlc[,距离终点站{destStation}站还有 {} km]}。
        ''' % status
        return self.format(strip_lines(explanation), **info)