|
@@ -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);
|