|
@@ -17,6 +17,7 @@ module.exports={
|
|
|
getShareInfoMap,
|
|
|
getRecentShareList,
|
|
|
getProjectShareList,
|
|
|
+ getUnreadShareListByCompilation,
|
|
|
getShareTip,
|
|
|
getShareState,
|
|
|
moveProject:moveProject,
|
|
@@ -295,6 +296,23 @@ async function getProjectShareList(projectID, limit = null) {
|
|
|
return users;
|
|
|
}
|
|
|
|
|
|
+// 获取某用户某费用定额的未读的被分享记录
|
|
|
+async function getUnreadShareListByCompilation(userID, compilationID, isGetCount) {
|
|
|
+ const fields = isGetCount ? '-_id projectID ' : '-_id';
|
|
|
+ const list = await shareListModel.find({ receiver: userID, isRead: false }, fields);
|
|
|
+ const idList = list.reduce((acc, cur) => {
|
|
|
+ acc.push(cur.projectID);
|
|
|
+ return acc;
|
|
|
+ }, []);
|
|
|
+ const notDeleted = [{ deleteInfo: null }, { 'deleteInfo.deleted': false }];
|
|
|
+ const query = { ID: { $in: idList }, compilation: compilationID, $or: notDeleted };
|
|
|
+ if (isGetCount) {
|
|
|
+ return await projectModel.count(query)
|
|
|
+ }
|
|
|
+ const items = await projectModel.find(query, '-_id ID').lean();
|
|
|
+ return items.map(item => item.ID);
|
|
|
+}
|
|
|
+
|
|
|
// 获取分享的提示(造价书分享按钮tooltip使用)
|
|
|
async function getShareTip(projectID, limit) {
|
|
|
const task = [
|
|
@@ -368,9 +386,14 @@ async function copyExample(userID, compilation, projIDs){
|
|
|
let newDate = new Date(),
|
|
|
parentBulks = [];
|
|
|
const projectMaps = [];
|
|
|
+ // 传入项目ID的新ID
|
|
|
+ const newProjIDs = [];
|
|
|
for (let data of allProjs) {
|
|
|
let orgID = data.ID;
|
|
|
data.ID = IDMapping[data.ID];
|
|
|
+ if (projIDs.indexOf(orgID) >= 0) {
|
|
|
+ newProjIDs.push(data.ID);
|
|
|
+ }
|
|
|
data.ParentID = IDMapping[data.ParentID] ? IDMapping[data.ParentID] : -1;
|
|
|
data.NextSiblingID = IDMapping[data.NextSiblingID] ? IDMapping[data.NextSiblingID] : -1;
|
|
|
data.createDateTime = newDate;
|
|
@@ -403,7 +426,7 @@ async function copyExample(userID, compilation, projIDs){
|
|
|
// 处理项目数据
|
|
|
const projectTasks = [projectModel.bulkWrite(parentBulks), createProject(projectMaps)];
|
|
|
await Promise.all(projectTasks);
|
|
|
- return true;
|
|
|
+ return newProjIDs;
|
|
|
}
|
|
|
|
|
|
async function accessToCopyProject(userID, compilationID, data, newProjectID) {
|
|
@@ -424,7 +447,7 @@ async function handleCopyProject(key, userID, compilationID, data, newProjectID)
|
|
|
const doc = { status: 'finish' };
|
|
|
try {
|
|
|
const projectMap = await copyProject(userID, compilationID, data, newProjectID);
|
|
|
- doc.projectID = projectMap.copy.document.ID;
|
|
|
+ doc.projectID = [projectMap.copy.document.ID];
|
|
|
} catch (err) {
|
|
|
doc.status = 'error';
|
|
|
doc.errorMsg = String(err);
|
|
@@ -1554,7 +1577,6 @@ async function importChongqingProject(data) {
|
|
|
doImport(data.user_id,data.session.sessionCompilation._id,data.session.sessionCompilation.adProjects,data.key);
|
|
|
|
|
|
return "start importing";
|
|
|
-
|
|
|
async function doImport(user_id,compilationId,projectIDs,key) {
|
|
|
let doc = {status:"finish"};
|
|
|
try {
|
|
@@ -1562,6 +1584,8 @@ async function importChongqingProject(data) {
|
|
|
if(r == false){
|
|
|
doc.errorMsg = "导入失败,请检查项目是否存在!";
|
|
|
doc.status = "error";
|
|
|
+ } else {
|
|
|
+ doc.projectID = r;
|
|
|
}
|
|
|
}catch (error){
|
|
|
console.log(error);
|
|
@@ -2253,7 +2277,7 @@ async function doDownLoadAndImport(privateDownloadUrl,info) {
|
|
|
doc.errorMsg = result.msg;
|
|
|
doc.status = "error";
|
|
|
} else {
|
|
|
- doc.projectID = result.constructionProjectID;
|
|
|
+ doc.projectID = [result.constructionProjectID];
|
|
|
}
|
|
|
}catch (error){
|
|
|
console.log(error);
|
|
@@ -2275,14 +2299,22 @@ async function importProcessChecking(data){
|
|
|
result.status = "complete";
|
|
|
await importLogsModel.remove(query);
|
|
|
// 获取导入的项目数据
|
|
|
- if (log.projectID) {
|
|
|
+ if (log.projectID && log.projectID.length > 0) {
|
|
|
+ const projects = await getPosterityProjects(log.projectID, true);
|
|
|
+ if (!(projects.length === 1 && projects[0].projType === projectType.tender)) { // 处理的是建设项目数据
|
|
|
+ const summaryInfo = await getSummaryInfo(log.projectID);
|
|
|
+ setupSummaryFields(summaryInfo, projects);
|
|
|
+ }
|
|
|
+ result.data = projects;
|
|
|
+ }
|
|
|
+ /* if (log.projectID && log.projectID.length > 0) {
|
|
|
const projects = await getPosterityProjects([log.projectID], true);
|
|
|
if (!(projects.length === 1 && projects[0].projType === projectType.tender)) { // 处理的是建设项目数据
|
|
|
const summaryInfo = await getSummaryInfo([log.projectID]);
|
|
|
setupSummaryFields(summaryInfo, projects);
|
|
|
}
|
|
|
result.data = projects;
|
|
|
- }
|
|
|
+ } */
|
|
|
}else if(log.status == "start"){
|
|
|
result.status = "processing";
|
|
|
result.content = log.content;
|
|
@@ -2359,7 +2391,7 @@ async function handleImportInterface(key, session) {
|
|
|
throw '您创建的项目个数超限,请联系我们的客服人员,或者导出建设项目保存到本地备份,删除云上数据。';
|
|
|
}
|
|
|
const projectID = await importProject(importData, userID, compilationID);
|
|
|
- doc.projectID = projectID;
|
|
|
+ doc.projectID = [projectID];
|
|
|
} catch (err) {
|
|
|
doc.errorMsg = typeof err === 'string' ? err : '导入接口失败,请检查接口文件!';
|
|
|
doc.status = 'error';
|