|
@@ -48,34 +48,57 @@ class GljDao extends OprDao{
|
|
|
async getGljItemsByRep(repositoryId,callback = null){
|
|
async getGljItemsByRep(repositoryId,callback = null){
|
|
|
try {
|
|
try {
|
|
|
let rst = await gljModel.find({repositoryId: repositoryId}).lean();
|
|
let rst = await gljModel.find({repositoryId: repositoryId}).lean();
|
|
|
|
|
+ // test-- 删除重复编码数据
|
|
|
|
|
+ /*const map = {};
|
|
|
|
|
+ rst.forEach(glj => {
|
|
|
|
|
+ if (glj.code === '016100400') {
|
|
|
|
|
+ console.log(glj);
|
|
|
|
|
+ }
|
|
|
|
|
+ const obj = {code: glj.code, ID: glj.ID};
|
|
|
|
|
+ if (!map[glj.code]) {
|
|
|
|
|
+ map[glj.code] = [obj];
|
|
|
|
|
+ } else {
|
|
|
|
|
+ map[glj.code].push(obj);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ const IDs = [];
|
|
|
|
|
+ for (let code in map) {
|
|
|
|
|
+ if (map[code].length > 1) {
|
|
|
|
|
+ map[code].sort((a, b) => a.ID - b.ID);
|
|
|
|
|
+ console.log(map[code]);
|
|
|
|
|
+ let hasUsed = false;
|
|
|
|
|
+ const removeIDs = [];
|
|
|
|
|
+ const tempIDs = [];
|
|
|
|
|
+ for (let i = 0; i < map[code].length; i++) {
|
|
|
|
|
+ const glj = map[code][i];
|
|
|
|
|
+ if (i !== 0) {
|
|
|
|
|
+ tempIDs.push(glj.ID);
|
|
|
|
|
+ }
|
|
|
|
|
+ const isUsed = await rationModel.findOne({'rationGljList.gljId': glj.ID});
|
|
|
|
|
+ if (isUsed) {
|
|
|
|
|
+ hasUsed = true;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ removeIDs.push(glj.ID);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (hasUsed) {
|
|
|
|
|
+ IDs.push(...removeIDs);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ IDs.push(...tempIDs);
|
|
|
|
|
+ }
|
|
|
|
|
+ //console.log(map[code]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (IDs.length) {
|
|
|
|
|
+ await gljModel.deleteMany({ID: {$in: IDs}});
|
|
|
|
|
+ }
|
|
|
|
|
+ console.log(IDs);*/
|
|
|
|
|
+ // test--
|
|
|
this.sortToNumber(rst);
|
|
this.sortToNumber(rst);
|
|
|
callback(0, rst);
|
|
callback(0, rst);
|
|
|
} catch (err) {
|
|
} catch (err) {
|
|
|
callback(1, null);
|
|
callback(1, null);
|
|
|
}
|
|
}
|
|
|
- /*//批量获取异步
|
|
|
|
|
- let functions = [];
|
|
|
|
|
- let count = await gljModel.find({repositoryId: repositoryId, $or: [{deleted: null}, {deleted: false}]}).count();
|
|
|
|
|
- let findCount = Math.ceil(count/500);
|
|
|
|
|
- for(let i = 0, len = findCount; i < len; i++){
|
|
|
|
|
- functions.push((function(flag) {
|
|
|
|
|
- return function (cb) {
|
|
|
|
|
- gljModel.find({repositoryId: repositoryId, deleted: null}, cb).skip(flag).sort({ID: 1}).limit(500);
|
|
|
|
|
- }
|
|
|
|
|
- })(i*500));
|
|
|
|
|
- }
|
|
|
|
|
- async.parallel(functions, function (err, results) {
|
|
|
|
|
- if(err){
|
|
|
|
|
- callback(err, null);
|
|
|
|
|
- }
|
|
|
|
|
- else{
|
|
|
|
|
- for(let stdGljs of results){
|
|
|
|
|
- rst = rst.concat(stdGljs);
|
|
|
|
|
- }
|
|
|
|
|
- me.sortToNumber(rst);
|
|
|
|
|
- callback(0, rst);
|
|
|
|
|
- }
|
|
|
|
|
- });*/
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
getGljItemByType (repositoryId, type, callback){
|
|
getGljItemByType (repositoryId, type, callback){
|
|
@@ -246,11 +269,63 @@ class GljDao extends OprDao{
|
|
|
|
|
|
|
|
static addGljItems (repId, lastOpr, items, callback) {
|
|
static addGljItems (repId, lastOpr, items, callback) {
|
|
|
if (items && items.length > 0) {
|
|
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]);
|
|
|
|
|
|
|
+ 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;
|
|
|
|
|
+ }
|
|
|
|
|
+ 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", {insertData, failCode});
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ /*counter.counterDAO.getIDAfterCount(counter.moduleName.GLJ, items.length, function(err, result){
|
|
|
|
|
+ const maxId = result.sequence_value;
|
|
|
|
|
+ const arr = [];
|
|
|
|
|
+ for (let i = 0; i < items.length; i++) {
|
|
|
|
|
+ const obj = new gljModel(items[i]);
|
|
|
obj.ID = (maxId - (items.length - 1) + i);
|
|
obj.ID = (maxId - (items.length - 1) + i);
|
|
|
obj.repositoryId = repId;
|
|
obj.repositoryId = repId;
|
|
|
arr.push(obj);
|
|
arr.push(obj);
|
|
@@ -269,7 +344,7 @@ class GljDao extends OprDao{
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
- });
|
|
|
|
|
|
|
+ });*/
|
|
|
} else {
|
|
} else {
|
|
|
callback(true, "No source", false);
|
|
callback(true, "No source", false);
|
|
|
}
|
|
}
|