SaveText.Ru

Без имени
  1. var fs = require('fs');
  2. var readline = require('readline');
  3. var rl = readline.createInterface({
  4.         input: process.stdin,
  5.         output: process.stdout,
  6.         prompt: 'Для начала заполнения производственной карточки, отсканируйте штрихкод сотрудника: '
  7. });
  8.  
  9. rl.prompt();
  10.  
  11. var allCards = [];
  12. var currentCard = {};
  13. var timestamp = +(new Date);
  14.  
  15. function saveOperation(lastname, date, operation) {     
  16.         var csv = ["Фамилия,Дата,Тип операции,Артикул,Размер,ID пачки"];
  17.         var line;
  18.  
  19.         operation = operation.split('-');
  20.  
  21.         allCards.push({
  22.                 'lastname': lastname,
  23.                 'date': date,
  24.                 'operationType': operation[0],
  25.                 'operationArticle': operation[1],
  26.                 'operationSize': operation[2],
  27.                 'operationPartId': operation[3]
  28.         });
  29.  
  30.         for (var i = 0; i < allCards.length; i++) {
  31.                 line = [allCards[i].lastname, allCards[i].date, allCards[i].operationType, allCards[i].operationArticle, allCards[i].operationSize, allCards[i].operationPartId];
  32.                 csv.push(line.join(','));
  33.         }
  34.  
  35.         console.log(csv.join("rn"));
  36.  
  37.         fs.writeFileSync('report-'+timestamp+'.csv', csv.join("rn"));
  38. }
  39.  
  40. // function saveOperationFile () {
  41. //      fs.writeFileSync('report-'+(new Date)+'.csv', JSON.stringify(allCards));
  42. // }
  43.  
  44. rl.on('line', (line) => {
  45.         var input = line.trim().split(':');
  46.  
  47.         if (input.length < 2) {
  48.                 throw new Error('Произошла ошибка. Неверный формат данных в штрихкоде.')
  49.         }
  50.  
  51.         var command = input[0].trim();
  52.         var value = input[1].trim();
  53.  
  54.         switch (command) {
  55.                 case 'lastname':
  56.                         currentCard.lastname = value;
  57.                         console.log('Успешно! Фамилия сотрудника: ', currentCard.lastname);
  58.                         rl.setPrompt(`Сотрудник: '${currentCard.lastname}'. Отсканируйте штрихкод даты: `);
  59.                 break;
  60.  
  61.                 case 'date':
  62.                         currentCard.date = value;
  63.                         console.log('Успешно! Дата: ', currentCard.date);
  64.                         rl.setPrompt(`Сотрудник: '${currentCard.lastname}'. Дата: '${currentCard.date}'. Отсканируйте штрихкод операций: `);
  65.                 break;s
  66.  
  67.                 case 'operation':
  68.                         currentCard.operation = value;
  69.                         saveOperation(currentCard.lastname, currentCard.date, currentCard.operation);
  70.  
  71.                         console.log(`Успешно! Количество операций записано:'${allCards.length}'. Операция: '${currentCard.operation}`);
  72.                         rl.setPrompt(`Сотрудник: '${currentCard.lastname}'. Дата: '${currentCard.date}'. Отсканируйте штрихкод операций: `);
  73.                 break;
  74.                                                
  75.                 default:
  76.                         console.log(`Команда не распознана: '${line.trim()}', повторите ввод или обратитесь к администратору.`);
  77.                 break;
  78.         }
  79.  
  80.         rl.prompt();
  81. }).on('close', () => {
  82.         console.log('Have a great day!');
  83.         process.exit(0);
  84. });
  85.  
  86. // lastname:Чупейкин
  87. // date:02.09.2011
  88. // operation:type1-article-size-partId

Share with your friends:

Print