Browse Source

sort by tipe

master
jefry 3 years ago
parent
commit
ec1222642f
3 changed files with 243 additions and 232 deletions
  1. +1
    -1
      ecosystem.config.js
  2. +195
    -179
      model/oracleModel.js
  3. +47
    -52
      routes/datapost.js

+ 1
- 1
ecosystem.config.js View File

@@ -5,7 +5,7 @@ module.exports = {

// Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
args: 'one two',
instances: 4,
instances: 2,
autorestart: true,
watch: false,
max_memory_restart: '1G',


+ 195
- 179
model/oracleModel.js View File

@@ -1,17 +1,13 @@
var oracleFunc = require('../util/db_oracle.js');
const oracledb = require('oracledb');
const fs = require('fs');
var moment = require('moment');
var oracleFunc = require("../util/db_oracle.js");
const oracledb = require("oracledb");
const fs = require("fs");
var moment = require("moment");

var owner = 'TBS';
var owner = "TBS";





async function getDataCabangByUser(company,user){
async function getDataCabangByUser(company, user) {
let conn;
try{
try {
conn = await oracleFunc.getConnection();
var query = `
SELECT NAMA_CABANG AS DISPLAY_VALUE, CABANG_ID AS RETURN_VALUE
@@ -21,55 +17,59 @@ async function getDataCabangByUser(company,user){
ORDER BY NAMA_CABANG
`;

var params = {"COMPANY" : company , "USERNAME" : user};
var params = { COMPANY: company, USERNAME: user };
console.log(params);
var result = await oracleFunc.getQueryData(conn,query,params);
var result = await oracleFunc.getQueryData(conn, query, params);

await oracleFunc.doRelease(conn);
return {"STATUS" : 1 ,"DATA" : result};
}
catch(e){
return { STATUS: 1, DATA: result };
} catch (e) {
await oracleFunc.doRelease(conn);
return {"STATUS" : 0 , "DATA" : e}
return { STATUS: 0, DATA: e };
}
}


async function getDataUser(user='',pass=''){
async function getDataUser(user = "", pass = "") {
let conn;
try{
try {
conn = await oracleFunc.getConnection();
var checkView2 = `
select ${owner}.UTILS_API.Is_View_Available('STOCK_TAKING_UNIT_MOB_APP', :USERNAME) LOGIN_STATUS from dual
`;
var paramView = {"USERNAME" : user};
var resultView = await oracleFunc.getQueryData(conn,checkView2,paramView);
if(resultView[0]["LOGIN_STATUS"] == 'FALSE') throw 'Username or password incorrect !'

var paramView = { USERNAME: user };
var resultView = await oracleFunc.getQueryData(
conn,
checkView2,
paramView
);
if (resultView[0]["LOGIN_STATUS"] == "FALSE")
throw "Username or password incorrect !";

var checkQuery = `
select ${owner}.Mobile_APP_Utils_API.Sales_Mobile_Auth(:USERNAME, :PASSWORD) data from dual
`
var params = {"USERNAME" : user , "PASSWORD" : pass};
var result = await oracleFunc.getQueryData(conn,checkQuery,params);
`;
var params = { USERNAME: user, PASSWORD: pass };
var result = await oracleFunc.getQueryData(conn, checkQuery, params);
var dataUser = JSON.parse(result[0]["DATA"]);
if(dataUser["status"] == "ERR") throw dataUser["info"];
if (dataUser["status"] == "ERR") throw dataUser["info"];

await oracleFunc.doRelease(conn);

return {"STATUS" : 1,"DATA": {'COMPANY' : dataUser["company"],'USER' : dataUser["login_db_user"]}};
}
catch(e){
return {
STATUS: 1,
DATA: {
COMPANY: dataUser["company"],
USER: dataUser["login_db_user"],
},
};
} catch (e) {
await oracleFunc.doRelease(conn);
return {"STATUS" : 0 , "DATA" : e};
return { STATUS: 0, DATA: e };
}

}



async function getDataCabang(company = '%',cabangId = '%'){
async function getDataCabang(company = "%", cabangId = "%") {
var query = `select
company,
cabang_id,
@@ -79,36 +79,32 @@ async function getDataCabang(company = '%',cabangId = '%'){
from ${owner}.cabang
where company like :COMPANY
and cabang_id like :CABANG_ID`;
var params = {"COMPANY" : company , "CABANG_ID" : cabangId};
var result = await oracleFunc.getData(query,params);
var params = { COMPANY: company, CABANG_ID: cabangId };
var result = await oracleFunc.getData(query, params);
return result;
}


async function getStateStockTaking(company, stockTakingId){
async function getStateStockTaking(company, stockTakingId) {
let conn;
try{
try {
conn = await oracleFunc.getConnection();
var query = `
select ${owner}.Stock_Taking_Unit_API.Get_Status_Stock_Taking(
company_ => :COMPANY,
stock_taking_unit_id_ => :STOCK_TAKING_UNIT_ID) state from dual
`;
var params = {"COMPANY" : company , "STOCK_TAKING_UNIT_ID" : stockTakingId};
var result = await oracleFunc.getQueryData(conn,query,params);
var params = { COMPANY: company, STOCK_TAKING_UNIT_ID: stockTakingId };
var result = await oracleFunc.getQueryData(conn, query, params);

await oracleFunc.doRelease(conn);
return {"STATUS" : 1 , "DATA" : result[0]};
}
catch(e){
return { STATUS: 1, DATA: result[0] };
} catch (e) {
await oracleFunc.doRelease(conn);
return {"STATUS" : 0 , "DATA" : e};
return { STATUS: 0, DATA: e };
}

}


async function getActiveStockTakingByCabang(company, cabangId){
async function getActiveStockTakingByCabang(company, cabangId) {
let conn;
try {
conn = await oracleFunc.getConnection();
@@ -127,21 +123,19 @@ async function getActiveStockTakingByCabang(company, cabangId){
WHERE rownum = 1
`;

var paramsQuery = {"COMPANY" : company , "CABANG_ID" : cabangId};
var result = await oracleFunc.getQueryData(conn,query,paramsQuery);
var paramsQuery = { COMPANY: company, CABANG_ID: cabangId };
var result = await oracleFunc.getQueryData(conn, query, paramsQuery);
var a = result[0];

await oracleFunc.doRelease(conn);
return a;
}

catch(e){
} catch (e) {
await oracleFunc.doRelease(conn);
throw e;
}
}

async function getDataUnit(conn,company,cabangId){
async function getDataUnit(conn, company, cabangId) {
var query = `SELECT
company,
cabang_id,
@@ -156,16 +150,17 @@ async function getDataUnit(conn,company,cabangId){
WHERE company = :COMPANY
AND cabang_id = :CABANG_ID
AND state IN ('Ready','OnChannel')
ORDER BY tipe
`;

var params = {"COMPANY" : company,"CABANG_ID":cabangId};
var result = await oracleFunc.getQueryData(conn,query,params);
var params = { COMPANY: company, CABANG_ID: cabangId };
var result = await oracleFunc.getQueryData(conn, query, params);
return result;
}

async function submitStockTaking(company,stockTakingId){
async function submitStockTaking(company, stockTakingId) {
let conn;
try{
try {
conn = await oracleFunc.getConnection();
var query = `
BEGIN
@@ -175,25 +170,22 @@ async function submitStockTaking(company,stockTakingId){
END;
`;

var params = {"COMPANY" : company , "STOCK_TAKING_UNIT_ID" : stockTakingId};
var params = { COMPANY: company, STOCK_TAKING_UNIT_ID: stockTakingId };
console.log(params);
await oracleFunc.runQueryData(conn,query,params);
await oracleFunc.runQueryData(conn, query, params);
await oracleFunc.doCommit(conn);
await oracleFunc.doRelease(conn);

return {"STATUS" : 1 ,"DATA" : 'Stock Taking Submit Completed '};
}
catch(e){
return { STATUS: 1, DATA: "Stock Taking Submit Completed " };
} catch (e) {
await oracleFunc.doRelease(conn);
return {"STATUS" : 0 , "DATA" : e};
return { STATUS: 0, DATA: e };
}
}



async function prepareStockCollection(company = '' , cabangId = ''){
async function prepareStockCollection(company = "", cabangId = "") {
let conn;
try{
try {
conn = await oracleFunc.getConnection();
var queryStockUnit = `
BEGIN
@@ -207,44 +199,49 @@ async function prepareStockCollection(company = '' , cabangId = ''){
END;`;

var paramStockUnit = {
"COMPANY" : company,
"STOCK_TAKING_UNIT_ID" : {dir: oracledb.BIND_OUT},
"TGL_STOCK_TAKING" : moment().format('DD-MM-YYYY'),
"TGL_START" : moment().format('DD-MM-YYYY HH:mm:ss'),
"TGL_SELESAI" : null,
"CABANG_ID" : cabangId
COMPANY: company,
STOCK_TAKING_UNIT_ID: { dir: oracledb.BIND_OUT },
TGL_STOCK_TAKING: moment().format("DD-MM-YYYY"),
TGL_START: moment().format("DD-MM-YYYY HH:mm:ss"),
TGL_SELESAI: null,
CABANG_ID: cabangId,
};

var resultStockUnit = await oracleFunc.runQueryData(conn,queryStockUnit,paramStockUnit);
var stockTakingUnitId = resultStockUnit["outBinds"]["STOCK_TAKING_UNIT_ID"];
var jenisFoto = [{"NO_URUT" : 1 , "JENIS" : "NOMOR RANGKA" },
{"NO_URUT" : 2 , "JENIS" : "TAMPAK SAMPING"}];


var resultStockUnit = await oracleFunc.runQueryData(
conn,
queryStockUnit,
paramStockUnit
);
var stockTakingUnitId =
resultStockUnit["outBinds"]["STOCK_TAKING_UNIT_ID"];
var jenisFoto = [
{ NO_URUT: 1, JENIS: "NOMOR RANGKA" },
{ NO_URUT: 2, JENIS: "TAMPAK SAMPING" },
];

var paramsUnitDet = [];
var paramsUnitDetPic = [];
var dataUnitCabang = await getDataUnit(conn,company,cabangId);
for(var i = 0 ; i < dataUnitCabang.length ; i ++){
var dataUnitCabang = await getDataUnit(conn, company, cabangId);
for (var i = 0; i < dataUnitCabang.length; i++) {
var temp = {
"COMPANY" : company,
"STOCK_TAKING_ID" : stockTakingUnitId,
"MESIN" : dataUnitCabang[i]["MESIN"],
"FLAG_REJECT" : "FALSE",
"KETERANGAN" : null
COMPANY: company,
STOCK_TAKING_ID: stockTakingUnitId,
MESIN: dataUnitCabang[i]["MESIN"],
FLAG_REJECT: "FALSE",
KETERANGAN: null,
};
paramsUnitDet.push(temp);
for ( var j = 0 ; j < jenisFoto.length ; j++){
for (var j = 0; j < jenisFoto.length; j++) {
var tempPic = {
"COMPANY" : company,
"STOCK_TAKING_ID" : stockTakingUnitId,
"MESIN" : dataUnitCabang[i]["MESIN"],
"NO_URUT" : jenisFoto[j]["NO_URUT"],
"JENIS" : jenisFoto[j]["JENIS"],
"LATITUDE" : null,
"LONGITUDE" : null,
"LOB_ID" : null
}
COMPANY: company,
STOCK_TAKING_ID: stockTakingUnitId,
MESIN: dataUnitCabang[i]["MESIN"],
NO_URUT: jenisFoto[j]["NO_URUT"],
JENIS: jenisFoto[j]["JENIS"],
LATITUDE: null,
LONGITUDE: null,
LOB_ID: null,
};
paramsUnitDetPic.push(tempPic);
}
}
@@ -260,7 +257,7 @@ async function prepareStockCollection(company = '' , cabangId = ''){
END;
`;

await oracleFunc.runQueryMany(conn,queryStockUnitDet,paramsUnitDet);
await oracleFunc.runQueryMany(conn, queryStockUnitDet, paramsUnitDet);

var queryStockUnitPic = `
BEGIN
@@ -277,23 +274,33 @@ async function prepareStockCollection(company = '' , cabangId = ''){
END;
`;


await oracleFunc.runQueryMany(conn,queryStockUnitPic,paramsUnitDetPic);
await oracleFunc.runQueryMany(
conn,
queryStockUnitPic,
paramsUnitDetPic
);

await oracleFunc.doCommit(conn);
await oracleFunc.doRelease(conn);
return {"stockTakingUnitId" : stockTakingUnitId , dataUnitCabang : dataUnitCabang ,
dataUnitPic : paramsUnitDetPic , jenisFoto : jenisFoto};
}
catch(e){
return {
stockTakingUnitId: stockTakingUnitId,
dataUnitCabang: dataUnitCabang,
dataUnitPic: paramsUnitDetPic,
jenisFoto: jenisFoto,
};
} catch (e) {
oracleFunc.doRollBack(conn);
throw e;
}
}

async function getActiveStockCollection(company = '' , cabangId = '',stockTakingUnitId = ''){
async function getActiveStockCollection(
company = "",
cabangId = "",
stockTakingUnitId = ""
) {
let conn;
try{
try {
conn = await oracleFunc.getConnection();
var queryDataUnit = `
select
@@ -320,12 +327,15 @@ async function getActiveStockCollection(company = '' , cabangId = '',stockTaking
`;

var paramsDataUnit = {
"COMPANY" : company,
"CABANG_ID" : cabangId,
"STOCK_TAKING_UNIT_ID" : stockTakingUnitId
COMPANY: company,
CABANG_ID: cabangId,
STOCK_TAKING_UNIT_ID: stockTakingUnitId,
};
var dataUnit = await oracleFunc.getQueryData(conn,queryDataUnit,paramsDataUnit);

var dataUnit = await oracleFunc.getQueryData(
conn,
queryDataUnit,
paramsDataUnit
);

var queryDataUnitPic = `
SELECT
@@ -345,33 +355,38 @@ async function getActiveStockCollection(company = '' , cabangId = '',stockTaking
`;

var paramsDataUnitPic = {
"COMPANY" : company,
"STOCK_TAKING_UNIT_ID" : stockTakingUnitId
COMPANY: company,
STOCK_TAKING_UNIT_ID: stockTakingUnitId,
};

var dataUnitPic = await oracleFunc.getQueryData(conn,queryDataUnitPic,paramsDataUnitPic);

var jenisFoto = [{"NO_URUT" : 1 , "JENIS" : "NOMOR RANGKA" },
{"NO_URUT" : 2 , "JENIS" : "TAMPAK SAMPING"}];
var dataUnitPic = await oracleFunc.getQueryData(
conn,
queryDataUnitPic,
paramsDataUnitPic
);

var jenisFoto = [
{ NO_URUT: 1, JENIS: "NOMOR RANGKA" },
{ NO_URUT: 2, JENIS: "TAMPAK SAMPING" },
];

await oracleFunc.doRelease(conn);

return {"stockTakingUnitId" : stockTakingUnitId , dataUnitCabang : dataUnit ,
dataUnitPic : dataUnitPic , jenisFoto : jenisFoto};


}
catch(e){
return {
stockTakingUnitId: stockTakingUnitId,
dataUnitCabang: dataUnit,
dataUnitPic: dataUnitPic,
jenisFoto: jenisFoto,
};
} catch (e) {
await oracleFunc.doRelease(conn);
throw e;
}
}


async function insertStockUnitData(stockTakingData,dataUnit,dataFoto){
async function insertStockUnitData(stockTakingData, dataUnit, dataFoto) {
let conn;
try{
try {
conn = await oracleFunc.getConnection();
var queryUpdateTglSelesai = `
BEGIN
@@ -382,15 +397,18 @@ async function insertStockUnitData(stockTakingData,dataUnit,dataFoto){
END;
`;
var paramsUpdateTglSelesai = {
"COMPANY" : stockTakingData["company"],
"STOCK_TAKING_UNIT_ID" : stockTakingData["stockTakingUnitId"],
"TGL_SELESAI" : moment().format('DD-MM-YYYY HH:mm:ss')
}

await oracleFunc.runQueryData(conn,queryUpdateTglSelesai,paramsUpdateTglSelesai);
COMPANY: stockTakingData["company"],
STOCK_TAKING_UNIT_ID: stockTakingData["stockTakingUnitId"],
TGL_SELESAI: moment().format("DD-MM-YYYY HH:mm:ss"),
};

await oracleFunc.runQueryData(
conn,
queryUpdateTglSelesai,
paramsUpdateTglSelesai
);

if(dataUnit.length > 0){
if (dataUnit.length > 0) {
var queryUpdateKeteranganDet = `
BEGIN
${owner}.STOCK_TAKING_UNIT_DET_API.Update_Keterangan(
@@ -401,21 +419,24 @@ async function insertStockUnitData(stockTakingData,dataUnit,dataFoto){
END;
`;
var paramsUpdateKeteranganDet = [];
for(var i = 0 ; i < dataUnit.length ; i++){
for (var i = 0; i < dataUnit.length; i++) {
var temp = {
"COMPANY" : stockTakingData["company"],
"STOCK_TAKING_UNIT_ID" : stockTakingData["stockTakingUnitId"],
"MESIN" : dataUnit[i]["MESIN"],
"KETERANGAN" : dataUnit[i]["TIMESTAMP"]
}
COMPANY: stockTakingData["company"],
STOCK_TAKING_UNIT_ID: stockTakingData["stockTakingUnitId"],
MESIN: dataUnit[i]["MESIN"],
KETERANGAN: dataUnit[i]["TIMESTAMP"],
};
paramsUpdateKeteranganDet.push(temp);
}

await oracleFunc.runQueryMany(conn,queryUpdateKeteranganDet,paramsUpdateKeteranganDet);
await oracleFunc.runQueryMany(
conn,
queryUpdateKeteranganDet,
paramsUpdateKeteranganDet
);
}


if(dataFoto.length > 0){
if (dataFoto.length > 0) {
var queryStockUnitPic = `
BEGIN
${owner}.STOCK_TAKING_UNIT_UTILS_API.Create_Stock_Taking_Blob(
@@ -431,51 +452,46 @@ async function insertStockUnitData(stockTakingData,dataUnit,dataFoto){
END;
`;
var paramsUnitDetPic = [];
for(var j = 0 ; j < dataFoto.length ; j++){
for (var j = 0; j < dataFoto.length; j++) {
var temp = {
"COMPANY" : stockTakingData["company"],
"STOCK_TAKING_ID" : stockTakingData["stockTakingUnitId"],
"MESIN" : dataFoto[j]["MESIN"],
"NO_URUT" : dataFoto[j]["NO_URUT"],
"JENIS" : dataFoto[j]["JENIS"],
"LATITUDE" : dataFoto[j]["LATITUDE"],
"LONGITUDE" : dataFoto[j]["LONGITUDE"],
"BLOB_FILE" : dataFoto[j]["BLOB_FILE"]
}
COMPANY: stockTakingData["company"],
STOCK_TAKING_ID: stockTakingData["stockTakingUnitId"],
MESIN: dataFoto[j]["MESIN"],
NO_URUT: dataFoto[j]["NO_URUT"],
JENIS: dataFoto[j]["JENIS"],
LATITUDE: dataFoto[j]["LATITUDE"],
LONGITUDE: dataFoto[j]["LONGITUDE"],
BLOB_FILE: dataFoto[j]["BLOB_FILE"],
};
paramsUnitDetPic.push(temp);
}


await oracleFunc.runQueryMany(conn,queryStockUnitPic,paramsUnitDetPic);

await oracleFunc.runQueryMany(
conn,
queryStockUnitPic,
paramsUnitDetPic
);
}


await oracleFunc.doCommit(conn)
await oracleFunc.doCommit(conn);
await oracleFunc.doRelease(conn);

return 'Data has been processed';
}

catch(e){
return "Data has been processed";
} catch (e) {
oracleFunc.doRollBack(conn);
throw e;
}
}




module.exports = {
getDataCabang : getDataCabang,
getDataUnit : getDataUnit,
getDataUser : getDataUser,
prepareStockCollection : prepareStockCollection,
insertStockUnitData : insertStockUnitData,
getActiveStockTakingByCabang : getActiveStockTakingByCabang,
getActiveStockCollection : getActiveStockCollection,
getDataCabangByUser : getDataCabangByUser,
submitStockTaking : submitStockTaking,
getStateStockTaking : getStateStockTaking
}

getDataCabang: getDataCabang,
getDataUnit: getDataUnit,
getDataUser: getDataUser,
prepareStockCollection: prepareStockCollection,
insertStockUnitData: insertStockUnitData,
getActiveStockTakingByCabang: getActiveStockTakingByCabang,
getActiveStockCollection: getActiveStockCollection,
getDataCabangByUser: getDataCabangByUser,
submitStockTaking: submitStockTaking,
getStateStockTaking: getStateStockTaking,
};

+ 47
- 52
routes/datapost.js View File

@@ -6,8 +6,6 @@ const path = require("path");
var sqliteModel = require("../model/sqliteModel.js");
var oracleModel = require("../model/oracleModel.js");

//done

router.post("/uploadDb", async function (req, res, next) {
try {
var dbBytes = req.body;
@@ -80,23 +78,12 @@ router.post("/uploadDb", async function (req, res, next) {
}
});

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);

return res.json(data);
});

//old delete after update
router.post("/uploadSqlitedb", async function (req, res, next) {
try {
var dbBytes = req.body;
var parameter = JSON.parse(req.headers.params);
var company = parameter.company;
var cabangId = parameter.cabangId;
var dbBytes = req.body.byte;

var company = req.body.company;
var cabangId = req.body.cabangId;
var activeStockTaking = await oracleModel.getActiveStockTakingByCabang(
company,
cabangId
@@ -119,9 +106,7 @@ router.post("/uploadSqlitedb", async function (req, res, next) {
var n = d.getTime();
var dbName = `${n}.db`;
var dbPath = path.join(dirPath, dbName);
// var a = fs.writeFileSync(dbPath, Buffer.from(dbBytes));
var a = fs.writeFileSync(dbPath, dbBytes);
console.log(dirPath, dbPath);
var a = fs.writeFileSync(dbPath, Buffer.from(dbBytes));
return res.json({
STATUS: 1,
DATA: "Data send successfully",
@@ -132,37 +117,47 @@ router.post("/uploadSqlitedb", async function (req, res, next) {
return res.json({ STATUS: 0, DATA: e });
}
});
//============================== old route =========================================
// 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);
// });

// 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("/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);

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);
});

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;

Loading…
Cancel
Save