jpc_helper_discrete.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  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 SEG_PAGE_SPLIT_STR = '`';
  9. const JpcDiscreteHelper = {
  10. outputDiscreteInfo: function(discreteArray, bands, dataObj, unitFactor, pageStatus, segIdx, segPageIdx, multiCols, multiColIdx, $CURRENT_RPT, customizeCfg, signatureRst, signatureDateRst, signatureAuditRst) {
  11. const rst = [];
  12. if (discreteArray && dataObj) {
  13. for (let i = 0; i < discreteArray.length; i++) {
  14. const band = bands[discreteArray[i][JV.PROP_BAND_NAME]];
  15. if (band && pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] === true) {
  16. if (discreteArray[i][JV.PROP_TEXT]) {
  17. rst.push(JpcTextHelper.outputText(discreteArray[i][JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, multiCols, multiColIdx));
  18. }
  19. if (discreteArray[i][JV.PROP_TEXTS]) {
  20. for (let j = 0; j < discreteArray[i][JV.PROP_TEXTS].length; j++) {
  21. rst.push(JpcTextHelper.outputText(discreteArray[i][JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, multiCols, multiColIdx));
  22. }
  23. }
  24. if (discreteArray[i][JV.PROP_DISCRETE_FIELDS]) {
  25. let flexiblePrecisionRefObj = null;
  26. let flexibleRefField = null;
  27. for (let j = 0; j < discreteArray[i][JV.PROP_DISCRETE_FIELDS].length; j++) {
  28. const df = discreteArray[i][JV.PROP_DISCRETE_FIELDS][j];
  29. if (!this.setupSignatureFieldParam(signatureRst, signatureDateRst, signatureAuditRst, $CURRENT_RPT, band, unitFactor, df)) {
  30. let value = '';
  31. let isPic = false;
  32. if (df[JV.PROP_FIELD_ID]) {
  33. // let map_data_field = JE.F(df[JV.PROP_FIELD_ID], $CURRENT_RPT);
  34. const map_data_field = JE.F(df[JV.PROP_FIELD_ID], $CURRENT_RPT);
  35. isPic = (map_data_field.isPic !== undefined && map_data_field.isPic);
  36. if (map_data_field.DataSeq !== JV.BLANK_FIELD_INDEX) {
  37. const data = dataObj[map_data_field.DataNodeName][map_data_field.DataSeq];
  38. if (data && data.length > 0) {
  39. if (data.length > segIdx) {
  40. value = data[segIdx];
  41. } else {
  42. value = data[0];
  43. }
  44. value = this._getSegPageValue(value, segPageIdx);
  45. // console.log(value);
  46. }
  47. } else {
  48. if (map_data_field[JV.PROP_AD_HOC_DATA] && map_data_field[JV.PROP_AD_HOC_DATA].length > 0) {
  49. const data = map_data_field[JV.PROP_AD_HOC_DATA];
  50. if (data && data.length > 0) {
  51. if (data.length > segIdx) {
  52. value = data[segIdx];
  53. } else {
  54. value = data[0];
  55. }
  56. }
  57. // value = map_data_field[JV.PROP_AD_HOC_DATA][0];
  58. value = this._getSegPageValue(value, segPageIdx);
  59. } else value = '';
  60. }
  61. if (map_data_field && map_data_field[JV.PROP_PRECISION] && map_data_field.flexiblePrecisionRefObj) {
  62. let pre_ref_data = null;
  63. if (flexiblePrecisionRefObj === null) {
  64. flexiblePrecisionRefObj = {};
  65. flexibleRefField = JE.F(map_data_field[JV.PROP_PRECISION][JV.PROP_FLEXIBLE_REF_FILED_ID], $CURRENT_RPT);
  66. pre_ref_data = dataObj[map_data_field.DataNodeName][flexibleRefField.DataSeq]; // 这里的引用指标必须得存在,哪怕不显示,也要存放在指标集合中!
  67. for (const decimalObj of map_data_field.flexiblePrecisionRefObj) {
  68. flexiblePrecisionRefObj['refUnit_' + decimalObj.unit] = decimalObj.decimal;
  69. }
  70. }
  71. JpcFieldHelper.resetFlexibleFormat(df, pre_ref_data, flexiblePrecisionRefObj, segIdx, customizeCfg);
  72. } else {
  73. JpcFieldHelper.resetFormat(df, map_data_field, customizeCfg);
  74. }
  75. } else if (df[JV.PROP_PARAM_ID] || df[JV.PROP_ID]) {
  76. let pID = df[JV.PROP_PARAM_ID];
  77. if (df[JV.PROP_ID]) pID = df[JV.PROP_ID];
  78. const param = JE.P(pID, $CURRENT_RPT);
  79. value = param[JV.PROP_DFT_VALUE];
  80. }
  81. // console.log(value);
  82. // if (typeof value === 'string') {
  83. // if (value.indexOf('清单1101-1') >= 0) {
  84. // console.log('before: ' + value);
  85. // }
  86. // }
  87. const item = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, value, true);
  88. // position
  89. item[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, multiCols, multiColIdx, false, false);
  90. if (isPic && item[JV.PROP_VALUE] !== undefined && item[JV.PROP_VALUE] !== null && item[JV.PROP_VALUE] !== '') {
  91. if (Array.isArray(signatureRst)) {
  92. if (item[JV.PROP_VALUE][0] !== '/') {
  93. item[JV.PROP_VALUE] = '/' + item[JV.PROP_VALUE];
  94. }
  95. const signatureItem = { signature_name: JV.SIGNATURE_NAME_DUMMY, path: item[JV.PROP_VALUE], pic: null }; // 这里的pic数据在指标中里已经处理过了
  96. signatureItem[JV.PROP_CONTROL] = item[[JV.PROP_CONTROL]];
  97. signatureItem[JV.PROP_STYLE] = item[[JV.PROP_STYLE]];
  98. signatureItem[JV.PROP_AREA] = {};
  99. signatureItem[JV.PROP_AREA][JV.PROP_LEFT] = item[JV.PROP_AREA][JV.PROP_LEFT];
  100. signatureItem[JV.PROP_AREA][JV.PROP_RIGHT] = item[JV.PROP_AREA][JV.PROP_RIGHT];
  101. signatureItem[JV.PROP_AREA][JV.PROP_TOP] = item[JV.PROP_AREA][JV.PROP_TOP];
  102. signatureItem[JV.PROP_AREA][JV.PROP_BOTTOM] = item[JV.PROP_AREA][JV.PROP_BOTTOM];
  103. signatureRst.push(signatureItem);
  104. item[JV.PROP_VALUE] = '';
  105. }
  106. }
  107. rst.push(item); // 不管是不是Pic,都得保留一个壳子
  108. }
  109. /*
  110. if (JE.isSignature(df[JV.PROP_FIELD_ID], $CURRENT_RPT)) {
  111. // 这里输出到signatureRst
  112. if (Array.isArray(signatureRst)) {
  113. const map_data_field = JE.F(df[JV.PROP_FIELD_ID], $CURRENT_RPT);
  114. const signatureItem = { signature_name: map_data_field[JV.PROP_NAME], path: null, pic: null };
  115. signatureItem[JV.PROP_CONTROL] = df[[JV.PROP_CONTROL]];
  116. signatureItem[JV.PROP_STYLE] = df[[JV.PROP_STYLE]];
  117. signatureItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  118. signatureRst.push(signatureItem);
  119. }
  120. } else if (JE.isDynamicParam(df[JV.PROP_PARAM_ID], $CURRENT_RPT)) {
  121. // 这里输出到signatureDateRst
  122. // console.log('current sign date df :');
  123. // console.log(df);
  124. if (Array.isArray(signatureDateRst)) {
  125. let pID = 0;
  126. if (df.hasOwnProperty(JV.PROP_PARAM_ID)) {
  127. pID = df[JV.PROP_PARAM_ID];
  128. } else {
  129. pID = df[JV.PROP_ID];
  130. }
  131. const param = JE.P(pID, $CURRENT_RPT);
  132. // const signatureDateItem = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, param[JV.PROP_DFT_VALUE], true);
  133. const signatureDateItem = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, df[JV.PROP_DFT_VALUE], true);
  134. // console.log('Date param :');
  135. // console.log(param);
  136. signatureDateItem.signature_name = param[JV.PROP_NAME];
  137. signatureDateItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  138. signatureDateRst.push(signatureDateItem);
  139. }
  140. } else if (JE.isSignatureAudit(df[JV.PROP_PARAM_ID], $CURRENT_RPT)) {
  141. if (Array.isArray(signatureAuditRst)) {
  142. let pID = 0;
  143. if (df.hasOwnProperty(JV.PROP_PARAM_ID)) {
  144. pID = df[JV.PROP_PARAM_ID];
  145. } else {
  146. pID = df[JV.PROP_ID];
  147. }
  148. const param = JE.P(pID, $CURRENT_RPT);
  149. const signatureAuditItem = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, df[JV.PROP_DFT_VALUE], true);
  150. // console.log('Aidit param :');
  151. // console.log(param);
  152. signatureAuditItem.signature_name = param[JV.PROP_NAME];
  153. signatureAuditItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  154. signatureAuditRst.push(signatureAuditItem);
  155. }
  156. } else {
  157. }
  158. /*/
  159. }
  160. }
  161. }
  162. }
  163. }
  164. return rst;
  165. },
  166. setupSignatureFieldParam: function(signatureRst, signatureDateRst, signatureAuditRst, $CURRENT_RPT, band, unitFactor, df) {
  167. let rst = false;
  168. if (JE.isSignature(df[JV.PROP_FIELD_ID], $CURRENT_RPT)) {
  169. // 这里输出到signatureRst
  170. if (Array.isArray(signatureRst)) {
  171. const map_data_field = JE.F(df[JV.PROP_FIELD_ID], $CURRENT_RPT);
  172. const signatureItem = { signature_name: map_data_field[JV.PROP_NAME], path: null, pic: null };
  173. signatureItem[JV.PROP_CONTROL] = df[[JV.PROP_CONTROL]];
  174. signatureItem[JV.PROP_STYLE] = df[[JV.PROP_STYLE]];
  175. signatureItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  176. signatureRst.push(signatureItem);
  177. rst = true;
  178. }
  179. } else if (JE.isDynamicParam(df[JV.PROP_PARAM_ID], $CURRENT_RPT)) {
  180. // 这里输出到signatureDateRst
  181. // console.log('current sign date df :');
  182. // console.log(df);
  183. if (Array.isArray(signatureDateRst)) {
  184. let pID = 0;
  185. if (df.hasOwnProperty(JV.PROP_PARAM_ID)) {
  186. pID = df[JV.PROP_PARAM_ID];
  187. } else {
  188. pID = df[JV.PROP_ID];
  189. }
  190. const param = JE.P(pID, $CURRENT_RPT);
  191. // const signatureDateItem = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, param[JV.PROP_DFT_VALUE], true);
  192. const signatureDateItem = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, df[JV.PROP_DFT_VALUE], true);
  193. // console.log('Date param :');
  194. // console.log(param);
  195. signatureDateItem.signature_name = param[JV.PROP_NAME];
  196. signatureDateItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  197. signatureDateRst.push(signatureDateItem);
  198. rst = true;
  199. }
  200. } else if (JE.isSignatureAudit(df[JV.PROP_PARAM_ID], $CURRENT_RPT)) {
  201. if (Array.isArray(signatureAuditRst)) {
  202. let pID = 0;
  203. if (df.hasOwnProperty(JV.PROP_PARAM_ID)) {
  204. pID = df[JV.PROP_PARAM_ID];
  205. } else {
  206. pID = df[JV.PROP_ID];
  207. }
  208. const param = JE.P(pID, $CURRENT_RPT);
  209. const signatureAuditItem = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, df[JV.PROP_DFT_VALUE], true);
  210. // console.log('Aidit param :');
  211. // console.log(param);
  212. signatureAuditItem.signature_name = param[JV.PROP_NAME];
  213. signatureAuditItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  214. signatureAuditRst.push(signatureAuditItem);
  215. rst = true;
  216. }
  217. }
  218. return rst;
  219. },
  220. _getSegPageValue: function(orgData, segPageIdx) {
  221. let rst = orgData;
  222. if (typeof orgData === 'string') {
  223. const splitStrs = orgData.split(SEG_PAGE_SPLIT_STR);
  224. if (splitStrs.length > 1) {
  225. if (splitStrs.length > segPageIdx) {
  226. rst = splitStrs[segPageIdx];
  227. } else {
  228. rst = splitStrs[splitStrs.length - 1];
  229. }
  230. }
  231. }
  232. return rst;
  233. },
  234. outputPreviewDiscreteInfo: function(discreteArray, bands, unitFactor, pageStatus) {
  235. const rst = [];
  236. for (let i = 0; i < discreteArray.length; i++) {
  237. const band = bands[discreteArray[i][JV.PROP_BAND_NAME]];
  238. if (band && pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] === true) {
  239. if (discreteArray[i][JV.PROP_TEXT]) {
  240. rst.push(JpcTextHelper.outputText(discreteArray[i][JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, 1, 0));
  241. }
  242. if (discreteArray[i][JV.PROP_TEXTS]) {
  243. for (let j = 0; j < discreteArray[i][JV.PROP_TEXTS].length; j++) {
  244. rst.push(JpcTextHelper.outputText(discreteArray[i][JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, 1, 0));
  245. }
  246. }
  247. if (discreteArray[i][JV.PROP_DISCRETE_FIELDS]) {
  248. for (let j = 0; j < discreteArray[i][JV.PROP_DISCRETE_FIELDS].length; j++) {
  249. const df = discreteArray[i][JV.PROP_DISCRETE_FIELDS][j];
  250. let value = '';
  251. if (df[JV.PROP_DFT_VALUE]) {
  252. value = df[JV.PROP_DFT_VALUE];
  253. }
  254. const item = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, value, null);
  255. // position
  256. item[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  257. rst.push(item);
  258. }
  259. }
  260. }
  261. }
  262. return rst;
  263. },
  264. outputPreviewSumInfoOutput: function(band, unitFactor, tab) {
  265. const rst = [];
  266. if (tab[JV.PROP_TEXT]) {
  267. rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, 1, 0));
  268. }
  269. if (tab[JV.PROP_TEXTS]) {
  270. for (let j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
  271. rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, 1, 0));
  272. }
  273. }
  274. if (tab[JV.PROP_SUM_FIELDS]) {
  275. for (let i = 0; i < tab[JV.PROP_SUM_FIELDS].length; i++) {
  276. const tab_field = tab[JV.PROP_SUM_FIELDS][i];
  277. if (!(tab_field[JV.PROP_HIDDEN])) {
  278. // rst.push(me.outputTabField(band, tab_field, null, -1, -1, 1, 0, 1, 0, unitFactor, true, controls, 0));
  279. const value = '';
  280. const item = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(tab_field, value, null);
  281. // position
  282. item[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
  283. rst.push(item);
  284. }
  285. }
  286. }
  287. return rst;
  288. },
  289. }
  290. module.exports = JpcDiscreteHelper;