jpc_field.js 4.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. 'use strict';
  2. const JV = require('./jpc_value_define');
  3. const JpcField = {
  4. createNew: function(rptTpl) {
  5. const JpcFieldResult = {};
  6. const me = this;
  7. JpcFieldResult[JV.NODE_DISCRETE_FIELDS] = {};
  8. if (rptTpl[JV.NODE_FIELD_MAP] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS]) {
  9. for (let i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS].length; i++) {
  10. me.createSingle(rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS][i], JpcFieldResult[JV.NODE_DISCRETE_FIELDS], rptTpl, JV.DATA_DISCRETE_DATA, i);
  11. }
  12. }
  13. JpcFieldResult[JV.NODE_MASTER_FIELDS] = {};
  14. if (rptTpl[JV.NODE_FIELD_MAP] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS]) {
  15. for (let i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS].length; i++) {
  16. me.createSingle(rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS][i], JpcFieldResult[JV.NODE_MASTER_FIELDS], rptTpl, JV.DATA_MASTER_DATA, i);
  17. }
  18. }
  19. JpcFieldResult[JV.NODE_DETAIL_FIELDS] = {};
  20. if (rptTpl[JV.NODE_FIELD_MAP] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS]) {
  21. for (let i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS].length; i++) {
  22. me.createSingle(rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS][i], JpcFieldResult[JV.NODE_DETAIL_FIELDS], rptTpl, JV.DATA_DETAIL_DATA, i);
  23. }
  24. }
  25. JpcFieldResult[JV.NODE_NO_MAPPING_FIELDS] = {};
  26. if (rptTpl[JV.NODE_NO_MAPPING_FIELDS]) {
  27. for (let i = 0; i < rptTpl[JV.NODE_NO_MAPPING_FIELDS].length; i++) {
  28. me.createSingle(rptTpl[JV.NODE_NO_MAPPING_FIELDS][i], JpcFieldResult[JV.NODE_NO_MAPPING_FIELDS], rptTpl, 'NA', JV.BLANK_FIELD_INDEX);
  29. }
  30. }
  31. JpcFieldResult[JV.NODE_MASTER_FIELDS_EX] = {};
  32. if (rptTpl[JV.NODE_FIELD_MAP] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS_EX]) {
  33. for (let i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS_EX].length; i++) {
  34. me.createSingle(rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS_EX][i], JpcFieldResult[JV.NODE_MASTER_FIELDS_EX], rptTpl, JV.DATA_MASTER_DATA_EX, i);
  35. }
  36. }
  37. JpcFieldResult[JV.NODE_DETAIL_FIELDS_EX] = {};
  38. if (rptTpl[JV.NODE_FIELD_MAP] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS_EX]) {
  39. for (let i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS_EX].length; i++) {
  40. me.createSingle(rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS_EX][i], JpcFieldResult[JV.NODE_DETAIL_FIELDS_EX], rptTpl, JV.DATA_DETAIL_DATA_EX, i);
  41. }
  42. }
  43. JpcFieldResult[JV.NODE_SIGNATURE_FIELDS] = {};
  44. if (rptTpl[JV.NODE_SIGNATURE_FIELDS]) {
  45. for (let i = 0; i < rptTpl[JV.NODE_SIGNATURE_FIELDS].length; i++) {
  46. me.createSignatureSingle(rptTpl[JV.NODE_SIGNATURE_FIELDS][i], JpcFieldResult[JV.NODE_SIGNATURE_FIELDS]);
  47. }
  48. }
  49. return JpcFieldResult;
  50. },
  51. createSingle: function(fieldNode, parentObj, rptTpl, dataNodeName, sequence) {
  52. if (fieldNode && fieldNode[JV.PROP_ID]) {
  53. const item = {};
  54. item[JV.PROP_ID] = fieldNode[JV.PROP_ID];
  55. item[JV.PROP_NAME] = fieldNode[JV.PROP_NAME];
  56. item[JV.PROP_DATA_TYPE] = fieldNode[JV.PROP_DATA_TYPE];
  57. if (fieldNode[JV.PROP_PRECISION]) {
  58. item[JV.PROP_PRECISION] = {};
  59. item[JV.PROP_PRECISION].type = fieldNode[JV.PROP_PRECISION].type;
  60. if (fieldNode[JV.PROP_PRECISION].type === 'fixed') {
  61. item[JV.PROP_FIXED_PRECISION_AMT] = fieldNode[JV.PROP_FIXED_PRECISION_AMT];
  62. } else {
  63. item[JV.PROP_PRECISION][JV.PROP_FLEXIBLE_REF_FILED_ID] = fieldNode[JV.PROP_PRECISION][JV.PROP_FLEXIBLE_REF_FILED_ID];
  64. item.flexiblePrecisionRefObj = fieldNode.flexiblePrecisionRefObj;
  65. }
  66. }
  67. if (fieldNode.hasOwnProperty('isPic')) {
  68. item.isPic = fieldNode.isPic;
  69. }
  70. item.DataNodeName = dataNodeName;
  71. item.DataSeq = sequence;
  72. parentObj[JV.PROP_ID + '_' + fieldNode[JV.PROP_ID]] = item;
  73. }
  74. },
  75. createSignatureSingle: function(fieldNode, parentObj) {
  76. if (fieldNode && fieldNode[JV.PROP_ID]) {
  77. const item = {};
  78. item[JV.PROP_ID] = fieldNode[JV.PROP_ID];
  79. item[JV.PROP_NAME] = fieldNode[JV.PROP_NAME];
  80. item[JV.PROP_DATA_TYPE] = fieldNode[JV.PROP_DATA_TYPE];
  81. item[JV.PROP_PATH] = fieldNode[JV.PROP_PATH];
  82. item[JV.PROP_PIC_STREAM] = fieldNode[JV.PROP_PIC_STREAM];
  83. parentObj[JV.PROP_ID + '_' + fieldNode[JV.PROP_ID]] = item;
  84. }
  85. },
  86. };
  87. module.exports = JpcField;