material_rate_tp.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // 计算调差建筑税金额
  2. const materialConst = require('../app/const/material');
  3. const BaseUtil = require('./baseUtils');
  4. const querySql = BaseUtil.querySql;
  5. const ZhCalc = BaseUtil.ZhCalc;
  6. const checkMaterial = async function(material) {
  7. let rate_tp = 0;
  8. material.decimal = material.decimal ? JSON.parse(material.decimal) : materialConst.decimal;
  9. if (material.is_stage_self) {
  10. const materialStages = await querySql('Select * From zh_material_stage Where mid = ?', [material.id]);
  11. for (const ms of materialStages) {
  12. const ms_rate_tp = ZhCalc.round(ZhCalc.mul(ms.m_tp, 1 + material.rate / 100), material.decimal.tp);
  13. rate_tp = ZhCalc.add(rate_tp, ms_rate_tp);
  14. }
  15. } else {
  16. rate_tp = ZhCalc.round(ZhCalc.mul(material.m_tp, 1 + material.rate / 100), material.decimal.tp);
  17. }
  18. await querySql('Update zh_material Set rate_tp = ? Where id = ?', [rate_tp, material.id]);
  19. console.log(`Update Material ${material.id}`);
  20. };
  21. const doComplete = async function() {
  22. try {
  23. const tender = await querySql('Select * From zh_tender');
  24. for (const t of tender) {
  25. console.log(`Update Tender ${t.id}:`);
  26. const materials = await querySql('Select * From zh_material where tid = ?', [t.id]);
  27. for (const m of materials) {
  28. await checkMaterial(m);
  29. }
  30. }
  31. } catch (err) {
  32. console.log(err);
  33. }
  34. BaseUtil.closePool();
  35. };
  36. const doCompleteTest = async function(tid) {
  37. try {
  38. const tender = await querySql('Select * From zh_tender where id = ?', [tid]);
  39. for (const t of tender) {
  40. console.log(`Update Tender ${t.id}:`);
  41. const materials = await querySql('Select * From zh_material where tid = ?', [t.id]);
  42. for (const m of materials) {
  43. await checkMaterial(m);
  44. }
  45. }
  46. } catch (err) {
  47. console.log(err);
  48. }
  49. BaseUtil.closePool();
  50. };
  51. const tenderId = process.argv[3];
  52. if (tenderId) {
  53. doCompleteTest(tenderId);
  54. } else {
  55. doComplete();
  56. }