|
@@ -32,7 +32,7 @@ let cbTools = {
|
|
|
}
|
|
}
|
|
|
return this.getNodeByID(bills.ID);
|
|
return this.getNodeByID(bills.ID);
|
|
|
},
|
|
},
|
|
|
- //通过行获取根节点清单
|
|
|
|
|
|
|
+ /*//通过行获取根节点清单
|
|
|
getBillByRow: function (items, row) {
|
|
getBillByRow: function (items, row) {
|
|
|
if(cbTools.isDef(items[row]) &&
|
|
if(cbTools.isDef(items[row]) &&
|
|
|
cbTools.isUnDef(items[row]['parent'])&&
|
|
cbTools.isUnDef(items[row]['parent'])&&
|
|
@@ -41,6 +41,15 @@ let cbTools = {
|
|
|
return items[row];
|
|
return items[row];
|
|
|
}
|
|
}
|
|
|
return null;
|
|
return null;
|
|
|
|
|
+ },*/
|
|
|
|
|
+ //通过行获取节点清单
|
|
|
|
|
+ getBillByRow: function (items, row) {
|
|
|
|
|
+ if(cbTools.isDef(items[row]) &&
|
|
|
|
|
+ cbTools.isDef(items[row]['sourceType']) &&
|
|
|
|
|
+ items[row]['sourceType'] === calcBase.project.Bills.getSourceType()){
|
|
|
|
|
+ return items[row];
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
},
|
|
},
|
|
|
//通过ID获取节点行
|
|
//通过ID获取节点行
|
|
|
getRowByID: function (items, ID) {
|
|
getRowByID: function (items, ID) {
|
|
@@ -896,6 +905,7 @@ let cbAnalyzer = {
|
|
|
if(fArr.length !== rArr.length){
|
|
if(fArr.length !== rArr.length){
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
+ rArr = Array.from(new Set(rArr));
|
|
|
//判断合法性和存在性
|
|
//判断合法性和存在性
|
|
|
for(let i = 0, len = rArr.length; i < len; i++){
|
|
for(let i = 0, len = rArr.length; i < len; i++){
|
|
|
let idx = rArr[i] - 1;
|
|
let idx = rArr[i] - 1;
|
|
@@ -918,7 +928,6 @@ let cbAnalyzer = {
|
|
|
let figure = figureF[i];
|
|
let figure = figureF[i];
|
|
|
let billsIDs = [];
|
|
let billsIDs = [];
|
|
|
if(figure.type === 'base' && cbTools.isDef(baseFigures[figure.value])){
|
|
if(figure.type === 'base' && cbTools.isDef(baseFigures[figure.value])){
|
|
|
- //重构后:
|
|
|
|
|
//多重引用基数
|
|
//多重引用基数
|
|
|
let figureMultiRef = baseFigures[figure.value]['multiRef'];
|
|
let figureMultiRef = baseFigures[figure.value]['multiRef'];
|
|
|
let cycleCalcRef = baseFigures[figure.value]['cycleCalcRef'];
|
|
let cycleCalcRef = baseFigures[figure.value]['cycleCalcRef'];
|
|
@@ -964,12 +973,14 @@ let cbAnalyzer = {
|
|
|
let block = cbTools.getStackBlock(billIDs[i]);
|
|
let block = cbTools.getStackBlock(billIDs[i]);
|
|
|
if(block.length > 0){
|
|
if(block.length > 0){
|
|
|
stack = Array.from(new Set(stack.concat(block)));
|
|
stack = Array.from(new Set(stack.concat(block)));
|
|
|
- /* if(checkStack(stack, sIDs)){
|
|
|
|
|
- return true;
|
|
|
|
|
- }*/
|
|
|
|
|
- return isCycle(block);
|
|
|
|
|
|
|
+ let cycleFlag = isCycle(block);
|
|
|
|
|
+ if (cycleFlag === true) {
|
|
|
|
|
+ return cycleFlag;
|
|
|
|
|
+ }
|
|
|
|
|
+ //return isCycle(block);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ return false;
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
//四则运算合法性,控制不允许重复出现运算符,这里再判断一次,控制行引用只能F
|
|
//四则运算合法性,控制不允许重复出现运算符,这里再判断一次,控制行引用只能F
|
|
@@ -1016,7 +1027,7 @@ let cbParser = {
|
|
|
},
|
|
},
|
|
|
//获取行引用 eg: F10
|
|
//获取行引用 eg: F10
|
|
|
getFArr: function (exp) {
|
|
getFArr: function (exp) {
|
|
|
- let fRex = /F\d+/g;
|
|
|
|
|
|
|
+ let fRex = /F\d+\b/g;
|
|
|
let fArr = exp.match(fRex);
|
|
let fArr = exp.match(fRex);
|
|
|
return cbTools.isDef(fArr) ? fArr : [];
|
|
return cbTools.isDef(fArr) ? fArr : [];
|
|
|
},
|
|
},
|
|
@@ -1027,8 +1038,9 @@ let cbParser = {
|
|
|
for(let i = 0, len = arr.length; i < len; i++){
|
|
for(let i = 0, len = arr.length; i < len; i++){
|
|
|
tempArr = tempArr.concat(arr[i].match(rRex));
|
|
tempArr = tempArr.concat(arr[i].match(rRex));
|
|
|
}
|
|
}
|
|
|
- let rArr = Array.from(new Set(tempArr));
|
|
|
|
|
- return rArr;
|
|
|
|
|
|
|
+ return tempArr;
|
|
|
|
|
+ //let rArr = Array.from(new Set(tempArr));
|
|
|
|
|
+ //return rArr;
|
|
|
},
|
|
},
|
|
|
//获取uuid
|
|
//获取uuid
|
|
|
getUID: function (arr) {
|
|
getUID: function (arr) {
|
|
@@ -1164,7 +1176,7 @@ let cbParser = {
|
|
|
//去{}
|
|
//去{}
|
|
|
v = v.replace(/[{, },]/g, '');
|
|
v = v.replace(/[{, },]/g, '');
|
|
|
//行引用
|
|
//行引用
|
|
|
- let fidArr = this.getFIDArr(v);
|
|
|
|
|
|
|
+ let fidArr = _.uniq(this.getFIDArr(v));
|
|
|
let fExps = [];
|
|
let fExps = [];
|
|
|
for(let i = 0, len = fidArr.length; i < len; i++){
|
|
for(let i = 0, len = fidArr.length; i < len; i++){
|
|
|
let fExp = Object.create(null);
|
|
let fExp = Object.create(null);
|