Kaynağa Gözat

check exist before process

master
jefry 4 yıl önce
ebeveyn
işleme
842d513177
3 değiştirilmiş dosya ile 431 ekleme ve 70 silme
  1. +2
    -1
      model/sqliteModel.js
  2. +348
    -0
      model/sqliteModel.js.bak
  3. +81
    -69
      routes/datapost.js

+ 2
- 1
model/sqliteModel.js Dosyayı Görüntüle

@@ -143,6 +143,7 @@ async function unpackAndInsert(dbPath = null, company , cabangId){
let db;
try{
//var dbPath = path.join(__dirname , `../public/sqlite/upload/uploadDB.db`);
if(!dbPath || !fs.existsSync( dbPath )) throw "Database Not Exist. Kirim Ulang Data";
db = new sqlite3.Database(dbPath, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE);
var stockTakingUnitId = await getValueTableByName(db,'STOCK_TAKING_UNIT_ID');
var insertedData = await getInsertedData(db);
@@ -172,7 +173,7 @@ async function unpackAndInsert(dbPath = null, company , cabangId){
return new Promise(function(resolve,reject){
db.close(function(data){

resolve({"STATUS" : 0 ,"DATA" : e});
resolve({"STATUS" : 0 ,"DATA" : e.message||e});
})
})
// db.close(function(data){


+ 348
- 0
model/sqliteModel.js.bak Dosyayı Görüntüle

@@ -0,0 +1,348 @@
const sqlite3 = require('sqlite3').verbose();
var sqliteFunc = require('../util/db_sqlite.js');
var oracleModel = require('./oracleModel.js');
const oracledb = require('oracledb');
const path = require('path');
const fs = require('fs');

async function insertRefTable(db,dataUnitCabang){
try{
var runQuery = 'insert into refTable(mesin,tipe,rangka,warna,kode,tahun,state) VALUES ';
for(var i = 0 ; i < dataUnitCabang.length ; i ++){
if(i == dataUnitCabang.length -1){
runQuery = runQuery.concat(`('${dataUnitCabang[i]["MESIN"]}','${dataUnitCabang[i]["TIPE"]}','${dataUnitCabang[i]["RANGKA"]}','${dataUnitCabang[i]["WARNA"]}',
'${dataUnitCabang[i]["KODE"]}','${dataUnitCabang[i]["TAHUN"]}','${dataUnitCabang[i]["STATE"]}')`);
}
else {
runQuery = runQuery.concat(`('${dataUnitCabang[i]["MESIN"]}','${dataUnitCabang[i]["TIPE"]}','${dataUnitCabang[i]["RANGKA"]}','${dataUnitCabang[i]["WARNA"]}',
'${dataUnitCabang[i]["KODE"]}','${dataUnitCabang[i]["TAHUN"]}','${dataUnitCabang[i]["STATE"]}'), `);
}

}
var insertTable = await sqliteFunc.runQuery(db,runQuery);
if(insertTable["STATUS"] == 0) throw insertTable["DATA"]
}
catch(e){
throw e;
}

}


async function insertJenisFoto(db,jenisFoto){
try{
var valBlobTable = '';
for(var i = 0 ; i < jenisFoto.length ; i++){
if(i == jenisFoto.length -1) {
valBlobTable = valBlobTable.concat(`('${jenisFoto[i]["NO_URUT"]}','${jenisFoto[i]["JENIS"]}')`);
}
else{
valBlobTable = valBlobTable.concat(`('${jenisFoto[i]["NO_URUT"]}','${jenisFoto[i]["JENIS"]}'),`);
}

}
var insertJenisBlobQuery = `
Insert Into jenisBlobTable Values ${valBlobTable}

`;

var insertBlobQuery = await sqliteFunc.runQuery(db,insertJenisBlobQuery);
if(insertBlobQuery["STATUS"] == 0) throw insertBlobQuery["DATA"]
}
catch(e){
throw e;
}
}


async function insertUnitDetPic(db,dataUnitPic){
try{
var valDetPic = '';
for(var i = 0 ; i < dataUnitPic.length ; i++){
if(i == dataUnitPic.length -1) {
valDetPic = valDetPic.concat(`('${dataUnitPic[i]["MESIN"]}','${dataUnitPic[i]["NO_URUT"]}',
null,'${dataUnitPic[i]["JENIS"]}',null,null)`);
}
else{
valDetPic = valDetPic.concat(`('${dataUnitPic[i]["MESIN"]}','${dataUnitPic[i]["NO_URUT"]}',
null,'${dataUnitPic[i]["JENIS"]}',null,null),`);
}

}
var insertJenisBlobQuery = `
Insert Into blobTable(MESIN,NO_URUT,BLOB_FILE,JENIS,LATITUDE,LONGITUDE) Values ${valDetPic};

`;

var insertBlobQuery = await sqliteFunc.runQuery(db,insertJenisBlobQuery);
if(insertBlobQuery["STATUS"] == 0 ) throw insertBlobQuery["DATA"]
}
catch(e){
throw e;
}
}

async function getValueTableByName(db,name){
var query = `
select VALUE from
valueTable
where name = '${name}'
LIMIT 1
`;

var selectInsertTable = await sqliteFunc.selectQuery(db,query);
if(selectInsertTable["STATUS"] == 0) throw Error(selectInsertTable["DATA"]);
var data = selectInsertTable["DATA"];
var value = data[0]["VALUE"];
return value;

}
async function getInsertedData(db){
try{
var query = `
select
MESIN,
TIMESTAMP
from refTable
where flag_insert = 'TRUE'
`;

var selectTimestampInsert = await sqliteFunc.selectQuery(db,query);
if(selectTimestampInsert["STATUS"] == 0) throw selectTimestampInsert["DATA"];
return selectTimestampInsert["DATA"];
}
catch(e){
throw e;
}
}

async function getInsertedPic(db){
try{
var query = `
select
BLOB_FILE,
jenis,
latitude,
LONGITUDE,
MESIN,
NO_URUT
from blobTable where
blob_file IS NOT NULL
`;
var selectBlobTable = await sqliteFunc.selectQuery(db,query);
if(selectBlobTable["STATUS"] == 0) throw selectBlobTable["DATA"];
return selectBlobTable["DATA"];
}
catch(e){
throw e;
}

}

async function unpackAndInsert(dbPath = null, company , cabangId){
let db;
try{
//var dbPath = path.join(__dirname , `../public/sqlite/upload/uploadDB.db`);
db = new sqlite3.Database(dbPath, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE);
var stockTakingUnitId = await getValueTableByName(db,'STOCK_TAKING_UNIT_ID');
var insertedData = await getInsertedData(db);
var insertedPic = await getInsertedPic(db);
var stockTakingData = {"company" : company , "cabangId" : cabangId, "stockTakingUnitId" : stockTakingUnitId};
var result = await oracleModel.insertStockUnitData(stockTakingData,insertedData,insertedPic);
if(db.open){
return new Promise(function(resolve,reject){
db.close(function(data){
fs.unlinkSync(dbPath);
resolve({"STATUS" : 1 ,"DATA" : result});
})
})

}
else{
fs.unlinkSync(dbPath);
return {"STATUS" : 1 ,"DATA" : result};
}

}
catch(e){
console.log(e);

if(db.open){

return new Promise(function(resolve,reject){
db.close(function(data){

resolve({"STATUS" : 0 ,"DATA" : e});
})
})
// db.close(function(data){
// return {"STATUS" : 0 ,"DATA" : e};
// })
}
else{
return {"STATUS" : 0 ,"DATA" : e};
}
}
}

// var dbPath = path.join(__dirname , `../public/sqlite/testaplod3.db`);
// unpackAndInsert(dbPath,'TBS','02');



async function CreateDataCollection(company = '' , cabangId = ''){
var dbPath;
let db;
try {
var checkStockTaking = await oracleModel.getActiveStockTakingByCabang(company,cabangId);
var oracleData;
if(checkStockTaking == undefined){
oracleData = await oracleModel.prepareStockCollection(company,cabangId);
}
else {
let state = checkStockTaking["STATE"];
if(state == 'Submitted'){
throw 'Gagal dalam mengambil data, mohon menunggu review data yang disubmit sebelumnya.';
}
oracleData = await oracleModel.getActiveStockCollection(company,cabangId,checkStockTaking["STOCK_TAKING_UNIT_ID"]);
}
var stockTakingUnitId = oracleData["stockTakingUnitId"];
var dataUnitCabang = oracleData["dataUnitCabang"];
var dataUnitPic = oracleData["dataUnitPic"];
var jenisFoto = oracleData["jenisFoto"];
var dirPath = path.join(__dirname , `../public/sqlite/db/${company}/${cabangId}`);
var resultDirPath = fs.mkdirSync(dirPath, { recursive: true });


var d = new Date();
var n = d.getTime();
var dbName = `${n}.db`;

dbPath = path.join(dirPath ,dbName);
db = new sqlite3.Database(dbPath, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE);

// Create Table Reference
var refTableQuery = `CREATE TABLE refTable(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
MESIN TEXT,
TIPE TEXT,
RANGKA TEXT,
WARNA TEXT,
KODE TEXT,
TAHUN TEXT,
STATE TEXT,
TIMESTAMP TEXT DEFAULT NULL,
FLAG_INSERT TEXT DEFAULT 'FALSE'
)`;
var createRefTable = await sqliteFunc.runQuery(db,refTableQuery);
if(createRefTable["STATUS"] == 0) throw createRefTable;

// var insertTableQuery = `CREATE TABLE insertTable(
// ID INTEGER PRIMARY KEY AUTOINCREMENT,
// MESIN TEXT,
// TIMESTAMP TEXT
// )`;

// var createInsertTable = await sqliteFunc.runQuery(db,insertTableQuery);
// if(createInsertTable["STATUS"] == 0) throw createInsertTable;

var insertTableBlob = `CREATE TABLE blobTable(
BLOB_ID INTEGER PRIMARY KEY AUTOINCREMENT,
MESIN TEXT,
NO_URUT TEXT,
BLOB_FILE BLOB,
JENIS TEXT,
LATITUDE TEXT,
LONGITUDE TEXT
)`;


var createBlobTable = await sqliteFunc.runQuery(db,insertTableBlob);
if(createBlobTable["STATUS"] == 0) throw createInsertTable;


var valueTableQuery = `
CREATE TABLE valueTable(
NAME TEXT,
VALUE TEXT
)
`;
var createValueTable = await sqliteFunc.runQuery(db,valueTableQuery);
if(createValueTable["STATUS"] == 0) throw createValueTable;

var queryValueTableInsert = `insert into valueTable(name,value) VALUES ('STOCK_TAKING_UNIT_ID',${stockTakingUnitId})`;
var insertValueTableInsert = await sqliteFunc.runQuery(db,queryValueTableInsert);
if(insertValueTableInsert["STATUS"] == 0) throw insertValueTableInsert;


var jenisBlobQuery = `
CREATE TABLE jenisBlobTable(
NO_URUT TEXT,
VALUE TEXT
)
`;
var createJenisBlobTable = await sqliteFunc.runQuery(db,jenisBlobQuery);
if(createJenisBlobTable["STATUS"] == 0) throw createJenisBlobTable;

//----------- JENIS FOTO----------------------------------------------
await insertJenisFoto(db,jenisFoto);

if(dataUnitCabang.length > 0){
//----------- REF TABLE----------------------------------------------
await insertRefTable(db,dataUnitCabang);

//----------- UNIT DET PIC----------------------------------------------
await insertUnitDetPic(db,dataUnitPic);
}


if(db.open){
return new Promise(function(resolve,reject){
db.close(function(data){
resolve({"STATUS" : 1 ,"DATA" : dbPath});
})
});
// db.close(function(data){
// return {"STATUS" : 1, "DATA" : dbPath};
// })
}
else{
return {"STATUS" : 1, "DATA" : dbPath};
}

}
catch(e){
if(db){
if(db.open){
return new Promise(function(resolve,reject){
db.close(function(data){
fs.unlinkSync(dbPath);
resolve({"STATUS" : 0 ,"DATA" : e});
})
});
// db.close(function(data){
// fs.unlinkSync(dbPath);
// return {"STATUS" : 0 , "DATA": e};
// });
}
}

else{
if(dbPath){
fs.unlinkSync(dbPath);
}
console.log(e);
return {"STATUS" : 0 , "DATA": e};
}
}
}
//CreateDataCollection("TBS",'02');


module.exports = {
CreateDataCollection : CreateDataCollection,
unpackAndInsert : unpackAndInsert
};

+ 81
- 69
routes/datapost.js Dosyayı Görüntüle

@@ -1,79 +1,91 @@
var express = require('express');
var express = require("express");
var router = express.Router();
var fs = require('fs');
const path = require('path');

var sqliteModel = require('../model/sqliteModel.js');
var oracleModel = require('../model/oracleModel.js');


router.post('/uploadSqlitedb',async function(req,res,next){
try{
var dbBytes = req.body.byte;

var company = req.body.company;
var cabangId = req.body.cabangId;
var activeStockTaking = await oracleModel.getActiveStockTakingByCabang(company,cabangId);

if(activeStockTaking == undefined) return res.json({"STATUS" : 0, "DATA" : 'Data Stock Taking dalam status tidak Open !'});

var dirPath = path.join(__dirname , `../public/sqlite/upload/${company}/${cabangId}`);

fs.mkdir(dirPath, { recursive: true }, (err) => {
// console.log('2',err);
var d = new Date();
var n = d.getTime();
var dbName = `${n}.db`
var dbPath = path.join(dirPath , dbName);
var a = fs.writeFileSync(dbPath,Buffer.from(dbBytes));
return res.json({"STATUS" : 1, "DATA" : 'Data send successfully' , "dbPath" : dbPath});
});
}
catch(e){
return res.json({"STATUS" : 0, "DATA" : e});
}
var fs = require("fs");
const path = require("path");

var sqliteModel = require("../model/sqliteModel.js");
var oracleModel = require("../model/oracleModel.js");

router.post("/uploadSqlitedb", async function (req, res, next) {
try {
var dbBytes = req.body.byte;

var company = req.body.company;
var cabangId = req.body.cabangId;
var activeStockTaking = await oracleModel.getActiveStockTakingByCabang(
company,
cabangId
);

if (activeStockTaking == undefined)
return res.json({
STATUS: 0,
DATA: "Data Stock Taking dalam status tidak Open !",
});

var dirPath = path.join(
__dirname,
`../public/sqlite/upload/${company}/${cabangId}`
);

fs.mkdir(dirPath, { recursive: true }, (err) => {
// console.log('2',err);
var d = new Date();
var n = d.getTime();
var dbName = `${n}.db`;
var dbPath = path.join(dirPath, dbName);
var a = fs.writeFileSync(dbPath, Buffer.from(dbBytes));
return res.json({
STATUS: 1,
DATA: "Data send successfully",
dbPath: dbPath,
});
});
} catch (e) {
return res.json({ STATUS: 0, DATA: e });
}
});

router.post("/unpackDb", async function (req, res, next) {
console.log(req.body);
var dbPath = req.body.dbPath;
var company = req.body.company;
var cabangId = req.body.cabangId;
var data = await sqliteModel.unpackAndInsert(dbPath, company, cabangId);

router.post('/unpackDb', async function(req,res,next){
var dbPath = req.body.dbPath;
var company = req.body.company;
var cabangId = req.body.cabangId;
var data = await sqliteModel.unpackAndInsert(dbPath,company,cabangId);

return res.json(data);
})

router.post('/login',async function(req,res,next){
var username = req.body.User;
var password = req.body.Pass;
var data = await oracleModel.getDataUser(username,password);
return res.send(data);
})

router.post('/getCabangByUser',async function(req,res,next){
var company = req.body.company;
var username = req.body.User;
var data = await oracleModel.getDataCabangByUser(company,username);
return res.send(data);
})

router.post('/submitStock', async function(req,res,next){
console.log(req.body);
var company = req.body.company;
var stockTakingId = req.body.stockTakingId;
var data = await oracleModel.submitStockTaking(company,stockTakingId);
return res.send(data);
return res.json(data);
});

router.post("/login", async function (req, res, next) {
var username = req.body.User;
var password = req.body.Pass;
var data = await oracleModel.getDataUser(username, password);
return res.send(data);
});

router.post('/getStateStockUnit', async function(req,res){
var company = req.body.company;
var stockTakingId = req.body.stockTakingId;
var stateStockTaking = await oracleModel.getStateStockTaking(company,stockTakingId);
return res.send(stateStockTaking);
})
router.post("/getCabangByUser", async function (req, res, next) {
var company = req.body.company;
var username = req.body.User;
var data = await oracleModel.getDataCabangByUser(company, username);
return res.send(data);
});

router.post("/submitStock", async function (req, res, next) {
console.log(req.body);
var company = req.body.company;
var stockTakingId = req.body.stockTakingId;
var data = await oracleModel.submitStockTaking(company, stockTakingId);
return res.send(data);
});

router.post("/getStateStockUnit", async function (req, res) {
var company = req.body.company;
var stockTakingId = req.body.stockTakingId;
var stateStockTaking = await oracleModel.getStateStockTaking(
company,
stockTakingId
);
return res.send(stateStockTaking);
});

module.exports = router;
module.exports = router;

Yükleniyor…
İptal
Kaydet