| 
					
				 | 
			
			
				@@ -150,9 +150,6 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const renderData = await this._getDefaultRenderData(ctx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 [renderData.ledgerSpread, renderData.posSpread] = this._getSpreadSetting(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 renderData.changeConst = changeConst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // if (!ctx.stage.readOnly) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //     await ctx.service.stage.deleteInvalidData(ctx.stage.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // renderData.ledgerData = await ctx.service.ledger.getData(ctx.tender.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // const dgnData = await ctx.service.stageBillsDgn.getDgnData(ctx.tender.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // for (const d of dgnData) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -193,6 +190,24 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        _checkUniaData(data, field) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const groupData = this.ctx.helper._.groupBy(data, field); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const surplus = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const gd in groupData) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (groupData[gd].length > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    const first = groupData[gd][0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (let i = 1, iLen = groupData[gd].length; i < iLen; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        const check = groupData[gd][i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (this.ctx.helper._.isMatch({field: check[field], sid: check.sid, order: check.order, times: check.times}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                {field: first[field], sid: first.sid, order: first.order, times: first.times})) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            surplus.push(groupData[gd][i].id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return surplus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         async _getStageLedgerData(ctx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const ledgerData = await ctx.service.ledger.getData(ctx.tender.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const dgnData = await ctx.service.stageBillsDgn.getDgnData(ctx.tender.id); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -206,6 +221,10 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 curStageData = await ctx.service.stageBills.getAuditorStageData(ctx.tender.id, ctx.stage.id, ctx.stage.curTimes, ctx.stage.curOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 curStageData = await ctx.service.stageBills.getLastestStageData(ctx.tender.id, ctx.stage.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const surplus = this._checkUniaData(curStageData, 'lid'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (surplus.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    await ctx.service.stageBills.deleteById(surplus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 查询截止上期数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (ctx.stage.order > 1) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -230,6 +249,11 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     ctx.stage.id, ctx.stage.curTimes, ctx.stage.curOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 curStageData = await ctx.service.stagePos.getLastestStageData2(ctx.tender.id, ctx.stage.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const surplus = this._checkUniaData(curStageData, 'pid'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (surplus.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    await ctx.service.stagePos.deleteById(surplus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //console.timeEnd('cur'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 查询截止上期数据 
			 |