jpc_helper_discrete.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. 'use strict';
  2. const JV = require('../jpc_value_define');
  3. const JE = require('../jpc_rte');
  4. const JpcTextHelper = require('./jpc_helper_text');
  5. const JpcCommonOutputHelper = require('./jpc_helper_common_output');
  6. const JpcAreaHelper = require('./jpc_helper_area');
  7. const JpcFieldHelper = require('./jpc_helper_field');
  8. const JpcDiscreteHelper = {
  9. outputDiscreteInfo: function(discreteArray, bands, dataObj, unitFactor, pageStatus, segIdx, multiCols, multiColIdx, $CURRENT_RPT, customizeCfg, signatureRst, signatureDateRst) {
  10. const rst = [];
  11. if (discreteArray && dataObj) {
  12. for (let i = 0; i < discreteArray.length; i++) {
  13. const band = bands[discreteArray[i][JV.PROP_BAND_NAME]];
  14. if (band && pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] === true) {
  15. if (discreteArray[i][JV.PROP_TEXT]) {
  16. rst.push(JpcTextHelper.outputText(discreteArray[i][JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, multiCols, multiColIdx));
  17. }
  18. if (discreteArray[i][JV.PROP_TEXTS]) {
  19. for (let j = 0; j < discreteArray[i][JV.PROP_TEXTS].length; j++) {
  20. rst.push(JpcTextHelper.outputText(discreteArray[i][JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, multiCols, multiColIdx));
  21. }
  22. }
  23. if (discreteArray[i][JV.PROP_DISCRETE_FIELDS]) {
  24. let flexiblePrecisionRefObj = null;
  25. let flexibleRefField = null;
  26. for (let j = 0; j < discreteArray[i][JV.PROP_DISCRETE_FIELDS].length; j++) {
  27. const df = discreteArray[i][JV.PROP_DISCRETE_FIELDS][j];
  28. if (JE.isSignature(df[JV.PROP_FIELD_ID], $CURRENT_RPT)) {
  29. // 这里输出到signatureRst
  30. if (Array.isArray(signatureRst)) {
  31. const map_data_field = JE.F(df[JV.PROP_FIELD_ID], $CURRENT_RPT);
  32. const signatureItem = { signature_name: map_data_field[JV.PROP_NAME], path: null, pic: null };
  33. signatureItem[JV.PROP_CONTROL] = df[[JV.PROP_CONTROL]];
  34. signatureItem[JV.PROP_STYLE] = df[[JV.PROP_STYLE]];
  35. signatureItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  36. signatureRst.push(signatureItem);
  37. }
  38. } else if (JE.isDynamicParam(df[JV.PROP_PARAM_ID], $CURRENT_RPT)) {
  39. // 这里输出到signatureDateRst
  40. // console.log('current sign date df :');
  41. // console.log(df);
  42. if (Array.isArray(signatureDateRst)) {
  43. let pID = 0;
  44. if (df.hasOwnProperty(JV.PROP_PARAM_ID)) {
  45. pID = df[JV.PROP_PARAM_ID];
  46. } else {
  47. pID = df[JV.PROP_ID];
  48. }
  49. const param = JE.P(pID, $CURRENT_RPT);
  50. // const signatureDateItem = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, param[JV.PROP_DFT_VALUE], true);
  51. const signatureDateItem = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, df[JV.PROP_DFT_VALUE], true);
  52. // console.log('param :');
  53. // console.log(param);
  54. signatureDateItem.signature_name = param[JV.PROP_NAME];
  55. signatureDateItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  56. signatureDateRst.push(signatureDateItem);
  57. }
  58. } else {
  59. let value = '';
  60. let isPic = false;
  61. if (df[JV.PROP_FIELD_ID]) {
  62. // let map_data_field = JE.F(df[JV.PROP_FIELD_ID], $CURRENT_RPT);
  63. const map_data_field = JE.F(df[JV.PROP_FIELD_ID], $CURRENT_RPT);
  64. isPic = (map_data_field.isPic !== undefined && map_data_field.isPic);
  65. if (map_data_field.DataSeq !== JV.BLANK_FIELD_INDEX) {
  66. const data = dataObj[map_data_field.DataNodeName][map_data_field.DataSeq];
  67. if (data && data.length > 0) {
  68. if (data.length > segIdx) {
  69. value = data[segIdx];
  70. } else {
  71. value = data[0];
  72. }
  73. }
  74. } else {
  75. if (map_data_field[JV.PROP_AD_HOC_DATA] && map_data_field[JV.PROP_AD_HOC_DATA].length > 0) {
  76. const data = map_data_field[JV.PROP_AD_HOC_DATA];
  77. if (data && data.length > 0) {
  78. if (data.length > segIdx) {
  79. value = data[segIdx];
  80. } else {
  81. value = data[0];
  82. }
  83. }
  84. // value = map_data_field[JV.PROP_AD_HOC_DATA][0];
  85. } else value = '';
  86. }
  87. if (map_data_field && map_data_field[JV.PROP_PRECISION] && map_data_field.flexiblePrecisionRefObj) {
  88. let pre_ref_data = null;
  89. if (flexiblePrecisionRefObj === null) {
  90. flexiblePrecisionRefObj = {};
  91. flexibleRefField = JE.F(map_data_field[JV.PROP_PRECISION][JV.PROP_FLEXIBLE_REF_FILED_ID], $CURRENT_RPT);
  92. pre_ref_data = dataObj[map_data_field.DataNodeName][flexibleRefField.DataSeq]; // 这里的引用指标必须得存在,哪怕不显示,也要存放在指标集合中!
  93. for (const decimalObj of map_data_field.flexiblePrecisionRefObj) {
  94. flexiblePrecisionRefObj['refUnit_' + decimalObj.unit] = decimalObj.decimal;
  95. }
  96. }
  97. JpcFieldHelper.resetFlexibleFormat(df, pre_ref_data, flexiblePrecisionRefObj, segIdx, customizeCfg);
  98. } else {
  99. JpcFieldHelper.resetFormat(df, map_data_field, customizeCfg);
  100. }
  101. } else if (df[JV.PROP_PARAM_ID] || df[JV.PROP_ID]) {
  102. let pID = df[JV.PROP_PARAM_ID];
  103. if (df[JV.PROP_ID]) pID = df[JV.PROP_ID];
  104. const param = JE.P(pID, $CURRENT_RPT);
  105. value = param[JV.PROP_DFT_VALUE];
  106. }
  107. // console.log(value);
  108. // if (typeof value === 'string') {
  109. // if (value.indexOf('清单1101-1') >= 0) {
  110. // console.log('before: ' + value);
  111. // }
  112. // }
  113. const item = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, value, true);
  114. // position
  115. item[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, multiCols, multiColIdx, false, false);
  116. if (isPic && item[JV.PROP_VALUE] !== undefined && item[JV.PROP_VALUE] !== null && item[JV.PROP_VALUE] !== '') {
  117. if (Array.isArray(signatureRst)) {
  118. if (item[JV.PROP_VALUE][0] !== '/') {
  119. item[JV.PROP_VALUE] = '/' + item[JV.PROP_VALUE];
  120. }
  121. const signatureItem = { signature_name: JV.SIGNATURE_NAME_DUMMY, path: item[JV.PROP_VALUE], pic: null }; // 这里的pic数据在指标中里已经处理过了
  122. signatureItem[JV.PROP_CONTROL] = item[[JV.PROP_CONTROL]];
  123. signatureItem[JV.PROP_STYLE] = item[[JV.PROP_STYLE]];
  124. signatureItem[JV.PROP_AREA] = item[JV.PROP_AREA];
  125. signatureRst.push(signatureItem);
  126. item[JV.PROP_VALUE] = '';
  127. }
  128. }
  129. rst.push(item); // 不管是不是Pic,都得保留一个壳子
  130. }
  131. }
  132. }
  133. }
  134. }
  135. }
  136. return rst;
  137. },
  138. outputPreviewDiscreteInfo: function(discreteArray, bands, unitFactor, pageStatus) {
  139. const rst = [];
  140. for (let i = 0; i < discreteArray.length; i++) {
  141. const band = bands[discreteArray[i][JV.PROP_BAND_NAME]];
  142. if (band && pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] === true) {
  143. if (discreteArray[i][JV.PROP_TEXT]) {
  144. rst.push(JpcTextHelper.outputText(discreteArray[i][JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, 1, 0));
  145. }
  146. if (discreteArray[i][JV.PROP_TEXTS]) {
  147. for (let j = 0; j < discreteArray[i][JV.PROP_TEXTS].length; j++) {
  148. rst.push(JpcTextHelper.outputText(discreteArray[i][JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, 1, 0));
  149. }
  150. }
  151. if (discreteArray[i][JV.PROP_DISCRETE_FIELDS]) {
  152. for (let j = 0; j < discreteArray[i][JV.PROP_DISCRETE_FIELDS].length; j++) {
  153. const df = discreteArray[i][JV.PROP_DISCRETE_FIELDS][j];
  154. let value = '';
  155. if (df[JV.PROP_DFT_VALUE]) {
  156. value = df[JV.PROP_DFT_VALUE];
  157. }
  158. const item = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, value, null);
  159. // position
  160. item[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  161. rst.push(item);
  162. }
  163. }
  164. }
  165. }
  166. return rst;
  167. },
  168. outputPreviewSumInfoOutput: function(band, unitFactor, tab) {
  169. const rst = [];
  170. if (tab[JV.PROP_TEXT]) {
  171. rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, 1, 0));
  172. }
  173. if (tab[JV.PROP_TEXTS]) {
  174. for (let j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
  175. rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, 1, 0));
  176. }
  177. }
  178. if (tab[JV.PROP_SUM_FIELDS]) {
  179. for (let i = 0; i < tab[JV.PROP_SUM_FIELDS].length; i++) {
  180. const tab_field = tab[JV.PROP_SUM_FIELDS][i];
  181. if (!(tab_field[JV.PROP_HIDDEN])) {
  182. // rst.push(me.outputTabField(band, tab_field, null, -1, -1, 1, 0, 1, 0, unitFactor, true, controls, 0));
  183. const value = '';
  184. const item = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(tab_field, value, null);
  185. // position
  186. item[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  187. rst.push(item);
  188. }
  189. }
  190. }
  191. return rst;
  192. },
  193. }
  194. module.exports = JpcDiscreteHelper;