示例#1
0
 def __call__(self, conns):
     base = Base()
     mes = conns['mes']
     offline = conns['offline']
     with open(base.path1 + 'sqls/缺点top3.sql', 'r') as f:
         sql0 = f.read()
     for day in base.datelist(base.getYesterday(base.gettoday()),
                              base.gettoday()):
         date = day.replace('/', '-')
         sql1 = sql0.replace('${dateEditor1}', date)
         res = mes.doget(sql1)
         res['日期'] = date
         offline.dopost("delete from top3_shortage where 日期='" + date + "'")
         base.batchwri(res, 'top3_shortage_test', offline)
示例#2
0
class PvaChan(object):

    def __init__(self):
        super(PvaChan, self).__init__()
    def trandate(self,df):
        if int(df['日期'][11:13])>6:
            return df['日期'][:11]
        else:
            y=self.base.getYesterday(day=df['日期'][:11])
            return y[:4]+'-'+y[5:7]+'-'+y[8:10]
    def __call__(self,conns):
        self.base=Base()
        self.ms =conns['offline']
        self.ora=conns['mes']
        with open(self.base.path1+'sqls/pva产能.sql','r') as f:
            sql=f.read()
        res=self.ora.doget(sql)
        res['日期'] = res.apply(lambda r: self.trandate(r), axis=1)
        res.columns=['lot','device','wo','qty','riqi','jitai','OLDOPERATION']

        with open(self.base.path1 + 'sqls/psa产能.sql', 'r') as f:
            sql = f.read()
        res3 = self.ora.doget(sql)
        res3['日期'] = res3.apply(lambda r: self.trandate(r), axis=1)
        res3.columns = ['lot', 'device', 'wo', 'qty', 'riqi', 'jitai', 'OLDOPERATION']

        res2 = []
        for i in self.base.datelist('20180101', self.base.gettoday().replace('/','')):
            i = i.replace('/', '-')
            for t in ['PVA','TAC-PVA','PSA','換貼保護膜']:
                res2.append([i, 0,t])
        res2 = pd.DataFrame(res2, columns=['riqi', 'qty','OLDOPERATION'])
        self.ms.dopost("truncate table pvachanneng")
        self.base.batchwri(res2, 'pvachanneng', self.ms)
        self.base.batchwri(res,'pvachanneng',self.ms)
        self.base.batchwri(res3,'pvachanneng',self.ms)

# base = Base()
# erp = base.conn('erp')
# offline = base.conn('offline')
# wms = base.conn('wms')
# mes = base.conn('mes')
# conns = {'offline': offline, 'erp': erp, 'wms': wms, 'mes': mes}
# zc=PvaChan()
# zc(conns)
# offline.close()
# erp.close()
# wms.close()
# mes.close()
示例#3
0
    def __call__(self, conns):
        base = Base()
        offline = conns['offline']
        # offline.dopost("drop table CostSum")
        for dir in ['量产','综合','量产TD']:
            sqldcit={'PVA':open(base.path1+'sqls/损耗分析晨会/'+dir+'/pva.sql','r').read(),'PET':open(base.path1+'sqls/损耗分析晨会/'+dir+'/pet.sql','r').read(),\
                     '保护膜':open(base.path1+'sqls/损耗分析晨会/'+dir+'/protectshell.sql','r').read(),'上TAC':open(base.path1+'sqls/损耗分析晨会/'+dir+'/tac_on.sql','r').read(),\
                    '下TAC':open(base.path1+'sqls/损耗分析晨会/'+dir+'/tac_under.sql','r').read()}
            for day in base.datelist('20180501','20180531')[::-1]:
                fin = []
                offline.dopost("delete from CostSum where rq='"+day+"' and item='"+dir+"'")
                for k,v in sqldcit.items():
                    oneday=offline.doget("select * from ("+v+") s where rq='"+day.replace('/','-')+"'")
                    if oneday.empty:
                        sunhao_money,touru_money=0,0
                    else:
                        sunhao_money=oneday['moneysh'][0]
                        touru_money=oneday['moneytr'][0]
                        if sunhao_money==None or sunhao_money=='null':
                            sunhao_money=0
                        if touru_money==None or touru_money=='null':
                            touru_money=0
                    mon=offline.doget("select sum(moneysh) sh,sum(moneytr) tr from ("+v+") s where rq>='"+day[:8].replace('/','-')+"01"+"' and rq<='"+day.replace('/','-')+"'")
                    sh_sum=mon['sh'][0]
                    tr_sum=mon['tr'][0]
                    fin.append([day,sunhao_money,touru_money,sh_sum,tr_sum,k])
                res=pd.DataFrame(fin,columns=['rq','moneysh','moneytr', 'moneysh_mon', 'moneytr_mon','type'])
                res['item']=dir
                # offline.dopost("truncate table CostSum")
                # print(res)
                base.batchwri(res, 'CostSum', offline)

# base = Base()
# erp = base.conn('erp')
# offline = base.conn('offline')
# wms = base.conn('wms')
# mes = base.conn('mes')
# conns = {'offline': offline, 'erp': erp, 'wms': wms, 'mes': mes}
# hz=CostSum()
# hz(conns)
# offline.close()
# erp.close()
# wms.close()
# mes.close()
    def __call__(self, conns):
        os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.ZHS16GBK'
        b = Base()
        self.wms = conns['wms']
        self.ms = conns['offline']
        self.conn = cx_Oracle.connect(
            str('BDATA') + '/' + str('BDATA') + '@' + str('10.232.1.101') +
            ':' + str('1521') + '/' + str('KSERP'))
        # self.ora =conns['erp']

        try:
            self.Func(self.conn)
        except Exception:
            print('erp连接成功!')
        finally:
            self.Func(self.conn)
            #for day in [b.getYesterday(),b.gettoday()]:
            for day in b.datelist('20180629', '20180704'):
                day = day.replace('/', '-')
                print(day)
                self.cursor = self.conn.cursor()
                # self.ms.dopost("truncate table CHTJZJ")
                # day=b.getYesterday().replace('/','-')
                with open(b.path1 + 'sqls/出货统计含折让.sql', 'r') as f:
                    sql = f.read().replace('thisday', day)
                self.cursor.execute(sql)
                res = pd.DataFrame(self.cursor.fetchall())
                if not res.empty:
                    res.columns = [
                        'SALETYPE', 'Size', 'SHIPMENTDATE', 'TRIPNO',
                        'SOURCEID', 'LINEID', 'SHIPQUANTITY', 'DELIVERYNO',
                        'SHIPAERA', 'ORDEREDITEM', 'NONTAXAMOUNT', 'TAXAMOUNT',
                        'LINE_TYPE', 'ORDER_NUMBER', 'UNITSELLPRICE',
                        'SUBINVENTORY', 'DESCRIPTION', 'CUSTOMERNAME', 'FRUD',
                        'UNITAERA', 'TAXPRICE'
                    ]
                    res['class'] = res.apply(lambda r: self.caltype(r), axis=1)
                    b.batchwri(res, 'CHTJZJ', self.ms)
                self.cursor.close()
            self.conn.close()
示例#5
0
    def __call__(self, conns):
        sql_chanchu = '''
select sum(outqty) as rcc from 

(select *,DATE_FORMAT(date_sub(UPDATETIME,interval 7 hour),'%Y-%m-%d') as rq from offline.sunhao where 
DATE_FORMAT(UPDATETIME, '%Y-%m-%d %H:%i:%s') between DATE_FORMAT('${startime}', '%Y-%m-%d 07:00:00') and DATE_FORMAT('${endtime}','%Y-%m-%d 07:00:00') 
  and   MATERIALNO LIKE '_thiscode%'
  AND WO NOT LIKE 'KP1%'
AND OPERATION IN ('PSA','TAC-PVA','PVA','TAC','AGING')
  AND EQUIPMENT IS NOT NULL
   AND WOTYPE='量产'
  AND (WO like '___M%' OR WO like '___P%' OR WO like '___T%' OR WO like '___E%')
  ) s'''
        sql_touru = '''select sum(MLOTCONSUMEQTY) as rtr from 

(select *,DATE_FORMAT(date_sub(UPDATETIME,interval 7 hour),'%Y-%m-%d') as rq from offline.sunhao where 
DATE_FORMAT(UPDATETIME, '%Y-%m-%d %H:%i:%s') between DATE_FORMAT('${startime}', '%Y-%m-%d 07:00:00') and DATE_FORMAT('${endtime}','%Y-%m-%d 07:00:00') 
AND OPERATION IN ('PSA','TAC-PVA','PVA','TAC','AGING')
 AND MATERIALNO LIKE '_thiscode%'
AND WOTYPE='量产'
 AND (WO like '___M%' OR WO like '___P%' OR WO like '___T%' or WO like '___E%')
 ) s'''
        sql_yuanfan_chanchu = '''select SUM(數量) as qty from loss_yuanfan_output 
where  DATE_FORMAT(更新時間, '%Y-%m-%d %H:%i:%s') between DATE_FORMAT('${startime}', '%Y-%m-%d 07:00:00') and DATE_FORMAT('${endtime}','%Y-%m-%d 07:00:00') 
 AND (工單 like '___M%' OR 工單 like '___P%' OR 工單 like '___T%')'''
        sql_yuanfan_touru = '''
        select SUM(數量) as qty from loss_yuanfan_input
where  DATE_FORMAT(查询日期, '%Y-%m-%d') between DATE_FORMAT('${startime}', '%Y-%m-%d') and DATE_FORMAT('${endtime}','%Y-%m-%d') 
AND (工單 like '___M%' OR 工單 like '___P%' OR 工單 like '___T%')'''
        code_dict = {
            'PVA': '0103',
            '保护膜': '0104',
            '上T': '0102',
            'PET': '011',
            '下T': '0107',
            '离型膜': '0105'
        }
        b = Base()
        self.ms = conns['offline']
        for day in b.datelist('20180611', '20180625'):
            print(day)
            for k, v in code_dict.items():
                chanchu15 = self.ms.doget(
                    sql_chanchu.replace('thiscode',
                                        v).replace('${endtime}', day).replace(
                                            '${startime}',
                                            b.getYesterday(day, 15)))['rcc'][0]
                touru15 = self.ms.doget(
                    sql_touru.replace('thiscode',
                                      v).replace('${endtime}', day).replace(
                                          '${startime}',
                                          b.getYesterday(day, 15)))['rtr'][0]
                chanchu30 = self.ms.doget(
                    sql_chanchu.replace('thiscode',
                                        v).replace('${endtime}', day).replace(
                                            '${startime}',
                                            b.getYesterday(day, 30)))['rcc'][0]
                touru30 = self.ms.doget(
                    sql_touru.replace('thiscode',
                                      v).replace('${endtime}', day).replace(
                                          '${startime}',
                                          b.getYesterday(day, 30)))['rtr'][0]

                if touru15 == None or touru15 == 'null' or touru30 == None or touru30 == 'null':
                    res = pd.DataFrame(
                        [[b.getYesterday(day), 0, 0, k]],
                        columns=['riqi', 'costrate15', 'costrate30', 'type'])
                else:
                    if chanchu15 == None or chanchu15 == 'null':
                        chanchu15 = 0
                    if chanchu30 == None or chanchu30 == 'null':
                        chanchu30 = 0
                    res = pd.DataFrame(
                        [[
                            b.getYesterday(day),
                            1 - float(chanchu15) / float(touru15),
                            1 - float(chanchu30) / float(touru30), k
                        ]],
                        columns=['riqi', 'costrate15', 'costrate30', 'type'])

                b.batchwri(res, 'pastcost', self.ms)
            chanchu_yuanfan15 = self.ms.doget(
                sql_yuanfan_chanchu.replace('${endtime}', day).replace(
                    '${startime}', b.getYesterday(day, 15)))['qty'][0]
            touru_yuanfan15 = self.ms.doget(
                sql_yuanfan_touru.replace('${endtime}', day).replace(
                    '${startime}', b.getYesterday(day, 15)))['qty'][0]
            chanchu_yuanfan30 = self.ms.doget(
                sql_yuanfan_chanchu.replace('${endtime}', day).replace(
                    '${startime}', b.getYesterday(day, 30)))['qty'][0]
            touru_yuanfan30 = self.ms.doget(
                sql_yuanfan_touru.replace('${endtime}', day).replace(
                    '${startime}', b.getYesterday(day, 30)))['qty'][0]

            if touru_yuanfan15 == None or touru_yuanfan15 == 'null' or touru_yuanfan30 == None or touru_yuanfan30 == 'null':
                res = pd.DataFrame(
                    [[b.getYesterday(day), 0, 0, '原反']],
                    columns=['riqi', 'costrate15', 'costrate30', 'type'])
            else:
                if chanchu_yuanfan30 == None or chanchu_yuanfan30 == 'null':
                    chanchu_yuanfan30 = 0
                if chanchu_yuanfan15 == None or chanchu_yuanfan15 == 'null':
                    chanchu_yuanfan15 = 0
                res = pd.DataFrame([[
                    b.getYesterday(day),
                    1 - float(chanchu_yuanfan15) / float(touru_yuanfan15),
                    1 - float(chanchu_yuanfan30) / float(touru_yuanfan30), '原反'
                ]],
                                   columns=[
                                       'riqi', 'costrate15', 'costrate30',
                                       'type'
                                   ])
            b.batchwri(res, 'pastcost', self.ms)
示例#6
0
 def __call__(self, conns):
     base = Base()
     offline = conns['offline']
     # offline.dopost("drop table CostSum")
     for dir in ['量产', '综合', '量产TD']:
         sqldcit={'PVA':open(base.path1+'sqls/损耗分析晨会/'+dir+'/pva.sql','r').read(),'PET':open(base.path1+'sqls/损耗分析晨会/'+dir+'/pet.sql','r').read(),\
                  '保护膜':open(base.path1+'sqls/损耗分析晨会/'+dir+'/protectshell.sql','r').read(),'上TAC':open(base.path1+'sqls/损耗分析晨会/'+dir+'/tac_on.sql','r').read(),\
                 '下TAC':open(base.path1+'sqls/损耗分析晨会/'+dir+'/tac_under.sql','r').read(), \
                  '离型膜': open(base.path1 + 'sqls/损耗分析晨会/' + dir + '/lixingmo.sql', 'r').read()}
         for day in base.datelist('20180630', '20180705')[::-1]:
             fin = []
             offline.dopost("delete from CostSum where rq='" + day +
                            "' and item='" + dir + "'")
             for k, v in sqldcit.items():
                 oneday = offline.doget("select * from (" + v +
                                        ") s where rq='" +
                                        day.replace('/', '-') + "'")
                 if oneday.empty:
                     sunhao_money, touru_money = 0, 0
                     mi_sh = 0
                 else:
                     sunhao_money = oneday['moneysh'][0]
                     touru_money = oneday['moneytr'][0]
                     if sunhao_money == None or sunhao_money == 'null':
                         sunhao_money = 0
                     if touru_money == None or touru_money == 'null':
                         touru_money = 0
                         mi_sh = 0
                     else:
                         if k == 'PVA':
                             mi_sh = 1 - (float(touru_money) -
                                          float(sunhao_money)) / (
                                              5.88 * float(touru_money))
                         else:
                             mi_sh = 1 - (float(touru_money) - float(
                                 sunhao_money)) / float(touru_money)
                 mon = offline.doget(
                     "select sum(moneysh) sh,sum(moneytr) tr from (" + v +
                     ") s where rq>='" + day[:8].replace('/', '-') + "01" +
                     "' and rq<='" + day.replace('/', '-') + "'")
                 mon30 = offline.doget(
                     "select sum(moneysh) sh,sum(moneytr) tr from (" + v +
                     ") s where rq>='" +
                     base.getYesterday(day, 30).replace('/', '-') +
                     "' and rq<='" + day.replace('/', '-') + "'")
                 sh30 = mon30['sh'][0]
                 tr30 = mon30['tr'][0]
                 sh_sum = mon['sh'][0]
                 tr_sum = mon['tr'][0]
                 if tr30 == 0 or tr30 == None:
                     mi30 = 0
                 else:
                     if k == 'PVA':
                         mi30 = float(sh30) / (5.88 * float(tr30))
                     else:
                         mi30 = float(sh30) / float(tr30)
                 fin.append([
                     day, sunhao_money, touru_money, sh_sum, tr_sum, sh30,
                     tr30, mi_sh, mi30, k
                 ])
             res = pd.DataFrame(fin,
                                columns=[
                                    'rq', 'moneysh', 'moneytr',
                                    'moneysh_mon', 'moneytr_mon', 'sh30',
                                    'tr30', 'mi_sh', 'mi30', 'type'
                                ])
             res['item'] = dir
             # offline.dopost("truncate table CostSum")
             # print(res)
             base.batchwri(res, 'CostSum', offline)
示例#7
0
 def __call__(self, conns):
     base = Base()
     ms = conns['offline']
     # ms.dopost("truncate table mocost1")
     for day in base.datelist('20180630', '20180704')[::-1]:
         day = day.replace('/', '-')
         ms.dopost("delete from mocost1 where day='" + day + "'")
         day30 = base.getYesterday(day, 29).replace('/', '-')
         day15 = base.getYesterday(day, 14).replace('/', '-')
         tomorrow = base.getTomorrow(day).replace('/', '-')
         print(tomorrow)
         for item in ['PET损耗', 'PVA损耗', '上T损耗', '下T损耗', '保护膜', '离型膜损耗']:
             for type in ['量产', 'TD', 'RD']:
                 res = []
                 with open(
                         base.path1 + 'sqls/各大膜损耗/' + item + '-' + type +
                         '-' + '产出.sql', 'r') as f:
                     sql_chanchu = f.read()
                 with open(
                         base.path1 + 'sqls/各大膜损耗/' + item + '-' + type +
                         '-' + '投入.sql', 'r') as f:
                     sql_touru = f.read()
                 sql_chanchu_mon = sql_chanchu.replace(
                     '${startime}',
                     day[:8] + '01').replace('${endtime}', tomorrow)
                 sql_touru_mon = sql_touru.replace('${startime}',
                                                   day[:8] + '01').replace(
                                                       '${endtime}',
                                                       tomorrow)
                 sql_chanchu15 = sql_chanchu.replace(
                     '${startime}', day15).replace('${endtime}', tomorrow)
                 sql_touru15 = sql_touru.replace('${startime}',
                                                 day15).replace(
                                                     '${endtime}', tomorrow)
                 sql_chanchu30 = sql_chanchu.replace(
                     '${startime}', day30).replace('${endtime}', tomorrow)
                 sql_touru30 = sql_touru.replace('${startime}',
                                                 day30).replace(
                                                     '${endtime}', tomorrow)
                 touru_mon = ms.doget(sql_touru_mon)
                 chanchu_mon = ms.doget(sql_chanchu_mon)
                 touru15 = ms.doget(sql_touru15)
                 chanchu15 = ms.doget(sql_chanchu15)
                 touru30 = ms.doget(sql_touru30)
                 chanchu30 = ms.doget(sql_chanchu30)
                 mon = pd.merge(touru_mon,
                                chanchu_mon,
                                how='inner',
                                on=['rq', 'ITEM_COST'])
                 m15 = pd.merge(touru15, chanchu15, how='inner', on='rq')
                 m30 = pd.merge(touru30, chanchu30, how='inner', on='rq')
                 if m15.empty or m30.empty:
                     pass
                 elif mon.empty:
                     tourucost_mon = 0
                     mishu_mon = 0
                     sunhao_mon = 0
                     sun_money15 = 1 - sum(
                         chanchu15.apply(
                             lambda r: self.calchanchu(r), axis=1)) / sum(
                                 touru15.apply(lambda r: self.caltouru(r),
                                               axis=1))
                     sun_money30 = 1 - sum(
                         chanchu30.apply(
                             lambda r: self.calchanchu(r), axis=1)) / sum(
                                 touru30.apply(lambda r: self.caltouru(r),
                                               axis=1))
                     res.append([
                         day, item, type, sunhao_mon, tourucost_mon,
                         mishu_mon, sun_money15, sun_money30
                     ])
                 else:
                     tourucost_mon = sum(
                         list(
                             touru_mon.apply(lambda r: self.caltouru(r),
                                             axis=1)))
                     chanchusum_mon = sum(
                         list(
                             chanchu_mon.apply(lambda r: self.calchanchu(r),
                                               axis=1)))
                     sunhao_mon = tourucost_mon - chanchusum_mon
                     if item == 'PVA损耗':
                         mishu_mon = 1 - sum(chanchu_mon['rcc']) / (
                             5.88 * sum(touru_mon['rtr']))
                     else:
                         mishu_mon = 1 - sum(chanchu_mon['rcc']) / sum(
                             touru_mon['rtr'])
                     sun_money15 = 1 - sum(
                         chanchu15.apply(
                             lambda r: self.calchanchu(r), axis=1)) / sum(
                                 touru15.apply(lambda r: self.caltouru(r),
                                               axis=1))
                     sun_money30 = 1 - sum(
                         chanchu30.apply(
                             lambda r: self.calchanchu(r), axis=1)) / sum(
                                 touru30.apply(lambda r: self.caltouru(r),
                                               axis=1))
                     res.append([
                         day, item, type, sunhao_mon, tourucost_mon,
                         mishu_mon, sun_money15, sun_money30
                     ])
                 res = pd.DataFrame(res,
                                    columns=[
                                        'day', 'item', 'type', 'sunhao_mon',
                                        'tourucost_mon', 'mishu_mon',
                                        'sun_money15', 'sun_money30'
                                    ])
                 base.batchwri(res, 'mocost1', ms)