Ejemplo n.º 1
0
def SapBrandUnitInfoUpdate():
    if request.method == 'POST':
        data = request.values
        try:
            json_str = json.dumps(data.to_dict())
            if len(json_str) > 10:
                ID = data.get('ID')
                if ID:
                    oclass = db_session.query(SapBrandUnitInfo).filter(
                        SapBrandUnitInfo.ID == ID).first()
                    oclass.BUDAT = data.get("BUDAT")
                    oclass.ActStartTime = data.get("ActStartTime")
                    oclass.ActFinishTime = data.get("ActFinishTime")
                    oclass.NUM1 = data.get("NUM1")
                    oclass.QTY = data.get("QTY")
                    oclass.QDATE = data.get("QDATE")
                    oclass.HSDAT = data.get("HSDAT")
                    oclass.AGRND = data.get("AGRND")
                    oclass.SCRAP = data.get("SCRAP")
                    oclass.PRQTY = data.get("PRQTY")
                    oclass.FCONF = data.get("FCONF")
                    db_session.commit()
                return json.dumps('OK')
        except Exception as e:
            print(e)
            logger.error(e)
            insertSyslog("error", "SAP流程订单工序信息更新报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("SAP流程订单工序信息更新报错Error",
                              cls=Model.BSFramwork.AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 2
0
def InstrumentationReminderTimeSelect():
    if request.method == 'GET':
        data = request.values
        try:
            # pages = int(data.get("offset"))  # 页数
            # rowsnumber = int(data.get("limit"))  # 行数
            # inipage = pages * rowsnumber + 0  # 起始页
            # endpage = pages * rowsnumber + rowsnumber  # 截止页
            oclass = db_session.query(Instrumentation).all()
            nowTime = datetime.datetime.now().strftime('%Y-%m-%d')
            dic = []
            for oc in oclass:
                if oc != None:
                    # aa = (datetime.datetime.now() - datetime.datetime.strptime(oc.CreateTime[0:10],"%Y-%m-%d")).days
                    # bb = aa/int(oc.NumberVerification)
                    # cc = int(oc.VerificationCycle) - int(oc.ReminderTime)
                    if (datetime.datetime.now() - datetime.datetime.strptime(
                            oc.CreateTime[0:10], "%Y-%m-%d")).days / int(
                                oc.NumberVerification) >= (
                                    int(oc.VerificationCycle) -
                                    int(oc.ReminderTime)):
                        dic.append(oc)
            jsonoclass = json.dumps(dic,
                                    cls=AlchemyEncoder,
                                    ensure_ascii=False)
            return '{"total"' + ":" + str(
                len(dic)) + ',"rows"' + ":\n" + jsonoclass + "}"
        except Exception as e:
            print(e)
            logger.error(e)
            insertSyslog("error", "仪器仪表查询报错Error:" + str(e), current_user.Name)
            return json.dumps("仪器仪表查询报错",
                              cls=Model.BSFramwork.AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 3
0
def SapMatailInfoSearch():
    if request.method == 'GET':
        data = request.values
        try:
            json_str = json.dumps(data.to_dict())
            if len(json_str) > 10:
                pages = int(data['page'])
                rowsnumber = int(data['rows'])
                inipage = (pages - 1) * rowsnumber + 0
                endpage = (pages - 1) * rowsnumber + rowsnumber
                AUFNR = data.get('AUFNR')
                if not AUFNR:
                    total = db_session.query(SapMatailInfo).filter().count()
                    oclass = db_session.query(
                        SapMatailInfo).filter().all()[inipage:endpage]
                else:
                    total = db_session.query(SapMatailInfo).filter(
                        SapMatailInfo.AUFNR == AUFNR).count()
                    oclass = db_session.query(SapMatailInfo).filter(
                        SapMatailInfo.AUFNR == AUFNR).all()[inipage:endpage]
                jsonoclass = json.dumps(oclass,
                                        cls=AlchemyEncoder,
                                        ensure_ascii=False)
                jsonoclass = '{"total"' + ":" + str(
                    total) + ',"rows"' + ":\n" + jsonoclass + "}"
                return jsonoclass
        except Exception as e:
            print(e)
            logger.error(e)
            insertSyslog("error", "工艺质量确认流程表查询报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("工艺质量确认流程表查询报错",
                              cls=Model.BSFramwork.AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 4
0
def change_status():
    """修改机组频率"""
    try:
        json_data = request.json.get('params')
        equipment_code = json_data.get('EquipmentCode')
        hz = json_data.get('HZ')
        ctrl = ScheduleCTRLWORD('TY')
        if equipment_code in ['LD1', 'LQ1']:
            ctrl.Write_LS1_Params(equipment_code, hz)
        elif equipment_code in ['LD2', 'LQ2']:
            ctrl.Write_LS2_Params(equipment_code, hz)
        insertSyslog("频率修改操作", f"将{equipment_code}设备的频率修改为{hz}",
                     current_user.Name)
        return json.dumps({
            'code': '20001',
            'message': '操作成功'
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
    except Exception as e:
        logger.error(e)
        insertSyslog("error", "频率修改错误:" + str(e), current_user.Name)
        return json.dumps({
            'code': '20002',
            'message': str(e)
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
Ejemplo n.º 5
0
def InstrumentationHandleChecked():
    if request.method == 'POST':
        data = request.values
        try:
            json_str = json.dumps(data.to_dict())
            if len(json_str) > 10:
                ID = data.get("ID")
                HandleStatus = data.get("HandleStatus")
                ReviewStatus = data.get("ReviewStatus")
                if ID is not "":
                    cla = db_session.query(Instrumentation).filter_by(
                        ID=ID).first()
                    if cla:
                        if HandleStatus:
                            cla.Handler = current_user.Name
                            cla.HandleStatus = HandleStatus
                        if ReviewStatus:
                            cla.Reviewer = current_user.Name
                            cla.ReviewStatus = ReviewStatus
                    db_session.commit()
                    return 'OK'
        except Exception as e:
            print(e)
            logger.error(e)
            insertSyslog(
                "error",
                "/equipment_model/InstrumentationHandleChecked仪器仪表复核审核报错Error:"
                + str(e), current_user.Name)
            return json.dumps(
                "/equipment_model/InstrumentationHandleChecked仪器仪表复核审核报错",
                cls=Model.BSFramwork.AlchemyEncoder,
                ensure_ascii=False)
Ejemplo n.º 6
0
def plantSchedulingAddBatch():
    '''
    计划排产增加批次
    :return:
    '''
    if request.method == 'POST':
        data = request.values
        try:
            PRName = data['title']
            code = db_session.query(ERPproductcode_prname.product_code).filter(
                ERPproductcode_prname.PRName == PRName).first()[0]
            plan_id = db_session.query(product_plan.plan_id).filter(
                product_plan.product_code == code).order_by(
                    desc("plan_id")).first()
            if plan_id != None:
                plan_id = plan_id[0]
            else:
                return "请先同步ERP计划!"
            date = data['start']
            #添加排产数据
            sch = db_session.query(Scheduling).filter(
                Scheduling.PRName == PRName).order_by(
                    desc("SchedulingNum")).first()
            if sch == None:
                return "请先进行排产!"
            count = db_session.query(Scheduling).filter(
                Scheduling.SchedulingTime == sch.SchedulingTime).count()
            SchedulingTime = sch.SchedulingTime
            if int(sch.BatchNumS) == count or sch.BatchNumS == "1":
                spls = str(sch.SchedulingTime)[8:10]
                spls = str(int(spls) + 1)
                SchedulingTime = str(sch.SchedulingTime)[0:8] + spls
                ishas = db_session.query(plantCalendarScheduling).filter(
                    plantCalendarScheduling.start == SchedulingTime).first()
                while ishas != None:
                    i = 1
                    spls = str(int(spls) + i)
                    SchedulingTime = str(sch.SchedulingTime)[0:8] + spls
                    ishas = db_session.query(plantCalendarScheduling).filter(
                        plantCalendarScheduling.start ==
                        SchedulingTime).first()
                    i = i + 1
            sc = Scheduling()
            sc.PRName = sch.PRName
            sc.SchedulingStatus = SchedulingStatus.Unlock.value
            sc.SchedulingTime = SchedulingTime
            sc.BatchNumS = sch.BatchNumS
            sc.SchedulingNum = str(int(sch.SchedulingNum) + 1)
            sc.create_time = datetime.datetime.now().strftime(
                "%Y-%m-%d %H:%M:%S")
            db_session.add(sc)
            db_session.commit()
            return 'OK'
        except Exception as e:
            logger.error(e)
            insertSyslog("error", "计划排产增加批次报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("计划排产增加批次报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 7
0
def plantCalendarSchedulingSelect():
    '''
    工厂日历
    :return:
    '''
    if request.method == 'GET':
        data = request.values
        try:
            re = []
            oclass = db_session.query(Scheduling).all()
            for oc in oclass:
                dir = {}
                dir['ID'] = oc.ID
                dir['start'] = oc.SchedulingTime
                dir['title'] = oc.PRName + ": 第" + oc.SchedulingNum[6:] + "批"
                dir['color'] = "#9FDABF"
                re.append(dir)
            ocl = db_session.query(plantCalendarScheduling).all()
            for o in ocl:
                dic = {}
                dic['ID'] = str(o.ID)
                dic['start'] = str(o.start)
                dic['title'] = o.title.split(":")[0]
                dic['color'] = o.color
                re.append(dic)
            return json.dumps(re, cls=AlchemyEncoder, ensure_ascii=False)
        except Exception as e:
            logger.error(e)
            insertSyslog("error", "工厂日历查询报错Error:" + str(e), current_user.Name)
            return json.dumps("工厂日历查询报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 8
0
def makecoolselectbytime():
    '''
    根据时间段查询制冷分析值
    :return:
    '''
    if request.method == 'GET':
        data = request.values
        try:
            db_session.commit()
            TagCode = data.get("TagCode")
            begin = data.get("begin")
            end = data.get("end")
            tag_str = "SUM(" + TagCode + ") AS " + TagCode
            sql = "SELECT  " + tag_str + " FROM datahistory WHERE SampleTime BETWEEN '" + begin + "' AND '" + end + "'"
            re = db_session.execute(sql).fetchall()
            count = 0
            for i in re:
                count = round(float(0 if i[TagCode] == None else i[TagCode]),
                              2)
            return json.dumps(count, cls=AlchemyEncoder, ensure_ascii=False)
        except Exception as e:
            logger.error(e)
            insertSyslog("error", "根据时间段查询制冷分析值报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("根据时间段查询制冷分析值报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 9
0
def energyselectbytime():
    '''
    根据时间段查询能耗值
    :return:
    '''
    if request.method == 'GET':
        data = request.values
        try:
            db_session.commit()
            begin = data.get("begin")
            end = data.get("end")
            tag_str = "SUM(`MB2TCP3.A_ACR_12.Ep_total_q`) AS A_ACR_10,SUM(`MB2TCP3.A_ACR_20.Ep_total_q`) AS A_ACR_13"
            sql = "SELECT  " + tag_str + ",CollectionDate AS CollectionDate,CollectionHour AS CollectionHour FROM incrementelectrictable WHERE CollectionDate BETWEEN '" \
                  + begin + "' AND '" + end + "'"
            re = db_session.execute(sql).fetchall()
            count = 0
            for i in re:
                count = round(
                    float(0 if i["A_ACR_10"] == None else i["A_ACR_10"]) +
                    float(0 if i["A_ACR_13"] == None else i["A_ACR_13"]), 2)
            return json.dumps(count, cls=AlchemyEncoder, ensure_ascii=False)
        except Exception as e:
            logger.error(e)
            insertSyslog("error", "根据时间段查询能耗值报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("根据时间段查询能耗值报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 10
0
def addscheduledates():
    '''
    添加工作日休息日
    :return:
    '''
    if request.method == 'GET':
        data = request.values
        try:
            month = data['month']
            count = db_session.query(scheduledate).filter(
                scheduledate.WorkDate.like("%" + month + "%")).count()
            if count < 20:
                mou = month.split("-")
                monthRange = calendar.monthrange(int(mou[0]), int(mou[1]))
                re = timeChange(mou[0], str(int(mou[1])), monthRange[1])
                lis = [
                    '星期一',
                    '星期二',
                    '星期三',
                    '星期四',
                    '星期五',
                    '星期六',
                    '星期日',
                ]
                dic = dict(enumerate(lis))
                for i in re:
                    ymr = i.split("-")
                    w = datetime.date(int(ymr[0]), int(ymr[1]), int(ymr[2]))
                    xq = dic[w.weekday()]
                    if xq == "星期六" or xq == "星期日":
                        # dc = db_session.query(scheduleDateType).filter(scheduleDateType.DateTypeName == "周末").first()
                        DateType = "周末"
                        color = "#FA7D00"
                    else:
                        DateType = "工作日"
                        color = "#00CAFA"
                    sc = scheduledate()
                    sc.WorkDate = i
                    sc.DateType = DateType
                    sc.comment = xq
                    sc.color = color
                    db_session.add(sc)
                    db_session.commit()
                db_session.close_all()
            return 'OK'
        except Exception as e:
            db_session.rollback()
            logger.error(e)
            insertSyslog("error", "添加工作日休息日报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("添加工作日休息日报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 11
0
def a():
    if request.method == 'GET':
        data = request.values
        try:
            jsonstr = json.dumps(data.to_dict())
            if len(jsonstr) > 10:
                return select("Equipment", "0", "5", data)
        except Exception as e:
            print(e)
            logger.error(e)
            insertSyslog("error", "/BatchInfoSearch查询报错Error:" + str(e),
                         current_user.Name)
Ejemplo n.º 12
0
def selectEquipmentEfficiencyTree():
    '''查询设备效率分析树形结构'''
    if request.method == 'GET':
        try:
            return json.dumps(getEquipmentEfficiencyTreeChildrenMap(id=0),
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
        except Exception as e:
            print(e)
            insertSyslog("error", "查询设备效率分析树形结构报错Error:" + str(e),
                         current_user.Name)
            return json.dumps([{
                "status": "Error:" + str(e)
            }],
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 13
0
def keep_record(p):
    """
    查看保养记录
    :param p: 设备号
    :return: 该设备的所有保养记录记录
    """
    try:
        # 当前页码
        page = int(request.values.get('offset'))
        # 每页多少条
        per_page = int(request.values.get('limit'))

        query_data = db_session.query(KeepRecord).order_by(
            KeepRecord.ApplyTime.desc()).all()
        # data_list = [item for item in query_data]
        result = []
        for data in query_data:
            if p in data.EquipmentCode:
                result.append(data)
        result_data = result[(page - 1) * per_page:page * per_page]
        return json.dumps(
            {
                'code': '10001',
                'message': '操作成功',
                'data': {
                    'rows': result_data,
                    'total': len(result)
                }
            },
            cls=AlchemyEncoder,
            ensure_ascii=False)
        # total = db_session.query(KeepRecord).filter_by(EquipmentCode=p).count()
        # data = db_session.query(KeepRecord).filter(KeepRecord.EquipmentCode == p).order_by(
        #     KeepRecord.ApplyTime.desc()).limit(per_page).offset((page - 1) * per_page)
        # return json.dumps({'code': '10001', 'message': '操作成功', 'data': {'rows': data.all(), 'total': total}},
        #                   cls=AlchemyEncoder, ensure_ascii=False)
    except Exception as e:
        logger.error(e)
        insertSyslog("error", "保养记录查询错误:" + str(e), current_user.Name)
        return json.dumps({
            'code': '20002',
            'message': str(e)
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
Ejemplo n.º 14
0
def SAP_MailInfos():
    '''SAP物料主数据同步接口'''
    if request.method == 'GET':
        data = request.values
        try:
            dic = {}
            data_ma = {
                "RID": str(uuid.uuid4()),
                "WERKS": "1100",
                "MTART": data.get("Mtart"),
                "SDATE": data.get("StartTime"),
                "EDATE": data.get("EndTime"),
                "SYSID": "WX_MES",
                "OPDAT": datetime.datetime.now().strftime('%Y%m%d'),
                "OPTME": datetime.datetime.now().strftime('%H%M%S')
            }
            dic["CATEGORY"] = ""
            dic["TYPE"] = ""
            dic["OPERATION"] = ""
            dic["DESCRIPTION"] = ""
            dic["DATA"] = data_ma
            data_json = json.dumps(dic, cls=AlchemyEncoder, ensure_ascii=False)
            # headers = {'Content-Type': 'application/soap+xml; charset="UTF-8"'}
            t = HttpAuthenticated(username='******', password='******')
            client = Client(Model.Global.SAPcsurl, transport=t)
            result = client.service.Z_PP_MES_INTF(data_json, 'PP1005', 'MES')
            if result:
                re = json.loads(result).get("RETURN").get("MSG_LIST")
                for i in re:
                    mat = i.get("DATA")
                    if mat:
                        e = product_infoERP()
                        e.product_code = mat.get("ITEM_CODE")
                        e.product_name = mat.get("ITEM_NAME")
                        e.product_type = mat.get("ITEM_TYPE")
                        e.product_unit = mat.get("ITEM_UNIT")
                        db_session.commit()
            return json.dumps('OK')
        except Exception as e:
            print(e)
            insertSyslog()
            return json.dumps("调用SAP物料主数据同步接口接口报错!")
Ejemplo n.º 15
0
def run():
    try:
        while True:
            data_dict = {}
            redis_conn = redis.Redis(connection_pool=pool)
            #trays = constant.TrayNumber
            eqps = constant.EQPNameS
            for key in eqps:
                value = redis_conn.hget(constant.REDIS_TABLENAME,
                                        eqps.get(key)).decode('utf-8')
                tagvalue = db_session.query(TrayNumberRedisTag).filter(
                    TrayNumberRedisTag.PalletID == eqps.get(key)).first()
                if tagvalue.value != value and value == "TRUE":  #FALSE---TRUE托盘进罐
                    reds = db_session.query(TrayNumberRedisTag).filter(
                        TrayNumberRedisTag.TagID == key).all()
                    for red in reds:
                        pvalue = redis_conn.hget(constant.REDIS_TABLENAME,
                                                 red.PalletID).decode('utf-8')
                        red.value = pvalue
                        red.inTime = datetime.datetime.now().strftime(
                            '%Y-%m-%d %H:%M:%S')
                elif tagvalue.value != value and value == "FALSE":  #TRUE---FALSE托盘出罐
                    reds = db_session.query(TrayNumberRedisTag).filter(
                        TrayNumberRedisTag.TagID == key).all()
                    for red in reds:
                        red.outTime = datetime.datetime.now().strftime(
                            '%Y-%m-%d %H:%M:%S')
                tagvalue.value = value
                db_session.commit()
            time.sleep(3)
    except Exception as e:
        print(e)
        db_session.rollback()
        logger.error(e)
        insertSyslog("error", "同步托盘redis信息报错Error:" + str(e),
                     current_user.Name)
        return json.dumps([{
            "status": "Error:" + str(e)
        }],
                          cls=Model.BSFramwork.AlchemyEncoder,
                          ensure_ascii=False)
Ejemplo n.º 16
0
def keep_plans():
    """保养计划"""
    try:
        json_data = request.get_json()
        # equipments = ['XXF-2', 'XXF-1', 'PYF-1']
        equipments = json_data.get('EquipmentCode')
        if len(equipments) == 1:
            equipment_code = equipments[0]
        else:
            equipment_code = '  '.join(equipments)
        work_time = add_date(json_data.get('WeekTime'),
                             json_data.get('StartTime'))
        work_type = json_data.get('Type')
        week_time = '单次' if work_type == '单次' else json_data.get('WeekTime')
        data = KeepPlan(EquipmentCode=equipment_code,
                        No=get_no(json_data.get('ApplyTime')),
                        Worker=current_user.Name,
                        ApplyTime=json_data.get('ApplyTime'),
                        Type=json_data.get('Type'),
                        StartTime=json_data.get('StartTime'),
                        Describe=json_data.get('Describe'),
                        WorkTime=work_time,
                        WeekTime=week_time)
        db_session.add(data)
        db_session.commit()
        db_session.close()
        return json.dumps({
            'code': '10001',
            'message': '操作成功'
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
    except Exception as e:
        logger.error(e)
        insertSyslog("error", "保养计划表添加错误:" + str(e), current_user.Name)
        return json.dumps({
            'code': '20002',
            'message': str(e)
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
Ejemplo n.º 17
0
def fault():
    """故障恢复"""
    try:
        json_data = request.json.get('params')
        equipment_code = json_data.get('EquipmentCode')
        ctrl = ScheduleCTRLWORD('TY')
        ctrl.Write_LS_FaultReset(equipment_code)
        return json.dumps({
            'code': '20001',
            'message': '操作成功'
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
    except Exception as e:
        logger.error(e)
        insertSyslog("error", "故障恢复错误:" + str(e), current_user.Name)
        return json.dumps({
            'code': '20002',
            'message': str(e)
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
Ejemplo n.º 18
0
def reset():
    """复位"""
    try:
        redis_conn = redis.Redis(password=constant.REDIS_PASSWORD,
                                 decode_responses=True)
        # if request.method == 'GET':
        #     data = redis_conn.hget(constant.REDIS_TABLENAME, 'LS_JN_FLAG')
        #     return json.dumps({'code': '20001', 'message': '成功', 'data': data},
        #                       cls=AlchemyEncoder, ensure_ascii=False)
        if request.values.get('reset') == 'yes':
            ctrl = ScheduleCTRLWORD('TY')
            ctrl.Write_LS_INIWORD('LS1', '100')
            ctrl.Write_LS_INIWORD('LS2', '100')
            return json.dumps({'code': '20001', 'message': '设置成功'})
        if request.values.get('switch') == 'on':
            data = redis_conn.hset(constant.REDIS_TABLENAME, 'LS_JN_FLAG', '1')
            return json.dumps({
                'code': '20001',
                'message': '设置成功',
                'data': data
            })
        if request.values.get('switch') == 'off':
            data = redis_conn.hset(constant.REDIS_TABLENAME, 'LS_JN_FLAG', '0')
            return json.dumps({
                'code': '20001',
                'message': '设置成功',
                'data': data
            })
    except Exception as e:
        logger.error(e)
        insertSyslog("error", "工时安排设置出错:" + str(e), current_user.Name)
        return json.dumps({
            'code': '20002',
            'message': str(e)
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
Ejemplo n.º 19
0
def change_run():
    """修改机组开关"""
    try:
        json_data = request.json.get('params')
        equipment_code = json_data.get('EquipmentCode')
        status = json_data.get('Status')
        temperature = json_data.get('Temperature', '100')
        ctrl = ScheduleCTRLWORD('TY')
        if equipment_code in ['LS1', 'LD1', 'LQT1']:
            if equipment_code == 'LS1' and status == 'STOP':
                ctrl.Equip_LS1Control(equipment_code, status)
                # ctrl.Write_LS_INIWORD(equipment_code, temperature)
            else:
                ctrl.Equip_LS1Control(equipment_code, status)
        if equipment_code in ['LS2', 'LD2', 'LQT2']:
            if equipment_code == 'LS2' and status == 'STOP':
                ctrl.Equip_LS2Control(equipment_code, status)
                # ctrl.Write_LS_INIWORD(equipment_code, temperature)
            else:
                ctrl.Equip_LS2Control(equipment_code, status)
        insertSyslog("机组开关操作", f"对{equipment_code}设备进行了{status}操作",
                     current_user.Name)
        return json.dumps({
            'code': '20001',
            'message': '操作成功'
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
    except Exception as e:
        logger.error(e)
        insertSyslog("error", "机组开关修改错误:" + str(e), current_user.Name)
        return json.dumps({
            'code': '20002',
            'message': str(e)
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
Ejemplo n.º 20
0
def SapMatailInfoAdd():
    if request.method == 'POST':
        data = request.values
        try:
            json_str = json.dumps(data.to_dict())
            if len(json_str) > 10:
                smi = SapMatailInfo()
                sm = db_session.query(SapMatailInfo).filter(
                    SapMatailInfo.ID == data.get("ID")).first()
                smi.AUFNR = sm.AUFNR
                smi.RSNUM = sm.RSNUM
                smi.RSPOS = sm.RSPOS
                smi.VORNR = sm.VORNR
                smi.SEQNO = sm.SEQNO
                smi.MATNR = sm.MATNR
                smi.MAKTX = sm.MAKTX
                smi.BDMNG = data.get("BDMNG")
                smi.MEINS = sm.MEINS
                smi.BWART = sm.BWART
                smi.CHARG = data.get("CHARG")
                smi.WERKS = sm.WERKS
                smi.LGORT = sm.LGORT
                smi.WEIGH = sm.WEIGH
                smi.Opertation = data.get("Opertation")
                smi.BUDAT = data.get("BUDAT")
                smi.Status = "未发送"
                db_session.add(smi)
                db_session.commit()
                return json.dumps('OK')
        except Exception as e:
            print(e)
            logger.error(e)
            insertSyslog("error", "SAP流程订单物料信息更新报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("SAP流程订单物料信息更新报错Error",
                              cls=Model.BSFramwork.AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 21
0
def SapMatailInfoUpdate():
    if request.method == 'POST':
        data = request.values
        try:
            json_str = json.dumps(data.to_dict())
            if len(json_str) > 10:
                ID = data.get('ID')
                if ID:
                    oclass = db_session.query(SapMatailInfo).filter(
                        SapMatailInfo.ID == ID).first()
                    oclass.BUDAT = data.get("BUDAT")
                    oclass.Opertation = data.get("Opertation")
                    oclass.BDMNG = data.get("BDMNG")
                    oclass.CHARG = data.get("CHARG")
                    db_session.commit()
                return json.dumps('OK')
        except Exception as e:
            print(e)
            logger.error(e)
            insertSyslog("error", "SAP流程订单物料信息更新报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("SAP流程订单物料信息更新报错Error",
                              cls=Model.BSFramwork.AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 22
0
def InstrumentationSelect():
    if request.method == 'GET':
        data = request.values
        try:
            json_str = json.dumps(data.to_dict())
            if len(json_str) > 10:
                pages = int(data.get("offset"))  # 页数
                rowsnumber = int(data.get("limit"))  # 行数
                inipage = pages * rowsnumber + 0  # 起始页
                endpage = pages * rowsnumber + rowsnumber  # 截止页
                InstrumentationName = data["InstrumentationName"]
                if InstrumentationName == "":
                    count = db_session.query(
                        Instrumentation).filter_by().count()
                    oclass = db_session.query(
                        Instrumentation).filter_by().all()[inipage:endpage]
                else:
                    count = db_session.query(Instrumentation).filter(
                        Instrumentation.InstrumentationName.like(
                            "%" + InstrumentationName + "%")).count()
                    oclass = db_session.query(Instrumentation).filter(
                        Instrumentation.InstrumentationName.like(
                            "%" + InstrumentationName +
                            "%")).all()[inipage:endpage]
                jsonoclass = json.dumps(oclass,
                                        cls=AlchemyEncoder,
                                        ensure_ascii=False)
                return '{"total"' + ":" + str(
                    count) + ',"rows"' + ":\n" + jsonoclass + "}"
        except Exception as e:
            print(e)
            logger.error(e)
            insertSyslog("error", "仪器仪表查询报错Error:" + str(e), current_user.Name)
            return json.dumps("仪器仪表查询报错",
                              cls=Model.BSFramwork.AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 23
0
def Sap_WorkReport():
    '''SAP报工信息接口'''
    if request.method == 'POST':
        data = request.values
        try:
            dic = {}
            data_list = []
            sbui = db_session.query(SapBrandUnitInfo).filter(
                SapBrandUnitInfo.ID == data.get("ID")).first()
            AUFNR = sbui.AUFNR
            sbuis = db_session.query(SapBrandUnitInfo).filter(
                SapBrandUnitInfo.AUFNR == AUFNR,
                SapBrandUnitInfo.VORNR < sbui.VORNR).order_by(
                    desc("VORNR")).all()
            for s in sbuis:
                if s.Status != "工序报工完成" and s.Status != "工序修改报工完成":
                    return json.dumps('请按工序顺序进行报工!')
            data_dir = {
                "RID": str(uuid.uuid4()),
                "RIDITEM": str(uuid.uuid4()),
                "AUFNR": sbui.AUFNR,
                "VORNR": sbui.VORNR,
                "FCONF": sbui.FCONF,
                "WERKS": "1100",
                "PRQTY": sbui.PRQTY,
                "SCRAP": "",
                "AGRND": "",
                "MEINS": sbui.UNIT,
                "STEUS": sbui.STEUS,
                "HSDAT": sbui.HSDAT[0:10].replace("-", ""),
                "QDATE": sbui.QDATE[0:10].replace("-", ""),
                "QTY": sbui.QTY,
                "NUM1": sbui.NUM1,
                "APP_PER": current_user.Name,
                "ESDAT": sbui.ActStartTime[0:10].replace("-", ""),
                "ESTME": sbui.ActStartTime[11:19].replace(":", ""),
                "EFDAT": sbui.ActFinishTime[0:10].replace("-", ""),
                "EFTME": sbui.ActFinishTime[11:19].replace(":", ""),
                "BUDAT": sbui.BUDAT[0:10].replace("-", ""),
                "VGWTS": sbui.VORGSCHL,
                "CONFACT1": sbui.VGW01,
                "CONFACT2": sbui.VGW02,
                "CONFACT3": sbui.VGW02,
                "CONFACT4": sbui.VGW04,
                "CONFACT5": sbui.VGW05,
                "CONFACT6": sbui.VGW06,
                "OPDAT": datetime.datetime.now().strftime('%Y%m%d'),
                "OPTME": datetime.datetime.now().strftime('%H%M%S')
            }
            data_list.append(data_dir)
            dic["CATEGORY"] = ""
            dic["TYPE"] = ""
            dic["OPERATION"] = ""
            dic["DESCRIPTION"] = ""
            dic["DATA"] = data_list
            data_json = json.dumps(dic, cls=AlchemyEncoder, ensure_ascii=False)
            # headers = {'Content-Type': 'application/soap+xml; charset="UTF-8"'}
            t = HttpAuthenticated(username='******', password='******')
            client = Client(Model.Global.SAPurl, transport=t)
            result = client.service.Z_PP_MES_INTF(data_json, 'PP1003', 'MES')
            if result:
                re = json.loads(result).get("RETURN").get("MSGTY")
                if re == "S":
                    baog = db_session.query(SapBrandUnitInfo).filter(
                        SapBrandUnitInfo.ID == data.get("ID")).first()
                    if baog.Status == "修改报工":
                        baog.Status = "工序修改报工完成"
                    else:
                        baog.Status = "工序报工完成"
                    db_session.commit()
                    sbuis = db_session.query(SapBrandUnitInfo).filter(
                        SapBrandUnitInfo.ID == AUFNR).all()
                    flag = "True"
                    for s in sbuis:
                        if s.Status != "工序报工完成" or s.Status != "工序修改报工完成":
                            flag = "Flase"
                    if flag == "True":
                        sbi = db_session.query(SapBatchInfo).filter(
                            SapBatchInfo.AUFNR == AUFNR).first()
                        sbi.Status = "已报工"
                    return json.dumps('OK')
                else:
                    return json.dumps(
                        json.loads(result).get("RETURN").get("MESSAGE"))

        except Exception as e:
            db_session.rollback()
            print("调用SAP报工信息接口报错!")
            insertSyslog("调用SAP报工信息接口报错", "Sap_WorkReport报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("调用SAP报工信息接口报错!")
Ejemplo n.º 24
0
def planScheduling():
    '''
    计划排产
    :return:
    '''
    if request.method == 'POST':
        data = request.values
        try:
            plan_id = data['plan_id']
            oc = db_session.query(product_plan).filter(
                product_plan.plan_id == plan_id).first()
            month = data['month']
            mou = month.split("-")
            monthRange = calendar.monthrange(int(mou[0]), int(mou[1]))
            PRName = db_session.query(ERPproductcode_prname.PRName).filter(
                ERPproductcode_prname.product_code ==
                oc.product_code).first()[0]
            sch = db_session.query(SchedulingStandard).filter(
                SchedulingStandard.PRName == PRName).first()
            batchnums = int(oc.plan_quantity)
            days = batchnums / int(sch.DayBatchNumS)  #这批计划要做多少天
            re = timeChange(mou[0], mou[1], monthRange[1])

            #不能排产的时间
            if int(mou[1]) < 10:
                mou = mou[0] + "-0" + mou[1]
            else:
                mou = mou[0] + "-" + mou[1]
            schdays = db_session.query(plantCalendarScheduling.start).filter(
                plantCalendarScheduling.start.like("%" + mou + "%"),
                ~plantCalendarScheduling.title.like("%安全库存%")).all(
                )  #----查询休息的天数排产去除员工不上班的时间
            undays = []
            if schdays != None:
                for i in schdays:
                    undays.append(i[0])

            # 删除上一次排产同品名同月份的数据
            solds = db_session.query(Scheduling).filter(
                Scheduling.PRName == PRName,
                Scheduling.SchedulingTime.like("%" + mou + "%")).all()
            for old in solds:
                sql = "DELETE FROM Scheduling WHERE ID = " + str(old.ID)
                db_session.execute(sql)  #删除同意品名下的旧的排产计划
            plans = db_session.query(plantCalendarScheduling).filter(
                plantCalendarScheduling.title.like(PRName),
                plantCalendarScheduling.start.like("%" + mou + "%")).all()
            for pl in plans:
                sql = sql1 = "DELETE FROM plantCalendarScheduling WHERE ID = " + str(
                    pl.ID)
                db_session.execute(sql)  #删除同意品名下的安全库存信息
            db_session.commit()

            # 去掉不能排产的时间,只剩可以排产的时间
            daySchedulings = list(set(re).difference(set(undays)))
            daySchedulings = list(daySchedulings)
            daySchedulings.sort()

            # 排产数据写入数据库
            dayBatchNum = db_session.query(
                SchedulingStandard.DayBatchNumS).filter(
                    SchedulingStandard.PRName == PRName).first()[0]
            j = 1
            k = 1
            for day in daySchedulings:
                if k > days:  #当这个计划所有的批次做完跳出循环
                    break
                for r in range(0, int(dayBatchNum)):
                    s = Scheduling()
                    s.SchedulingTime = day
                    s.PRName = PRName
                    s.BatchNumS = sch.DayBatchNumS
                    if j < 10:
                        s.SchedulingNum = day.replace("-",
                                                      "")[2:6] + "600" + str(j)
                    else:
                        s.SchedulingNum = day.replace("-",
                                                      "")[2:6] + "60" + str(j)
                    db_session.add(s)
                    j = j + 1
                k = k + 1
            db_session.commit()
            return 'OK'
        except Exception as e:
            print(e)
            db_session.rollback()
            logger.error(e)
            insertSyslog("error", "计划排产报错Error:" + str(e), current_user.Name)
            return json.dumps("计划排产报错", cls=AlchemyEncoder, ensure_ascii=False)
Ejemplo n.º 25
0
def selectrundetailbyequipmentcode():
    '''
    根据设备code查询设备运行情况
    :return:
    '''
    if request.method == 'GET':
        data = request.values
        try:
            db_session.commit()
            EquipmentCode = data.get("EquipmentCode")
            WorkDate = data.get("WorkDate")
            run = db_session.query(EquipmentStatusCount).filter(
                EquipmentStatusCount.WorkDate == WorkDate,
                EquipmentStatusCount.SYSEQPCode == EquipmentCode,
                EquipmentStatusCount.Status == "RUN").all()
            stop = db_session.query(EquipmentStatusCount).filter(
                EquipmentStatusCount.WorkDate == WorkDate,
                EquipmentStatusCount.SYSEQPCode == EquipmentCode,
                EquipmentStatusCount.Status == "STOP").all()
            fault = db_session.query(EquipmentStatusCount).filter(
                EquipmentStatusCount.WorkDate == WorkDate,
                EquipmentStatusCount.SYSEQPCode == EquipmentCode,
                EquipmentStatusCount.Status == "FAULT").all()
            equip = db_session.query(Equipment).filter(
                Equipment.EquipmentCode == EquipmentCode).first()
            if equip:
                pow = equip.Power
            else:
                pow = ""
            dict_run = {}
            dict_run["runcount"] = 0 if len(
                run) == 0 else run[0].StatusChangeCount
            dict_run["stopcount"] = 0 if len(
                stop) == 0 else stop[0].StatusChangeCount
            dict_run["faultcount"] = 0 if len(
                fault) == 0 else fault[0].StatusChangeCount
            dict_run["power"] = pow
            runtime = 0
            for r in run:
                runtime = runtime + float(r.Duration)
            dict_run["runtime"] = round(runtime, 2)
            stoptime = 0
            for r in stop:
                stoptime = stoptime + float(r.Duration)
            dict_run["stoptime"] = round(stoptime, 2)
            faulttime = 0
            for r in fault:
                faulttime = faulttime + float(r.Duration)
            dict_run["faulttime"] = round(faulttime, 2)
            total_time = runtime + stoptime + faulttime
            if total_time != 0:
                dict_run["run_Proportion"] = round(
                    100 * (runtime / total_time), 2)
                dict_run["stop_Proportion"] = round(
                    100 * (stoptime / total_time), 2)
                dict_run["fault_Proportion"] = round(
                    100 * (faulttime / total_time), 2)
            else:
                dict_run["run_Proportion"] = 0
                dict_run["stop_Proportion"] = 0
                dict_run["fault_Proportion"] = 0
            return json.dumps(dict_run, cls=AlchemyEncoder, ensure_ascii=False)
        except Exception as e:
            logger.error(e)
            insertSyslog("error", "根据设备code查询设备运行情况报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("根据设备code查询设备运行情况报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 26
0
def SAP_OrderSynchonizes():
    '''SAP订单信息同步接口'''
    if request.method == 'GET':
        data = request.values
        try:
            dic = {}
            data_ma = {
                "RID": str(uuid.uuid4()),
                "DWERK": "1100",
                "DAUAT": data.get("DAUAT"),
                "MATNR": "",
                "VERID": "",
                "AUFNR": "",
                "SDATE": data.get("StartTime").replace("-", ""),
                "EDATE": data.get("EndTime").replace("-", ""),
                "CHARG": "",
                "SYSID": "WX_MES",
                "OPDAT": datetime.datetime.now().strftime('%Y%m%d'),
                "OPTME": datetime.datetime.now().strftime('%H%M%S')
            }
            dic["CATEGORY"] = ""
            dic["TYPE"] = ""
            dic["OPERATION"] = ""
            dic["DESCRIPTION"] = ""
            dic["DATA"] = data_ma
            data_json = json.dumps(dic, cls=AlchemyEncoder, ensure_ascii=False)
            # headers = {'Content-Type': 'application/soap+xml; charset="UTF-8"'}
            t = HttpAuthenticated(username='******', password='******')
            client = Client(Model.Global.SAPurl, transport=t)
            result = client.service.Z_PP_MES_INTF(data_json, 'PP1001', 'MES')
            if result:
                hes = json.loads(result).get("HEADER")
                for i in hes:
                    PRNameoclass = db_session.query(
                        ERPproductcode_prname).filter(
                            ERPproductcode_prname.product_code.like(
                                "%" + i.get("MATNR") + "%")).first()
                    PRName = PRNameoclass.PRName
                    batchoclass = None  #db_session.query(SapBatchInfo).filter(SapBatchInfo.AUFNR == i.get("AUFNR")).first()
                    if batchoclass:
                        pm = db_session.query(PlanManager).filter(
                            PlanManager.BatchID == i.get("CHARG"),
                            PlanManager.BrandName == PRName).first()
                        if pm:
                            if pm.PlanStatus == Model.Global.PlanStatus.Checked.value:
                                batchoclass.RID = i.get("RID")
                                batchoclass.AUFNR = i.get("AUFNR")
                                batchoclass.DAUAT = i.get("DAUAT")
                                batchoclass.DWERK = i.get("DWERK")
                                batchoclass.CHARG = i.get("CHARG")
                                batchoclass.MATNR = i.get("MATNR")
                                batchoclass.MAKTX = i.get("MAKTX")
                                batchoclass.GAMNG = i.get("GAMNG")
                                batchoclass.UNIT = i.get("UNIT")
                                batchoclass.VERID = i.get("VERID")
                                batchoclass.RSNUM = i.get("RSNUM")
                                batchoclass.ROUTN = i.get("ROUTN")
                                batchoclass.GSTRP = i.get("GSTRP")
                                batchoclass.GLTRP = i.get("GLTRP")
                                batchoclass.STATE = i.get("STATE")
                                batchoclass.PLNNR = i.get("PLNNR")
                                batchoclass.PLNAL = i.get("PLNAL")
                                batchoclass.KTEXT = i.get("KTEXT")
                                batchoclass.GESSTICHPR = i.get("GESSTICHPR")
                                batchoclass.QBASE = i.get("QBASE")
                                if batchoclass.Status == "已报工":
                                    batchoclass.Status = "修改报工"
                                if batchoclass.MatilStatus == "已发送SAP":
                                    batchoclass.MatilStatus = "修改发送"
                                db_session.commit()
                        else:
                            continue
                    else:
                        pr = db_session.query(ProductRule).filter(
                            ProductRule.PRName == PRName).first()
                        ABatchID = i.get("CHARG")
                        APlanWeight = i.get("GAMNG")
                        AUnit = i.get("UNIT")
                        if "肿节风浸膏" in i.get("MAKTX"):
                            ABrandName = "肿节风浸膏"
                        if "健胃消食片浸膏粉" in i.get("MAKTX"):
                            ABrandName = "健胃消食片浸膏粉"
                        APlanDate = datetime.datetime.strptime(
                            i.get("GSTRP"), '%Y%m%d')
                        APlanDate = APlanDate.strftime('%Y-%m-%d')
                        PlanCreate = ctrlPlan('PlanCreate')
                        re = PlanCreate.createLinePlanManager(
                            "", float(APlanWeight), APlanDate, ABatchID,
                            str(pr.ID), ABrandName, ABrandName, AUnit,
                            current_user.Name)
                        s = SapBatchInfo()
                        s.RID = i.get("RID")
                        s.AUFNR = i.get("AUFNR")
                        s.DAUAT = i.get("DAUAT")
                        s.DWERK = i.get("DWERK")
                        s.CHARG = i.get("CHARG")
                        s.MATNR = i.get("MATNR")
                        s.MAKTX = i.get("MAKTX")
                        s.GAMNG = i.get("GAMNG")
                        s.UNIT = i.get("UNIT")
                        s.VERID = i.get("VERID")
                        s.RSNUM = i.get("RSNUM")
                        s.ROUTN = i.get("ROUTN")
                        s.GSTRP = i.get("GSTRP")
                        s.GLTRP = i.get("GLTRP")
                        s.STATE = i.get("STATE")
                        s.PLNNR = i.get("PLNNR")
                        s.PLNAL = i.get("PLNAL")
                        s.KTEXT = i.get("KTEXT")
                        s.GESSTICHPR = i.get("GESSTICHPR")
                        s.QBASE = i.get("QBASE")
                        s.Status = "未报工"
                        s.MatilStatus = "未发送SAP"
                        db_session.add(s)
                        db_session.commit()
                phs = json.loads(result).get("PHASE")
                for ph in phs:
                    brandunitoclass = db_session.query(
                        SapBrandUnitInfo).filter(
                            SapBrandUnitInfo.AUFNR == ph.get("AUFNR"),
                            SapBrandUnitInfo.VORNR == ph.get("VORNR")).first()
                    if brandunitoclass == None:
                        sbu = SapBrandUnitInfo()
                        sbu.RID = ph.get("RID")
                        sbu.AUFNR = ph.get("AUFNR")
                        sbu.ROUTN = ph.get("ROUTN")
                        sbu.VORNR = ph.get("VORNR")
                        sbu.LTXA1 = ph.get("LTXA1")
                        sbu.MGVRG = ph.get("MGVRG")
                        sbu.UNIT = ph.get("UNIT")
                        sbu.STEUS = ph.get("STEUS")
                        sbu.VORGSCHL = ph.get("VORGSCHL")
                        sbu.VGW01 = ph.get("VGW01")
                        sbu.VGW02 = ph.get("VGW02")
                        sbu.VGW03 = ph.get("VGW03")
                        sbu.VGW04 = ph.get("VGW04")
                        sbu.VGW05 = ph.get("VGW05")
                        sbu.VGW06 = ph.get("VGW06")
                        db_session.add(sbu)
                        db_session.commit()
                    else:
                        brandunitoclass.RID = ph.get("RID")
                        brandunitoclass.AUFNR = ph.get("AUFNR")
                        brandunitoclass.ROUTN = ph.get("ROUTN")
                        brandunitoclass.VORNR = ph.get("VORNR")
                        brandunitoclass.LTXA1 = ph.get("LTXA1")
                        brandunitoclass.MGVRG = ph.get("MGVRG")
                        brandunitoclass.UNIT = ph.get("UNIT")
                        brandunitoclass.STEUS = ph.get("STEUS")
                        brandunitoclass.VORGSCHL = ph.get("VORGSCHL")
                        brandunitoclass.VGW01 = ph.get("VGW01")
                        brandunitoclass.VGW02 = ph.get("VGW02")
                        brandunitoclass.VGW03 = ph.get("VGW03")
                        brandunitoclass.VGW04 = ph.get("VGW04")
                        brandunitoclass.VGW05 = ph.get("VGW05")
                        brandunitoclass.VGW06 = ph.get("VGW06")
                        db_session.commit
                # sbui = db_session.query(SapBrandUnitInfo).filter(SapBrandUnitInfo.AUFNR == AUFNR).order_by(
                #     desc("VORNR")).first()
                # if sbui:
                #     sbui.FCONF = "X"
                #     db_session.commit()
                cms = json.loads(result).get("COMPT")
                for cm in cms:
                    matiloclass = db_session.query(SapMatailInfo).filter(
                        SapMatailInfo.AUFNR == cm.get("AUFNR"),
                        SapMatailInfo.RSPOS == cm.get("RSPOS")).first()
                    if matiloclass == None:
                        sm = SapMatailInfo()
                        sm.RID = cm.get("RID")
                        sm.AUFNR = cm.get("AUFNR")
                        sm.RSNUM = cm.get("RSNUM")
                        sm.RSPOS = cm.get("RSPOS")
                        sm.VORNR = cm.get("VORNR")
                        sm.SEQNO = cm.get("SEQNO")
                        sm.MATNR = cm.get("MATNR")
                        sm.MAKTX = cm.get("MAKTX")
                        sm.BDMNG = cm.get("BDMNG")
                        sm.MEINS = cm.get("MEINS")
                        sm.BWART = cm.get("BWART")
                        sm.CHARG = cm.get("CHARG")
                        sm.WERKS = cm.get("WERKS")
                        sm.LGORT = cm.get("LGORT")
                        sm.WEIGH = cm.get("WEIGH")
                        sm.Status = "未发送"
                        db_session.add(sm)
                        db_session.commit()
                    else:
                        matiloclass.RID = cm.get("RID")
                        matiloclass.AUFNR = cm.get("AUFNR")
                        matiloclass.RSNUM = cm.get("RSNUM")
                        matiloclass.RSPOS = cm.get("RSPOS")
                        matiloclass.VORNR = cm.get("VORNR")
                        matiloclass.SEQNO = cm.get("SEQNO")
                        matiloclass.MATNR = cm.get("MATNR")
                        matiloclass.MAKTX = cm.get("MAKTX")
                        matiloclass.BDMNG = cm.get("BDMNG")
                        matiloclass.MEINS = cm.get("MEINS")
                        matiloclass.BWART = cm.get("BWART")
                        matiloclass.CHARG = cm.get("CHARG")
                        matiloclass.WERKS = cm.get("WERKS")
                        matiloclass.LGORT = cm.get("LGORT")
                        matiloclass.WEIGH = cm.get("WEIGH")
                        db_session.commit()
            return json.dumps('OK')
        except Exception as e:
            db_session.rollback()
            print("调用SAP订单信息同步接口口报错!")
            insertSyslog("接口error", "SAP_OrderSynchonizes报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("调用SAP订单信息同步接口报错!")
Ejemplo n.º 27
0
def Sap_Matailre():
    '''SAP物料信息返回接口'''
    if request.method == 'POST':
        data = request.values
        try:
            dic = {}
            data_list = []
            IDS = json.loads(data.get("IDS"))
            AUFNR = ""
            for ID in IDS:
                smi = db_session.query(SapMatailInfo).filter(
                    SapMatailInfo.ID == ID).first()
                AUFNR = smi.AUFNR
                data_dir = {
                    "RID": str(uuid.uuid4()),
                    "RIDITEM": str(uuid.uuid4()),
                    "AUFNR": smi.AUFNR,
                    "RSNUM": smi.RSNUM,
                    "RSPOS": smi.RSPOS,
                    "MATNR": smi.MATNR,
                    "MAKTX": smi.MAKTX,
                    "BDMNG": smi.BDMNG,
                    "MEINS": smi.MEINS,
                    "CHARG": smi.CHARG,
                    "LGORT": smi.LGORT,
                    "WERKS": smi.WERKS,
                    "BWART": "261",
                    "BUDAT": smi.BUDAT[0:10].replace("-", ""),
                    "OPDAT": smi.Opertation[0:10].replace("-", ""),
                    "OPTME": smi.Opertation[11:19].replace(":", "")
                }
                data_list.append(data_dir)
            dic["CATEGORY"] = ""
            dic["TYPE"] = ""
            dic["OPERATION"] = ""
            dic["DESCRIPTION"] = ""
            dic["DATA"] = data_list
            data_json = json.dumps(dic, cls=AlchemyEncoder, ensure_ascii=False)
            # headers = {'Content-Type': 'application/soap+xml; charset="UTF-8"'}
            t = HttpAuthenticated(username='******', password='******')
            client = Client(Model.Global.SAPurl, transport=t)
            result = client.service.Z_PP_MES_INTF(data_json, 'PP1002', 'MES')
            if result:
                re = json.loads(result).get("RETURN").get("MSGTY")
                if re == "S":
                    for ID in IDS:
                        smire = db_session.query(SapMatailInfo).filter(
                            SapMatailInfo.ID == ID).first()
                        smire.Status = "已发送"
                        db_session.commit()
                    sms = db_session.query(SapMatailInfo).filter(
                        SapMatailInfo.AUFNR == AUFNR).all()
                    flag = "True"
                    for s in sms:
                        if s.Status != "已发送":
                            flag = "Flase"
                    if flag == "True":
                        sbi = db_session.query(SapBatchInfo).filter(
                            SapBatchInfo.AUFNR == AUFNR).first()
                        sbi.MatilStatus = "已发送SAP"
                    return json.dumps('OK')
                else:
                    return json.dumps(
                        json.loads(result).get("RETURN").get("MESSAGE"))

        except Exception as e:
            db_session.rollback()
            print("SAP物料信息返回接口报错!")
            insertSyslog("SAP物料信息返回接口报错", "Sap_Matailre报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("调用SAP物料信息返回接口!")
Ejemplo n.º 28
0
def keep_tasks():
    """保养任务表"""
    try:
        query_data = db_session.query(KeepPlan).filter_by(Status='待保养').all()
        if request.method == 'GET':
            # 每页多少条
            limit = int(request.values.get('limit', '5'))
            # 当前页
            offset = int(request.values.get('offset', '1'))
            for item in query_data:
                q = db_session.query(KeepTask).filter_by(No=item.No).first()
                if not q and get_time_stamp(item.WorkTime):
                    data = KeepTask(EquipmentCode=item.EquipmentCode,
                                    No=item.No,
                                    Worker=item.Worker,
                                    Status=item.Status,
                                    ApplyTime=item.ApplyTime,
                                    StartTime=item.StartTime,
                                    WorkTime=item.WorkTime,
                                    WeekTime=item.WeekTime,
                                    Type=item.Type)
                    db_session.add(data)
                    db_session.commit()
                # if item.Type == '单次':
                #     pass
                # db_session.delete(item)
                # db_session.commit()
            data = db_session.query(KeepTask).order_by(
                KeepTask.ApplyTime.desc()).limit(limit).offset(
                    (offset - 1) * limit)
            total = db_session.query(KeepTask).count()
            return json.dumps(
                {
                    'code': '10001',
                    'message': '操作成功',
                    'data': {
                        'rows': data.all(),
                        'total': total
                    }
                },
                cls=AlchemyEncoder,
                ensure_ascii=False)
        if request.method == 'POST':
            json_data = request.values
            no = json_data.get('No')
            end_time = json_data.get('EndTime')
            content = json_data.get('Content')
            item = db_session.query(KeepTask).filter_by(No=no).first()
            data = KeepRecord(EquipmentCode=item.EquipmentCode,
                              No=no,
                              Worker=item.Worker,
                              Status='已完成',
                              Type=item.Type,
                              KeepWorker=current_user.Name,
                              ApplyTime=item.ApplyTime,
                              StartTime=item.StartTime,
                              Describe=item.Describe,
                              Content=content,
                              WeekTime=item.WeekTime,
                              EndTime=end_time)
            db_session.delete(item)
            db_session.commit()
            keep_plan = db_session.query(KeepPlan).filter_by(No=no).first()
            if keep_plan and keep_plan.Type == '周期':
                keep_plan.WorkTime = add_date(keep_plan.WeekTime,
                                              keep_plan.WorkTime)
                db_session.add_all([data, keep_plan])
                db_session.commit()
                db_session.close()
                return json.dumps({
                    'code': '10001',
                    'message': '操作成功'
                },
                                  cls=AlchemyEncoder,
                                  ensure_ascii=False)
            else:
                db_session.delete(keep_plan)
                db_session.add(data)
                db_session.commit()
                db_session.close()
            return json.dumps({
                'code': '10001',
                'message': '操作成功'
            },
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
    except Exception as e:
        logger.error(e)
        insertSyslog("error", "保养任务表修改错误:" + str(e), current_user.Name)
        return json.dumps({
            'code': '20002',
            'message': str(e)
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
Ejemplo n.º 29
0
def schedule_lqt():
    """排班日程"""
    try:
        if request.method == 'GET':
            data = db_session.query(Schedulelqt).filter_by(
                energystrategyCode=request.values.get('code')).all()
            return json.dumps({
                'code': '20001',
                'message': '成功',
                'data': data
            },
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
        if request.method == 'POST':
            new_start = request.values.get('start_time')
            new_end = request.values.get('end_time')
            code = request.values.get('energystrategyCode')
            query_list = db_session.query(Schedulelqt).filter_by(
                energystrategyCode=code).all()
            if query_list:
                for item in query_list:
                    if count_time(item.enablestarttime, item.enableendtime,
                                  new_start, new_end) != 'yes':
                        return json.dumps({
                            'code': '20003',
                            'message': '工作时间设置出现冲突'
                        })
                data = Schedulelqt(enablestarttime=new_start,
                                   enableendtime=new_end,
                                   comment=request.values.get('comment'),
                                   energystrategyCode=code,
                                   lqt1_allowrun=request.values.get('lqt1'),
                                   lqt2_allowrun=request.values.get('lqt2'))
                db_session.add(data)
                db_session.commit()
                db_session.close()
                return json.dumps({'code': '20001', 'message': '设置成功'})
            else:
                data = Schedulelqt(enablestarttime=new_start,
                                   comment=request.values.get('comment'),
                                   energystrategyCode=request.values.get(
                                       'energystrategyCode'),
                                   enableendtime=new_end,
                                   lqt1_allowrun=request.values.get('lqt1'),
                                   lqt2_allowrun=request.values.get('lqt2'))
                db_session.add(data)
                db_session.commit()
                db_session.close()
                return json.dumps({'code': '20001', 'message': '设置成功'})
        if request.method == 'DELETE':
            items = request.values.get('ID').split(',')
            for item in items:
                data = db_session.query(Schedulelqt).filter_by(
                    ID=int(item)).first()
                db_session.delete(data)
            db_session.commit()
            return json.dumps({'code': '20001', 'message': '删除成功'})
        if request.method == 'PUT':
            new_start = request.values.get('start_time')
            new_end = request.values.get('end_time')
            query_data = db_session.query(Schedulelqt).filter_by(
                ID=request.values.get('ID')).first()
            code = request.values.get('energystrategyCode')
            query_list = db_session.query(Schedulelqt).filter_by(
                energystrategyCode=code).all()
            results = []
            for i in query_list:
                if i.ID != query_data.ID:
                    results.append(i)
            if results:
                for item in results:
                    if count_time(item.enablestarttime, item.enableendtime,
                                  new_start, new_end) != 'yes':
                        return json.dumps({
                            'code': '20003',
                            'message': '工作时间设置出现冲突'
                        })
                query_data.enablestarttime = new_start
                query_data.enableendtime = new_end
                query_data.comment = request.values.get('comment')
                query_data.lqt1_allowrun = request.values.get('lqt1')
                query_data.lqt2_allowrun = request.values.get('lqt2')
                db_session.add(query_data)
                db_session.commit()
                db_session.close()
                return json.dumps({'code': '20001', 'message': '设置成功'})
            else:
                query_data.enablestarttime = new_start
                query_data.enableendtime = new_end
                query_data.comment = request.values.get('comment')
                query_data.lqt1_allowrun = request.values.get('lqt1')
                query_data.lqt2_allowrun = request.values.get('lqt2')
                db_session.add(query_data)
                db_session.commit()
                db_session.close()
            return json.dumps({'code': '20001', 'message': '设置成功'})
    except Exception as e:
        logger.error(e)
        insertSyslog("error", "工时安排设置出错:" + str(e), current_user.Name)
        return json.dumps({
            'code': '20002',
            'message': str(e)
        },
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
Ejemplo n.º 30
0
def energy_trends():
    """趋势图"""
    try:
        if request.values.get('TagFlag') == 'first':
            # 多个tag点查询一天
            TagCodes = request.values.get('TagCodes').split(",")
            Begin = request.values.get('begin')
            End = request.values.get('end')
            data = []
            count = 0
            for item in TagCodes:
                count += 1
                sql = "select " + "`SampleTime` as time, " + "`" + item + "`" + " as value" + " from datahistory where" \
                                                                                              " SampleTime between " + "'" + Begin + "'" + " and " + "'" + End + "'"
                results = db_session.execute(sql).fetchall()
                list1 = []
                for result in results[::30]:
                    list1.append({
                        f'time{count}':
                        datetime.strftime(result['time'], "%Y-%m-%d %H:%M:%S"),
                        f'value{count}':
                        result['value']
                    })
                # data.append({item: list1})
                data.append(list1)
            return json.dumps({
                'code': '20001',
                'message': '成功',
                'data': data
            },
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
        else:
            # 一个tag查询多天
            start_date = datetime.strptime(request.values.get('start_date'),
                                           "%Y-%m-%d")
            end_date = datetime.strptime(request.values.get('end_date'),
                                         "%Y-%m-%d")
            if start_date != end_date:
                date_list = [request.values.get('start_date')]
                while True:
                    start_date += timedelta(days=1)
                    if start_date == end_date:
                        date_list.append(
                            datetime.strftime(end_date, "%Y-%m-%d"))
                        break
                    else:
                        date_list.append(
                            datetime.strftime(start_date, "%Y-%m-%d"))
                Begin = request.values.get("start_time")
                End = request.values.get("end_time")
                data = []
                count = 0
                for item in date_list:
                    count += 1
                    start_time = item + " " + Begin
                    end_time = item + " " + End
                    sql = "select `SampleTime` as time, " + "`" + request.values.get(
                        'TagCode') + "`" + "as value from " \
                                           "datahistory where SampleTime between " + "'" + start_time + "'" + " and " + "'" + end_time + "'"
                    results = db_session.execute(sql).fetchall()
                    list1 = []
                    for result in results[::30]:
                        list1.append({
                            f'time{count}':
                            datetime.strftime(result['time'],
                                              "%Y-%m-%d %H:%M:%S"),
                            f'value{count}':
                            result['value']
                        })
                    # data.append({item: list1})
                    data.append(list1)
                return json.dumps(
                    {
                        'code': '20001',
                        'message': '成功',
                        'data': data,
                        'date': date_list
                    },
                    cls=AlchemyEncoder,
                    ensure_ascii=False)
            else:
                Begin = request.values.get("start_time")
                End = request.values.get("end_time")
                data = []
                count = 0
                for item in [request.values.get('start_date')]:
                    count += 1
                    start_time = item + " " + Begin
                    end_time = item + " " + End
                    sql = "select `SampleTime` as time, " + "`" + request.values.get('TagCode') + "`" + "as value from " \
                          "datahistory where SampleTime between " + "'" + start_time + "'" + " and " + "'" + end_time + "'"
                    results = db_session.execute(sql).fetchall()
                    list1 = []
                    for result in results[::30]:
                        list1.append({
                            f'time{count}':
                            datetime.strftime(result['time'],
                                              "%Y-%m-%d %H:%M:%S"),
                            f'value{count}':
                            result['value']
                        })
                    # data.append({item: list1})
                    data.append(list1)
                return json.dumps(
                    {
                        'code': '20001',
                        'message': '成功',
                        'data': data
                    },
                    cls=AlchemyEncoder,
                    ensure_ascii=False)

    except Exception as e:
        logger.error(e)
        insertSyslog("error", "energy_trend错误:" + str(e), current_user.Name)
        return json.dumps(
            {
                'code': '20002',
                'message': 'energy_trend错误: ' + str(e)
            },
            cls=AlchemyEncoder,
            ensure_ascii=False)