Ejemplo n.º 1
0
def checkPlanManagerSingle():
    '''
    单条审核计划
    :return:
    '''
    if request.method == 'POST':
        data = request.values  # 返回请求中的参数和form
        try:
            PlanStatus = data.get("PlanStatus")
            Description = data.get("Describtion")
            ID = data.get("ID")
            oclassplan = db_session.query(PlanManager).filter_by(ID=ID).first()
            oclassplan.PlanStatus = PlanStatus
            oclassplan.Description = Description
            db_session.commit()
            insertAuditTrace(
                "审核计划",
                "批次号是:" + oclassplan.BatchID + "的" + oclassplan.BrandName +
                "在" + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') +
                "进行计划审核操作", "PlanManager", current_user.Name, "")
            return json.dumps({"code": "200", "message": "OK"})
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "审核计划报错Error:" + str(e), current_user.Name)
            return json.dumps([{
                "status": "Error:" + str(e)
            }],
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 2
0
def userloginauthentication():
    '''
    用户登陆认证
    :return:
    '''
    try:
        if request.method == 'POST':
            data = request.values
            WorkNumber = data.get('WorkNumber')
            password = data.get('password')
            # 验证账户与密码
            user = db_session.query(User).filter_by(
                WorkNumber=WorkNumber).first()
            resp = make_response()
            if user and (user.confirm_password(password)
                         or user.Password == password):
                login_user(
                    user)  # login_user(user)调用user_loader()把用户设置到db_session中
                user.session_id = str(time.time())
                user.LastLoginTime = datetime.datetime.now().strftime(
                    '%Y-%m-%d %H:%M:%S')
                db_session.commit()
                return json.dumps({"code": "200", "message": "OK"})
            else:
                return json.dumps({"code": "300", "message": "用户名密码错误"})
    except Exception as e:
        print(e)
        db_session.rollback()
        logger.error(e)
        return json.dumps([{
            "status": "Error:" + str(e)
        }],
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
Ejemplo n.º 3
0
def ManualDelete():
    '''批记录模板删除'''
    if request.method == 'POST':
        data = request.values  # 返回请求中的参数和form
        try:
            jsonstr = json.dumps(data.to_dict())
            if len(jsonstr) > 10:
                jsonnumber = re.findall(r"\d+\.?\d*", jsonstr)
                for key in jsonnumber:
                    id = int(key)
                    try:
                        oclass = db_session.query(BatchModel).filter(
                            BatchModel.ID == id).first()
                        if oclass:
                            db_session.delete(oclass)
                            os.remove(oclass.FilePath)
                    except Exception as ee:
                        db_session.rollback()
                        print(ee)
                        logger.error(ee)
                        return json.dumps({
                            "code": "500",
                            "message": "批记录模板删除报错"
                        })
                db_session.commit()
                return json.dumps({"code": "200", "message": "删除成功!"})
            else:
                return json.dumps({"code": "200", "message": "id为空!"})
        except Exception as e:
            print(e)
            logger.error(e)
            insertSyslog("error", "路由:/ManualDelete,说明书删除Error:" + str(e),
                         current_user.Name)
            return json.dumps({"code": "500", "message": "批记录模板删除报错"})
Ejemplo n.º 4
0
def addUpdateEletronicBatchDataStore(BrandCode, PUCode, BatchID, ke, val):
    try:
        oc = db_session.query(EletronicBatchDataStore).filter(
            EletronicBatchDataStore.BrandID == BrandCode,
            EletronicBatchDataStore.PUCode == PUCode,
            EletronicBatchDataStore.BatchID == BatchID,
            EletronicBatchDataStore.Content == ke).first()
        if oc == None:
            db_session.add(
                EletronicBatchDataStore(BrandCode=BrandCode,
                                        BatchID=BatchID,
                                        PUCode=PUCode,
                                        Content=ke,
                                        OperationpValue=val,
                                        Operator=current_user.Name))
        else:
            oc.Content = ke
            oc.OperationpValue = val
            oc.Operator = current_user.Name
        db_session.commit()
    except Exception as e:
        db_session.rollback()
        print(e)
        logger.error(e)
        insertSyslog("error", "保存更新EletronicBatchDataStore报错:" + str(e),
                     current_user.Name)
        return json.dumps("保存更新EletronicBatchDataStore报错",
                          cls=AlchemyEncoder,
                          ensure_ascii=False)
Ejemplo n.º 5
0
def selectTiQuEquipment():
    '''
    查询提取设备
    :return:
    '''
    if request.method == 'GET':
        data = request.values
        try:
            ID = data.get("ID")
            oclass = db_session.query(PlanManager).filter(
                PlanManager.ID == ID).first()
            eqps = db_session.query(EquipmentBatchRunTime).filter(
                EquipmentBatchRunTime.BatchID == oclass.BatchID,
                EquipmentBatchRunTime.BrandCode == oclass.BrandCode,
                EquipmentBatchRunTime.PUName.like("%提%")).all()
            redata_list = []
            for eq in eqps:
                dir = {}
                dir["EQPCode"] = eq.EQPCode
                dir["EQPName"] = eq.EQPName
                redata_list.append(dir)
            return json.dumps({
                "code": "200",
                "message": "查询成功!",
                "data": redata_list
            })
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "查询提取设备报错Error:" + str(e), current_user.Name)
            return json.dumps("查询提取设备报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 6
0
def PermissionsSave():
    if request.method == 'POST':
        data = request.values
        try:
            datastr = json.loads(data.get("data"))
            #删除之前的权限
            perss = db_session.query(Permission).filter(
                Permission.WorkNumber == datastr[0].get("WorkNumber")).all()
            for pe in perss:
                db_session.delete(pe)
            db_session.commit()
            for i in datastr:
                per = Permission()
                per.MenuName = i.get("MenuName")
                per.MenuType = i.get("MenuType")
                per.MenuCode = i.get("MenuCode")
                per.Name = i.get("Name")
                per.WorkNumber = i.get("WorkNumber")
                db_session.add(per)
            db_session.commit()
            return 'OK'
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "添加用户报错Error:" + str(e), current_user.Name)
            return json.dumps([{
                "status": "Error:" + str(e)
            }],
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 7
0
def batchmodelselect():
    '''查询批记录模版'''
    if request.method == 'GET':
        data = request.values
        try:
            PUCode = data.get("PUCode")
            # BrandCode = data.get("BrandCode")
            oclass = db_session.query(BatchModel).filter(
                BatchModel.PUCode == PUCode).all()
            dir_list = []
            for oc in oclass:
                dir = {}
                dir["ID"] = oc.ID
                dir["FilePath"] = oc.FilePath
                dir["FileName"] = oc.FileName
                dir["BrandCode"] = oc.FileName
                dir["BrandName"] = oc.FileName
                dir["PUIDName"] = oc.FileName
                dir["PUCode"] = oc.PUCode
                dir["UserName"] = oc.UserName
                dir["Parameter"] = oc.Parameter
                dir_list.append(dir)
            return json.dumps({"code": "200", "message": dir_list})
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "查询批记录模报错Error:" + str(e), current_user.Name)
            return json.dumps({"code": "500", "message": "后端报错"})
Ejemplo n.º 8
0
 def ModifyModel(self, AFilename, ATableName):
     currentPath = os.path.abspath('.')
     model_path = PATH(currentPath + r'\\' + AFilename)
     i = 0
     tmp = ""
     try:
         if not os.path.exists(model_path):
             print("不存在!")
         else:
             # print("存在!!")
             with open(AFilename, 'r', encoding='UTF-8') as f:
                 lines = f.readlines()
                 i = 0
                 strTbStart = "#" + ATableName + "_START"
                 strTbEnd = "#" + ATableName + "_END"
                 strExecStart = "# 生成表单的执行语句_START"
                 strExecEnd = "# 生成表单的执行语句_END"
                 isExist = "FLASE"
                 for line in lines:
                     iposstart = line.find(strTbStart)
                     iposend = line.find(strTbEnd)
                     istart = line.find(strExecStart)
                     iend = line.find(strExecEnd)
                     if iposstart >= 0:
                         isExist = "TRUE"
                         i = 1
                         continue
                     elif iposend >= 0:
                         i = 0
                         continue
                     elif istart >= 0:
                         i = 1
                         continue
                     elif iend >= 0:
                         i = 0
                         continue
                     elif i == 1:
                         continue
                     tmp += line
             if tmp is "":
                 tmp += self.makeDevNotes()
                 tmp += self.makeImportNotes()
                 tmp += self.makeDBNotes()
                 tmp += self.makeBaseModel()
                 tmp += self.makeEndImplement()
             if isExist == "TRUE":
                 ATableNameNew = ATableName + datetime.datetime.now(
                 ).strftime('%Y-%m-%d %H:%M:%S')
                 sql = "EXEC sp_rename '" + ATableName + "', '" + ATableNameNew + "'"
                 db_session.execute(sql)
                 db_session.commit()
         f = open(AFilename, 'w', encoding='utf-8')
         f.write(tmp)
         f.close()
         return tmp
     except Exception as e:
         print(e)
         os.remove("make_model_test.txt")
         db_session.rollback()
         logger.error(e)
Ejemplo n.º 9
0
def allUnitDataMutual():
    if request.method == 'POST':
        data = request.values
        data = data.to_dict()
        try:
            for key in data.keys():
                if key == "BrandCode":
                    continue
                if key == "PUCode":
                    continue
                if key == "BatchID":
                    continue
                val = data.get(key)
                addUpdateEletronicBatchDataStore(data.get("BrandCode"),
                                                 data.get("PUCode"),
                                                 data.get("BatchID"), key, val)
            return 'OK'
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "所有工艺段保存查询操作报错Error:" + str(e),
                         current_user.Name)
            return json.dumps([{
                "status": "Error:" + str(e)
            }],
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
    if request.method == 'GET':
        data = request.values
        try:
            dic = {}
            json_str = json.dumps(data.to_dict())
            if len(json_str) > 2:
                PUCode = data['PUCode']
                BatchID = data['BatchID']
                BrandCode = data.get("BrandCode")
                oclasss = db_session.query(EletronicBatchDataStore).filter(
                    EletronicBatchDataStore.BrandCode == BrandCode,
                    EletronicBatchDataStore.PUCode == PUCode,
                    EletronicBatchDataStore.BatchID == BatchID).all()
                for oclass in oclasss:
                    dic[oclass.Content] = oclass.OperationpValue
            return json.dumps(dic, cls=AlchemyEncoder, ensure_ascii=False)
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "所有工艺段保存查询操作报错Error:" + str(e),
                         current_user.Name)
            return json.dumps([{
                "status": "Error:" + str(e)
            }],
                              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 selectpaichanrule():
    '''
    查询排产规则
    :return:
    '''
    if request.method == 'GET':
        data = request.values
        try:
            data_list = json.loads(data.get('selectPlanList'))
            redata_list = []
            for i in data_list:
                dir = {}
                flag = 0
                proclass = db_session.query(ProductRule).filter(
                    ProductRule.BrandCode == i.get("BrandCode")).first()
                for j in redata_list:
                    if j.get("BrandCode") == i.get("BrandCode"):
                        flag = 1
                        j["BatchNum"] = math.ceil(
                            (float(i.get("PlanQuantity")) +
                             float(j.get("PlanQuantityTotal"))) /
                            float(proclass.BatchWeight))
                        j["PlanQuantityTotal"] = float(
                            i.get("PlanQuantity")) + float(
                                j.get("PlanQuantityTotal"))
                        j["orderNum"] = int(j.get("orderNum")) + 1
                        j["PlanNum"] = i.get("PlanNum") + "," + j.get(
                            "PlanNum")
                if flag == 0:
                    dir["BatchNum"] = math.ceil(
                        float(i.get("PlanQuantity")) /
                        float(proclass.BatchWeight))
                    dir["PlanQuantityTotal"] = i.get("PlanQuantity")
                    dir["BatchWeight"] = proclass.BatchWeight
                    dir["BrandName"] = i.get("BrandName")
                    dir["BrandCode"] = i.get("BrandCode")
                    dir["PlanNum"] = i.get("PlanNum")
                    dir["unit"] = proclass.Unit
                    dir["orderNum"] = 1
                    redata_list.append(dir)
            return json.dumps({
                "code": "200",
                "message": "查询成功!",
                "data": redata_list
            })
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "查询排产规则报错Error:" + str(e), current_user.Name)
            return json.dumps("查询排产规则报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 12
0
def batchconflictequimentselect():
    '''
    查询选择时间段下对应的冲突设备的批次品名
    :return:
    '''
    if request.method == 'GET':
        data = request.values
        try:
            EQPCode = data.get('EQPCode')
            DateTime = data.get('DateTime')
            BCType = data.get('BCType')
            PlanNum = data.get('PlanNum')
            BatchID = data.get('BatchID')
            BrandCode = data.get('BrandCode')
            sft = db_session.query(Shifts).filter(
                Shifts.ShiftsName == BCType).first()
            if sft:
                beginoclass = db_session.query(EquipmentBatchRunTime).filter(
                    EquipmentBatchRunTime.EQPCode == EQPCode,
                    EquipmentBatchRunTime.StartTime.between(
                        str(DateTime + " " + sft.BeginTime),
                        str(DateTime + " " + sft.EndTime))).all()
                endoclass = db_session.query(EquipmentBatchRunTime).filter(
                    EquipmentBatchRunTime.EQPCode == EQPCode,
                    EquipmentBatchRunTime.EndTime.between(
                        str(DateTime + " " + sft.BeginTime),
                        str(DateTime + " " + sft.EndTime))).all()
                dict_list = []
                for i in beginoclass:
                    if i.BatchID == BatchID and i.BrandCode == BrandCode:
                        continue  #跳出当前循环
                    dict_list.append(i)
                for j in endoclass:
                    if j.BatchID == BatchID and j.BrandCode == BrandCode:
                        continue
                    if j not in dict_list:
                        dict_list.append(j)
            return json.dumps(
                {
                    "code": "200",
                    "message": "查询成功!",
                    "data": dict_list
                },
                cls=AlchemyEncoder,
                ensure_ascii=False)
        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.º 13
0
def batchusemodelselect():
    '''查询批记录使用模版'''
    if request.method == 'GET':
        data = request.values
        try:
            PUCode = data.get("PUCode")
            BrandCode = data.get("BrandCode")
            PUIDName = data.get("PUIDName")
            BrandName = data.get("BrandName")
            BatchID = data.get("BatchID")
            oclass = db_session.query(BatchUseModel).filter(
                BatchUseModel.BrandCode == BrandCode,
                BatchUseModel.PUCode == PUCode,
                BatchUseModel.BatchID == BatchID).first()
            dir = {}
            if not oclass:  #初始化批记录模板
                bum = BatchUseModel()
                bum.BatchID = BatchID
                bum.BrandCode = BrandCode
                bum.BrandName = BrandName
                bum.PUCode = PUCode
                bum.PUIDName = PUIDName
                oclass = db_session.query(BatchModel).filter(
                    BatchModel.BrandCode == BrandCode,
                    BatchModel.PUCode == PUCode).first()
                bum.UseParameter = oclass.Parameter
                db_session.add(bum)
                db_session.commit()
                oc = db_session.query(BatchUseModel).filter(
                    BatchUseModel.BrandCode == BrandCode,
                    BatchUseModel.PUCode == PUCode,
                    BatchUseModel.BatchID == BatchID).first()
                dir["ID"] = oc.ID
                dir["BrandCode"] = oc.FileName
                dir["BrandName"] = oc.FileName
                dir["PUIDName"] = oc.FileName
                dir["PUCode"] = oc.PUCode
                dir["UseParameter"] = oc.Parameter
            else:
                dir["ID"] = oclass.ID
                dir["BrandCode"] = oclass.FileName
                dir["BrandName"] = oclass.FileName
                dir["PUIDName"] = oclass.FileName
                dir["PUCode"] = oclass.PUCode
                dir["UseParameter"] = oclass.UseParameter
            return json.dumps({"code": "200", "message": dir})
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "查询批记录使用模版报错Error:" + str(e),
                         current_user.Name)
            return json.dumps({"code": "500", "message": "后端报错"})
Ejemplo n.º 14
0
def WMS_SendReturnMaterialInfo():
    '''发送退料信息到WMS'''
    if request.method == 'POST':
        data = request.values
        try:
            jsonstr = json.dumps(data.to_dict())
            if len(jsonstr) > 10:
                jsonnumber = re.findall(r"\d+\.?\d*", jsonstr)
                dic = []
                for key in jsonnumber:
                    id = int(key)
                    oclass = db_session.query(BatchMaterialInfo).filter(
                        BatchMaterialInfo.ID == id).first()
                    dic.append({
                        "BatchMaterialInfoID": oclass.ID,
                        "BrandCode": oclass.BrandCode,
                        "BrandName": oclass.BrandName,
                        "BatchID": oclass.BatchID,
                        "FlagCode": oclass.BucketNum,
                        "Weight": oclass.BucketWeight,
                        "Unit": oclass.Unit,
                        "Flag": oclass.Flag
                    })
                    oclass.SendFlag = "投料系统已接收退料"
                    oclass.OperationDate = datetime.datetime.now().strftime(
                        '%Y-%m-%d %H:%M:%S')
                url = Global.WMSurl + "api/WbeApi/RecvTransInfon"
                dir = {}
                dir["zyplan_list"] = dic
                dir = json.dumps(dir)
                resp = requests.post(url, json=dir, headers=headers)
                responjson = json.loads(resp.content)
                responjson = eval(responjson)
                if responjson.get("code") != "0":
                    db_session.rollback()
                    return json.dumps({
                        "code":
                        "500",
                        "message":
                        "调用WMS_SendReturnMaterialInfo接口报错!" +
                        responjson.get("msg")
                    })
                insertSyslog("调用退料信息发送接口", "发送退料信息到投料系统", current_user.Name)
                return json.dumps({"code": "200", "message": "OK"})
        except Exception as e:
            db_session.rollback()
            print("调用WMS_SendPlan接口报错!")
            insertSyslog("error", "调用WMS_SendPlan接口报错Error" + str(e),
                         current_user.Name)
            return json.dumps("调用WMS_SendPlan接口报错!")
Ejemplo n.º 15
0
def saveuserusershiftsgroup():
    '''
    用户添加班组
    :return:
    '''
    if request.method == 'POST':
        data = request.values
        try:
            userID = data.get("userID")
            shiftsgroupIDs = data.get("shiftsgroupIDs")
            if shiftsgroupIDs:
                shiftsgroupIDs = eval(shiftsgroupIDs)
            userclass = db_session.query(User).filter(
                User.ID == int(userID)).first()
            sql = "delete from usershiftsgroup where UserID = " + userID
            db_session.execute(sql)
            db_session.commit()
            for pid in shiftsgroupIDs:
                shiftsgroupcalss = db_session.query(ShiftsGroup).filter(
                    ShiftsGroup.ID == int(pid)).first()
                rpclas = db_session.query(UserShiftsGroup).filter(
                    UserShiftsGroup.UserID == userclass.ID,
                    UserShiftsGroup.ShiftsGroupID ==
                    shiftsgroupcalss.ID).first()
                if not rpclas:
                    rp = UserShiftsGroup()
                    rp.UserID = userclass.ID
                    rp.Name = userclass.Name
                    rp.ShiftsGroupID = shiftsgroupcalss.ID
                    rp.ShiftsGroupName = shiftsgroupcalss.ShiftsGroupName
                    db_session.add(rp)
                    db_session.commit()
            return json.dumps({
                "code": "200",
                "message": "请求成功"
            },
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "角色添加权限Error:" + str(e), current_user.Name)
Ejemplo n.º 16
0
def saveroleuser():
    '''
    用户添加角色
    :return:
    '''
    if request.method == 'POST':
        data = request.values
        try:
            UserID = data.get("UserID")
            RoleIDs = data.get("RoleIDs")
            if RoleIDs:
                RoleIDs = eval(RoleIDs)
            userclass = db_session.query(User).filter(
                User.ID == int(UserID)).first()
            sql = "delete from RoleUser where UserID = " + UserID
            db_session.execute(sql)
            db_session.commit()
            for pid in RoleIDs:
                rolecalss = db_session.query(Role).filter(
                    Role.ID == int(pid)).first()
                rpclas = db_session.query(RoleUser).filter(
                    RoleUser.UserID == userclass.ID,
                    RoleUser.RoleID == rolecalss.ID).first()
                if not rpclas:
                    rp = RoleUser()
                    rp.UserID = userclass.ID
                    rp.UserName = userclass.Name
                    rp.RoleID = rolecalss.ID
                    rp.RoleName = rolecalss.RoleName
                    db_session.add(rp)
                    db_session.commit()
            return json.dumps({
                "code": "200",
                "message": "请求成功"
            },
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "用户添加角色Error:" + str(e), current_user.Name)
Ejemplo n.º 17
0
def saverolepermission():
    '''
    角色添加权限
    :return:
    '''
    if request.method == 'POST':
        data = request.values
        try:
            roleID = data.get("roleID")
            permissionIDs = data.get("permissionIDs")
            if permissionIDs:
                permissionIDs = eval(permissionIDs)
            roleclass = db_session.query(Role).filter(
                Role.ID == int(roleID)).first()
            sql = "delete from RolePermission where RoleID = " + roleID
            db_session.execute(sql)
            db_session.commit()
            for pid in permissionIDs:
                permissioncalss = db_session.query(Permission).filter(
                    Permission.ID == int(pid)).first()
                rpclas = db_session.query(RolePermission).filter(
                    RolePermission.RoleID == roleclass.ID,
                    RolePermission.PermissionID == permissioncalss.ID).first()
                if not rpclas:
                    rp = RolePermission()
                    rp.RoleID = roleclass.ID
                    rp.RoleName = roleclass.RoleName
                    rp.PermissionID = permissioncalss.ID
                    rp.PermissionName = permissioncalss.PermissionName
                    db_session.add(rp)
                    db_session.commit()
            return json.dumps({
                "code": "200",
                "message": "请求成功"
            },
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "角色添加权限Error:" + str(e), current_user.Name)
Ejemplo n.º 18
0
def batchmodelinsert():
    '''批记录模板名称路径储存'''
    if request.method == 'POST':
        data = request.values
        try:
            BrandName = data.get("BrandName")
            PUCode = data.get("PUCode")
            BrandCode = data.get("BrandCode")
            PUIDName = data.get("PUIDName")
            FileName = data.get("FileName")
            Parameter = data.get("Parameter")
            #删除之前存的
            oclass = db_session.query(BatchModel).filter(
                BatchModel.PUCode == PUCode).all()
            for oc in oclass:
                db_session.delete(oc)
                os.remove(oc.FilePath)
            db_session.commit()
            #新添加的
            bm = BatchModel()
            bm.BrandName = BrandName
            bm.PUCode = PUCode
            bm.BrandCode = BrandCode
            bm.PUIDName = PUIDName
            bm.FileName = FileName
            bm.FilePath = os.path.join(
                os.path.realpath(r"system_backend\SystemManagement\files"),
                FileName)
            bm.UserName = current_user.Name
            bm.Parameter = Parameter
            db_session.add(bm)
            db_session.commit()
            return json.dumps({"code": "200", "message": "上传成功!"})
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "批记录模板导入报错Error:" + str(e),
                         current_user.Name)
            return json.dumps({"code": "500", "message": "后端报错"})
Ejemplo n.º 19
0
def taskSaveEqpCheckReview():
    '''
    任务审核复核(选择设备)
    :return:
    '''
    if request.method == 'POST':
        data = request.values
        try:
            ZYPlanStatus = data.get("ZYPlanStatus")
            ocalss = db_session.query(ZYPlan).filter(
                ZYPlan.ID == data.get("ID")).first()
            # datalist = json.loads(data.get("datalist"))
            # iTaskSeq = 0
            # for i in datalist:
            #     ocalss = db_session.query(ZYTask).filter(ZYTask.ID == i.get("ID")).first()
            #     ocalss.EQPCode = i.get("EQPCode")
            #     ocalss.EQPName = i.get("EQPName")
            #     db_session.commit()
            ocalss.ZYPlanStatus = ZYPlanStatus
            db_session.commit()
            insertAuditTrace(
                "任务审核复核(选择设备)", "批次号是:" + ocalss.BatchID + "的" +
                ocalss.BrandName + "在" + ocalss.PUName + "段的" +
                datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') +
                "进行计划审核操作", "PlanManager", current_user.Name, "")
            return json.dumps({
                "code": "200",
                "message": "任务选择设备成功!",
                "data": "OK"
            })
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "任务审核复核报错Error:" + str(e), current_user.Name)
            return json.dumps("任务审核复核报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 20
0
def PermissionsMenus():
    if request.method == 'GET':
        data = request.values
        try:
            MenuName = data.get("MenuName")
            MenuType = data.get("MenuType")
            if MenuName == None:
                MenuNames = db_session.query(Permission.MenuName).filter(
                    Permission.WorkNumber == current_user.WorkNumber,
                    Permission.MenuType == MenuType).all()
            else:
                ParentNode = db_session.query(ModulMenus.ID).filter(
                    ModulMenus.ModulMenuName == MenuName).first()
                pmenus = db_session.query(ModulMenus.ModulMenuName).filter(
                    ModulMenus.ParentNode == ParentNode,
                    ModulMenus.MenuType == MenuType).all()
                cmenus = db_session.query(Permission.MenuName).filter(
                    Permission.WorkNumber == current_user.WorkNumber).all()
                MenuNames = list(set(pmenus).intersection(set(cmenus)))
            dir = []
            for mn in MenuNames:
                meu = db_session.query(ModulMenus).filter(
                    ModulMenus.ModulMenuName == mn).first()
                dir.append(meu)
            if dir:
                dir = sorted(dir, key=lambda aa: aa.ID)
            return json.dumps(dir, cls=AlchemyEncoder, ensure_ascii=False)
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "添加用户报错Error:" + str(e), current_user.Name)
            return json.dumps([{
                "status": "Error:" + str(e)
            }],
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 21
0
def batchequimentselect():
    '''
    查询批次下对应的设备
    :return:
    '''
    if request.method == 'GET':
        data = request.values
        try:
            BatchID = data.get('BatchID')
            BrandCode = data.get('BrandCode')
            oclass = db_session.query(PlanManager).filter(
                PlanManager.BatchID == BatchID,
                PlanManager.BrandCode == BrandCode).first()
            dir = {}
            if oclass:
                pres = db_session.query(ProductUnit).filter(
                    ProductUnit.BrandCode == oclass.BrandCode).all()
                dir_list = []
                for pre in pres:
                    dir_list_i = {}
                    dir_list_i["PUName"] = pre.PUName
                    dir_list_i["PUCode"] = pre.PUCode
                    dir_list_i["Seq"] = pre.Seq
                    puoclass = db_session.query(ProcessUnit).filter(
                        ProcessUnit.PUCode == pre.PUCode).first()
                    dir_list_i["RelateTaskCount"] = puoclass.RelateTaskCount
                    eqList = []
                    eqps = db_session.query(ProductEquipment).filter(
                        ProductEquipment.PUCode == pre.PUCode).all()
                    for eqp in eqps:
                        eqp_dir = {}
                        eqp_dir["EQPCode"] = eqp.EQPCode
                        eqp_dir["EQPName"] = eqp.EQPName
                        eqp_dir["EQPStatus"] = eqp.EQPStatus
                        runeqp = db_session.query(
                            EquipmentBatchRunTime).filter(
                                EquipmentBatchRunTime.EQPCode == eqp.EQPCode,
                                EquipmentBatchRunTime.BrandCode ==
                                oclass.BrandCode, EquipmentBatchRunTime.BatchID
                                == oclass.BatchID, EquipmentBatchRunTime.PUCode
                                == pre.PUCode).first()
                        eqp_dir["isSelected"] = False
                        if runeqp:  #如果被选中过True,没被选中就是False
                            eqp_dir["isSelected"] = True
                            eqp_dir["StartTime"] = runeqp.StartTime[0:10]
                            eqp_dir["EndTime"] = runeqp.EndTime[0:10]
                            eqp_dir["StartBC"] = runeqp.StartBC
                            eqp_dir["EndBC"] = runeqp.EndBC
                        else:
                            eqp_dir["StartTime"] = ""
                            eqp_dir["EndTime"] = ""
                            eqp_dir["StartBC"] = ""
                            eqp_dir["EndBC"] = ""
                        eqList.append(eqp_dir)
                    dir_list_i["eqList"] = eqList
                    dir_list.append(dir_list_i)
                dir["processList"] = dir_list
            return json.dumps({"code": "200", "message": "查询成功!", "data": dir})
        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.º 22
0
def BatchMaterialInfoselect():
    '''物料明细查询'''
    if request.method == 'GET':
        data = request.values
        try:
            BrandCode = data.get("BrandCode")
            BatchID = data.get("BatchID")
            SendFlag = data.get("SendFlag")
            pages = data.get("offset")
            rowsnumber = data.get("limit")
            inipage = int(pages) * int(rowsnumber) + 0  # 起始页
            endpage = int(pages) * int(rowsnumber) + int(rowsnumber)  # 截止页
            if SendFlag == "" or SendFlag == None:
                count = db_session.query(BatchMaterialInfo).filter(
                    BatchMaterialInfo.BrandCode == BrandCode,
                    BatchMaterialInfo.BatchID == BatchID).count()
                oclass = db_session.query(BatchMaterialInfo).filter(
                    BatchMaterialInfo.BrandCode == BrandCode,
                    BatchMaterialInfo.BatchID ==
                    BatchID).all()[inipage:endpage]
            else:
                count = db_session.query(BatchMaterialInfo).filter(
                    BatchMaterialInfo.BrandCode == BrandCode,
                    BatchMaterialInfo.SendFlag == SendFlag,
                    BatchMaterialInfo.BatchID == BatchID).count()
                oclass = db_session.query(BatchMaterialInfo).filter(
                    BatchMaterialInfo.BrandCode == BrandCode,
                    BatchMaterialInfo.SendFlag == SendFlag,
                    BatchMaterialInfo.BatchID ==
                    BatchID).all()[inipage:endpage]
            dir_list = []
            for oc in oclass:
                dir = {}
                dir["ID"] = oc.ID
                dir["BatchID"] = oc.BatchID
                dir["BrandCode"] = oc.BrandCode
                dir["BrandName"] = oc.BrandName
                dir["FeedingSeq"] = oc.FeedingSeq
                dir["BucketNum"] = oc.BucketNum
                dir["BucketWeight"] = oc.BucketWeight
                dir["Flag"] = oc.Flag
                dir["Unit"] = oc.Unit
                dir["Description"] = oc.Description
                dir["SendFlag"] = oc.SendFlag
                dir_list.append(dir)
            return json.dumps(
                {
                    "code": "200",
                    "message": "请求成功",
                    "data": {
                        "total": count,
                        "rows": dir_list
                    }
                },
                cls=AlchemyEncoder,
                ensure_ascii=False)
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "物料明细查询报错Error:" + str(e), current_user.Name)
            return json.dumps({"code": "500", "message": "后端报错"})
Ejemplo n.º 23
0
def makeZYPlanZYTask(id):
    try:
        ocalss = db_session.query(PlanManager).filter(
            PlanManager.ID == id).first()
        if ocalss:
            if ocalss.PlanStatus == Global.PlanStatus.PreRUN.value:
                proclass = db_session.query(ProductUnit).filter(
                    ProductUnit.BrandCode == ocalss.BrandCode).order_by(
                        "Seq").all()
                for i in proclass:
                    pu = db_session.query(ProcessUnit).filter(
                        ProcessUnit.PUCode == i.PUCode).first()
                    zyplan = ZYPlan()
                    zyplan.PlanDate = ocalss.PlanBeginTime
                    zyplan.PlanNo = ocalss.SchedulePlanCode
                    zyplan.BatchID = ocalss.BatchID
                    zyplan.PlanSeq = i.Seq
                    zyplan.PUCode = i.PUCode
                    zyplan.PUName = i.PUName
                    zyplan.PlanType = Global.PLANTYPE.SCHEDULE.value
                    zyplan.BrandCode = ocalss.BrandCode
                    zyplan.BrandName = ocalss.BrandName
                    zyplan.ERPOrderNo = ""
                    zyplan.PlanQuantity = ocalss.PlanQuantity
                    zyplan.Unit = ocalss.Unit
                    zyplan.EnterTime = ""
                    zyplan.PlanBeginTime = ""
                    zyplan.ZYPlanStatus = Global.ZYPlanStatus.Produced.value
                    zyplan.LockStatus = Global.TASKLOCKSTATUS.UNLOCK.value
                    zyplan.INFStatus = Global.TASKSTATUS.NEW.value
                    zyplan.WMSStatus = Global.TASKSTATUS.NEW.value
                    db_session.add(zyplan)
                    db_session.commit()

                    # ebps = db_session.query(EquipmentBatchRunTime).filter(EquipmentBatchRunTime.BrandCode == ocalss.BrandCode,
                    #                 EquipmentBatchRunTime.BatchID == ocalss.BatchID, EquipmentBatchRunTime.PUCode == i.PUCode).all()
                    # iTaskSeq = 0
                    # for j in ebps:
                    #     iTaskSeq = iTaskSeq + 1
                    #     bReturn, strTaskNo = getTaskNo()
                    #     if bReturn == False:
                    #         return False
                    #     zytask = ZYTask()
                    #     zytask.PlanDate = j.StartTime
                    #     zytask.TaskID = strTaskNo
                    #     zytask.BatchID = ocalss.BatchID
                    #     zytask.PlanSeq = iTaskSeq
                    #     if i.PUName == "备料":#备料段为满足前端展示需要,虚拟了一个设备出来,所以下发要排除
                    #         zytask.PUCode = ""
                    #         zytask.PUName = ""
                    #     else:
                    #         zytask.PUCode = i.PUCode
                    #         zytask.PUName = i.PUName
                    #     zytask.PlanType = Global.PLANTYPE.SCHEDULE.value
                    #     zytask.BrandCode = ocalss.BrandCode
                    #     zytask.BrandName = ocalss.BrandName
                    #     zytask.PlanQuantity = ocalss.PlanQuantity
                    #     zytask.Unit = ocalss.Unit
                    #     zytask.EnterTime = ""
                    #     zytask.EQPCode = j.EQPCode
                    #     zytask.EQPName = j.EQPName
                    #     zytask.StartBC = j.StartBC
                    #     zytask.EndBC = j.EndBC
                    #     zytask.PlanStartTime = j.StartTime
                    #     zytask.PlanEndTime = j.EndTime
                    #     zytask.TaskStatus = ""
                    #     zytask.LockStatus = Global.TASKLOCKSTATUS.UNLOCK.value
                    #     db_session.add(zytask)
    except Exception as ee:
        db_session.rollback()
        print(ee)
        logger.error(ee)
        insertSyslog("error", "下发计划生成ZY计划、任务报错Error" + str(ee),
                     current_user.Name)
        return 'NO'
Ejemplo n.º 24
0
def WMS_SendPlan():
    '''发送投料任务和桶对应提取罐信息到投料系统'''
    if request.method == 'POST':
        data = request.values
        try:
            jsonstr = json.dumps(data.to_dict())
            if len(jsonstr) > 10:
                dic = []
                PlanID = data.get("PlanID")
                pmoc = db_session.query(PlanManager).filter(
                    PlanManager.ID == PlanID).first()
                zypl = db_session.query(ZYPlan).filter(
                    ZYPlan.BatchID == pmoc.BatchID,
                    ZYPlan.BrandCode == pmoc.BrandCode,
                    ZYPlan.PUName.like("%提%")).first()
                if zypl == None:
                    zypl = db_session.query(ZYPlan).filter(
                        ZYPlan.BatchID == pmoc.BatchID,
                        ZYPlan.BrandCode == pmoc.BrandCode,
                        ZYPlan.PUName.like("%渗%")).first()
                dic.append({
                    "PlanNo": zypl.ID,
                    "BrandCode": pmoc.BrandCode,
                    "BrandName": pmoc.BrandName,
                    "BatchID": pmoc.BatchID,
                    "Weight": pmoc.PlanQuantity,
                    "Unit": pmoc.Unit
                })
                url = Global.WMSurl + "api/WbeApi/RecvTransInfon"
                dir = {}
                dir["zyplan_list"] = dic
                dir = json.dumps(dir)
                resp = requests.post(url, json=dir, headers=headers)
                responjson = json.loads(resp.content)
                responjson = eval(responjson)
                if responjson.get("code") != "0":
                    db_session.rollback()
                    return json.dumps({
                        "code":
                        "500",
                        "message":
                        "调用WMS_SendPlan接口报错!" + responjson.get("msg")
                    })
                oclass = db_session.query(BatchMaterialInfo).filter(
                    BatchMaterialInfo.BrandCode == pmoc.BrandCode,
                    BatchMaterialInfo.BatchID == pmoc.BatchID).all()
                dic = []
                for oc in oclass:
                    dic.append({
                        "PlanNo": zypl.ID,
                        "BatchMaterialInfoID": oc.ID,
                        "BrandCode": pmoc.BrandCode,
                        "BrandName": pmoc.BrandName,
                        "BatchID": oc.BatchID,
                        "FlagCode": oc.BucketNum,
                        "Weight": oc.BucketWeight,
                        "Unit": oc.Unit,
                        "Flag": oc.Flag,
                        "FeedingSeq": oc.FeedingSeq,
                        "EQPCode": oc.EQPCode,
                        "EQPName": oc.EQPName,
                        "TYPE": "投料"
                    })
                if len(dic) > 0:
                    url = Global.WMSurl + "api/WbeApi/RecvContanerInfon"
                    dir = {}
                    dir["batchmaterial_list"] = dic
                    dir = json.dumps(dir)
                    resp = requests.post(url, json=dir, headers=headers)
                    responjson = json.loads(resp.content)
                    responjson = eval(responjson)
                    if responjson.get("code") != "0":
                        return json.dumps({
                            "code":
                            "500",
                            "message":
                            "调用WMS_SendPlan接口报错!" + responjson.get("msg")
                        })
                for oc in oclass:
                    oc.SendFlag = "投料系统已接收"
                    oc.OperationDate = datetime.datetime.now().strftime(
                        '%Y-%m-%d %H:%M:%S')
                    db_session.commit()
                # pmoc.PlanStatus = Global.PlanStatus.FSMWMSed.value
                # db_session.commit()
                insertSyslog(
                    "调用投料计划发送接口", "发送品名:" + pmoc.BrandName + " 批次:" +
                    pmoc.BatchID + "的投料计划到投料系统", current_user.Name)
                return json.dumps({"code": "200", "message": "OK"})
        except Exception as e:
            db_session.rollback()
            print("调用WMS_SendPlan接口报错!")
            insertSyslog("error", "调用WMS_SendPlan接口报错Error" + str(e),
                         current_user.Name)
            return json.dumps("调用WMS_SendPlan接口报错!")
Ejemplo n.º 25
0
def WMS_SendMatils():
    '''备料明细发送投料系统接口'''
    if request.method == 'POST':
        data = request.values
        try:
            jsonstr = json.dumps(data.to_dict())
            if len(jsonstr) > 10:
                jsonnumber = re.findall(r"\d+\.?\d*", data.get("sendData"))
                PlanID = data.get("PlanID")
                pmoc = db_session.query(PlanManager).filter(
                    PlanManager.ID == PlanID).first()
                dic = []
                for key in jsonnumber:
                    id = int(key)
                    oclass = db_session.query(BatchMaterialInfo).filter(
                        BatchMaterialInfo.ID == id).first()
                    zypla = db_session.query(ZYPlan).filter(
                        ZYPlan.BatchID == oclass.BatchID,
                        ZYPlan.BrandCode == oclass.BrandCode,
                        ZYPlan.PUName.like("%提%")).first()
                    if zypla == None:
                        zypla = db_session.query(ZYPlan).filter(
                            ZYPlan.BatchID == oclass.BatchID,
                            ZYPlan.BrandCode == oclass.BrandCode,
                            ZYPlan.PUName.like("%渗%")).first()
                    dic.append({
                        "PlanNo": zypla.ID,
                        "BatchMaterialInfoID": oclass.ID,
                        "BrandCode": pmoc.BrandCode,
                        "BrandName": pmoc.BrandName,
                        "BatchID": oclass.BatchID,
                        "FlagCode": oclass.BucketNum,
                        "Weight": oclass.BucketWeight,
                        "Unit": oclass.Unit,
                        "Flag": oclass.Flag,
                        "FeedingSeq": oclass.FeedingSeq,
                        "EQPCode": oclass.EQPCode,
                        "EQPName": oclass.EQPName,
                        "TYPE": "备料"
                    })
                if len(dic) > 0:
                    url = Global.WMSurl + "api/WbeApi/RecvContanerInfon"
                    dir = {}
                    dir["batchmaterial_list"] = dic
                    dir = json.dumps(dir)
                    resp = requests.post(url, json=dir, headers=headers)
                    responjson = json.loads(resp.content)
                    responjson = eval(responjson)
                    if responjson.get("code") != "0":
                        return json.dumps({
                            "code":
                            "500",
                            "message":
                            "调用WMS_SendPlan接口报错!" + responjson.get("msg")
                        })
                for key in jsonnumber:
                    oclass = db_session.query(BatchMaterialInfo).filter(
                        BatchMaterialInfo.ID == key).first()
                    oclass.SendFlag = "投料系统已接收"
                    oclass.OperationDate = datetime.datetime.now().strftime(
                        '%Y-%m-%d %H:%M:%S')
                    # zypla.TaskStatus = "已发送"
                    db_session.commit()
                pmoc.PlanStatus = data.get("PlanStatus")
                db_session.commit()
                insertSyslog(
                    "投料物料明细发送接口", "发送品名:" + pmoc.BrandName + " 批次:" +
                    pmoc.BatchID + "的备料明细到投料系统", current_user.Name)
                return json.dumps({"code": "200", "message": "OK"})
        except Exception as e:
            db_session.rollback()
            print("调用WMS_SendPlan接口报错!")
            insertSyslog("error", "调用WMS_SendPlan接口报错Error" + str(e),
                         current_user.Name)
            return json.dumps("调用WMS_SendPlan接口报错!")
Ejemplo n.º 26
0
def taskSaveEqpCheck():
    '''
    设备审核(选择设备)
    :return:
    '''
    if request.method == 'POST':
        data = request.values
        try:
            ocalss = db_session.query(ZYPlan).filter(
                ZYPlan.ID == data.get("ID")).first()
            zytasks = db_session.query(ZYTask).filter(
                ZYTask.BatchID == ocalss.BatchID,
                ZYTask.BrandCode == ocalss.BrandCode,
                ZYTask.PUCode == ocalss.PUCode).all()
            for zy in zytasks:
                db_session.delete(zy)
                db_session.commit()
            iTaskSeq = 0
            if "提取" in ocalss.PUName:
                bms = db_session.query(BatchMaterialInfo).filter(
                    BatchMaterialInfo.BatchID == ocalss.BatchID,
                    BatchMaterialInfo.BrandCode == ocalss.BrandCode).all()
                for bm in bms:
                    iTaskSeq = iTaskSeq + 1
                    bReturn, strTaskNo = getTaskNo()
                    if bReturn == False:
                        return False
                    zytask = ZYTask()
                    zytask.PlanDate = datetime.datetime.now().strftime(
                        "%Y-%m-%d")
                    zytask.TaskID = strTaskNo
                    zytask.BatchID = ocalss.BatchID
                    zytask.PlanSeq = iTaskSeq
                    zytask.PUCode = ocalss.PUCode
                    zytask.PUName = ocalss.PUName
                    zytask.PlanType = Global.PLANTYPE.SCHEDULE.value
                    zytask.BrandCode = ocalss.BrandCode
                    zytask.BrandName = ocalss.BrandName
                    zytask.PlanQuantity = ocalss.PlanQuantity
                    zytask.Unit = ocalss.Unit
                    zytask.EnterTime = ""
                    zytask.EQPCode = bm.EQPCode
                    zytask.EQPName = bm.EQPName
                    zytask.PlanStartTime = ""
                    zytask.PlanEndTime = ""
                    zytask.TaskStatus = Global.TASKSTATUS.NEW.value
                    zytask.LockStatus = Global.TASKLOCKSTATUS.UNLOCK.value
                    db_session.add(zytask)
                    db_session.commit()
                ocalss.ZYPlanStatus = Global.ZYPlanStatus.Produncting.value
                db_session.commit()
            else:
                if data.get("EqpList") != None and data.get("EqpList") != "":
                    EqpList = json.loads(data.get("EqpList"))
                    for j in EqpList:
                        iTaskSeq = iTaskSeq + 1
                        bReturn, strTaskNo = getTaskNo()
                        if bReturn == False:
                            return False
                        zytask = ZYTask()
                        zytask.PlanDate = datetime.datetime.now().strftime(
                            "%Y-%m-%d")
                        zytask.TaskID = strTaskNo
                        zytask.BatchID = ocalss.BatchID
                        zytask.PlanSeq = iTaskSeq
                        zytask.PUCode = ocalss.PUCode
                        zytask.PUName = ocalss.PUName
                        zytask.PlanType = Global.PLANTYPE.SCHEDULE.value
                        zytask.BrandCode = ocalss.BrandCode
                        zytask.BrandName = ocalss.BrandName
                        zytask.PlanQuantity = ocalss.PlanQuantity
                        zytask.Unit = ocalss.Unit
                        zytask.EnterTime = ""
                        zytask.EQPCode = j.get("EQPCode")
                        zytask.EQPName = j.get("EQPName")
                        zytask.PlanStartTime = ""
                        zytask.PlanEndTime = ""
                        zytask.TaskStatus = Global.TASKSTATUS.NEW.value
                        zytask.LockStatus = Global.TASKLOCKSTATUS.UNLOCK.value
                        db_session.add(zytask)
                        db_session.commit()
            insertAuditTrace(
                "设备审核(选择设备)", "品名:" + ocalss.BrandName + " 批次:" +
                ocalss.BatchID + "设备审核(选择设备)", "PlanManager",
                current_user.Name, "")
            return json.dumps({
                "code": "200",
                "message": "任务选择设备成功!",
                "data": "OK"
            })
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "设备审核(选择设备)报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("设备审核(选择设备)报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 27
0
def makePlan():
    if request.method == 'POST':
        data = request.values  # 返回请求中的参数和form
        try:
            json_str = json.dumps(data.to_dict())
            if len(json_str) > 10:
                BatchID = data.get("BatchID")
                # PlanEndTime = data.get("PlanEndTime")
                BrandCode = data.get("BrandCode")
                # PlanBeginTime = data.get("PlanBeginTime")
                #批次号判重
                pcBatchID = db_session.query(PlanManager.BatchID).filter(
                    PlanManager.BatchID == BatchID,
                    PlanManager.BrandCode == BrandCode).first()
                if pcBatchID:
                    return json.dumps({"code": "201", "message": "批次号重复!"})
                pm = PlanManager()
                pm.SchedulePlanCode = str(datetime.datetime.now().strftime(
                    "%Y-%m-%d %H:%M:%S"))[0:10]
                pm.BatchID = BatchID
                pr = db_session.query(ProductRule).filter(
                    ProductRule.BrandCode == BrandCode).first()
                pm.PlanQuantity = pr.BatchWeight
                pm.Unit = pr.Unit
                pm.PlanNum = data.get("PlanNum")
                pm.BrandCode = BrandCode
                pm.BrandName = pr.BrandName
                pm.PlanStatus = Global.PlanStatus.Confirm.value
                # pm.PlanBeginTime = data.get("PlanBeginTime")
                # pm.PlanEndTime = data.get("PlanEndTime")
                pm.BrandType = pr.BrandType
                pm.EqpCodes = data.get("EqpCodes")
                db_session.add(pm)
                sp = SchedulePlan()
                sp.SchedulePlanCode = str(datetime.datetime.now().strftime(
                    "%Y-%m-%d %H:%M:%S"))[0:10]
                sp.Description = Global.SCHEDULETYPE.DAY.value
                sp.dEndTime = datetime.datetime.strptime(
                    str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
                    [0:10], '%Y-%m-%d') + timedelta(days=1)
                sp.PlanBeginTime = ""
                sp.PlanEndTime = ""
                Type = Global.SCHEDULETYPE.DAY.value
                db_session.add(sp)
                db_session.commit()
                return json.dumps({"code": "200", "message": "添加成功!"})
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "计划向导生成计划报错Error:" + str(e),
                         current_user.Name)
            return json.dumps([{
                "status": "Error:" + str(e)
            }],
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
    if request.method == 'GET':
        '''修改批次信息'''
        data = request.values
        try:
            ID = data.get("ID")
            BatchID = data.get("BatchID")
            # PlanQuantity = data.get("PlanQuantity")
            # PlanBeginTime = data.get("PlanBeginTime")
            # PlanEndTime = data.get("PlanEndTime")
            # Unit = data.get("Unit")
            ocalss = db_session.query(PlanManager).filter(
                PlanManager.ID == ID).first()
            if ocalss:
                pl = db_session.query(PlanManager).filter(
                    PlanManager.BatchID == BatchID,
                    PlanManager.BrandCode == ocalss.BrandCode).first()
                if not pl:
                    ocalss.BatchID = BatchID
                    # ocalss.PlanQuantity = PlanQuantity
                    # ocalss.PlanBeginTime = PlanBeginTime
                    # ocalss.PlanEndTime = PlanEndTime
                    # ocalss.Unit = Unit
                    ocalss.PlanStatus = Global.PlanStatus.Confirm.value
                    db_session.commit()
                    return json.dumps({"code": "200", "message": "修改成功!"})
                else:
                    return json.dumps({"code": "201", "message": "批次号重复!"})
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "修改批次信息报错Error:" + str(e), current_user.Name)
            return json.dumps("修改批次信息报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 28
0
def planschedul():
    '''
    计划排产
    :return:
    '''
    if request.method == 'POST':
        data = request.values
        try:
            data_list = json.loads(data.get('selectPlanList'))
            for i in data_list:
                dir = {}
                proclass = db_session.query(ProductRule).filter(
                    ProductRule.BrandCode == i.get("BrandCode")).first()
                for BatchNo in range(0, int(i.get("BatchNum"))):
                    pm = PlanManager()
                    pm.PlanNum = i.get("PlanNum")
                    pm.SchedulePlanCode = str(datetime.datetime.now().strftime(
                        "%Y-%m-%d %H:%M:%S"))[0:10]
                    # nowtime = datetime.datetime.now().strftime("%Y-%m %M:%S").replace(":","").replace("-","").replace(" ","")
                    pm.BatchID = ""
                    pm.Seq = BatchNo
                    pm.PlanQuantity = proclass.BatchWeight
                    pm.Unit = proclass.Unit
                    pm.BrandCode = i.get("BrandCode")
                    pm.BrandName = i.get("BrandName")
                    # #计算计划开始时间结束时间
                    # pu = db_session.query(ProductUnit).filter(ProductUnit.BrandCode == oclass.BrandCode, ProductUnit.PUName.like("%提%")).first()
                    # proc = db_session.query(ProcessUnit).filter(ProcessUnit.PUCode == pu.PUCode).first()
                    # beg = int(proclass.BatchTimeLength)*BatchNo
                    # end = beg + int(proclass.BatchTimeLength)
                    # PlanBeginTime = (datetime.datetime.strptime(StartTime, "%Y-%m-%d %H:%M:%S") + datetime.timedelta(hours=beg)).strftime("%Y-%m-%d %H:%M:%S")
                    # PlanEndTime = (datetime.datetime.strptime(StartTime,
                    #                                             "%Y-%m-%d %H:%M:%S") + datetime.timedelta(
                    #     hours=end)).strftime("%Y-%m-%d %H:%M:%S")
                    # pm.PlanBeginTime = PlanBeginTime
                    # pm.PlanEndTime = PlanEndTime
                    pm.BrandType = proclass.BrandType
                    pm.PlanStatus = Global.PlanStatus.Confirm.value
                    db_session.add(pm)
                    db_session.commit()
                PlanNums = i.get("PlanNum").split(",")
                for pn in PlanNums:
                    oc = db_session.query(product_plan).filter(
                        product_plan.PlanNum == pn).first()
                    if oc:
                        oc.PlanStatus = "已分批"
                        db_session.commit()
                    insertAuditTrace(
                        "订单排产",
                        "订单号是:" + oc.PlanNum + "的" + oc.BrandName + "在" +
                        datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') +
                        "进行订单排产操作", "PlanManager", current_user.Name, "")
            return json.dumps({
                "code": "200",
                "message": "排产成功!",
                "data": "OK"
            })
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "计划排产报错Error:" + str(e), current_user.Name)
            return json.dumps("计划排产报错", cls=AlchemyEncoder, ensure_ascii=False)
Ejemplo n.º 29
0
def addEquipmentBatchRunTime():
    '''
    生产配置添加设备
    :return:
    '''
    if request.method == 'POST':
        data = request.values
        try:
            ID = data.get('ID')
            processList = json.loads(data.get('processList'))
            oclass = db_session.query(PlanManager).filter(
                PlanManager.ID == ID).first()
            #清空之前保存的数据
            delete_list = db_session.query(EquipmentBatchRunTime).filter(
                EquipmentBatchRunTime.BrandCode == oclass.BrandCode,
                EquipmentBatchRunTime.BatchID == oclass.BatchID).all()
            for i in delete_list:
                db_session.delete(i)
                db_session.commit()
            dir = {}
            if oclass:
                for pl in processList:
                    PUName = pl.get("PUName")
                    PUCode = pl.get("PUCode")
                    eqList = pl.get('eqList')
                    for el in eqList:
                        isSelected = el.get("isSelected")
                        if isSelected == True:  #选中过的设备
                            ert = EquipmentBatchRunTime()
                            ert.BatchID = oclass.BatchID
                            ert.BrandCode = oclass.BrandCode
                            ert.BrandName = oclass.BrandName
                            ert.EQPCode = el.get("EQPCode")
                            ert.EQPName = el.get("EQPName")
                            ert.PUCode = PUCode
                            ert.PUName = PUName
                            ert.StartBC = el.get("StartBC")
                            ert.EndBC = el.get("EndBC")
                            sft = db_session.query(Shifts).filter(
                                Shifts.ShiftsName == ert.StartBC).first()
                            ert.StartTime = str(
                                el.get("StartTime")) + " " + sft.BeginTime
                            eft = db_session.query(Shifts).filter(
                                Shifts.ShiftsName == ert.EndBC).first()
                            if eft.ShiftsName == "中" or eft.ShiftsName == "晚":
                                endt = (datetime.datetime.strptime(
                                    el.get("EndTime"), "%Y-%m-%d") +
                                        datetime.timedelta(hours=24)
                                        ).strftime("%Y-%m-%d")
                            else:
                                endt = el.get("EndTime")
                            ert.EndTime = str(endt) + " " + eft.EndTime
                            db_session.add(ert)
                oclass.PlanStatus = Global.PlanStatus.WaitRealse.value
                db_session.commit()
                insertAuditTrace(
                    "生产配置添加设备",
                    "批次号是:" + oclass.BatchID + "的" + oclass.BrandName + "在" +
                    datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') +
                    "进行生产配置添加设备操作", "PlanManager", current_user.Name, "")
            return json.dumps({
                "code": "200",
                "message": "保存成功!",
                "data": "OK"
            })
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "生产配置添加设备报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("生产配置添加设备报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)
Ejemplo n.º 30
0
def selectplanmanager():
    '''
    查询排产好的计划
    :return:
    '''
    if request.method == 'GET':
        data = request.values
        try:
            PlanNums = json.loads(data.get('PlanNums'))
            tableName = "PlanManager"
            pages = data.get("offset")
            pages = int(data.get("offset")) + 1
            rowsnumber = int(data.get("limit"))
            newTable = Table(tableName,
                             metadata,
                             autoload=True,
                             autoload_with=engine)
            columns = ""
            for column in newTable.columns:
                if columns == "":
                    columns = "[" + str(column).split(".")[1] + "]"
                else:
                    columns = columns + ",[" + str(column).split(".")[1] + "]"
            params = ""
            for key in PlanNums:
                if params == "":
                    params = "PlanNum like '%" + key + "%'"
                else:
                    params = params + " OR PlanNum like '%" + key + "%'"
            sql = "select top " + str(
                rowsnumber) + " " + columns + " from [LIMS].[dbo].[" + tableName + "] where (" + params + \
                  ") AND ID not in (select top " + str(
                (
                            pages - 1) * rowsnumber) + " ID FROM [LIMS].[dbo].[" + tableName + "] where " + params +" ORDER BY ID DESC) ORDER BY ID DESC"
            sqlcount = "select count(ID) from [LIMS].[dbo].[" + tableName + "] where " + params
            re = db_session.execute(sql).fetchall()
            recount = db_session.execute(sqlcount).fetchall()
            dict_list = []
            for i in re:
                dir = {}
                column_list = columns.split(",")
                for col in column_list:
                    dir[col[1:-1]] = i[col[1:-1]]
                dict_list.append(dir)
            return json.dumps({
                "code": "200",
                "message": "查询成功!",
                "data": {
                    "total": recount[0][0],
                    "rows": dict_list
                }
            })
        except Exception as e:
            db_session.rollback()
            print(e)
            logger.error(e)
            insertSyslog("error", "查询排产好的计划报错Error:" + str(e),
                         current_user.Name)
            return json.dumps("查询排产好的计划报错",
                              cls=AlchemyEncoder,
                              ensure_ascii=False)