Node-server for unitstock app
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 

169 行
4.7 KiB

  1. var express = require("express");
  2. var router = express.Router();
  3. var fs = require("fs");
  4. const path = require("path");
  5. var sqliteModel = require("../model/sqliteModel.js");
  6. var oracleModel = require("../model/oracleModel.js");
  7. //done
  8. router.post("/uploadDb", async function (req, res, next) {
  9. try {
  10. var dbBytes = req.body;
  11. var parameter = JSON.parse(req.headers.params);
  12. var company = parameter.company;
  13. var cabangId = parameter.cabangId;
  14. var activeStockTaking = await oracleModel.getActiveStockTakingByCabang(
  15. company,
  16. cabangId
  17. );
  18. if (activeStockTaking == undefined)
  19. return res.json({
  20. STATUS: 0,
  21. DATA: "Data Stock Taking dalam status tidak Open !",
  22. });
  23. var dirPath = path.join(
  24. __dirname,
  25. `../public/sqlite/upload/${company}/${cabangId}`
  26. );
  27. fs.mkdir(dirPath, { recursive: true }, (err) => {
  28. // console.log('2',err);
  29. var d = new Date();
  30. var n = d.getTime();
  31. var dbName = `${n}.db`;
  32. var dbPath = path.join(dirPath, dbName);
  33. // var a = fs.writeFileSync(dbPath, Buffer.from(dbBytes));
  34. // var a = fs.writeFileSync(dbPath, dbBytes);
  35. const stream = fs.createWriteStream(dbPath);
  36. stream.on("open", () => req.pipe(stream));
  37. stream.on("drain", () => {
  38. // Calculate how much data has been piped yet
  39. const written = parseInt(stream.bytesWritten);
  40. const total = parseInt(req.headers["filesize"]);
  41. const pWritten = ((written / total) * 100).toFixed(2);
  42. console.log(`Processing ... ${pWritten}% done`);
  43. });
  44. stream.on("close", () => {
  45. // Send a success response back to the client
  46. const msg = `Data uploaded to ${dbPath}`;
  47. console.log("Processing ... 100%");
  48. console.log(msg);
  49. return res.status(200).json({
  50. STATUS: 1,
  51. DATA: "Data send successfully",
  52. dbPath: dbPath,
  53. });
  54. });
  55. stream.on("error", (err) => {
  56. // Send an error message to the client
  57. console.error(err);
  58. return res.status(500).json({
  59. STATUS: 1,
  60. DATA: "Data send successfully",
  61. dbPath: dbPath,
  62. });
  63. });
  64. // console.log(dirPath, dbPath);
  65. // return res.json({
  66. // STATUS: 1,
  67. // DATA: "Data send successfully",
  68. // dbPath: dbPath,
  69. // });
  70. });
  71. } catch (e) {
  72. return res.json({ STATUS: 0, DATA: e });
  73. }
  74. });
  75. router.post("/unpackDb", async function (req, res, next) {
  76. // console.log(req.body);
  77. var dbPath = req.body.dbPath;
  78. var company = req.body.company;
  79. var cabangId = req.body.cabangId;
  80. var data = await sqliteModel.unpackAndInsert(dbPath, company, cabangId);
  81. return res.json(data);
  82. });
  83. //old delete after update
  84. router.post("/uploadSqlitedb", async function (req, res, next) {
  85. try {
  86. var dbBytes = req.body;
  87. var parameter = JSON.parse(req.headers.params);
  88. var company = parameter.company;
  89. var cabangId = parameter.cabangId;
  90. var activeStockTaking = await oracleModel.getActiveStockTakingByCabang(
  91. company,
  92. cabangId
  93. );
  94. if (activeStockTaking == undefined)
  95. return res.json({
  96. STATUS: 0,
  97. DATA: "Data Stock Taking dalam status tidak Open !",
  98. });
  99. var dirPath = path.join(
  100. __dirname,
  101. `../public/sqlite/upload/${company}/${cabangId}`
  102. );
  103. fs.mkdir(dirPath, { recursive: true }, (err) => {
  104. // console.log('2',err);
  105. var d = new Date();
  106. var n = d.getTime();
  107. var dbName = `${n}.db`;
  108. var dbPath = path.join(dirPath, dbName);
  109. // var a = fs.writeFileSync(dbPath, Buffer.from(dbBytes));
  110. var a = fs.writeFileSync(dbPath, dbBytes);
  111. console.log(dirPath, dbPath);
  112. return res.json({
  113. STATUS: 1,
  114. DATA: "Data send successfully",
  115. dbPath: dbPath,
  116. });
  117. });
  118. } catch (e) {
  119. return res.json({ STATUS: 0, DATA: e });
  120. }
  121. });
  122. //============================== old route =========================================
  123. // router.post("/login", async function (req, res, next) {
  124. // var username = req.body.User;
  125. // var password = req.body.Pass;
  126. // var data = await oracleModel.getDataUser(username, password);
  127. // return res.send(data);
  128. // });
  129. // router.post("/getCabangByUser", async function (req, res, next) {
  130. // var company = req.body.company;
  131. // var username = req.body.User;
  132. // var data = await oracleModel.getDataCabangByUser(company, username);
  133. // return res.send(data);
  134. // });
  135. // router.post("/submitStock", async function (req, res, next) {
  136. // console.log(req.body);
  137. // var company = req.body.company;
  138. // var stockTakingId = req.body.stockTakingId;
  139. // var data = await oracleModel.submitStockTaking(company, stockTakingId);
  140. // return res.send(data);
  141. // });
  142. // router.post("/getStateStockUnit", async function (req, res) {
  143. // var company = req.body.company;
  144. // var stockTakingId = req.body.stockTakingId;
  145. // var stateStockTaking = await oracleModel.getStateStockTaking(
  146. // company,
  147. // stockTakingId
  148. // );
  149. // return res.send(stateStockTaking);
  150. // });
  151. module.exports = router;