Skip to content

Instantly share code, notes, and snippets.

@bluemoon2014
Last active April 24, 2018 09:08
Show Gist options
  • Save bluemoon2014/76b61c66e9fa8f60ca1b891655072e44 to your computer and use it in GitHub Desktop.
Save bluemoon2014/76b61c66e9fa8f60ca1b891655072e44 to your computer and use it in GitHub Desktop.
普通基线接口 包含下载上传
/**
* Created by Linyuning on 2018/4/10.
*/
var MysqlDB = require("../db/MysqlDB.js");
var mysqldb = new MysqlDB(config.mysqlDatabase);
var commonUtil = require("../utils/commonUtil.js");
var sqlUtil = require("../utils/sqlUtil.js");
var bidPlanSQLServer = {};
const BID_PLAN_TABLE_NAME = "b_bid_plan";
const BID_PLAN_TABLE_COLUMNS = [
"id",
"code",
"segment",
"projectCode",
"teamCode",
"segType",
"summary",
"forcastFee",
"description",
"consignCopper",
"status",
"created"
];
bidPlanSQLServer.addBidPlan = function (params) {
return new Promise(function (accept, reject) {
if (commonUtil.isEmpty(params.code)) {
reject("[招标编号]必须输入");
return;
}
if (commonUtil.isEmpty(params.projectCode)) {
reject("[所属项目]必须输入");
return;
}
if (commonUtil.isEmpty(params.teamCode)) {
reject("[所属团队]必须输入");
return;
}
if (commonUtil.isEmpty(params.forcastFee)) {
reject("[预估费用]必须输入");
return;
}
sqlUtil.generateInsertSql(BID_PLAN_TABLE_NAME, {
code : params.code,
segment : params.segment,
projectCode : params.projectCode,
teamCode : params.teamCode,
segType : params.segType,
summary : params.summary,
forcastFee : params.forcastFee,
description : params.description,
consignCopper : params.consignCopper,
status : params.status,
blockNumber : params.blockNumber,
blockHash : params.blockHash,
transactionHash : params.transactionHash,
created : params.created
}).then(function (option) {
return mysqldb.execute(option.sql, option.sql_param).then(accept, reject);
});
});
};
bidPlanSQLServer.modBidPlan = function (params) {
return new Promise(function (accept, reject) {
if (commonUtil.isEmpty(params.code)) {
reject("[招标编号]必须输入");
return;
}
sqlUtil.generateUpdateSql(BID_PLAN_TABLE_NAME, {
segment : params.segment,
projectCode : params.projectCode,
teamCode : params.teamCode,
segType : params.segType,
summary : params.summary,
forcastFee : params.forcastFee,
description : params.description,
consignCopper : params.consignCopper,
status : params.status,
blockNumber : params.blockNumber,
blockHash : params.blockHash,
transactionHash : params.transactionHash
}, {code : params.code}).then(function (option) {
return mysqldb.execute(option.sql, option.sql_param).then(accept, reject);
});
});
};
bidPlanSQLServer.queryBidPlanList = function (params) {
return new Promise(function (accept, reject) {
sqlUtil.generateQuerySql(BID_PLAN_TABLE_NAME, BID_PLAN_TABLE_COLUMNS, null, {id : "desc"}, params.pageNo, params.pageSize).then(function (option) {
var sql = "select bp.*, p.projectName as projectName, t.teamName as teamName from (" + option.sql + ") bp "
+ " left join b_project_info p on bp.projectCode = p.projectCode left join b_team_info t on bp.teamCode = t.teamCode";
return mysqldb.execute(sql, option.sql_param).then(accept, reject);
});
});
};
bidPlanSQLServer.queryBidPlanByCode = function (params) {
return new Promise(function (accept, reject) {
if (commonUtil.isEmpty(params.code)) {
reject("[招标编号]必须输入");
return;
}
sqlUtil.generateQuerySql(BID_PLAN_TABLE_NAME, BID_PLAN_TABLE_COLUMNS, {code : params.code}).then(function (option) {
var sql = "select bp.*, p.projectName as projectName, t.teamName as teamName from (" + option.sql + ") bp "
+ " left join b_project_info p on bp.projectCode = p.projectCode left join b_team_info t on bp.teamCode = t.teamCode";
return mysqldb.execute(sql, option.sql_param).then(accept, reject);
});
});
};
module.exports = bidPlanSQLServer;
/**
* Created by myc on 2018/4/16.
*/
var express = require('express');
var managerBidBackAndIssue = express.Router();
var bidBackAndIssueSQLServer = require('../server/BidBackAndIssueSQLServer.js');
var bidQKLServer = require('../server/BidQKLServer.js');
var bidAttachSQLServer = require("../server/AttachSQLServer.js");
var logSQLServer = require('../server/LogSQLServer.js');
var logQKLServer = require('../server/LogQKLServer.js');
var logUtil = require("../utils/logUtil.js");
var commonUtil = require("../utils/commonUtil.js");
var responseUtil = require("../utils/responseUtil");
//区块链用的 拼接参数
const BID_BACK_CONTENT_ARRAY = ["code","bidCode","backDate","backAmount","description","created"];
const BID_ATTACH_CONTENT_ARRAY = ["code",
"refType",
"refCode",
"name",
"path",
"size",
"mimeType",
"description",
"accCode",
"created"
];
const BID_ISSUE_CONTENT_ARRAY = ["code", "bidCode", "issueDate", "openDate", "description", "created"];
var filter = require("../domain/filter");
managerBidBackAndIssue.use(filter.checkToken);
//处理Post请求需要的
var bodyParser = require("body-parser");
managerBidBackAndIssue.use(bodyParser.urlencoded({extended : false}));
/* GET users listing. *///?
managerBidBackAndIssue.get('/', function (req, res) {
res.send('respond with a resource');
});
//-------------------------mycBegin---------------------
//附件和回标关联 数组 包含附件对象的信息
// refType : params.refType,
// refCode : params.refCode,
// name : params.name,
// description : params.description,
// blockNumber : params.blockNumber,
// blockHash : params.blockHash,
// transactionHash : params.transactionHash
//未加入区块链 而且 在参数中包含refType 通用方法 单纯修改附件 绑定信息在参数中
function bindWithAttachSQL(attachs, txoption) {
if (commonUtil.isNotEmpty(attachs)) {
// Promise.all(attachs.map(function (attach) {
// attach.refType = 5;
// return bidQKLServer.updateBidPlanAttachment(commonUtil.join(attach, BID_ATTACH_CONTENT_ARRAY), txoption);
// })).then(function (receipt) {
//
// bidBackBindAttachLogInfo = {
// dataName : "",
// module : "回标附件",
// func : "addBidBack",
// businessID : bidBackCode,
// operator : user.userName,
// operateTime : logUtil.getFormatByTime(),
// operateDesc : "加入回标信息"
// }
//
//
//
//
// }).then().catch()
return Promise.all(attachs.map(function(attach) {
// attach.refType = 5;
return bidAttachSQLServer.modAttach(attach);
}));
}else{
return Promise.resolve();
}
}
//-------------------------mycEnd-----------------------
// ----------------------myc-----------------
function checkBidBackParamsAttachs(params) {
return new Promise(function (resolve, reject){
if (commonUtil.isEmpty(params.bidCode)) {
reject("[招标编号] 必须输入");
return;
}
if (commonUtil.isEmpty(params.backDate)) {
reject("[回标日期] 必须输入");
return;
}
if (commonUtil.isEmpty(params.backAmount)) {
reject("[回标金额] 必须输入");
return;
}
if (commonUtil.isEmpty(params.description)) {
reject("[回标描述] 必须输入");
return;
}
var attachs = params.attachs;
if (commonUtil.isNotEmpty(attachs)) {
if(!Array.isArray(attachs)) {
reject("附件参数错误");
return;
}
attachs = attachs.filter(function (attach) {
return commonUtil.isNotEmpty(attach)
});
}
resolve(attachs);
});
}
// ----------------------mycend-----------------
//返回查询到的attach 对象数组(有记录在案)
//传入code 数组
function queryBidAttachByCodesAndReturnRecordedAttachs(_codes) {
return new Promise(function (resolve, reject) {
Promise.all(_codes.map(function (code) {
return bidAttachSQLServer.queryAttachByCode(code);
})).then(function (results) {
var codes_ = results.map(function (attachs) {
if (attachs.length > 0) return attachs[0];
});
resolve(codes_);
}).catch(reject);
});
}
//修改的附件和已有记录的附件 返回需删除的和需新增的附件数组
function parseNewAndRecordedAttachs(_newAttachs, _recordedAttachs) {
// var equalArray = [],newAttachsNotEqual = [], recordedAttachsNotEqual =[];
_newAttachs.map(function (currentNewAttach) {
});
}
//修改所关联的附件 results 是查出来的附件
//如果要修改的附件不存在 则添加
//如果要修改的附件存在 则不做什么
//如果已经存在的附件不在修改的附件中,则删除
//如果么有传attach字段 则不改什么
function modBidAttachWithRefCode(attachCodes, attachObjcResults, bidBackCode, attachReftype, user, txOption) {
return new Promise(function(resolve, reject) {
var attachDic = {};
var existCodes = attachObjcResults.map(function (AttachObjcResult) {
attachDic[AttachObjcResult.code] = AttachObjcResult;
return AttachObjcResult.code;
});
var updated = []; // 存入修改记录
//没有这个参数 则什么都不做
if (!attachCodes) {
resolve(updated);
return;//不进行一下操作 因为无值
}
//修改为空数组 无记录
if (Array.isArray(attachCodes) && attachCodes.length == 0 && commonUtil.isEmpty(AttachObjcResults)){
resolve(updated);
return;
}
//修改是空数组 有记录附件
if (Array.isArray(attachCodes) && attachCodes.length == 0 && commonUtil.isNotEmpty(attachObjcResults)){
attachObjcResults.forEach(function (attachobjcResult) {
attachobjcResult.refCode = "null";
attachobjcResult.status = 0;//0表示删除 1 修改
updated.push(attachobjcResult);
})
resolve(updated);
return;
}
queryBidAttachByCodesAndReturnRecordedAttachs(attachCodes).then(function (newRecordedAttachs) {
if (newRecordedAttachs.length == 0) {
resolve(updated);
return;
}
//修改时非空数组 无记录 则增加
if (commonUtil.isNotEmpty(newRecordedAttachs) && commonUtil.isEmpty(attachObjcResults)) {
newRecordedAttachs.forEach(function (recordedAttach) {
recordedAttach.refCode = bidBackCode;
recordedAttach.refType = attachReftype;
updated.push(recordedAttach);
})
resolve(updated);
return;
}
var newRecordAttachCodes = newRecordedAttachs.map(function (currentAttach) {
return currentAttach.code;
});
var equalCodes = newRecordAttachCodes.filter(function (currentCode) {
return existCodes.indexOf(currentCode) != -1;
});
//修改时非空数组 有记录
if (commonUtil.isNotEmpty(newRecordedAttachs) && commonUtil.isNotEmpty(attachObjcResults)) {
newRecordedAttachs.forEach(function (currentNewAttach) {
//不匹配
if (equalCodes.indexOf(currentNewAttach.code) == -1) {
currentNewAttach.refCode = bidBackCode;
currentNewAttach.refType = attachReftype;
updated.push(currentNewAttach);
}
});
//不匹配 删除
attachObjcResults.forEach(function (currentResultAttach) {
if (equalCodes.indexOf(currentResultAttach.code) == -1) {
currentResultAttach.refCode = "null";
updated.push(currentResultAttach);
}
});
resolve(updated);
}
return;
}).catch(reject);
// // 将附件信息写入区块链
// return Promise.all(updated.map(function (attach) {
// return contractQKLServer.changeContractAttachment(attach.code, commonUtil.join(attach, BID_BACK_CONTENT_ARRAY), txOption);
// })).then(function (receipts) {
// return Promise.all(receipts.map(function (receipt, index) {
// var attachCode = updated[index].code;
// var contractCode = updated[index].contractCode;
// //将区块号/Hash写入区块链dataId,dataBlockNum,dataBlockHash,dataTransactionHash,other,module,func,businessID,operator,operateTime,operateDesc
// logUtil.writeLogSingle("log-" + attachCode, receipt.blockNumber, receipt.blockHash, receipt.transactionHash,
// user.accCode, "合同模块", "modContractAttach", attachCode, user.userName, logUtil.getFormatByTime(), "修改合同附件", txOption);
// return bidBackAndIssueSQLServer.modContractAttach({
// code : attachCode,
// contractCode : contractCode,
// blockNumber : receipt.blockNumber,
// blockHash : receipt.blockHash,
// transactionHash : receipt.transactionHash
// });
// }));
// });
});
}
//-------------------------mycBegin---------------------
//检查修改表的 参数 包含了附件信息
//确保附件是有内容的数组 或者是空数组 或者是null
function checkBackModInputParams(params) {
return new Promise(function (resolve, reject) {
// check params
if (commonUtil.isEmpty(params.code)) {
reject("[回标编号]必须输入");
return;
}
var attachs = params.attachs;
if (commonUtil.isNotEmpty(attachs)) {
if(!Array.isArray(attachs)) {
reject("附件参数错误");
return;
}
attachs = attachs.filter(function (attach) {
return commonUtil.isNotEmpty(attach)
});
}
params.attachs = attachs;
resolve(attachs);
});
}
//已经上传的附件(attachCode) 查询SQL是否有记录 并把有的记录返回 + 绑定到的主表的信息
function queryAttachFromSQLAndBindInfo(attachs, bidBackCode, attachRefType, user, txOption){
return new Promise(function(resolve, reject) {
var updated = [];
if (commonUtil.isEmpty(attachs)) {
resolve(updated);//为空则
} else {
// 处理附件的code
var promiseArray = attachs.map(function (attachCode) {
return bidAttachSQLServer.queryAttachByCode(attachCode);
});
Promise.all(promiseArray).then(function(results){
console.log("查找到的附件格式");
console.log(results);
results.forEach(function (attachObjcs) {
if (commonUtil.isNotEmpty(attachObjcs)) {
updated.push({
refCode : bidBackCode,
refType:attachRefType,
code : attachObjcs[0].code,
name : attachObjcs[0].name,
path : attachObjcs[0].path,
status : 1 // 0 表示己经删除, 1 表示修改
});
} else {
reject("找不到相关附件");
}
});
//区块链 TODO
}).then(function () {
resolve(updated);
}).catch(function (error) {
reject(error);
});
}
});
}
//增加回标信息
//"bidCode","backDate","backAmount","description",
managerBidBackAndIssue.post("/addBidBack",function(req, res){
var txOption, bidBackCode, user, bidBackLogInfo;
var params = req.body;
checkBidBackParamsAttachs(params).then(function(attachs){
txOption = accountUtil.transactionOptionForEx(req.session);
bidBackCode = commonUtil.getUUID("bidBack"); //自动随机拼接编号生成
params.code = bidBackCode;
user = req.session.user;
bidBackLogInfo = {
dataName : "",
module : "招标回标",
func : "addBidBack",
businessID : bidBackCode,
operator : user.userName,
operateTime : logUtil.getFormatByTime(),
operateDesc : "加入回标信息"
}
params.created = new Date();
timeLog("开始查询oracle 附件");
return queryAttachFromSQLAndBindInfo(attachs, bidBackCode, 5, user, txOption);
}).then(function(updatedAttachsWithBindInfo) {
timeLog("开始绑定附件到回标");
bidBackLogInfo.other = JSON.stringify(updatedAttachsWithBindInfo);
return bindWithAttachSQL(updatedAttachsWithBindInfo);
}).then(function() {
timeLog("开始增加区块链回标");
return bidQKLServer.addBidBackInfo(commonUtil.join(params, BID_BACK_CONTENT_ARRAY), txOption);
}).then(function (receipt) {
timeLog("开始写日志");
bidBackLogInfo.blockNumber = receipt.blockNumber.toString();
bidBackLogInfo.blockHash = receipt.blockHash;
bidBackLogInfo.transactionHash = receipt.transactionHash;
return logQKLServer.writeLog(bidBackLogInfo, receipt, txOption);
}).then(function () {
timeLog("开始写入oracle 回标");
params.blockNumber = bidBackLogInfo.blockNumber;
params.blockHash = bidBackLogInfo.blockHash;
params.transactionHash = bidBackLogInfo.transactionHash;
return bidBackAndIssueSQLServer.addBidBackInfo(params);
}).then(function () {
timeLog("开始写入日志");
return logSQLServer.writeLog(bidBackLogInfo);
}).then(function () {
timeLog("响应给客户端");
responseUtil.sendSuccess(res, {});
console.log("成功-----------加入回标 ------------数据库");
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 修改回标 */
managerBidBackAndIssue.post('/modBidBackInfo', function (req, res) {
var txOption, bidBackCode, user, bidBackLogInfo, attachs;
var params = req.body;
checkBackModInputParams(params).then(function (ats) {
attachs = ats;
return bidBackAndIssueSQLServer.queryBidBackInfoByCode(params);//oracle数据
}).then(function (results) {
//检查的逻辑在这 确保回标存在
if (commonUtil.isEmpty(results)) {
throw new Error("未找到相关合同数据");
} else {
txOption = accountUtil.transactionOptionForEx(req.session);
bidBackCode = params.code;
user = req.session.user;
bidBackLogInfo = {
dataName : params.name || results[0].name,
module : "回标模块",
func : "modBidBackInfo",
businessID : bidBackCode,
operator : user.userName,
operateTime : logUtil.getFormatByTime(),
operateDesc : "修改回标",
other : params.other
};
}
return bidAttachSQLServer.queryBindAttach(bidBackCode);
}).then(function (results) { // 修改附件的操作指南
return modBidAttachWithRefCode(attachs, results, bidBackCode, 5, user, txOption);
}).then(function (updated) {
//修改附件
bidBackLogInfo.other = JSON.stringify(updated);
return bindWithAttachSQL(updated);//未加区块链
}).then(function () {
// 将修改后的合同写入区块链
var txContent = commonUtil.join(params, BID_BACK_CONTENT_ARRAY);
console.debug("txContent : " + txContent);
return bidQKLServer.modBidBackInfo(txContent, txOption);
}).then(function (receipt) {
//写入日志 (区块链)
bidBackLogInfo.blockNumber = receipt.blockNumber.toString();
bidBackLogInfo.blockHash = receipt.blockHash;
bidBackLogInfo.transactionHash = receipt.transactionHash;
return logQKLServer.writeLog(bidBackLogInfo, receipt, txOption);
}).then(function () {
//oracle 写入表
params.blockNumber = bidBackLogInfo.blockNumber;
params.blockHash = bidBackLogInfo.blockHash;
params.transactionHash = bidBackLogInfo.transactionHash;
return bidBackAndIssueSQLServer.modBidBackInfo(params);
}).then(function () {
return logSQLServer.writeLog(bidBackLogInfo);
}).then(function () {
responseUtil.sendSuccess(res, {});
console.log("成功-----------修改回标 ------------数据库");
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 查询回标 by code */
managerBidBackAndIssue.post('/getBidBackByCode', function (req, res) {
var user = req.session.user;
bidBackAndIssueSQLServer.queryBidBackInfoByCode(req.body).then(function (results) {
if(commonUtil.isEmpty(results)) {
responseUtil.sendSuccess(res, results);
} else {
bidAttachSQLServer.queryBindAttach(results[0].code).then(function (attachs) {
results[0].attachs = attachs;
console.log("成功-----------查询回标 ------------数据库");
responseUtil.sendSuccess(res, results);
logUtil.writeLogSingleDB(results[0].name, results[0].blockNumber, results[0].blockHash, results[0].transactionHash,
user.accCode, "招标计划模块", "getBid", results[0].code, user.userName, logUtil.getFormatByTime(), user.depName);
});
}
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 查询回标列表 */
managerBidBackAndIssue.post('/getBidBackList', function (req, res) {
var user = req.session.user;
bidBackAndIssueSQLServer.getBidBackList(req.body).then(function (results) {
console.log("成功-----------查询回标列表 ------------数据库");
responseUtil.sendSuccess(res, results);
if (commonUtil.isNotEmpty(results)) {
logUtil.writeLogSingleDB(results[0].name, results[0].blockNumber, results[0].blockHash, results[0].transactionHash,
user.accCode, "回标", "getBidBackList", results[0].code, user.userName, logUtil.getFormatByTime(), "查询回标列表");
}
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 区块链 查询合同 TEST */
managerBidBackAndIssue.post('/getContractQKL', function (req, res) {
var txOption = accountUtil.transactionOptionForEx(req.session);
var contractCode = req.body.code;
contractQKLServer.queryContractInfo(contractCode, txOption).then(function (result) {
console.log("成功-----------查询合同 ------------区块链");
responseUtil.sendSuccess(res, result);
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 区块链 查询合同 TEST */
managerBidBackAndIssue.post('/getAttachQKL', function (req, res) {
var txOption = accountUtil.transactionOptionForEx(req.session);
var contractCode = req.body.code;
contractQKLServer.queryContractAttachment(contractCode, txOption).then(function (result) {
console.log("成功-----------查询合同 ------------区块链");
responseUtil.sendSuccess(res, result);
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 合同修改记录
* @param contractCode
*
* */
managerBidBackAndIssue.post('/queryModLogs', function (req, res) {
var params = req.body;
params.func = "modContract";
params.businessID = params.code;
logSQLServer.queryLogByFunc(params).then(function (result) {
responseUtil.sendSuccess(res, result);
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 合同查询记录
*
* @param contractCode
*
* */
managerBidBackAndIssue.post('/queryGetLogs', function (req, res) {
var params = req.body;
params.func = "getContract";
params.businessID = params.code;
logSQLServer.queryLogByFunc(params).then(function (result) {
responseUtil.sendSuccess(res, result);
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
//-------------------------发标开始---------------------
//检查发标增加时的参数
function checkBidIssueAddInputParams(params) {
return new Promise(function (resolve, reject){
if (commonUtil.isEmpty(params.bidCode)) {
reject("[招标编号] 必须输入");
return;
}
if (commonUtil.isEmpty(params.issueDate)) {
reject("[发标时间] 必须输入");
return;
}
if (commonUtil.isEmpty(params.openDate)) {
reject("[开标时间] 必须输入");
return;
}
if (commonUtil.isEmpty(params.description)) {
reject("[发标描述] 必须输入");
return;
}
var attachs = params.attachs;
if (commonUtil.isNotEmpty(attachs)) {
if(!Array.isArray(attachs)) {
reject("附件参数错误");
return;
}
attachs = attachs.filter(function (attach) {
return commonUtil.isNotEmpty(attach)
});
}
resolve(attachs);
});
}
//检查修改表的 参数 包含了附件信息
//确保附件是有内容的数组 或者是空数组 或者是null
function checkIssueModInputParams(params) {
return new Promise(function (resolve, reject) {
// check params
if (commonUtil.isEmpty(params.code)) {
reject("[发标编号]必须输入");
return;
}
var attachs = params.attachs;
if (commonUtil.isNotEmpty(attachs)) {
if(!Array.isArray(attachs)) {
reject("附件参数错误");
return;
}
attachs = attachs.filter(function (attach) {
return commonUtil.isNotEmpty(attach)
});
}
params.attachs = attachs;
resolve(attachs);
});
}
//增加发标信息
// code","bidCode","issueDate","openDate", "description", "created
managerBidBackAndIssue.post("/addBidIssue",function(req, res){
var txOption, bidIssueCode, user, bidIssueLogInfo;
var params = req.body;
checkBidIssueAddInputParams(params).then(function(attachs){
txOption = accountUtil.transactionOptionForEx(req.session);
bidIssueCode = commonUtil.getUUID("bidIssue"); //自动随机拼接编号生成
params.code = bidIssueCode;
user = req.session.user;
bidIssueLogInfo = {
dataName : "",
module : "招标发标",
func : "addBidIssue",
businessID : bidIssueCode,
operator : user.userName,
operateTime : logUtil.getFormatByTime(),
operateDesc : "加入发标信息"
}
params.created = new Date();
timeLog("开始查询oracle 附件");
return queryAttachFromSQLAndBindInfo(attachs, bidIssueCode, 6, user, txOption);
}).then(function(updatedAttachsWithBindInfo) {
timeLog("开始绑定附件到发标");
bidIssueLogInfo.other = JSON.stringify(updatedAttachsWithBindInfo);
return bindWithAttachSQL(updatedAttachsWithBindInfo);
}).then(function() {
timeLog("开始增加区块链发标");
return bidQKLServer.addBidIssueInfo(commonUtil.join(params, BID_ISSUE_CONTENT_ARRAY), txOption);
}).then(function (receipt) {
timeLog("开始写日志");
bidIssueLogInfo.blockNumber = receipt.blockNumber.toString();
bidIssueLogInfo.blockHash = receipt.blockHash;
bidIssueLogInfo.transactionHash = receipt.transactionHash;
return logQKLServer.writeLog(bidIssueLogInfo, receipt, txOption);
}).then(function () {
timeLog("开始写入oracle 发标");
params.blockNumber = bidIssueLogInfo.blockNumber;
params.blockHash = bidIssueLogInfo.blockHash;
params.transactionHash = bidIssueLogInfo.transactionHash;
return bidBackAndIssueSQLServer.addBidIssueInfo(params);
}).then(function () {
timeLog("开始写入日志");
return logSQLServer.writeLog(bidIssueLogInfo);
}).then(function () {
timeLog("响应给客户端");
responseUtil.sendSuccess(res, {});
console.log("成功-----------加入中标 ------------数据库");
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 修改发标 */
managerBidBackAndIssue.post('/modBidIssueInfo', function (req, res) {
var txOption, bidIssueCode, user, bidIssueLogInfo, attachs;
var params = req.body;
checkIssueModInputParams(params).then(function (ats) {
attachs = ats;
return bidBackAndIssueSQLServer.queryBidIssueInfoByCode(params);//oracle数据 实际传参数objc
}).then(function (results) {
//检查的逻辑在这 确保回标存在
if (commonUtil.isEmpty(results)) {
throw new Error("未找到相关合同数据");
} else {
txOption = accountUtil.transactionOptionForEx(req.session);
bidIssueCode = params.code;
user = req.session.user;
bidIssueLogInfo = {
dataName : params.name || results[0].name,
module : "中标模块",
func : "modBidIssueInfo",
businessID : bidIssueCode,
operator : user.userName,
operateTime : logUtil.getFormatByTime(),
operateDesc : "修改中标",
other : params.other
};
}
return bidAttachSQLServer.queryBindBidAttach(bidIssueCode);
}).then(function (results) { // 修改附件的操作指南
return modBidAttachWithRefCode(attachs, results, bidIssueCode, 6, user, txOption);
}).then(function (updated) {
//修改附件
bidIssueLogInfo.other = JSON.stringify(updated);
return bindWithAttachSQL(updated);//未加区块链
}).then(function () {
// 将修改后的合同写入区块链
var txContent = commonUtil.join(params, BID_ISSUE_CONTENT_ARRAY);
console.debug("txContent : " + txContent);
return bidQKLServer.modBidIssueInfo(txContent, txOption);
}).then(function (receipt) {
//写入日志 (区块链)
bidIssueLogInfo.blockNumber = receipt.blockNumber.toString();
bidIssueLogInfo.blockHash = receipt.blockHash;
bidIssueLogInfo.transactionHash = receipt.transactionHash;
return logQKLServer.writeLog(bidIssueLogInfo, receipt, txOption);
}).then(function () {
//oracle 写入表
params.blockNumber = bidIssueLogInfo.blockNumber;
params.blockHash = bidIssueLogInfo.blockHash;
params.transactionHash = bidIssueLogInfo.transactionHash;
return bidBackAndIssueSQLServer.modBidIssueInfo(params);
}).then(function () {
return logSQLServer.writeLog(bidIssueLogInfo);
}).then(function () {
responseUtil.sendSuccess(res, {});
console.log("成功-----------修改发标 ------------数据库");
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 查询发标 by code */
managerBidBackAndIssue.post('/getBidIssueByCode', function (req, res) {
var user = req.session.user;
bidBackAndIssueSQLServer.queryBidIssueInfoByCode(req.body).then(function (results) {
if(commonUtil.isEmpty(results)) {
responseUtil.sendSuccess(res, results);
} else {
bidAttachSQLServer.queryBindAttach(results[0].code).then(function (attachs) {
results[0].attachs = attachs;
console.log("成功-----------查询发标 ------------数据库");
responseUtil.sendSuccess(res, results);
logUtil.writeLogSingleDB(results[0].name, results[0].blockNumber, results[0].blockHash, results[0].transactionHash,
user.accCode, "发标模块", "getBidIssueByCode", results[0].code, user.userName, logUtil.getFormatByTime(), user.depName);
});
}
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 查询发标列表 */
managerBidBackAndIssue.post('/getBidIssueList', function (req, res) {
var user = req.session.user;
bidBackAndIssueSQLServer.getBidIssueList(req.body).then(function (results) {
console.log("成功-----------查询发标列表 ------------数据库");
responseUtil.sendSuccess(res, results);
if (commonUtil.isNotEmpty(results)) {
logUtil.writeLogSingleDB("获取发标列表", results[0].blockNumber, results[0].blockHash, results[0].transactionHash,
user.accCode, "发标", "getBidIssueList", results[0].code, user.userName, logUtil.getFormatByTime(), "查询发标列表");
}
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
//-------------------------发标结束---------------------
/* 上传合同附件 */
managerBidBackAndIssue.post('/uploadAttach', function (req, res) {
var fileName = req.body.fileName;
var params = req.file;//文件
if (commonUtil.isEmpty(fileName)) {
responseUtil.sendError(res, "[文件名]必须输入");
return;
}
if (commonUtil.isEmpty(params)) {
responseUtil.sendError(res, "请选择上传文件");
return;
}
var user = req.session.user;
var attachCode = commonUtil.getUUID("attach");
var blockNumber = "";
var blockHash = "";
var transactionHash = "";
var txOption = accountUtil.transactionOptionForEx(req.session);
params.code = attachCode;
params.name = fileName;
params.refType = 5;
params.refCode = "";
params.path = config.getStaticPath() + "/" + params.filename;
params.blockNumber = blockNumber;
params.blockHash = blockHash;
params.transactionHash = transactionHash;
params.accCode = user.accCode;
bidBackAndIssueSQLServer.addBidBackAttach(params).then(function (result) {
responseUtil.sendSuccess(res, {
name : fileName,
code : attachCode,
path : params.path,
mimeType : params.mimetype,
size : params.size
});
}).catch(function (error) {
responseUtil.sendError(res, error);
});
});
//-------------------------mycEnd-----------------------
//
//
//
/* 下载合同附件 */
managerBidBackAndIssue.post('/downloadAttach', function (req, res) {
var attachCode = req.body.code;
bidBackAndIssueSQLServer.queryBidAttachByCode(attachCode).then(function (result) {
var noFoundCode = 404;
var noFound = "未找到此附件";
if (commonUtil.isEmpty(result)) {
res.status(noFoundCode);
throw new Error(noFound);
}
var file = result[0];//获取查询到的结果
res.download(config.getPublicPath() + file.path, file.name, function (error) {
if (error && error.status == noFoundCode ) {
res.status(noFoundCode);
responseUtil.sendError(res, noFound);
}
});
}).catch(function (error) {
responseUtil.sendError(res, error);
})
});
//-----------------------privateBegin--------------------------
function timeLog(_description){
console.log(_description +" time " + Date());
}
//-----------------------privateEND--------------------------
module.exports = managerBidBackAndIssue;
/**
* Created by myc on 2018/4/16.
*/
var express = require('express');
var managerBidBackAndIssue = express.Router();
var bidBackAndIssueSQLServer = require('../server/BidBackAndIssueSQLServer.js');
var bidQKLServer = require('../server/BidQKLServer.js');
var bidIssueDetailSQLServer = require("../server/BidIssueDetailSQLServer.js");
var bidAttachSQLServer = require("../server/AttachSQLServer.js");
var bidSegSQLServer = require("../server/BidSegSQLServer.js");
var logSQLServer = require('../server/LogSQLServer.js');
var logQKLServer = require('../server/LogQKLServer.js');
var logUtil = require("../utils/logUtil.js");
var commonUtil = require("../utils/commonUtil.js");
var responseUtil = require("../utils/responseUtil");
//区块链用的 拼接参数
const BID_BACK_CONTENT_ARRAY = [
"code",
"bidCode",
"backDate",
"backAmount",
"description",
"created"
];
const BID_ATTACH_CONTENT_ARRAY = [
"code",
"refType",
"refCode",
"name",
"path",
"size",
"mimeType",
"description",
"accCode",
"created"
];
const BID_ISSUE_CONTENT_ARRAY = ["code", "bidCode", "issueDate", "openDate", "description", "created"];
const BID_WIN_SEG_CONTENT_ARRAY = [
"code",
"refCode",
"name",
"contractPlan",
"expectFee",
"description",
"created"
];
const BID_ISSUE_FEE_CONTENT_ARRAY = [
"code",
"refCode",
"contractPlan",
"fee",
"expectFee",
"description",
"created"
];
const BID_ISSUE_DETAIL_CONTENT_ARRAY = [
"code",
"refCode",
"orgCode",
"segName",
"date",
"expectAmount",
"amount",
"description",
"created"
];
var filter = require("../domain/filter");
managerBidBackAndIssue.use(filter.checkToken);
//处理Post请求需要的
var bodyParser = require("body-parser");
managerBidBackAndIssue.use(bodyParser.urlencoded({extended : false}));
/* GET users listing. *///?
managerBidBackAndIssue.get('/', function (req, res) {
res.send('respond with a resource');
});
// ----------------------myc-----------------
function checkBidBackParamsAttachs(params) {
return new Promise(function (resolve, reject){
if (commonUtil.isEmpty(params.bidCode)) {
reject("[招标编号] 必须输入");
return;
}
if (commonUtil.isEmpty(params.backDate)) {
reject("[回标日期] 必须输入");
return;
}
if (commonUtil.isEmpty(params.backAmount)) {
reject("[回标金额] 必须输入");
return;
}
if (commonUtil.isEmpty(params.description)) {
reject("[回标描述] 必须输入");
return;
}
var attachs = params.attachs;
if (commonUtil.isNotEmpty(attachs)) {
if(!Array.isArray(attachs)) {
reject("附件参数错误");
return;
}
attachs = attachs.filter(function (attach) {
return commonUtil.isNotEmpty(attach)
});
}
resolve(attachs);
});
}
// ----------------------mycend-----------------
//返回查询到的attach 对象数组(有记录在案)
//传入code 数组
function queryBidAttachByCodesAndReturnRecordedAttachs(_codes) {
return new Promise(function (resolve, reject) {
Promise.all(_codes.map(function (code) {
return bidAttachSQLServer.queryAttachByCode(code);
})).then(function (results) {
var attachs_ = results.map(function (attachs) {
if (attachs.length > 0) return attachs[0];
});
resolve(attachs_);
}).catch(reject);
});
}
//修改的附件和已有记录的附件 返回需删除的和需新增的附件数组
function parseNewAndRecordedAttachs(_newAttachs, _recordedAttachs) {
// var equalArray = [],newAttachsNotEqual = [], recordedAttachsNotEqual =[];
_newAttachs.map(function (currentNewAttach) {
});
}
//修改所关联的附件 results 是查出来的附件
//如果要修改的附件不存在 则添加
//如果要修改的附件存在 则不做什么
//如果已经存在的附件不在修改的附件中,则删除
//如果么有传attach字段 则不改什么
function dealAttachCodesWithRefcodeReturnModifiedAttachs(attachCodes, refCode, attachReftype) {
return new Promise(function(resolve, reject) {
var attachObjcResults;
var existCodes;
var updated = []; // 存入修改记录
bidAttachSQLServer.queryBindAttach(refCode).then(function (recordAttachs) {
attachObjcResults = recordAttachs;
existCodes = attachObjcResults.map(function (AttachObjcResult) {
return AttachObjcResult.code;
});
//没有这个参数 则什么都不做
if (!attachCodes) {
resolve(updated);
return;//不进行一下操作 因为无值
}
//修改为空数组 无记录
if (Array.isArray(attachCodes) && attachCodes.length == 0 && commonUtil.isEmpty(attachObjcResults)){
resolve(updated);
return;
}
//修改是空数组 有记录附件
if (Array.isArray(attachCodes) && attachCodes.length == 0 && commonUtil.isNotEmpty(attachObjcResults)){
attachObjcResults.forEach(function (attachobjcResult) {
attachobjcResult.refCode = "null";
attachobjcResult.refType = 0;
attachobjcResult.status = 0;//0表示删除 1 修改
updated.push(attachobjcResult);
});
resolve(updated);
return;
}
return queryBidAttachByCodesAndReturnRecordedAttachs(attachCodes);
}).then(function (newRecordedAttachs) {
if (newRecordedAttachs.length == 0) {
resolve(updated);
return;
}
//修改时非空数组 无记录 则增加
if (commonUtil.isNotEmpty(newRecordedAttachs) && commonUtil.isEmpty(attachObjcResults)) {
newRecordedAttachs.forEach(function (recordedAttach) {
recordedAttach.refCode = refCode;
recordedAttach.refType = attachReftype;
updated.push(recordedAttach);
})
resolve(updated);
return;
}
var newRecordAttachCodes = newRecordedAttachs.map(function (currentAttach) {
return currentAttach.code;
});
var equalCodes = newRecordAttachCodes.filter(function (currentCode) {
return existCodes.indexOf(currentCode) !== -1;
});
//修改时非空数组 有记录
if (commonUtil.isNotEmpty(newRecordedAttachs) && commonUtil.isNotEmpty(attachObjcResults)) {
newRecordedAttachs.forEach(function (currentNewAttach) {
//不匹配
if (equalCodes.indexOf(currentNewAttach.code) == -1) {
currentNewAttach.refCode = refCode;
currentNewAttach.refType = attachReftype;
updated.push(currentNewAttach);
}
});
//不匹配 删除
attachObjcResults.forEach(function (currentResultAttach) {
if (equalCodes.indexOf(currentResultAttach.code) == -1) {
currentResultAttach.refType = 0;
currentResultAttach.refCode = "null";
updated.push(currentResultAttach);
}
});
resolve(updated);
}
return;
}).catch(reject);
});
}
//-------------------------mycBegin---------------------
//检查修改表的 参数 包含了附件信息
//确保附件是有内容的数组 或者是空数组 或者是null
function checkBackModInputParams(params) {
return new Promise(function (resolve, reject) {
// check params
if (commonUtil.isEmpty(params.code)) {
reject("[回标编号]必须输入");
return;
}
var attachs = params.attachs;
if (commonUtil.isNotEmpty(attachs)) {
if(!Array.isArray(attachs)) {
reject("附件参数错误");
return;
}
attachs = attachs.filter(function (attach) {
return commonUtil.isNotEmpty(attach)
});
}
params.attachs = attachs;
resolve(attachs);
});
}
//已经上传的附件(attachCode) 查询SQL是否有记录 并把有的记录返回 + 绑定到的主表的信息
function queryAttachFromSQLAndBindInfo(attachs, bidBackCode, attachRefType, user, txOption){
return new Promise(function(resolve, reject) {
var updated = [];
if (commonUtil.isEmpty(attachs)) {
resolve(updated);//为空则
} else {
// 处理附件的code
var promiseArray = attachs.map(function (attachCode) {
return bidAttachSQLServer.queryAttachByCode(attachCode);
});
Promise.all(promiseArray).then(function(results){
console.log("查找到的附件格式");
console.log(results);
results.forEach(function (attachObjcs) {
if (commonUtil.isNotEmpty(attachObjcs)) {
updated.push({
refCode : bidBackCode,
refType:attachRefType,
code : attachObjcs[0].code,
name : attachObjcs[0].name,
path : attachObjcs[0].path,
status : 1 // 0 表示己经删除, 1 表示修改
});
} else {
reject("找不到相关附件");
}
});
//区块链 TODO
}).then(function () {
resolve(updated);
}).catch(function (error) {
reject(error);
});
}
});
}
//增加回标信息
//"bidCode","backDate","backAmount","description",
managerBidBackAndIssue.post("/addBidBack",function(req, res){
var txOption, bidBackCode, user, bidBackLogInfo;
var params = req.body;
checkBidBackParamsAttachs(params).then(function(attachs){
txOption = accountUtil.transactionOptionForEx(req.session);
bidBackCode = commonUtil.getUUID("bidBack"); //自动随机拼接编号生成
params.code = bidBackCode;
user = req.session.user;
bidBackLogInfo = {
dataName : "",
module : "招标回标",
func : "addBidBack",
businessID : bidBackCode,
operator : user.userName,
operateTime : logUtil.getFormatByTime(),
operateDesc : "加入回标信息"
}
params.created = new Date();
timeLog("开始查询oracle 附件");
return queryAttachFromSQLAndBindInfo(attachs, bidBackCode, 5, user, txOption);
}).then(function(updatedAttachsWithBindInfo) {
timeLog("开始绑定附件到回标");
bidBackLogInfo.other = JSON.stringify(updatedAttachsWithBindInfo);
return bindWithAttachSQL(updatedAttachsWithBindInfo);
}).then(function() {
timeLog("开始增加区块链回标");
return bidQKLServer.addBidBackInfo(commonUtil.join(params, BID_BACK_CONTENT_ARRAY), txOption);
}).then(function (receipt) {
timeLog("开始写日志");
bidBackLogInfo.blockNumber = receipt.blockNumber.toString();
bidBackLogInfo.blockHash = receipt.blockHash;
bidBackLogInfo.transactionHash = receipt.transactionHash;
return logQKLServer.writeLog(bidBackLogInfo, receipt, txOption);
}).then(function () {
timeLog("开始写入oracle 回标");
params.blockNumber = bidBackLogInfo.blockNumber;
params.blockHash = bidBackLogInfo.blockHash;
params.transactionHash = bidBackLogInfo.transactionHash;
return bidBackAndIssueSQLServer.addBidBackInfo(params);
}).then(function () {
timeLog("开始写入日志");
return logSQLServer.writeLog(bidBackLogInfo);
}).then(function () {
timeLog("响应给客户端");
responseUtil.sendSuccess(res, {});
console.log("成功-----------加入回标 ------------数据库");
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 修改回标 */
managerBidBackAndIssue.post('/modBidBackInfo', function (req, res) {
var txOption, bidBackCode, user, bidBackLogInfo, attachs;
var params = req.body;
checkBackModInputParams(params).then(function (ats) {
attachs = ats;
return bidBackAndIssueSQLServer.queryBidBackInfoByCode(params);//oracle数据
}).then(function (results) {
//检查的逻辑在这 确保回标存在
if (commonUtil.isEmpty(results)) {
throw new Error("未找到相关合同数据");
} else {
txOption = accountUtil.transactionOptionForEx(req.session);
bidBackCode = params.code;
user = req.session.user;
bidBackLogInfo = {
dataName : params.name || results[0].name,
module : "回标模块",
func : "modBidBackInfo",
businessID : bidBackCode,
operator : user.userName,
operateTime : logUtil.getFormatByTime(),
operateDesc : "修改回标",
other : params.other
};
}
return bidAttachSQLServer.queryBindAttach(bidBackCode);
}).then(function (results) { // 修改附件的操作指南
return dealAttachCodesWithRefcodeReturnModifiedAttachs(attachs, results, bidBackCode, 5, user, txOption);
}).then(function (updated) {
//修改附件
bidBackLogInfo.other = JSON.stringify(updated);
return bindWithAttachSQL(updated);//未加区块链
}).then(function () {
// 将修改后的合同写入区块链
var txContent = commonUtil.join(params, BID_BACK_CONTENT_ARRAY);
console.debug("txContent : " + txContent);
return bidQKLServer.modBidBackInfo(txContent, txOption);
}).then(function (receipt) {
//写入日志 (区块链)
bidBackLogInfo.blockNumber = receipt.blockNumber.toString();
bidBackLogInfo.blockHash = receipt.blockHash;
bidBackLogInfo.transactionHash = receipt.transactionHash;
return logQKLServer.writeLog(bidBackLogInfo, receipt, txOption);
}).then(function () {
//oracle 写入表
params.blockNumber = bidBackLogInfo.blockNumber;
params.blockHash = bidBackLogInfo.blockHash;
params.transactionHash = bidBackLogInfo.transactionHash;
return bidBackAndIssueSQLServer.modBidBackInfo(params);
}).then(function () {
return logSQLServer.writeLog(bidBackLogInfo);
}).then(function () {
responseUtil.sendSuccess(res, {});
console.log("成功-----------修改回标 ------------数据库");
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 查询回标 by code */
managerBidBackAndIssue.post('/getBidBackByCode', function (req, res) {
var user = req.session.user;
bidBackAndIssueSQLServer.queryBidBackInfoByCode(req.body).then(function (results) {
if(commonUtil.isEmpty(results)) {
responseUtil.sendSuccess(res, results);
} else {
bidAttachSQLServer.queryBindAttach(results[0].code).then(function (attachs) {
results[0].attachs = attachs;
console.log("成功-----------查询回标 ------------数据库");
responseUtil.sendSuccess(res, results);
logUtil.writeLogSingleDB(results[0].name, results[0].blockNumber, results[0].blockHash, results[0].transactionHash,
user.accCode, "招标计划模块", "getBid", results[0].code, user.userName, logUtil.getFormatByTime(), user.depName);
});
}
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 查询回标列表 */
managerBidBackAndIssue.post('/getBidBackList', function (req, res) {
var user = req.session.user;
bidBackAndIssueSQLServer.getBidBackList(req.body).then(function (results) {
console.log("成功-----------查询回标列表 ------------数据库");
responseUtil.sendSuccess(res, results);
if (commonUtil.isNotEmpty(results)) {
logUtil.writeLogSingleDB(results[0].name, results[0].blockNumber, results[0].blockHash, results[0].transactionHash,
user.accCode, "回标", "getBidBackList", results[0].code, user.userName, logUtil.getFormatByTime(), "查询回标列表");
}
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 区块链 查询合同 TEST */
managerBidBackAndIssue.post('/getContractQKL', function (req, res) {
var txOption = accountUtil.transactionOptionForEx(req.session);
var contractCode = req.body.code;
contractQKLServer.queryContractInfo(contractCode, txOption).then(function (result) {
console.log("成功-----------查询合同 ------------区块链");
responseUtil.sendSuccess(res, result);
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 区块链 查询合同 TEST */
managerBidBackAndIssue.post('/getAttachQKL', function (req, res) {
var txOption = accountUtil.transactionOptionForEx(req.session);
var contractCode = req.body.code;
contractQKLServer.queryContractAttachment(contractCode, txOption).then(function (result) {
console.log("成功-----------查询合同 ------------区块链");
responseUtil.sendSuccess(res, result);
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 合同修改记录
* @param contractCode
*
* */
managerBidBackAndIssue.post('/queryModLogs', function (req, res) {
var params = req.body;
params.func = "modContract";
params.businessID = params.code;
logSQLServer.queryLogByFunc(params).then(function (result) {
responseUtil.sendSuccess(res, result);
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 合同查询记录
*
* @param contractCode
*
* */
managerBidBackAndIssue.post('/queryGetLogs', function (req, res) {
var params = req.body;
params.func = "getContract";
params.businessID = params.code;
logSQLServer.queryLogByFunc(params).then(function (result) {
responseUtil.sendSuccess(res, result);
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
//-------------------------发标开始---------------------
//检查发标增加时的参数
function checkBidIssueAddInputParams(params) {
return new Promise(function (resolve, reject){
if (commonUtil.isEmpty(params.bidCode)) {
reject("[招标编号] 必须输入");
return;
}
if (commonUtil.isEmpty(params.issueDate)) {
reject("[发标时间] 必须输入");
return;
}
if (commonUtil.isEmpty(params.openDate)) {
reject("[开标时间] 必须输入");
return;
}
if (commonUtil.isEmpty(params.description)) {
reject("[发标描述] 必须输入");
return;
}
var attachs = params.attachs;
if (commonUtil.isNotEmpty(attachs)) {
if(!Array.isArray(attachs)) {
reject("附件参数错误");
return;
}
attachs = attachs.filter(function (attach) {
return commonUtil.isNotEmpty(attach)
});
}
resolve(attachs);
});
}
//检查修改表的 参数 包含了附件信息
//确保附件是有内容的数组 或者是空数组 或者是null
function checkIssueModInputParams(params) {
return new Promise(function (resolve, reject) {
// check params
if (commonUtil.isEmpty(params.code)) {
reject("[发标编号]必须输入");
return;
}
var attachs = params.attachs;
if (commonUtil.isNotEmpty(attachs)) {
if(!Array.isArray(attachs)) {
reject("附件参数错误");
return;
}
attachs = attachs.filter(function (attach) {
return commonUtil.isNotEmpty(attach)
});
}
params.attachs = attachs;
resolve(attachs);
});
}
//增加发标信息
// code","bidCode","issueDate","openDate", "description", "created
managerBidBackAndIssue.post("/addBidIssue",function(req, res){
var txOption, bidIssueCode, user, bidIssueLogInfo;
var params = req.body;
checkBidIssueAddInputParams(params).then(function(attachs){
txOption = accountUtil.transactionOptionForEx(req.session);
bidIssueCode = commonUtil.getUUID("bidIssue"); //自动随机拼接编号生成
params.code = bidIssueCode;
user = req.session.user;
bidIssueLogInfo = {
dataName : "",
module : "招标发标",
func : "addBidIssue",
businessID : bidIssueCode,
operator : user.userName,
operateTime : logUtil.getFormatByTime(),
operateDesc : "加入发标信息"
}
params.created = new Date();
timeLog("开始查询oracle 附件");
return queryAttachFromSQLAndBindInfo(attachs, bidIssueCode, 6, user, txOption);
}).then(function(updatedAttachsWithBindInfo) {
timeLog("开始绑定附件到发标");
bidIssueLogInfo.other = JSON.stringify(updatedAttachsWithBindInfo);
return bindWithAttachSQL(updatedAttachsWithBindInfo);
}).then(function() {
timeLog("开始增加区块链发标");
return bidQKLServer.addBidIssueInfo(commonUtil.join(params, BID_ISSUE_CONTENT_ARRAY), txOption);
}).then(function (receipt) {
timeLog("开始写日志");
bidIssueLogInfo.blockNumber = receipt.blockNumber.toString();
bidIssueLogInfo.blockHash = receipt.blockHash;
bidIssueLogInfo.transactionHash = receipt.transactionHash;
return logQKLServer.writeLog(bidIssueLogInfo, receipt, txOption);
}).then(function () {
timeLog("开始写入oracle 发标");
params.blockNumber = bidIssueLogInfo.blockNumber;
params.blockHash = bidIssueLogInfo.blockHash;
params.transactionHash = bidIssueLogInfo.transactionHash;
return bidBackAndIssueSQLServer.addBidIssueInfo(params);
}).then(function () {
timeLog("开始写入日志");
return logSQLServer.writeLog(bidIssueLogInfo);
}).then(function () {
timeLog("响应给客户端");
responseUtil.sendSuccess(res, {});
console.log("成功-----------加入中标 ------------数据库");
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 修改发标 */
managerBidBackAndIssue.post('/modBidIssueInfo', function (req, res) {
var txOption, bidIssueCode, user, bidIssueLogInfo, attachs;
var params = req.body;
checkIssueModInputParams(params).then(function (ats) {
attachs = ats;
return bidBackAndIssueSQLServer.queryBidIssueInfoByCode(params);//oracle数据 实际传参数objc
}).then(function (results) {
//检查的逻辑在这 确保回标存在
if (commonUtil.isEmpty(results)) {
throw new Error("未找到相关合同数据");
} else {
txOption = accountUtil.transactionOptionForEx(req.session);
bidIssueCode = params.code;
user = req.session.user;
bidIssueLogInfo = {
dataName : params.name || results[0].name,
module : "中标模块",
func : "modBidIssueInfo",
businessID : bidIssueCode,
operator : user.userName,
operateTime : logUtil.getFormatByTime(),
operateDesc : "修改中标",
other : params.other
};
}
return bidAttachSQLServer.queryBindAttach(bidIssueCode);
}).then(function (results) { // 修改附件的操作指南
return dealAttachCodesWithRefcodeReturnModifiedAttachs(attachs, results, bidIssueCode, 6, user, txOption);
}).then(function (updated) {
//修改附件
bidIssueLogInfo.other = JSON.stringify(updated);
return bindWithAttachSQL(updated);//未加区块链
}).then(function () {
// 将修改后的合同写入区块链
var txContent = commonUtil.join(params, BID_ISSUE_CONTENT_ARRAY);
console.debug("txContent : " + txContent);
return bidQKLServer.modBidIssueInfo(txContent, txOption);
}).then(function (receipt) {
//写入日志 (区块链)
bidIssueLogInfo.blockNumber = receipt.blockNumber.toString();
bidIssueLogInfo.blockHash = receipt.blockHash;
bidIssueLogInfo.transactionHash = receipt.transactionHash;
return logQKLServer.writeLog(bidIssueLogInfo, receipt, txOption);
}).then(function () {
//oracle 写入表
params.blockNumber = bidIssueLogInfo.blockNumber;
params.blockHash = bidIssueLogInfo.blockHash;
params.transactionHash = bidIssueLogInfo.transactionHash;
return bidBackAndIssueSQLServer.modBidIssueInfo(params);
}).then(function () {
return logSQLServer.writeLog(bidIssueLogInfo);
}).then(function () {
responseUtil.sendSuccess(res, {});
console.log("成功-----------修改发标 ------------数据库");
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 查询发标 by code */
managerBidBackAndIssue.post('/getBidIssueByCode', function (req, res) {
var user = req.session.user;
bidBackAndIssueSQLServer.queryBidIssueInfoByCode(req.body).then(function (results) {
if(commonUtil.isEmpty(results)) {
responseUtil.sendSuccess(res, results);
} else {
bidAttachSQLServer.queryBindAttach(results[0].code).then(function (attachs) {
results[0].attachs = attachs;
console.log("成功-----------查询发标 ------------数据库");
responseUtil.sendSuccess(res, results);
logUtil.writeLogSingleDB(results[0].name, results[0].blockNumber, results[0].blockHash, results[0].transactionHash,
user.accCode, "发标模块", "getBidIssueByCode", results[0].code, user.userName, logUtil.getFormatByTime(), user.depName);
});
}
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
/* 查询发标列表 */
managerBidBackAndIssue.post('/getBidIssueList', function (req, res) {
var user = req.session.user;
bidBackAndIssueSQLServer.getBidIssueList(req.body).then(function (results) {
console.log("成功-----------查询发标列表 ------------数据库");
responseUtil.sendSuccess(res, results);
if (commonUtil.isNotEmpty(results)) {
logUtil.writeLogSingleDB("获取发标列表", results[0].blockNumber, results[0].blockHash, results[0].transactionHash,
user.accCode, "发标", "getBidIssueList", results[0].code, user.userName, logUtil.getFormatByTime(), "查询发标列表");
}
}).catch(function (error) {
console.error(error);
responseUtil.sendError(res, error);
});
});
//-------------------------发标结束---------------------
managerBidBackAndIssue.post("/test", function (req, res ) {
var pp = {
code:"attach-1522749040153-c953e1b1",
name:"我是测试用的附件!www"
}
for (var i = 0; i < 1; i++) {
pp.description = "" +i;
pp.refCode = "bidIssueDetail-1524469715760-5c3e628a";
bidAttachSQLServer.addAttachMycWrapper(deepCopyObjt(pp)).then(function (some) {
console.log("what is some " + some);
}).catch(function (error) {
// responseUtil.sendError(res, error);
console.log("w error " + error);
});
}
//
// bidAttachSQLServer.modAttach(pp).then(function (something) {
// console.log(something);
// res.send("ok");
// }).catch(function (error) {
// res.send(error);
// })
});
//-------------------------myc新接口Begin---------------------
//挑选出有code 和无code 的参数数组 对应需要更改和需要删除的 和新增的
//inserts deletes updates
//顺便把其他表增加refCode字段
function parseObjcCodeToDeletesAndUpdatesAndInsert(arguments, refCode) {
var insertArray = [];
var deleteArray = [];
var updateArray = [];
if (commonUtil.isEmpty(arguments)) return{inserts:[], deletes:[], updates:[]};
arguments.forEach(function(currentObjt) {
if (commonUtil.isNotEmpty(refCode))
currentObjt.refCode = refCode;
if (currentObjt.delete) {
deleteArray.push(currentObjt);
}else if(commonUtil.isNotEmpty(currentObjt.code)){
updateArray.push(currentObjt);
}else{
insertArray.push(currentObjt);
}
});
return {inserts:insertArray, deletes:deleteArray, updates:updateArray};
}
//bidIssue bidWinSegs bidFees bidIssueDetails
managerBidBackAndIssue.post("/addAndModIssuesAndSegsAndFeesAndDetails", function(req, res) {
//发标只能有一个
var params = req.body;
var user = req.session.user;
var txOption = accountUtil.transactionOptionForEx(req.session);
var bidIssue = params.bidIssue;
var bidWinSegs = commonUtil.toArray(params.bidWinSegs);
var bidFees = commonUtil.toArray(params.bidFees);
var bidIssueDetails = commonUtil.toArray(params.bidIssueDetails);//有可能为空
//发标明细的更改附件临时变量
var attachsTempArray;
var bidIssueCodeRouter;
if (!bidIssue) {
responseUtil.sendError(res, "发标参数不能为空!");
return;
}
var bidIssueObjcToDeal = parseObjcCodeToDeletesAndUpdatesAndInsert([bidIssue]);
var bidWindSegsObjcToDeal = parseObjcCodeToDeletesAndUpdatesAndInsert(bidWinSegs, bidIssue.code);
var bidFeesObjcToDeal = parseObjcCodeToDeletesAndUpdatesAndInsert(bidFees, bidIssue.code);
var bidIssueDetailsObjcToDeal = parseObjcCodeToDeletesAndUpdatesAndInsert(bidIssueDetails, bidIssue.code);
if (bidIssueObjcToDeal.deletes.length ==1) {
bidBackAndIssueSQLServer.deleteBidIssueByCode(bidIssueObjcToDeal.deletes[0].code).then(function () {
responseUtil.sendSuccess(res, "delete success");
}).catch(function(error) {
responseUtil.sendError(res, error);
});
return;
}else if(bidIssueObjcToDeal.inserts.length == 1){
var txContentTemp = commonUtil.join(bidIssueObjcToDeal.inserts[0], BID_ISSUE_CONTENT_ARRAY);
bidQKLServer.addBidIssueInfoMycWrapper(txContentTemp, txOption).catch(function (error) {
responseUtil.sendError(res, error);
}).then(function () {
bidBackAndIssueSQLServer.addBidIssueInfo(bidIssueObjcToDeal.inserts[0]).catch(function (error) {
responseUtil.sendError(res, error);
}).then(function (code) {
sameProcedure(code);
});
});
}else if (bidIssueObjcToDeal.updates.length == 1) {
var txContentTemp = commonUtil.join(bidIssueObjcToDeal.updates[0], BID_ISSUE_CONTENT_ARRAY);
bidQKLServer.modBidIssueInfoMycWrapper(txContentTemp, txOption).catch(function (error) {
responseUtil.sendError(res, error);
}).then(function () {
bidBackAndIssueSQLServer.modBidIssueInfo(bidIssueObjcToDeal.updates[0]).catch(function (error) {
responseUtil.sendError(res, error);
}).then(sameProcedure);
});
}
function sameProcedure(bidIssueCode) {
var bidIssueLogInfo = {
dataName : params.name ,
module : "发标模块",
func : "addAndModIssuesAndSegsAndFeesAndDetails",
businessID : bidIssueCode,
operator : user.userName,
operateTime : logUtil.getFormatByTime(),
operateDesc : "修改中标",
other : params.other
};
logQKLServer.writeLogMycWrapper(bidIssueLogInfo,txOption).then(function() {
return logSQLServer.writeLogMycWrapper(bidIssueLogInfo);
}).then(function () {
//增加分标段
return Promise.all(bidWindSegsObjcToDeal.inserts.map(function (currentBidWinSeg) {
var txContentTemp = commonUtil.join(currentBidWinSeg,BID_WIN_SEG_CONTENT_ARRAY);
return bidQKLServer.addBidSegmentMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidWindSegsObjcToDeal.inserts.map(function (currentBidWinSeg) {
return bidSegSQLServer.addBidWinSegMycWrapper(currentBidWinSeg);
}));
}).then(function (bidWinSegCodes) {
//增加分标段成功
//TODO
// responseUtil.sendSuccess(res, bidWinSegCodes);
return Promise.all(bidWinSegCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "增加分标段";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (bidWinSegCodes) {
return Promise.all(bidWinSegCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "增加分标段";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//更改
return Promise.all(bidWindSegsObjcToDeal.updates.map(function (currentBidWinSeg) {
var txContentTemp = commonUtil.join(currentBidWinSeg,BID_WIN_SEG_CONTENT_ARRAY);
return bidQKLServer.modBidSegmentMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidWindSegsObjcToDeal.updates.map(function (currentBidWinSeg) {
return bidSegSQLServer.modBidWinSegMycWrapper(currentBidWinSeg);
}));
}).then(function (bidWinSegCodes) {
return Promise.all(bidWinSegCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "修改分标段";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (bidWinSegCodes) {
return Promise.all(bidWinSegCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "修改分标段";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//删除分标段
return Promise.all(bidWindSegsObjcToDeal.deletes.map(function (currentBidWinSeg) {
currentBidWinSeg.bidIssueCode = "null";
currentBidWinSeg.bidWinCode = "null";
return bidSegSQLServer.modBidWinSegMycWrapper(currentBidWinSeg);
}));
}).then(function (bidWinSegCodes) {
return Promise.all(bidWinSegCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "删除分标段";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (bidWinSegCodes) {
return Promise.all(bidWinSegCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "删除分标段";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//增加发标费用相关项
//-------------------------------------------//
return Promise.all(bidFeesObjcToDeal.inserts.map(function (currentBidFee) {
var txContentTemp = commonUtil.join(currentBidFee,BID_ISSUE_FEE_CONTENT_ARRAY);
return bidQKLServer.addBidIssueFeeMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidFeesObjcToDeal.inserts.map(function (currentBidFee) {
return bidBackAndIssueSQLServer.addBidIssueFeeInfo(currentBidFee);
}));
}).then(function (bidFeeCodes) {
//增加发标相关项成功
//TODO
// responseUtil.sendSuccess(res, bidFeeCodes);
return Promise.all(bidFeeCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "增加发标相关费用项";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (bidFeeCodes) {
return Promise.all(bidFeeCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "增加发标相关费用项";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//更改发标相关费用项
return Promise.all(bidFeesObjcToDeal.updates.map(function (currentBidFee) {
var txContentTemp = commonUtil.join(currentBidFee,BID_ISSUE_FEE_CONTENT_ARRAY);
return bidQKLServer.modBidIssueFeeMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidFeesObjcToDeal.updates.map(function (currentBidFee) {
return bidBackAndIssueSQLServer.modBidIssueFeeInfo(currentBidFee);
}));
}).then(function (bidFeeCodes) {
return Promise.all(bidFeeCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "修改发标相关费用项";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (bidFeeCodes) {
return Promise.all(bidFeeCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "修改发标相关费用项";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//删除发标相关费用项
return Promise.all(bidFeesObjcToDeal.deletes.map(function (currentBidFee) {
currentBidFee.bidIssueCode = "null";
var txContentTemp = commonUtil.join(currentBidFee,BID_ISSUE_FEE_CONTENT_ARRAY);
return bidQKLServer.modBidIssueFeeMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidFeesObjcToDeal.deletes.map(function (currentBidFee) {
currentBidFee.bidIssueCode = "null";
return bidBackAndIssueSQLServer.deleteBidIssueFeeByCode(currentBidFee.code);
}));
}).then(function (bidFeeCodes) {
return Promise.all(bidFeeCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "删除发标相关费用项";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (bidFeeCodes) {
return Promise.all(bidFeeCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "删除发标相关费用项";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//增加发标明细
//-------------------------------------------//
return Promise.all(bidIssueDetailsObjcToDeal.inserts.map(function (currentBidIssueDetail) {
var txContentTemp = commonUtil.join(currentBidIssueDetail,BID_ISSUE_DETAIL_CONTENT_ARRAY);
return bidQKLServer.addBidIssueDetailInfoMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidIssueDetailsObjcToDeal.inserts.map(function (currentBidIssueDetail) {
return bidIssueDetailSQLServer.addBidIssueDetailInfo(currentBidIssueDetail);
}));
}).then(function (bidIssueDetailCodes) {
//增加发标明细成功
//TODO
// responseUtil.sendSuccess(res, bidIssueDetailCodes);
return Promise.all(bidIssueDetailCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "增加发标明细";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (bidIssueDetailCodes) {
return Promise.all(bidIssueDetailCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "增加发标明细";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//----------------------------------//
//增加发标明细附件
return Promise.all(bidIssueDetailsObjcToDeal.inserts.map(function (currentBidIssueDetail) {
return dealAttachCodesWithRefcodeReturnModifiedAttachs(currentBidIssueDetail.attachs,currentBidIssueDetail.code,7);
}));
}).then(function (twoDArray) {
var oneArray = twoDToOneDArray(twoDArray);
attachsTempArray = oneArray;
return Promise.all(oneArray.map(function (currentAttach) {
var txContentTemp = commonUtil.join(currentAttach,BID_ATTACH_CONTENT_ARRAY);
bidQKLServer.updateBidAttachmentMycWrapper(txContentTemp, txOption);
}));
}).then(function () {
return Promise.all(attachsTempArray.map(function (currentAttach) {
return bidAttachSQLServer.modAttachMycWrapper(currentAttach);
}));
}).then(function (attachCodes) {
//增加发标明细附件成功
//TODO
// responseUtil.sendSuccess(res, bidIssueDetailCodes);
return Promise.all(attachCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "更改发标明细附件";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (attachCodes) {
return Promise.all(attachCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "更改发标明细附件";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//修改发标明细
//-------------------------------------------//
return Promise.all(bidIssueDetailsObjcToDeal.updates.map(function (currentBidIssueDetail) {
var txContentTemp = commonUtil.join(currentBidIssueDetail,BID_ISSUE_DETAIL_CONTENT_ARRAY);
return bidQKLServer.modBidIssueDetailInfoMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidIssueDetailsObjcToDeal.updates.map(function (currentBidIssueDetail) {
return bidIssueDetailSQLServer.modBidIssueDetailInfo(currentBidIssueDetail);
}));
}).then(function (bidIssueDetailCodes) {
//修改发标明细成功
//TODO
// responseUtil.sendSuccess(res, bidIssueDetailCodes);
return Promise.all(bidIssueDetailCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "修改发标明细";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (bidIssueDetailCodes) {
return Promise.all(bidIssueDetailCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "修改发标明细";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//----------------------------------//
//修改发标明细附件
return Promise.all(bidIssueDetailsObjcToDeal.updates.map(function (currentBidIssueDetail) {
return dealAttachCodesWithRefcodeReturnModifiedAttachs(currentBidIssueDetail.attachs,currentBidIssueDetail.code,7);
}));
}).then(function (twoDArray) {
var oneArray = twoDToOneDArray(twoDArray);
attachsTempArray = oneArray;
return Promise.all(oneArray.map(function (currentAttach) {
var txContentTemp = commonUtil.join(currentAttach,BID_ATTACH_CONTENT_ARRAY);
bidQKLServer.updateBidAttachmentMycWrapper(txContentTemp, txOption);
}));
}).then(function () {
return Promise.all(attachsTempArray.map(function (currentAttach) {
return bidAttachSQLServer.modAttachMycWrapper(currentAttach);
}));
}).then(function (attachCodes) {
//修改发标明细附件成功
//TODO
// responseUtil.sendSuccess(res, bidIssueDetailCodes);
return Promise.all(attachCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "更改发标明细附件";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (attachCodes) {
return Promise.all(attachCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "更改发标明细附件";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//删除发标明细
//--------------------------------------------//
return Promise.all(bidIssueDetailsObjcToDeal.deletes.map(function (currentBidIssueDetail) {
currentBidIssueDetail.bidIssueCode = "null";
var txContentTemp = commonUtil.join(currentBidIssueDetail,BID_ISSUE_DETAIL_CONTENT_ARRAY);
return bidQKLServer.modBidIssueDetailInfoMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidIssueDetailsObjcToDeal.deletes.map(function (currentBidIssueDetail) {
currentBidIssueDetail.bidIssueCode = "null";
return bidIssueDetailSQLServer.modBidIssueDetailInfo(currentBidIssueDetail);
}));
}).then(function (bidIssueDetailCodes) {
return Promise.all(bidIssueDetailCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "删除发标明细";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (bidIssueDetailCodes) {
return Promise.all(bidIssueDetailCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "删除发标明细";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//----------------------------------//
//删除发标明细的附件
return Promise.all(bidIssueDetailsObjcToDeal.deletes.map(function (currentBidIssueDetail) {
return dealAttachCodesWithRefcodeReturnModifiedAttachs([],currentBidIssueDetail.code,0);
}));
}).then(function (twoDArray) {
var oneArray = twoDToOneDArray(twoDArray);
attachsTempArray = oneArray;
return Promise.all(oneArray.map(function (currentAttach) {
var txContentTemp = commonUtil.join(currentAttach,BID_ATTACH_CONTENT_ARRAY);
bidQKLServer.updateBidAttachmentMycWrapper(txContentTemp, txOption);
}));
}).then(function () {
return Promise.all(attachsTempArray.map(function (currentAttach) {
return bidAttachSQLServer.modAttachMycWrapper(currentAttach);
}));
}).then(function (attachCodes) {
//删除发标明细附件成功
//TODO
// responseUtil.sendSuccess(res, bidIssueDetailCodes);
return Promise.all(attachCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "删除发标明细附件";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo),txOption);
}));
}).then(function (attachCodes) {
return Promise.all(attachCodes.map(function (currentCode) {
bidIssueLogInfo.businessID = currentCode;
bidIssueLogInfo.operateDesc = "删除发标明细附件";
bidIssueLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidIssueLogInfo));
}));
}).then(function () {
//good job
responseUtil.sendSuccess(res, "all good!");
}).catch(function (error) {
responseUtil.sendError(res, error);
});
}//sameProcedure
});
//根据发标code 获取很多
managerBidBackAndIssue.post("/getBidIssueSegsAndFeesAndDetails",function (req, res) {
var final = {};
var p1 = bidSegSQLServer.getBidWinSegListByBidIssueCodeMycWrapper(req.body.bidIssueCode).then(function (results) {
final.bidSegs = results;
return Promise.resolve();
});
var p2 = bidBackAndIssueSQLServer.queryBidIssueFeeListInfoByIssueCode(req.body.bidIssueCode).then(function (results) {
final.bidIssueFees = results;
return Promise.resolve();
});
var p3 = bidIssueDetailSQLServer.getBidIssueDetailListByBidIssueCode(req.body.bidIssueCode).then(function (results) {
final.bidIssueDetails = results;
return Promise.resolve();
}).then(function () {
return Promise.all(final.bidIssueDetails.map(function (currentBidIssueDetail) {
return bidAttachSQLServer.queryBindAttach(currentBidIssueDetail.code).then(function (results) {
currentBidIssueDetail.attachs = results;
return Promise.resolve();
});
}));
});
Promise.all([p1, p2, p3]).then(function () {
responseUtil.sendSuccess(res, final);
}).catch(function (error) {
responseUtil.sendError(res, error);
});
});
//code 根据code 获取发标
managerBidBackAndIssue.post("/getBidIssue",function (req, res) {
bidBackAndIssueSQLServer.queryBidIssueInfoByCode(req.body.code).then(function (results) {
responseUtil.sendSuccess(res, results);
}).catch(function (error) {
responseUtil.sendError(res, error);
});
});
// 根据招标计划的code 获取发标的信息列表
managerBidBackAndIssue.post("/getBidIssueList", function (req, res) {
var bidCode = req.body.bidCode;
bidBackAndIssueSQLServer.getBidIssueListByBidCode(bidCode).then(function (results) {
responseUtil.sendSuccess(res, results);
}).catch(function (error) {
responseUtil.sendError(res, error);
});
});
//-----------------------------回标接口Begin----------------------
//bidBack bidWinSegs bidFees bidBackDetails
managerBidBackAndIssue.post("/addAndModBidBackAndSegsAndFeesAndDetails", function(req, res) {
//回标只能有一个
var params = req.body;
var user = req.session.user;
var txOption = accountUtil.transactionOptionForEx(req.session);
var bidBack = params.bidBack;
var bidWinSegs = commonUtil.toArray(params.bidWinSegs);
var bidFees = commonUtil.toArray(params.bidFees);
var bidBackDetails = commonUtil.toArray(params.bidBackDetails);//有可能为空
//回标明细的更改附件临时变量
var attachsTempArray;
var bidBackCodeRouter;
if (!bidBack) {
responseUtil.sendError(res, "回标参数不能为空!");
return;
}
var bidBackObjcToDeal = parseObjcCodeToDeletesAndUpdatesAndInsert([bidBack]);
var bidWindSegsObjcToDeal = parseObjcCodeToDeletesAndUpdatesAndInsert(bidWinSegs, bidBack.code);
var bidFeesObjcToDeal = parseObjcCodeToDeletesAndUpdatesAndInsert(bidFees, bidBack.code);
var bidBackDetailsObjcToDeal = parseObjcCodeToDeletesAndUpdatesAndInsert(bidBackDetails, bidBack.code);
if (bidBackObjcToDeal.deletes.length ==1) {
bidBackAndIssueSQLServer.deleteBidBackByCode(bidBackObjcToDeal.deletes[0].code).then(function () {
responseUtil.sendSuccess(res, "delete success");
}).catch(function(error) {
responseUtil.sendError(res, error);
});
return;
}else if(bidBackObjcToDeal.inserts.length == 1){
var txContentTemp = commonUtil.join(bidBackObjcToDeal.inserts[0], BID_ISSUE_CONTENT_ARRAY);
bidQKLServer.addBidBackInfoMycWrapper(txContentTemp, txOption).catch(function (error) {
responseUtil.sendError(res, error);
return Promise.reject(error);
}).then(function () {
bidBackAndIssueSQLServer.addBidBackInfo(bidBackObjcToDeal.inserts[0]).then(function (code) {
sameProcedure(code);
}).catch(function (error) {
responseUtil.sendError(res, error);
});
}).catch(function (error) {
responseUtil.sendError(res, error);
return;
})
}else if (bidBackObjcToDeal.updates.length == 1) {
var txContentTemp = commonUtil.join(bidBackObjcToDeal.updates[0], BID_ISSUE_CONTENT_ARRAY);
bidQKLServer.modBidBackInfoMycWrapper(txContentTemp, txOption).catch(function (error) {
responseUtil.sendError(res, error);
return Promise.reject(error);
}).then(function () {
bidBackAndIssueSQLServer.modBidBackInfo(bidBackObjcToDeal.updates[0]).then(sameProcedure).catch(function (error) {
responseUtil.sendError(res, error);
});
}).catch(function (error) {
responseUtil.sendError(res, error);
})
}
function sameProcedure(bidBackCode) {
var bidBackLogInfo = {
dataName : params.name ,
module : "回标模块",
func : "addAndModBidBackAndSegsAndFeesAndDetails",
businessID : bidBackCode,
operator : user.userName,
operateTime : logUtil.getFormatByTime(),
operateDesc : "修改回标",
other : params.other
};
logSomething(bidBackLogInfo,txOption);
//增加分标段
//--------------------//
Promise.all(bidWindSegsObjcToDeal.inserts.map(function (currentBidWinSeg) {
var txContentTemp = commonUtil.join(currentBidWinSeg,BID_WIN_SEG_CONTENT_ARRAY);
return bidQKLServer.addBidSegmentMycWrapper(txContentTemp,txOption);
})).then(function () {
return Promise.all(bidWindSegsObjcToDeal.inserts.map(function (currentBidWinSeg) {
return bidSegSQLServer.addBidWinSegMycWrapper(currentBidWinSeg);
}));
}).then(function (bidWinSegCodes) {
//增加分标段成功
//TODO
// responseUtil.sendSuccess(res, bidWinSegCodes);
bidWinSegCodes.forEach(function (currentSegCode) {
bidBackLogInfo.businessID = currentSegCode;
bidBackLogInfo.operateDesc = "增加分标段";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
logSomething(bidBackLogInfo, txOption);
});
//更改
return Promise.all(bidWindSegsObjcToDeal.updates.map(function (currentBidWinSeg) {
var txContentTemp = commonUtil.join(currentBidWinSeg,BID_WIN_SEG_CONTENT_ARRAY);
return bidQKLServer.modBidSegmentMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidWindSegsObjcToDeal.updates.map(function (currentBidWinSeg) {
return bidSegSQLServer.modBidWinSegMycWrapper(currentBidWinSeg);
}));
}).then(function (bidWinSegCodes) {
bidWinSegCodes.forEach(function (currentSegCode) {
bidBackLogInfo.businessID = currentSegCode;
bidBackLogInfo.operateDesc = "修改分标段";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
logSomething(bidBackLogInfo, txOption);
});
//删除分标段
return Promise.all(bidWindSegsObjcToDeal.deletes.map(function (currentBidWinSeg) {
currentBidWinSeg.bidBackCode = "null";
currentBidWinSeg.bidWinCode = "null";
var txContentTemp = commonUtil.join(currentBidWinSeg,BID_WIN_SEG_CONTENT_ARRAY);
return bidQKLServer.modBidSegmentMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidWindSegsObjcToDeal.deletes.map(function (currentBidWinSeg) {
currentBidWinSeg.bidBackCode = "null";
currentBidWinSeg.bidWinCode = "null";
return bidSegSQLServer.modBidWinSegMycWrapper(currentBidWinSeg);
}));
}).then(function (bidWinSegCodes) {
bidWinSegCodes.forEach(function (currentSegCode) {
bidBackLogInfo.businessID = currentSegCode;
bidBackLogInfo.operateDesc = "删除分标段";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
logSomething(bidBackLogInfo, txOption);
});
//增加回标费用相关项
//-------------------------------------------//
return Promise.all(bidFeesObjcToDeal.inserts.map(function (currentBidFee) {
var txContentTemp = commonUtil.join(currentBidFee,BID_ISSUE_FEE_CONTENT_ARRAY);
return bidQKLServer.addBidIssueFeeMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidFeesObjcToDeal.inserts.map(function (currentBidFee) {
return bidBackAndIssueSQLServer.addBidIssueFeeInfo(currentBidFee);
}));
}).then(function (bidFeeCodes) {
//增加回标相关项成功
//TODO
// responseUtil.sendSuccess(res, bidFeeCodes);
bidFeeCodes.forEach(function (currentBidFeeCode) {
bidBackLogInfo.businessID = currentBidFeeCode;
bidBackLogInfo.operateDesc = "增加回标相关费用项";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
logSomething(bidBackLogInfo, txOption);
});
//更改回标相关费用项
return Promise.all(bidFeesObjcToDeal.updates.map(function (currentBidFee) {
var txContentTemp = commonUtil.join(currentBidFee,BID_ISSUE_FEE_CONTENT_ARRAY);
return bidQKLServer.modBidIssueFeeMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidFeesObjcToDeal.updates.map(function (currentBidFee) {
return bidBackAndIssueSQLServer.modBidIssueFeeInfo(currentBidFee);
}));
}).then(function (bidFeeCodes) {
return Promise.all(bidFeeCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "修改回标相关费用项";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo),txOption);
}));
}).then(function (bidFeeCodes) {
return Promise.all(bidFeeCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "修改回标相关费用项";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo));
}));
}).then(function () {
//删除回标相关费用项
return Promise.all(bidFeesObjcToDeal.deletes.map(function (currentBidFee) {
currentBidFee.bidBackCode = "null";
var txContentTemp = commonUtil.join(currentBidFee,BID_ISSUE_FEE_CONTENT_ARRAY);
return bidQKLServer.modBidIssueFeeMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidFeesObjcToDeal.deletes.map(function (currentBidFee) {
currentBidFee.bidIssueCode = "null";
return bidBackAndIssueSQLServer.deleteBidIssueFeeByCode(currentBidFee.code);
}));
}).then(function (bidFeeCodes) {
return Promise.all(bidFeeCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "删除回标相关费用项";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo),txOption);
}));
}).then(function (bidFeeCodes) {
return Promise.all(bidFeeCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "删除回标相关费用项";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo));
}));
}).then(function () {
//增加回标明细
//-------------------------------------------//
return Promise.all(bidBackDetailsObjcToDeal.inserts.map(function (currentbidBackDetail) {
var txContentTemp = commonUtil.join(currentbidBackDetail,BID_ISSUE_DETAIL_CONTENT_ARRAY);
return bidQKLServer.addBidIssueDetailInfoMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidBackDetailsObjcToDeal.inserts.map(function (currentbidBackDetail) {
return bidIssueDetailSQLServer.addBidIssueDetailInfo(currentbidBackDetail);
}));
}).then(function (bidBackDetailCodes) {
//增加回标明细成功
//TODO
// responseUtil.sendSuccess(res, bidBackDetailCodes);
return Promise.all(bidBackDetailCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "增加回标明细";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo),txOption);
}));
}).then(function (bidBackDetailCodes) {
return Promise.all(bidBackDetailCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "增加回标明细";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo));
}));
}).then(function () {
//----------------------------------//
//增加回标明细附件
return Promise.all(bidBackDetailsObjcToDeal.inserts.map(function (currentbidBackDetail) {
return dealAttachCodesWithRefcodeReturnModifiedAttachs(currentbidBackDetail.attachs,currentbidBackDetail.code,5);
}));
}).then(function (twoDArray) {
var oneArray = twoDToOneDArray(twoDArray);
attachsTempArray = oneArray;
return Promise.all(oneArray.map(function (currentAttach) {
var txContentTemp = commonUtil.join(currentAttach,BID_ATTACH_CONTENT_ARRAY);
bidQKLServer.updateBidAttachmentMycWrapper(txContentTemp, txOption);
}));
}).then(function () {
return Promise.all(attachsTempArray.map(function (currentAttach) {
return bidAttachSQLServer.modAttachMycWrapper(currentAttach);
}));
}).then(function (attachCodes) {
//增加回标明细附件成功
//TODO
// responseUtil.sendSuccess(res, bidBackDetailCodes);
return Promise.all(attachCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "增加回标明细附件";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo),txOption);
}));
}).then(function (attachCodes) {
return Promise.all(attachCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "增加回标明细附件";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo));
}));
}).then(function () {
//修改回标明细
//-------------------------------------------//
return Promise.all(bidBackDetailsObjcToDeal.updates.map(function (currentbidBackDetail) {
var txContentTemp = commonUtil.join(currentbidBackDetail,BID_ISSUE_DETAIL_CONTENT_ARRAY);
return bidQKLServer.modBidIssueDetailInfoMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidBackDetailsObjcToDeal.updates.map(function (currentbidBackDetail) {
return bidIssueDetailSQLServer.modBidIssueDetailInfo(currentbidBackDetail);
}));
}).then(function (bidBackDetailCodes) {
//修改回标明细成功
//TODO
// responseUtil.sendSuccess(res, bidBackDetailCodes);
return Promise.all(bidBackDetailCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "修改回标明细";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo),txOption);
}));
}).then(function (bidBackDetailCodes) {
return Promise.all(bidBackDetailCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "修改回标明细";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo));
}));
}).then(function () {
//----------------------------------//
//修改回标明细附件
return Promise.all(bidBackDetailsObjcToDeal.updates.map(function (currentbidBackDetail) {
return dealAttachCodesWithRefcodeReturnModifiedAttachs(currentbidBackDetail.attachs,currentbidBackDetail.code,5);
}));
}).then(function (twoDArray) {
var oneArray = twoDToOneDArray(twoDArray);
attachsTempArray = oneArray;
return Promise.all(oneArray.map(function (currentAttach) {
var txContentTemp = commonUtil.join(currentAttach,BID_ATTACH_CONTENT_ARRAY);
bidQKLServer.updateBidAttachmentMycWrapper(txContentTemp, txOption);
}));
}).then(function () {
return Promise.all(attachsTempArray.map(function (currentAttach) {
return bidAttachSQLServer.modAttachMycWrapper(currentAttach);
}));
}).then(function (attachCodes) {
//修改回标明细附件成功
//TODO
// responseUtil.sendSuccess(res, bidBackDetailCodes);
return Promise.all(attachCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "更改回标明细附件";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo),txOption);
}));
}).then(function (attachCodes) {
return Promise.all(attachCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "更改回标明细附件";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo));
}));
}).then(function () {
//删除回标明细
//--------------------------------------------//
return Promise.all(bidBackDetailsObjcToDeal.deletes.map(function (currentbidBackDetail) {
currentbidBackDetail.bidBackCode = "null";
var txContentTemp = commonUtil.join(currentbidBackDetail,BID_ISSUE_DETAIL_CONTENT_ARRAY);
return bidQKLServer.modBidIssueDetailInfoMycWrapper(txContentTemp,txOption);
}));
}).then(function () {
return Promise.all(bidBackDetailsObjcToDeal.deletes.map(function (currentbidBackDetail) {
currentbidBackDetail.bidBackCode = "null";
return bidIssueDetailSQLServer.modBidIssueDetailInfo(currentBidIssueDetail);
}));
}).then(function (bidBackDetailCodes) {
return Promise.all(bidBackDetailCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "删除回标明细";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo),txOption);
}));
}).then(function (bidBackDetailCodes) {
return Promise.all(bidBackDetailCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "删除回标明细";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo));
}));
}).then(function () {
//----------------------------------//
//删除回标明细的附件
return Promise.all(bidBackDetailsObjcToDeal.deletes.map(function (currentbidBackDetail) {
return dealAttachCodesWithRefcodeReturnModifiedAttachs([],currentbidBackDetail.code,0);
}));
}).then(function (twoDArray) {
var oneArray = twoDToOneDArray(twoDArray);
attachsTempArray = oneArray;
return Promise.all(oneArray.map(function (currentAttach) {
var txContentTemp = commonUtil.join(currentAttach,BID_ATTACH_CONTENT_ARRAY);
bidQKLServer.updateBidAttachmentMycWrapper(txContentTemp, txOption);
}));
}).then(function () {
return Promise.all(attachsTempArray.map(function (currentAttach) {
return bidAttachSQLServer.modAttachMycWrapper(currentAttach);
}));
}).then(function (attachCodes) {
//删除回标明细附件成功
//TODO
// responseUtil.sendSuccess(res, bidBackDetailCodes);
return Promise.all(attachCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "删除回标明细附件";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logQKLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo),txOption);
}));
}).then(function (attachCodes) {
return Promise.all(attachCodes.map(function (currentCode) {
bidBackLogInfo.businessID = currentCode;
bidBackLogInfo.operateDesc = "删除回标明细附件";
bidBackLogInfo.operateTime = logUtil.getFormatByTime();
return logSQLServer.writeLogMycWrapper(deepCopyObjt(bidBackLogInfo));
}));
}).then(function () {
//good job
responseUtil.sendSuccess(res, "all good!");
}).catch(function (error) {
responseUtil.sendError(res, error);
});
}//sameProcedure
});
//根据回标code 获取回标的详情
managerBidBackAndIssue.post("/getBidBackByCode", function (req, res) {
bidBackAndIssueSQLServer.queryBidBackInfoByCode(req.body.code).then(function (results) {
responseUtil.sendSuccess(res, results);
}).catch(function (error) {
responseUtil.sendError(res, error);
});
});
//根据回标code 获取分标段 相关费用和回标明细
//bidBackCode
managerBidBackAndIssue.post("/getBidBackSegsAndFeesAndDetails", function (req, res) {
var final = {};
var p1 = bidSegSQLServer.getBidWinSegListByBidIssueCodeMycWrapper(req.body.bidBackCode).then(function (results) {
final.bidSegs = results;
return Promise.resolve();
});
var p2 = bidBackAndIssueSQLServer.queryBidIssueFeeListInfoByIssueCode(req.body.bidBackCode).then(function (results) {
final.bidBackFees = results;
return Promise.resolve();
});
var p3 = bidIssueDetailSQLServer.getBidIssueDetailListByBidIssueCode(req.body.bidBackCode).then(function (results) {
final.bidBackDetails = results;
return Promise.resolve();
}).then(function () {
return Promise.all(final.bidBackDetails.map(function (currentBidIssueDetail) {
return bidAttachSQLServer.queryBindAttach(currentBidIssueDetail.code).then(function (results) {
currentBidIssueDetail.attachs = results;
return Promise.resolve();
});
}));
});
Promise.all([p1, p2, p3]).then(function () {
responseUtil.sendSuccess(res, final);
}).catch(function (error) {
responseUtil.sendError(res, error);
});
});
// 获取回标列表 根据招标计划的code
// bidCode
managerBidBackAndIssue.post("/getBidBackListByBidCode", function (req, res) {
bidBackAndIssueSQLServer.getBidBackListByBidCode(req.body.bidCode).then(function (results) {
responseUtil.sendSuccess(res, results);
}).catch(function (error) {
responseUtil.sendError(res, error);
});
});
//-----------------------------回标接口End----------------------
//-------------------------myc新接口End-----------------------
//-----------------------privateBegin--------------------------
function timeLog(_description){
console.log(_description +" time " + Date());
}
function deepCopyObjt(argument) {
if (typeof argument != "object") return argument;
var newObjt = {};
for (attr in argument){
newObjt[attr] = deepCopyObjt(argument[attr]);
}
return newObjt;
}
//log anyway
function logSomething(_logInfo,_txOption) {
logQKLServer.writeLogMycWrapper(deepCopyObjt(_logInfo),_txOption);
logSQLServer.writeLogMycWrapper(deepCopyObjt(_logInfo));
}
//转换成一维数组
function twoDToOneDArray(_twoArray) {
var oneArray_ = [];
for (var i = 0; i < _twoArray.length; i++) {
oneArray_ = oneArray_.concat(_twoArray[i]);
}
return oneArray_;
}
//-----------------------privateEND--------------------------
module.exports = managerBidBackAndIssue;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment