diff options
Diffstat (limited to 'SOURCE/Zasor2')
| -rw-r--r-- | SOURCE/Zasor2/KeyBoard.pde | 197 | ||||
| -rw-r--r-- | SOURCE/Zasor2/LoadSetup.pde | 99 | ||||
| -rw-r--r-- | SOURCE/Zasor2/Mouse.pde | 201 | ||||
| -rw-r--r-- | SOURCE/Zasor2/OutReport.pde | 133 | ||||
| -rw-r--r-- | SOURCE/Zasor2/Visible.pde | 381 | ||||
| -rw-r--r-- | SOURCE/Zasor2/Zasor2.pde | 483 |
6 files changed, 1494 insertions, 0 deletions
diff --git a/SOURCE/Zasor2/KeyBoard.pde b/SOURCE/Zasor2/KeyBoard.pde new file mode 100644 index 0000000..4db56fa --- /dev/null +++ b/SOURCE/Zasor2/KeyBoard.pde @@ -0,0 +1,197 @@ +//***************************************************** +// данные с клавиатуры (нажатие) +void keyPressed() { + if (key == CODED) { + + if (keyCode == 122 && flagStab && data != 0) { + TimeString(); + input = 1; + inData[0] = ""; + inData[0] += dataTablo; + inData[10] = time; + } + + if (keyCode == 123 && inData[0] != "" && inData[1] != "" && inData[2] != "" + && inData[3] != "" && int(inData[5]) != 0) { + input = 2; + if (vis == 0) { + saveData1(); + } else { + saveData2(); + } + inputData = ""; + dataClear(); + } + + if (keyCode == 112) { + input = 3; + } + } + key = 0; +} +//***************************************************** +// данные с клавиатуры (отпускание) +void keyReleased() { + // Рабочий режим (work): + if (key == 'W' || key == 'Ц') { + flagOpen = true; + key = 0; + } + + if (key == 'R' || key == 'К') { + flagConfirm = true; + } + + if (key == 'L' || key == 'Д') { + if (flagConfirm) { + numberReport++; + writeSetup(); + dataSaveReport(); + flagOpen = false; + key = 0; + flagConfirm = false; + } + } + + if (key == 'Y' || key == 'Н' || key == 'y' || key == 'н') { + flagConfirm = false; + } + + if (vis != 0 && (key == 'D' || key == 'В')) { + for (int i = 0; i < m2; ++i) { + inData[i] = ""; + dataM1[vis - 1][i] = ""; + } + dataSave2next(); + key = 0; + } + + if (key == CODED) { + + if (keyCode == DOWN) { + workInputData(); + if (!flagMenu) { + place++; + if (place == 10) place = 9; + } else { + visMenu++; + if (place == 2) { + if (visMenu >= kamazy.length) visMenu = kamazy.length - 1; + } + if (place == 3) { + if (visMenu >= clients.length) visMenu = clients.length - 1; + } + } + inputData = inData[place]; + } + + if (keyCode == UP) { + workInputData(); + if (!flagMenu) { + place--; + if (place <= 0) place = 1; + } else { + visMenu--; + if (visMenu < 0) visMenu = 0; + } + inputData = inData[place]; + } + + if (keyCode == LEFT) { + workInputData(); + if (!flagMenu) { + place -= 4; + if (place <= 0) place = 1; + } else { + visMenu -= 4; + if (visMenu <= 0) visMenu = 0; + } + inputData = inData[place]; + } + + if (keyCode == RIGHT) { + workInputData(); + if (!flagMenu && (place == 2 || place == 3)) { + flagMenu = true; + visMenu = -4; + } + if (!flagMenu) { + place += 4; + if (place >= 9) place = 9; + } else { + visMenu += 4; + if (place == 2) { + if (visMenu >= kamazy.length - 1) visMenu = kamazy.length - 1; + } + if (place == 3) { + if (visMenu >= clients.length - 1) visMenu = clients.length - 1; + } + } + inputData = inData[place]; + } + + if (keyCode == 122 && + flagStab && data != 0) { // F11 - взвесить + input = 0; + } + + if (keyCode == 123) { // F12 - ок + input = 0; + } + + if (keyCode == 112) { // F1 - очистить + input = 3; + dataClear(); + input = 0; + vis = 0; + inData[1] = ""; + } + + key = 0; + } + + if (key > 31) { // ввод данных + if (place != 0) { + if (inputData.length() < 30) { + inputData += key; + } + } + flagMenu = false; + } + + if (key == 8) { // backspase + flagMenu = false; + if (inputData.length() >= 1) { + inputData = inputData.substring(0, inputData.length() - 1); + } + } + + if (key == 127) { // стереть все + inputData = ""; + flagMenu = false; + } + + if (key == 13 || key == 10) { // enter или return + workInputData(); + if (flagMenu && place == 2 && vis == 0) { + inData[2] = kamazy[visMenu]; + } + if (flagMenu && place == 3 && vis == 0) { + inData[3] = clients[visMenu]; + } + place++; + if (place < 11) { + inputData = inData[place]; + } else { + place = 0; + } + flagMenu = false; + } + + if (key == 9) { // вкл/выкл табло + println(vOff); + myPort.write(vOff); + flagTablo = !flagTablo; + place = 0; + } +} diff --git a/SOURCE/Zasor2/LoadSetup.pde b/SOURCE/Zasor2/LoadSetup.pde new file mode 100644 index 0000000..4fece46 --- /dev/null +++ b/SOURCE/Zasor2/LoadSetup.pde @@ -0,0 +1,99 @@ +//***************************************************** +// чтение файла настроек и данных +// все настройки, клиенты, камазы и 1 взвешивания = data/ + +void loadSetup() { + JSONArray values; + + // Считываем путь до папки с настройками из put/sourse.json: + try { + values = loadJSONArray(put + "source.json"); // = data/ + ... // Ядиск + for (int i = 0; i < values.size(); i++) { + JSONObject animal = values.getJSONObject(i); + filePath = animal.getString("filePath"); // адрес папки с Ядиск + println(filePath); + } + } + catch (Exception e) { + printFileLog("File 'source.json' - undetected"); + selectFolder("Select a folder to process:", "folderSelected"); + while (!flagWork) { + delay(100); + } + } + + values = new JSONArray(); + JSONObject animal = new JSONObject(); + animal.setString("filePath", filePath); + values.setJSONObject(0, animal); + saveJSONArray(values, "data/" + "source.json"); + + println("NEXT--->>>"); + + try { + values = loadJSONArray(filePath + "option.json"); // = data/Custom/ + ... + for (int i = 0; i < values.size(); i++) { + animal = values.getJSONObject(i); + serialPort = animal.getInt("COMport"); // номер COM порта + portSpeed = animal.getInt("portSpeed"); // скорость порта (9600) + lf = animal.getInt("numberScales"); // кол-во символов в посылке с весов + beginIn = animal.getInt("beginIn"); // начало значащих символов посылки + vIn = animal.getString("scalesIn"); // начало не значащих символов посылки + vOut = animal.getString("scalesOut"); // конец не значащих символов посылки + vOff = animal.getString("scalesOff"); // вся посылка полностью + //filePath = animal.getString("filePath"); // Ядиск + threshold = animal.getInt("threshold"); // нижний порог для обработки з2 + stab = animal.getInt("stabWeight"); // кол-во весовых посылок для "стабильного" веса + tara = animal.getInt("tara"); // минимальная тара камаза для % + protsUmolch = animal.getInt("protsUmolch"); // % засора по умолчанию + numberReport = animal.getInt("numberReport"); // порядковый номер отчета + } + } + catch (Exception e) { + printFileLog("File 'option.json' - undetected"); + System.exit(1); + } + + try { + values = loadJSONArray(filePath + "temp.json"); + for (int i = 0; i < values.size(); ++i) { + animal = values.getJSONObject(i); + dataM1[animal.getInt("id")][1] = "" + animal.getInt("zas2"); + dataM1[animal.getInt("id")][2] = animal.getString("nomer"); + dataM1[animal.getInt("id")][3] = animal.getString("client"); + dataM1[animal.getInt("id")][4] = animal.getString("object"); + dataM1[animal.getInt("id")][5] = "" + animal.getInt("price"); + dataM1[animal.getInt("id")][6] = "" + animal.getInt("prots"); + dataM1[animal.getInt("id")][7] = "" + animal.getInt("arenda"); + dataM1[animal.getInt("id")][8] = "" + animal.getInt("dopsor"); + dataM1[animal.getInt("id")][9] = animal.getString("note"); + dataM1[animal.getInt("id")][0] = "" + animal.getInt("ves"); + dataM1[animal.getInt("id")][10] = animal.getString("time"); + dataM1[animal.getInt("id")][11] = "" + animal.getInt("1/2"); + } + } + catch (Exception e) { + printFileLog("File 'temp.json' - undetected"); + System.exit(1); + } + + String[] temp; + temp = loadStrings(filePath + "kamazy.txt"); + if (temp == null) { + printFileLog("File 'kamazy.txt' - undetected"); + } else { + kamazy = temp; + } + + temp = loadStrings(filePath + "clients.txt"); + if (temp == null) { + printFileLog("File 'clients.txt' - undetected"); + } else { + clients = temp; + } + + for (int i = 0; i < m2; ++i) { + inData[i] = ""; + } + inData[6] = str(protsUmolch); +} diff --git a/SOURCE/Zasor2/Mouse.pde b/SOURCE/Zasor2/Mouse.pde new file mode 100644 index 0000000..2544fba --- /dev/null +++ b/SOURCE/Zasor2/Mouse.pde @@ -0,0 +1,201 @@ +//**************************************************** +void mousePressed() { + //--------------- + if ((mouseX > visClean[0]) && (mouseX < visClean[0] + visClean[2]) && + (mouseY > visClean[1]) && (mouseY < visClean[1] + visClean[3])) { + input = 3; + dataClear(); + inData[1] = ""; + inputData = ""; + flagProts = false; + flagConfirm = false; + } + //--------------- + if ((mouseX > visVes[0]) && (mouseX < visVes[0] + visVes[2]) && + (mouseY > visVes[1]) && (mouseY < visVes[1] + visVes[3]) && + flagStab && data != 0) { + TimeString(); + input = 1; + inData[0] = ""; + inData[0] += dataTablo; + inData[10] = time; + inputData = ""; + } + //--------------- + if ((mouseX > visOk[0]) && (mouseX < visOk[0] + visOk[2]) && + (mouseY > visOk[1]) && (mouseY < visOk[1] + visOk[3]) + && inData[0] != "" && inData[1] != "" && inData[2] != "" && inData[3] != "" + && int(inData[5]) != 0) { + input = 2; + if (vis == 0) { + saveData1(); + } else { + saveData2(); + } + inputData = ""; + dataClear(); + } + //--------------- + if ((mouseX > visZas2[0]+70) && (mouseX < visZas2[0] + visZas2[2] - 75) && + (mouseY > visZas2[1]) && (mouseY < visZas2[1] + visZas2[3])) { + workInputData(); + place = 1; + inputData = inData[place]; + } + if ((mouseX > visZas2[2]-60) && (mouseX < visZas2[0] + visZas2[2]) && + (mouseY > visZas2[1]) && (mouseY < visZas2[1] + visZas2[3])) { + workInputData(); + place = 11; + inputData = inData[place]; + } + if ((mouseX > visNom[0]+70) && (mouseX < visNom[0] + visNom[2]) && + (mouseY > visNom[1]) && (mouseY < visNom[1] + visNom[3])) { + workInputData(); + place = 2; + inputData = inData[place]; + } + if ((mouseX > visCl[0]+70) && (mouseX < visCl[0] + visCl[2]) && + (mouseY > visCl[1]) && (mouseY < visCl[1] + visCl[3])) { + workInputData(); + place = 3; + inputData = inData[place]; + } + if ((mouseX > visObj[0]+70) && (mouseX < visObj[0] + visObj[2]) && + (mouseY > visObj[1]) && (mouseY < visObj[1] + visObj[3])) { + workInputData(); + place = 4; + inputData = inData[place]; + } + if ((mouseX > visPrice[0]+70) && (mouseX < visPrice[0] + visPrice[2]) && + (mouseY > visPrice[1]) && (mouseY < visPrice[1] + visPrice[3])) { + workInputData(); + place = 5; + inputData = inData[place]; + } + if ((mouseX > visProts[0]+70) && (mouseX < visProts[0] + visProts[2]) && + (mouseY > visProts[1]) && (mouseY < visProts[1] + visProts[3])) { + workInputData(); + place = 6; + inputData = inData[place]; + } + if ((mouseX > visAren[0]+70) && (mouseX < visAren[0] + visAren[2]) && + (mouseY > visAren[1]) && (mouseY < visAren[1] + visAren[3])) { + workInputData(); + place = 7; + inputData = inData[place]; + } + if ((mouseX > visDopS[0]+70) && (mouseX < visDopS[0] + visDopS[2]) && + (mouseY > visDopS[1]) && (mouseY < visDopS[1] + visDopS[3])) { + workInputData(); + place = 8; + inputData = inData[place]; + } + if ((mouseX > visDopN[0]+70) && (mouseX < visDopN[0] + visDopN[2]) && + (mouseY > visDopN[1]) && (mouseY < visDopN[1] + visDopN[3])) { + workInputData(); + place = 9; + inputData = inData[place]; + } + //--------------- + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1]) && (mouseY < visVzw1[1] + visVzw1[3])) { + if (int(dataM1[0][0]) == 0) { + vis = 0; + } else { + vis = 1; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1] + 30) && (mouseY < visVzw1[1] + visVzw1[3] + 30)) { + if (int(dataM1[1][0]) == 0) { + vis = 0; + } else { + vis = 2; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1] + 60) && (mouseY < visVzw1[1] + visVzw1[3] + 60)) { + if (int(dataM1[2][0]) == 0) { + vis = 0; + } else { + vis = 3; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1] + 90) && (mouseY < visVzw1[1] + visVzw1[3] + 90)) { + if (int(dataM1[3][0]) == 0) { + vis = 0; + } else { + vis = 4; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1] + 120) && (mouseY < visVzw1[1] + visVzw1[3] + 120)) { + if (int(dataM1[4][0]) == 0) { + vis = 0; + } else { + vis = 5; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1] + 150) && (mouseY < visVzw1[1] + visVzw1[3] + 150)) { + if (int(dataM1[5][0]) == 0) { + vis = 0; + } else { + vis = 6; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visZas2[0]) && (mouseX < visZas2[0] + visZas2[2] - 150) && + (mouseY > visZas2[1]) && (mouseY < visZas2[1] + visZas2[3])) { + flagProts = !flagProts; + } +} + +//**************************************************** +void mouseReleased() { + if ((mouseX > visTablo[0]) && (mouseX < visTablo[0] + visTablo[2]) && + (mouseY > visTablo[1]) && (mouseY < visTablo[1] + visTablo[3])) { + myPort.write(vOff); + flagTablo = !flagTablo; + //vis = 0; + } + //--------------- + if ((mouseX > visClean[0]) && (mouseX < visClean[0] + visClean[2]) && + (mouseY > visClean[1]) && (mouseY < visClean[1] + visClean[3])) { + input = 0; + vis = 0; + inData[1] = ""; + } + if ((mouseX > visVes[0]) && (mouseX < visVes[0] + visVes[2]) && + (mouseY > visVes[1]) && (mouseY < visVes[1] + visVes[3])) { + input = 0; + } + if ((mouseX > visOk[0]) && (mouseX < visOk[0] + visOk[2]) && + (mouseY > visOk[1]) && (mouseY < visOk[1] + visOk[3])) { + input = 0; + } +} diff --git a/SOURCE/Zasor2/OutReport.pde b/SOURCE/Zasor2/OutReport.pde new file mode 100644 index 0000000..6862e5b --- /dev/null +++ b/SOURCE/Zasor2/OutReport.pde @@ -0,0 +1,133 @@ +// работа над числом для вывода + +float workNumber(float v) { + if (int(v * 1000) % 10 >= 5) { + v = int(v * 100 + 1) / 100.0; + } else { + v = int(v * 100) / 100.0; + } + return v; +} + +//***************************************************** +// Формирование отчета данных + +String outReport() { + table = loadTable(filePath + "base.csv", "header"); + String out = ""; + + int sumN1 = 0; + int sumN = 0; + int sumChist = 0; + int sumArenda = 0; + int sumDopSor = 0; + int sumSum = 0; + + String[] arrClients = {}; + for (TableRow row : table.rows()) { + arrClients = append(arrClients, row.getString("client").toLowerCase()); + int n1 = row.getInt(9) - row.getInt(10) - row.getInt(12) + row.getInt(13); + int n = row.getInt(9) - row.getInt(12) + row.getInt(17) / 2; + int chist = int(row.getInt(9) - row.getInt(12) - (row.getInt(9) - row.getInt(12)) / 100.0 * + row.getInt(7) - row.getInt(15) + row.getInt(17) / 2); + int sum = chist * row.getInt(6) / 1000; + + sumN1 += n1; + sumN += n; + sumChist += chist; + sumArenda += row.getInt(14); + sumDopSor += row.getInt(15); + sumSum += sum; + } + + out += "\nВсего взвешиваний: " + table.getRowCount(); + out += "\n\nКам / ДС\n"; + out += workNumber(sumArenda / 1000.0) + " / " + workNumber(sumDopSor / 1000.0) + "\n\n"; + out += "% / з2 / %\n"; + out += workNumber((sumN - sumChist - sumDopSor) / float(sumN) * 100) + " / "; + out += workNumber((sumN1 - sumN) / 1000.0) + " / "; + out += workNumber((sumN1 - sumChist) / float(sumN1) * 100) + "\n\n"; + out += "Н1 / Н\n"; + out += workNumber(sumN1 / 1000.0) + " / " + workNumber(sumN / 1000.0) + "\n\n"; + out += "Ч / Сум / Средн\n"; + out += workNumber(sumChist / 1000.0) + " / " + workNumber(sumSum / 1000.0) + " / "; + out += int(workNumber(float(sumSum) / sumChist * 1000)) + "\n\n"; + + int sumKamazy = 0; + int sumKamEach = 0; + //boolean flagTemp = false; + out += "---------------------\n\n"; + + for (int k = 0; k < kamazy.length; ++k) { + //if (kamazy[k].charAt(0) == '_' && !flagTemp) { + // out += "\n---------------------\nКамазы: " + + // workNumber(sumKamazy / 1000.0) + "т.\n\n"; + // flagTemp = true; + //} + for (TableRow row : table.findRows(kamazy[k], "nomer")) { + sumKamEach += row.getInt(9) - row.getInt(12) - int((row.getInt(9) - + row.getInt(12)) / 100.0 * row.getInt(7)) - row.getInt(15) + row.getInt(17); + } + String j = ""; + if (kamazy[k].charAt(0) != '_' && sumKamEach == 0) { + out += ""; + } else { + if (sumKamEach != 0) j += workNumber(sumKamEach / 1000.0); + out += kamazy[k] + " - " + j + "\n"; + } + if (kamazy[k].charAt(0) == '_') sumKamazy += sumKamEach; + sumKamEach = 0; + } + out += "---------------------\nКамазы: " + workNumber(sumKamazy / 1000.0) + " т.\n"; + out += "\n---------------------\n"; + + String[] arrClientsUnic = {arrClients[0]}; + int countU = 0; + for (int a = 0; a < arrClients.length; ++a) { + for (int r = 0; r < arrClientsUnic.length; ++r) { + if (arrClients[a].equals(arrClientsUnic[r])) { + countU = 0; + break; + } else { + countU++; + } + } + if (countU != 0) arrClientsUnic = append(arrClientsUnic, arrClients[a]); + } + arrClientsUnic = sort(arrClientsUnic); + + int sumClientEach = 0; + int priceClient = 0; + + for (int k = 0; k < arrClientsUnic.length; ++k) { + for (TableRow row : table.findRows(arrClientsUnic[k], "client")) { + sumClientEach += row.getInt(9) - row.getInt(12) - int((row.getInt(9) - + row.getInt(12)) / 100.0 * row.getInt(7)) - row.getInt(15) + row.getInt(17); + priceClient = row.getInt(6); + } + if (sumClientEach == 0) { + out += ""; + } else { + out += workNumber(sumClientEach / 1000.0) + " \t- " + priceClient / 1000.0 + "\t- " + arrClientsUnic[k] + "\n"; + } + sumClientEach = 0; + } + return out; +} + +//***************************************************** +// Запись в файл лога: +void printFileLog(String dataLog) { + TimeString(); + + String[] lines = {}; + if (loadStrings(filePathLog) == null) { + saveStrings(put + filePathLog, lines); + lines = loadStrings(filePathLog); + } + loadStrings(filePathLog); + lines = append(lines, timeReport + "_" + timeArh + " z2 " + dataLog); + saveStrings(put + filePathLog, lines); +} + +//***************************************************** diff --git a/SOURCE/Zasor2/Visible.pde b/SOURCE/Zasor2/Visible.pde new file mode 100644 index 0000000..0d112b7 --- /dev/null +++ b/SOURCE/Zasor2/Visible.pde @@ -0,0 +1,381 @@ +// отображение +// Режим рабочий: +void visible() { + // основной верхний и нижний контур + strokeWeight(3); + fill(#CFCFCF); + rect(4, 3, 394, 338, fillet); + rect(4, 348, 394, 188, fillet); + + strokeWeight(1.2); + // табло + if (!flagTablo) { + fill(#00FF7F); + rect(visTablo[0], visTablo[1], visTablo[2], visTablo[3], fillet); + fill(255, 0, 0); + } else { + fill(255, 0, 0); + rect(visTablo[0], visTablo[1], visTablo[2], visTablo[3], fillet); + fill(#00FF7F); + } + rect(visTablo[0]+4, visTablo[1]+4, visTablo[2]-8, visTablo[3]-8, fillet); + fill(0); + textSize(50); + text(dataTablo, visTablo[0] + 32, visTablo[1] + 58); + textSize(12); + text(numberReport, visTablo[0] + 10, visTablo[1] + 20); + textSize(10); + text(data, visTablo[0] + 10, visTablo[1] + 72); + + + fill(#1E90FF); + rect(visVzw[0], visVzw[1], visVzw[2], visVzw[3], fillet + 5); + textSize(40); + fill(255); + text(inData[0], visVzw[0] + 10, visVzw[1] + 50); + + if (place == 1) { + fill(255); + rect(visZas2[0], visZas2[1], visZas2[2] - 75, visZas2[3], fillet); + fill(150, 50, 255); + if (flagProts) fill(255, 150, 150); + rect(visZas2[0], visZas2[1], visZas2[2] - 150, visZas2[3], fillet); + fill(255); + rect(visZas2[0] + 3, visZas2[1] + 3, visZas2[2] - 156, visZas2[3] - 6, fillet); + fill(0); + textSize(16); + text(inputData, visZas2[0] + 85, visZas2[1] + 21); + } else { + fill(#FFD700); + rect(visZas2[0], visZas2[1], visZas2[2] - 75, visZas2[3], fillet); + rect(visZas2[2] - 60, visZas2[1], 70, visZas2[3], fillet); + fill(150, 50, 255); + if (flagProts) fill(255, 150, 150); + rect(visZas2[0], visZas2[1], visZas2[2] - 150, visZas2[3], fillet); + fill(#FFD700); + rect(visZas2[0] + 3, visZas2[1] + 3, visZas2[2] - 156, visZas2[3] - 6, fillet); + fill(0); + textSize(16); + text(inData[1], visZas2[0] + 85, visZas2[1] + 21); + } + + if (place == 11) { + fill(255); + rect(visZas2[2] - 60, visZas2[1], 70, visZas2[3], fillet); + fill(0); + textSize(16); + text(inputData, visZas2[2] - 45, visZas2[1] + 21); + } else { + fill(#FFD700); + rect(visZas2[2] - 60, visZas2[1], 70, visZas2[3], fillet); + fill(0); + textSize(16); + text(inData[11], visZas2[2] - 45, visZas2[1] + 21); + } + + fill(0); + textSize(16); + String a = (!flagProts) ? "кг" : " %"; + text(a, visZas2[0] + 27, visZas2[1] + 21); + + if (place == 2) { + fill(255); + rect(visNom[0], visNom[1], visNom[2], visNom[3], fillet); + rect(visNom[0], visNom[1], visNom[2] - 150, visNom[3], fillet); + textSize(16); + fill(0); + textSize(16); + text(inputData, visNom[0] + 80, visNom[1] + 21); + } else { + fill(#FFD700); + rect(visNom[0], visNom[1], visNom[2], visNom[3], fillet); + rect(visNom[0], visNom[1], visNom[2] - 150, visNom[3], fillet); + textSize(16); + fill(0); + textSize(16); + text(inData[2], visNom[0] + 80, visNom[1] + 21); + } + fill(0); + textSize(14); + text("Номер", visNom[0] + 13, visNom[1] + 21); + + if (place == 3) { + fill(255); + rect(visCl[0], visCl[1], visCl[2], visCl[3], fillet); + rect(visCl[0], visCl[1], visCl[2] - 150, visCl[3], fillet); + fill(0); + textSize(16); + text(inputData, visCl[0] + 80, visCl[1] + 21); + } else { + fill(#DDA0DD); + rect(visCl[0], visCl[1], visCl[2], visCl[3], fillet); + rect(visCl[0], visCl[1], visCl[2] - 150, visCl[3], fillet); + fill(0); + textSize(16); + text(inData[3], visCl[0] + 80, visCl[1] + 21); + } + fill(0); + textSize(14); + text("Клиент", visCl[0] + 9, visCl[1] + 21); + + if (place == 4) { + fill(255); + rect(visObj[0], visObj[1], visObj[2], visObj[3], fillet); + rect(visObj[0], visObj[1], visObj[2] - 150, visObj[3], fillet); + fill(0); + textSize(16); + text(inputData, visObj[0] + 80, visObj[1] + 21); + } else { + fill(#DDA0DD); + rect(visObj[0], visObj[1], visObj[2], visObj[3], fillet); + rect(visObj[0], visObj[1], visObj[2] - 150, visObj[3], fillet); + fill(0); + textSize(16); + text(inData[4], visObj[0] + 80, visObj[1] + 21); + } + fill(0); + textSize(14); + text("Объект", visObj[0] + 9, visObj[1] + 21); + + if (place == 5) { + fill(255); + rect(visPrice[0], visPrice[1], visPrice[2], visPrice[3], fillet); + rect(visPrice[0], visPrice[1], visPrice[2] - 85, visPrice[3], fillet); + fill(0); + textSize(16); + text(inputData, visPrice[0] + 85, visPrice[1] + 21); + } else { + fill(#FFE4C4); + rect(visPrice[0], visPrice[1], visPrice[2], visPrice[3], fillet); + rect(visPrice[0], visPrice[1], visPrice[2] - 85, visPrice[3], fillet); + fill(0); + textSize(16); + text(inData[5], visPrice[0] + 85, visPrice[1] + 21); + } + fill(0); + textSize(14); + text("Цена", visPrice[0] + 16, visPrice[1] + 21); + + if (place == 6) { + fill(255); + rect(visProts[0], visProts[1], visProts[2], visProts[3], fillet); + rect(visProts[0], visProts[1], visProts[2] - 85, visProts[3], fillet); + fill(0); + textSize(16); + text(inputData, visProts[0] + 105, visProts[1] + 21); + } else { + fill(#FFE4C4); + rect(visProts[0], visProts[1], visProts[2], visProts[3], fillet); + rect(visProts[0], visProts[1], visProts[2] - 85, visProts[3], fillet); + fill(0); + textSize(16); + text(inData[6], visProts[0] + 105, visProts[1] + 21); + } + fill(0); + textSize(14); + text("Засор", visProts[0] + 16, visProts[1] + 21); + + if (place == 7) { + fill(255); + rect(visAren[0], visAren[1], visAren[2], visAren[3], fillet); + rect(visAren[0], visAren[1], visAren[2] - 85, visAren[3], fillet); + fill(0); + textSize(16); + text(inputData, visAren[0] + 90, visAren[1] + 21); + } else { + fill(#32CD32); + rect(visAren[0], visAren[1], visAren[2], visAren[3], fillet); + rect(visAren[0], visAren[1], visAren[2] - 85, visAren[3], fillet); + fill(0); + textSize(16); + text(inData[7], visAren[0] + 90, visAren[1] + 21); + } + fill(0); + textSize(14); + text("Аренда", visAren[0] + 9, visAren[1] + 21); + + if (place == 8) { + fill(255); + rect(visDopS[0], visDopS[1], visDopS[2], visDopS[3], fillet); + rect(visDopS[0], visDopS[1], visDopS[2] - 85, visDopS[3], fillet); + fill(0); + textSize(16); + text(inputData, visDopS[0] + 95, visDopS[1] + 21); + } else { + fill(#FF8C69); + rect(visDopS[0], visDopS[1], visDopS[2], visDopS[3], fillet); + rect(visDopS[0], visDopS[1], visDopS[2] - 85, visDopS[3], fillet); + fill(0); + textSize(16); + text(inData[8], visDopS[0] + 95, visDopS[1] + 21); + } + fill(0); + textSize(14); + text("ДопСор", visDopS[0] + 8, visDopS[1] + 21); + + if (place == 9) { + fill(255); + rect(visDopN[0], visDopN[1], visDopN[2], visDopN[3], fillet); + rect(visDopN[0], visDopN[1], visDopN[2] - 310, visDopN[3], fillet); + fill(0); + textSize(16); + text(inputData, visDopN[0] + 80, visDopN[1] + 21); + } else { + fill(#FF8C69); + rect(visDopN[0], visDopN[1], visDopN[2], visDopN[3], fillet); + rect(visDopN[0], visDopN[1], visDopN[2] - 310, visDopN[3], fillet); + fill(0); + textSize(16); + text(inData[9], visDopN[0] + 80, visDopN[1] + 21); + } + fill(0); + textSize(14); + text("Прим.", visDopN[0] + 14, visDopN[1] + 21); + //-------------------- + stroke(0); + if (input == 3) { + fill(0); + rect(visClean[0], visClean[1], visClean[2], visClean[3], fillet + 5); + rect(visClean[0] + 9, visClean[1] + 9, visClean[2] - 18, visClean[3] - 18, fillet + 5); + place = 0; + } else { + fill(#836FFF); + rect(visClean[0], visClean[1], visClean[2], visClean[3], fillet + 5); + rect(visClean[0]+3, visClean[1]+3, visClean[2]-3*2, visClean[3]-3*2, fillet + 5); + } + fill(255); + textSize(24); + text("C", visClean[0] + 11, visClean[1] + 29); + + stroke(0); + if (input == 1) { + fill(0); + rect(visVes[0] + 6, visVes[1] + 6, visVes[2] - 12, visVes[3] - 12, fillet + 5); + rect(visVes[0] + 9, visVes[1] + 9, visVes[2] - 18, visVes[3] - 18, fillet + 5); + place = 0; + } else { + if (flagStab && data != 0) { + fill(#228B22); + } else { + fill(255, 0, 0); + } + rect(visVes[0], visVes[1], visVes[2], visVes[3], fillet + 5); + rect(visVes[0] + 3, visVes[1] + 3, visVes[2] - 6, visVes[3] - 6, fillet + 5); + } + fill(255); + textSize(24); + text("Взвесить", visVes[0] + 40, visVes[1] + 28); + + stroke(0); + if (input == 2) { + fill(0); + rect(visOk[0] + 6, visOk[1] + 6, visOk[2] - 12, visOk[3] - 12, fillet + 5); + rect(visOk[0] + 9, visOk[1] + 9, visOk[2] - 18, visOk[3] - 18, fillet + 5); + place = 0; + } else { + if (inData[0] != "" && inData[1] != "" && inData[2] != "" && inData[3] != "" + && int(inData[5]) != 0) { + fill(#54FF9F); + } else { + fill(#BC8F8F); + } + rect(visOk[0], visOk[1], visOk[2], visOk[3], fillet + 5); + rect(visOk[0] + 3, visOk[1] + 3, visOk[2] - 6, visOk[3] - 6, fillet + 5); + } + fill(255); + textSize(24); + text("Oк", visOk[0] + 37, visOk[1] + 28); + //-------------------- + for (int i = 0; i < m1; ++i) { + stroke(1); + fill(#00BFFF); + if (vis - 1 == i) fill(255); + rect(visVzw1[0], visVzw1[1] + 30 * i, visVzw1[2], visVzw1[3]); + rect(visVzw1[0] + 100, visVzw1[1] + 30 * i, visVzw1[2] - 270, visVzw1[3]); + rect(visVzw1[0] + 300, visVzw1[1] + 30 * i, visVzw1[2] - 300, visVzw1[3]); + fill(0); + textSize(12); + + text(dataM1[i][2], visVzw1[0] + 18, visVzw1[1] + 30 * i + 17); + text(dataM1[i][3], visVzw1[0] + 110, visVzw1[1] + 30 * i + 17); + if (int(dataM1[i][0]) != 0) { + text(dataM1[i][0], visVzw1[0] + 235, visVzw1[1] + 30 * i + 17); + } else { + text("", visVzw1[0] + 235, visVzw1[1] + 30 * i + 17); + } + if (int(dataM1[i][1]) != 0) { + text(dataM1[i][1], visVzw1[0] + 320, visVzw1[1] + 30 * i + 17); + } else { + text("", visVzw1[0] + 320, visVzw1[1] + 30 * i + 17); + } + } + + if (place == 2 && flagMenu) { + strokeWeight(3); + fill(255); + rect(menu[0], menu[1] + 30, menu[2], kamazy.length * offsetMenu, fillet); + strokeWeight(1); + for (int m = 0; m < kamazy.length; ++m) { + fill(0, 255, 0); + if (visMenu != m) fill(255); + rect(menu[0], menu[1] + offsetMenu * m + 30, menu[2], offsetMenu, fillet); + fill(0); + textSize(15); + text(kamazy[m], menu[0] + 20, menu[1] + offsetMenu * (m + 1) - 7 + 30); + } + } + + if (place == 3 && flagMenu) { + strokeWeight(3); + fill(255); + rect(menu[0], menu[1] - 8, menu[2], clients.length * offsetMenu, fillet); + strokeWeight(1); + for (int m = 0; m < clients.length; ++m) { + fill(0, 255, 0); + if (visMenu != m) fill(255); + rect(menu[0], menu[1] + offsetMenu * m - 8, menu[2], offsetMenu, fillet); + fill(0); + textSize(15); + text(clients[m], menu[0] + 15, menu[1] - 8 + offsetMenu * (m + 1) - 7); + } + } + + if (flagConfirm) { + fill(255); + strokeWeight(3); + fill(84, 255, 159); + rect(50, 50, 300, 200, fillet); + textSize(25); + fill(0); + text("Отправить отчет ?", 90, 110); + fill(255); + rect(210, 145, 45, 35, fillet); + rect(210, 195, 45, 35, fillet); + fill(0); + textSize(20); + text("Да - Д", 155, 170); + text("Нет - Н", 145, 220); + } +} + +//***************************************************** +void visible2() { + if (focused) { + fill(0, 255, 0); + textSize(125); + rect(1, 1, 398, 199); + fill(0); + text(dataTablo, 3, 150); + textSize(22); + text("[" + serialPort + "] - " + Serial.list()[serialPort], 10, 500); + } else { + background(0); + fill(0, 0, 255); + textSize(125); + rect(1, 1, 398, 199); + fill(255); + text(dataTablo, 3, 150); + textSize(22); + text("[" + serialPort + "] - " + Serial.list()[serialPort], 10, 500); + } +} diff --git a/SOURCE/Zasor2/Zasor2.pde b/SOURCE/Zasor2/Zasor2.pde new file mode 100644 index 0000000..8f5b4e9 --- /dev/null +++ b/SOURCE/Zasor2/Zasor2.pde @@ -0,0 +1,483 @@ +//******************************************************************* +// Zasor2 +// 2020.09.21 - 2025.02.16 +// v. 1067 +//******************************************************************* +import processing.serial.*; + +//PFont myFont; + +Serial myPort; // The serial portSerial myPort; +int lf; // кол-во знаков в посылке с весов +int serialPort; // порядковый номер Serial порта +int portSpeed; // скорость Serial порта +int beginIn; // начало данных в посылке с весов +String vIn; // начало посылки с весов (текст) +String vOut; // конец посылки с весов (текст) +String vOff; // весы выключены (текст) +String filePath; // путь для сохранения файла +int threshold; // порог веса +int stab; // кол-во повторяющихся данных с весов +int tara; // тара а/м для % +int protsUmolch; // % по умолчанию +int numberReport; // номер отчета в году (месяце и тд) + +// Переменные: +int data = 0; // данные с весов +int dataTemp = 0; +String time, timeArh, timeMonth, timeDate, timeExc, timeReport; +String inputData = ""; +boolean flagTablo = false; +boolean flagProts = false; +int place = 0; +int input = 0; +int stabTemp = 0; +boolean flagWork = false; +boolean flagStab = false; +boolean flagWeight = true; +boolean flagVzw = false; +int dataCorProts = 0; +int dataTablo = 0; +int onTime = 0; +int click = 500; +boolean flagButOn = false; + +String put = "data/"; // путь для сохранения файла настроек +String filePathLog = "LogFile.txt"; +PrintWriter outputCrash; // объект output (для файла) + +int fillet = 5; // скругление +int[] visTablo = {10, 10, 220, 80}; +int[] visVzw = {240, 15, 147, 70}; + +int[] visZas2 = {10, 110, 220, 30}; +int[] visNom = {10, 145, 220, 30}; +int[] visCl = {10, 180, 220, 30}; +int[] visObj = {10, 215, 220, 30}; +int[] visDopN = {10, 250, 382, 30}; + +int[] visPrice = {235, 110, 157, 30}; +int[] visProts = {235, 145, 157, 30}; +int[] visAren = {235, 180, 157, 30}; +int[] visDopS = {235, 215, 157, 30}; + +int[] visClean = {20, 290, 40, 40}; +int[] visVes = {80, 290, 180, 40}; +int[] visOk = {270, 290, 112, 40}; +int[] visVzw1 = {10, 355, 382, 25}; + +int[] menu = {235, 15, 157, 497}; +int offsetMenu = 25; +int inputMenu = 0; +int visMenu = 0; +boolean flagMenu = false; + +boolean flagConfirm = false; + +String[] kamazy; +String[] clients; + +int m1 = 6; // кол-во первых взвешиваний +int m2 = 15; // кол-во данных о первых взвешиваниях (номер, вес, корр) +String[][] dataM1 = new String[m1][m2]; +String[] dataM2 = new String[m2]; +String[] inData = new String[m2]; +int vis = 0; + +Table table; +boolean flagOpen = false; + +//***************************************************** +void setup() { + //myFont = createFont("Arial", 12); + //textFont(myFont); + printArray(Serial.list()); + loadSetup(); + size(403, 542); + try { + myPort = new Serial(this, Serial.list()[serialPort], portSpeed); + myPort.bufferUntil(lf); + myPort.write(vOff); + } + catch (Exception e) { + TimeString(); + String lines = "COMport = " + serialPort + " - does not exist"; + printFileLog(lines); + + strokeWeight(3); + fill(#CFCFCF); + rect(4, 3, 394, 338, fillet); + rect(4, 348, 394, 188, fillet); + fill(255, 0, 0); + textSize(24); + text("COM ( " + serialPort + " ) НЕ НАЙДЕН !", 60, 158); + + stop(); + } +} + +//***************************************************** +void draw() { + background(#CFCFCF); + if (flagOpen) { + visible(); + if (flagTablo && flagWeight) tabloVisible(); + } else { + visible2(); + if (flagWeight) tabloVisible(); + } +} + +//***************************************************** +// выбор папки с файлами: +void folderSelected(File selection) { + if (selection == null) { + println("Window was closed or the user hit cancel."); + stop(); + System.exit(1); + } else { + filePath = selection.getAbsolutePath() + "/"; + filePath = filePath.replace("\\", "/"); + println(filePath); + flagWork = true; + } +} + +//***************************************************** +// данные с Serial +void serialEvent(Serial p) { + data = int(p.readString().substring(beginIn, beginIn + 6)); + if (data != dataTemp) { + dataTemp = data; + stabTemp = 0; + flagStab = false; + } else { + stabTemp++; + if (stabTemp == stab) { + flagStab = true; + stabTemp = 0; + } + } + if (data > threshold) { + if (flagProts && data > tara + 1000) { + dataTablo = data + (data - tara) / 100 * int(inData[1]) / 10 * 10; + dataCorProts = (data - tara) / 100 * int(inData[1]) / 10 * 10; + } else { + dataTablo = data + int(inData[1]); + dataCorProts = int(inData[1]); + } + } else { + dataTablo = data; + } + flagWeight = true; +} + +//***************************************************** +// запись файла настроек +void writeSetup() { + JSONArray values; + values = new JSONArray(); + JSONObject animal = new JSONObject(); + animal.setInt("COMport", serialPort); + animal.setInt("portSpeed", portSpeed); + animal.setInt("numberScales", lf); + animal.setInt("beginIn", beginIn); + animal.setString("scalesIn", vIn); + animal.setString("scalesOut", vOut); + animal.setString("scalesOff", vOff); + animal.setString("filePath", filePath); + animal.setInt("threshold", threshold); + animal.setInt("stabWeight", stab); + animal.setInt("tara", tara); + animal.setInt("protsUmolch", protsUmolch); + animal.setInt("numberReport", numberReport); + + values.setJSONObject(0, animal); + saveJSONArray(values, filePath + "option.json"); +} +//***************************************************** +// вывод времени +void TimeString() { + String D = ""; + String H = ""; + String M = ""; + String S = ""; + String Y = ""; + String N = ""; + Y += year(); + N += (month() < 10) ? "0" + month() : month(); + D += (day() < 10) ? "0" + day() : day(); + H += (hour() < 10) ? "0" + hour() : hour(); + M += (minute() < 10) ? "0" + minute() : minute(); + S += (second() < 10) ? "0" + second() : second(); + time = H + ":" + M + ":" + S; + timeArh = H + M + S; + timeMonth = N; + timeDate = D; + timeExc = D + "_" + H + ":" + M + ":" + S; + timeReport = Y + N + "_" + D; +} + +//**************************************************** +// обработчик inputData +void workInputData() { + if (place == 1 && !flagProts) { + inData[1] = ""; + inData[1] += int(inputData) / 10 * 10; + } else + if (place == 5) { + inData[5] = ""; + inData[5] += int(inputData) / 100 * 100; + } else if (place == 5) { + inData[5] = ""; + inData[5] += int(inputData) / 100 * 100; + } else if (place == 6) { + inData[6] = ""; + inData[6] += int(inputData); + } else if (place == 7) { + inData[7] = ""; + inData[7] += int(inputData) / 10 * 10; + } else if (place == 8) { + inData[8] = ""; + inData[8] += int(inputData) / 10 * 10; + } else if (place == 11) { + inData[11] = ""; + inData[11] += int(inputData) / 10 * 10; + } else if (place != 0) inData[place] = inputData; +} + +//**************************************************** +// +void dataIn(int a) { + //TimeString(); + inData[0] = ""; + //inData[1] = ""; + inData[2] = dataM1[a-1][2]; + inData[3] = dataM1[a-1][3]; + inData[4] = dataM1[a-1][4]; + inData[5] = dataM1[a-1][5]; + inData[6] = dataM1[a-1][6]; + inData[7] = dataM1[a-1][7]; + inData[8] = dataM1[a-1][8]; + inData[9] = dataM1[a-1][9]; + inData[12] = dataM1[a-1][10]; + inData[11] = dataM1[a-1][11]; + + //time = ""; +} + +//***************************************************** +// вывод веса на табло +void tabloVisible() { + String temp = ""; + temp += vIn + nf(dataTablo, 5) + vOut; + myPort.write(temp); + flagWeight = false; + println(temp + "\t" + int(inData[1]) + "\t" + place + "\t" + + inputData + "\t" + numberReport); +} +//***************************************************** +// запись данных 1 взвешивания +void saveData1() { + TimeString(); + if (vis == 0) { + for (int k = m1 - 1; k > 0; --k) { + for (int n = 0; n < m2; ++n) { + dataM1[k][n] = dataM1[k - 1][n]; + } + } + dataM1[0][0] = inData[0]; + if (flagProts) { + dataM1[0][1] = ""; + dataM1[0][1] += dataCorProts; + } else { + dataM1[0][1] = inData[1]; + } + dataM1[0][2] = inData[2]; + dataM1[0][3] = inData[3]; + dataM1[0][4] = inData[4]; + dataM1[0][5] = inData[5]; + dataM1[0][6] = inData[6]; + dataM1[0][7] = inData[7]; + dataM1[0][8] = inData[8]; + dataM1[0][9] = inData[9]; + dataM1[0][10] = inData[10]; + dataM1[0][11] = inData[11]; + vis = 0; + place = 0; + + JSONArray values; + values = new JSONArray(); + for (int a = 0; a < m1; ++a) { + JSONObject animal = new JSONObject(); + animal.setInt("id", a); + animal.setInt("zas2", int(dataM1[a][1])); + animal.setString("nomer", dataM1[a][2]); + animal.setString("client", dataM1[a][3]); + animal.setString("object", dataM1[a][4]); + animal.setInt("price", int(dataM1[a][5])); + animal.setInt("prots", int(dataM1[a][6])); + animal.setInt("arenda", int(dataM1[a][7])); + animal.setInt("dopsor", int(dataM1[a][8])); + animal.setString("note", dataM1[a][9]); + animal.setInt("ves", int(dataM1[a][0])); + animal.setInt("1/2", int(dataM1[a][11])); + animal.setString("time", dataM1[a][10]); + values.setJSONObject(a, animal); + } + saveJSONArray(values, filePath + "temp.json"); + time = ""; + } +} +//**************************************************** +// запись данных 2 взвешивания +void saveData2() { + TimeString(); + + dataM2[0] = dataM1[vis-1][0]; + dataM2[1] = dataM1[vis-1][1]; + dataM2[2] = inData[2]; + dataM2[3] = inData[3]; + dataM2[4] = inData[4]; + dataM2[5] = inData[5]; + dataM2[6] = inData[6]; + dataM2[7] = inData[7]; + dataM2[8] = inData[8]; + dataM2[9] = inData[9]; + dataM2[10] = time; // dataM1[vis-1][10]; + dataM2[11] = inData[0]; + dataM2[12] = inData[11]; + + if (flagProts) { + dataM2[13] = ""; + dataM2[13] += dataCorProts; + } else { + dataM2[13] = inData[1]; + } + + dataSave2next(); + dataSave2next2(); +} +//**************************************************** +void dataSave2next() { + for (int k = vis-1; k < m1-1; ++k) { + for (int n = 0; n < m2; ++n) { + dataM1[k][n] = dataM1[k+1][n]; + } + } + for (int i = 0; i < m2; ++i) { + dataM1[m1-1][i] = ""; + } + vis = 0; + + JSONArray values; + values = new JSONArray(); + for (int a = 0; a < m1; ++a) { + JSONObject animal = new JSONObject(); + //animal.setInt("id_R", numberReport); + animal.setInt("id", a); + animal.setInt("zas2", int(dataM1[a][1])); + animal.setString("nomer", dataM1[a][2]); + animal.setString("client", dataM1[a][3]); + animal.setString("object", dataM1[a][4]); + animal.setInt("price", int(dataM1[a][5])); + animal.setInt("prots", int(dataM1[a][6])); + animal.setInt("arenda", int(dataM1[a][7])); + animal.setInt("dopsor", int(dataM1[a][8])); + animal.setString("note", dataM1[a][9]); + animal.setInt("ves", int(dataM1[a][0])); + animal.setString("time", dataM1[a][10]); + animal.setInt("1/2", int(dataM1[a][11])); + values.setJSONObject(a, animal); + } + saveJSONArray(values, filePath + "temp.json"); +} +//**************************************************** +void dataSave2next2() { + table = loadTable(filePath + "base.csv", "header"); + + TableRow newRow = table.addRow(); + //newRow.setInt("id_R", numberReport); + newRow.setInt("date", int(timeDate)); + newRow.setInt("id", table.getRowCount()); + newRow.setString("nomer", dataM2[2]); + newRow.setString("client", dataM2[3].toLowerCase()); + newRow.setString("object", dataM2[4]); + newRow.setInt("price", int(dataM2[5])); + newRow.setInt("prots", int(dataM2[6])); + newRow.setString("time1", inData[12]); + newRow.setInt("ves1", int(dataM2[0])); + newRow.setInt("cor1", int(dataM2[1])); + newRow.setString("time2", dataM2[10]); + newRow.setInt("ves2", int(dataM2[11])); + newRow.setInt("cor2", int(dataM2[13])); + newRow.setInt("arenda", int(dataM2[7])); + newRow.setInt("dopsor", int(dataM2[8])); + newRow.setString("note", dataM2[9]); + int u = int(dataM2[0])*2 + int(dataM2[1])*2 + int(dataM2[11])*2 + + int(dataM2[13])*2 + int(dataM2[7])*2 + int(dataM2[8])*2; + newRow.setInt("id_R", u); + newRow.setInt("1/2", int(dataM2[12])); + + String j = ","; + String rowArh = table.getRowCount() + j + dataM2[2] + j + dataM2[3] + j + + dataM2[4] + j + dataM2[5] + j + dataM2[6] + j + dataM2[10] + j + dataM2[0] + j + + dataM2[1] + j + dataM2[11] + j + dataM2[13] + j + dataM2[7] + j + dataM2[8] + + j + dataM2[9] + j + dataM2[12]; + + String[] list = {rowArh}; + saveTable(table, filePath + "base.csv"); + saveStrings(filePath + "Arhive/" + timeMonth + "/" + timeDate + "/" + + timeArh + ".txt", list); + + String[] rep = {outReport()}; + saveStrings(filePath + "report.txt", rep); +} + +//**************************************************** +void dataSaveReport() { + TimeString(); + + String[] rep = {outReport()}; + saveStrings(filePath + timeReport + "_" + timeArh + ".txt", rep); + + saveTable(table, filePath + timeReport + "_" + timeArh + ".csv"); + saveTable(table, filePath + "Arhive/" + timeMonth + "/" + timeDate + + "/" + timeReport + "_" + timeArh + ".csv"); + dataNullBase(); +} + +void dataNullBase() { + Table tableNew = new Table(); + tableNew.addColumn("id_R"); + tableNew.addColumn("date"); + tableNew.addColumn("id"); + tableNew.addColumn("nomer"); + tableNew.addColumn("client"); + tableNew.addColumn("object"); + tableNew.addColumn("price"); + tableNew.addColumn("prots"); + tableNew.addColumn("time1"); + tableNew.addColumn("ves1"); + tableNew.addColumn("cor1"); + tableNew.addColumn("time2"); + tableNew.addColumn("ves2"); + tableNew.addColumn("cor2"); + tableNew.addColumn("arenda"); + tableNew.addColumn("dopsor"); + tableNew.addColumn("note"); + tableNew.addColumn("1/2"); + saveTable(tableNew, filePath + "base.csv"); +} + +//**************************************************** +// очистка данных +void dataClear() { + for (int m = 0; m < m2; ++m) { + if (m == 1) ++m; + inData[m] = ""; + } + inData[6] += protsUmolch; +} + +//***************************************************** |
