| 
					
				 | 
			
			
				@@ -297,29 +297,57 @@ class GljDao  extends OprDao{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     static addGljItems (repId, lastOpr, items, callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (items && items.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            counter.counterDAO.getIDAfterCount(counter.moduleName.GLJ, items.length, function(err, result){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var maxId = result.sequence_value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var arr = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                for (var i = 0; i < items.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    var obj = new gljModel(items[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    obj.ID = (maxId - (items.length - 1) + i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    obj.repositoryId = repId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    arr.push(obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const codes = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            items.forEach(item => codes.push(item.code)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            gljModel.find({repositoryId: repId, code: {$in: codes}}, '-_id code', {lean: true}, (err, codeData) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    callback(true, '判断编码唯一性失败', false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                gljModel.collection.insert(arr, null, function(err, docs){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        callback(true, "Fail to add", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const insertData = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const failCode = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                items.forEach(item => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    const matchData = codeData.find(codeItem => codeItem.code === item.code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!matchData) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        insertData.push(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        failCode.push(item.code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!insertData.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    callback(false, 'empty data', {insertData, failCode}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                counter.counterDAO.getIDAfterCount(counter.moduleName.GLJ, items.length, (counterErr, counterData) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (counterErr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        callback(true, '获取人材机ID失败', false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    const maxId = counterData.sequence_value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (let i = 0; i < insertData.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        insertData[i].ID = (maxId - (insertData.length - 1) + i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        insertData[i].repositoryId = repId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    const task = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    insertData.forEach(item => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        task.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            insertOne: {document: item} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    gljModel.bulkWrite(task, (insertErr, rst) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (insertErr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            callback(true, '新增数据失败', false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         GljDao.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 callback(true, "Fail to update Operator", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                callback(false, "Add successfully", docs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                callback(false, "Add successfully", {insertData, failCode}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             callback(true, "No source", false); 
			 |