示例#1
0
 def _cmd_edit(self, given):
     given['internal_name'] = rlinput("品名:", given['internal_name'])
     self._ws['B{}'.format(self.index)] = given['internal_name']
     try:
         self._wb.save(self._product_wb_file)
     except PermissionError:
         print("war:文件已经被打开,无法写入")
示例#2
0
文件: parser.py 项目: uees/happyWork
    def select_product(self, products, product_name):
        """
        :param products: 产品列表
        :param product_name: 产品名称
        :return: if None 表示 break
        """
        for product in products:
            if product.internal_name == product_name:
                return product

        print(f"请选择产品{product_name}的ID,可能是以下中的一个")
        for product in products:
            space = " " * (20 - len(product.internal_name)) if len(
                product.internal_name) < 20 else ""
            print("\t %s%s\t ID:%s" %
                  (product.internal_name, space, product.id))

        while True:
            pid = rlinput("请选择产品ID:")
            if pid == "quit":
                self.wb.save(self.filename)
                sys.exit()

            elif pid == "break" or pid == 'b':
                return

            # 直接回车就是选择第一个
            elif not pid:
                return products[0]

            for product in products:
                if str(product.id) == pid:
                    return product

            print(f"无效的id: {pid}")
示例#3
0
    def _input_number(self, msg):
        value = rlinput(msg)

        if not is_number_like(value):
            value = self._input_number(None)

        return value
示例#4
0
文件: parser.py 项目: uees/happyWork
    def query_product(self, product_name):
        """
        :param product_name:
        :return: if None 表示 break
        """
        # 光刻胶
        if product_name.endswith("CP") \
                or product_name.startswith("RDR-") \
                or product_name.startswith("RD-") \
                or product_name.startswith("RDJ-") \
                or product_name.startswith("SIJ-"):
            return

        # 开油水
        if product_name.startswith("S-") \
                or product_name.find('助剂') >= 0 \
                or product_name.find('稀释剂') >= 0 \
                or product_name.endswith("固化剂"):  # tx-1109 固化剂
            return

        # 优化 product_name
        if product_name.startswith("9GHD"):
            product_name = "9G"
        elif product_name.startswith("2GHD"):
            product_name = "2G"
        elif product_name.startswith("3GHD"):
            product_name = "3G"
        elif product_name.startswith("8G04HD"):
            product_name = "8G04"
        elif product_name.startswith("UVS-1000"):
            product_name = "UVS-1000"

        product_name = product_name \
            .replace("内袋", "") \
            .replace("固内", "") \
            .replace("胜宏", "") \
            .replace("金像", "") \
            .replace("川亿", "") \
            .replace("外贸", "") \
            .strip()

        while True:
            products = Product.query.search(product_name).limit(20).all()

            if products:
                break

            print(f"未查到{product_name}的产品记录,请修改一下")
            product_name = rlinput("品名:", product_name)
            # product_name = rlinput("品名:")
            if product_name == 'break' or product_name == 'b':
                return

            elif product_name == "quit":
                self.wb.save(self.filename)
                sys.exit()

        if products:
            return self.select_product(products, product_name)
示例#5
0
    def _input_kind(self):
        kind = rlinput(
            "类别(H-8100/H-9100/A-2000/K-2500/A-2100/A-9060A/A-9000/\n"
            "UVS-1000/TM-3100/TS-3000/UVM-1800):\n >>>")

        conf = self.get_conf(kind)
        if not conf:
            conf = self.get_conf_by_alias(kind)
        if not conf:
            print("无效的类别, 请重新输入")
            conf = self._input_kind()

        return conf
示例#6
0
    def _cmd_add(self, internal_name):
        market_name = rlinput("销售品名(打在检验报告上的名字,例如‘8G04建业’的销售名为8G 04):\n >>>")
        conf = self._input_kind()
        viscosity = self._input_number("粘度值:")
        viscosity_width = self._input_number("粘度上下幅度:")

        product_obj = Product(internal_name=internal_name,
                              market_name=market_name,
                              template=conf['slug'],
                              viscosity=int(viscosity),
                              viscosity_width=int(viscosity_width))
        db.insert_product(product_obj)
        db.insert_product_to_xlsx(product_obj,
                                  '%s/data/database.xlsx' % self.app_path,
                                  'products')
        print("已经插入新的条目到products数据表")
        return product_obj
示例#7
0
    def query_info(self, given):
        """
        查询数据库, 追加更多信息
        :param: given 是从list.xlsx 中查出的数据
        """
        products = db.search_product(given['internal_name'])
        if products.count() == 0:
            print('\n数据库中无记录, 输入命令以继续.')
            print("  添加条目 输入 add")
            print("  编辑字段 输入 edit")
            print("  跳过此行 输入 break")
            print("  退出程序 输入 quit")
            while True:
                cmd = rlinput("命令:")
                if cmd == "add":
                    product_obj = self._cmd_add(given['internal_name'])
                    break

                elif cmd == "break":
                    return

                elif cmd == "edit":
                    self._cmd_edit(given)
                    return self.query_info(given)

                elif cmd == "quit":
                    self.exit()

        else:
            # 是否有名称完全匹配的
            product_obj = db.get_product_by_internal_name(
                given['internal_name'])

            if not product_obj:
                print("请选择产品ID,可能是以下中的一个")
                print("如果产品不在下面列出,你还可以输入以下命令:")
                print("  添加条目 输入 add")
                print("  编辑字段 输入 edit")
                print("  跳过此行 输入 break")
                print("  退出程序 输入 quit")
                print('')
                ids = []
                for product in products.all():
                    ids.append(product.id)
                    space = " " * (20 - len(product.internal_name)) if len(
                        product.internal_name) < 20 else ""
                    print("\t %s%s\t ID:%s\t %s±%sdPa.s" %
                          (product.internal_name, space, product.id,
                           product.viscosity, product.viscosity_width))

                while True:
                    pid = rlinput("请选择产品ID:")
                    if pid == "quit":
                        self.exit()

                    if pid == "add":
                        product_obj = self._cmd_add(given['internal_name'])
                        break

                    elif pid == "edit":
                        self._cmd_edit(given)
                        return self.query_info(given)

                    elif pid == "break":
                        return

                    elif not pid:
                        if len(ids) == 1:
                            pid = ids[0]
                            break

                    elif self._validate_id(pid, ids):
                        break

                if not product_obj and is_number_like(pid):
                    product_obj = db.get_product_by_id(pid)

                print("\t 你选择了(%s, %s±%sdPa.s)" %
                      (product_obj.internal_name, product_obj.viscosity,
                       product_obj.viscosity_width))

        given['market_name'] = product_obj.market_name
        given['kind'] = product_obj.template
        given['viscosity'] = product_obj.viscosity
        given['viscosity_limit'] = "%s±%s" % (product_obj.viscosity,
                                              product_obj.viscosity_width)
        given['qc_date'] = datetime.strftime(datetime.now(), '%Y/%m/%d')
        given['ftir'] = '{}%'.format(round(random.uniform(99.3, 100), 2))
        given['color'] = product_obj.color or ''
        given['wants_normal'] = True

        return given