|
@@ -5,6 +5,7 @@ const shenpiConst = require('../const/shenpi');
|
|
const pushType = require('../const/audit').pushType;
|
|
const pushType = require('../const/audit').pushType;
|
|
const smsTypeConst = require('../const/sms_type');
|
|
const smsTypeConst = require('../const/sms_type');
|
|
const wxConst = require('../const/wechat_template.js');
|
|
const wxConst = require('../const/wechat_template.js');
|
|
|
|
+const advanceConst = require('../const/advance');
|
|
module.exports = app => {
|
|
module.exports = app => {
|
|
class AdvanceAudit extends app.BaseService {
|
|
class AdvanceAudit extends app.BaseService {
|
|
constructor(ctx) {
|
|
constructor(ctx) {
|
|
@@ -234,11 +235,16 @@ module.exports = app => {
|
|
|
|
|
|
// 微信模板通知
|
|
// 微信模板通知
|
|
const advanceInfo = await this.ctx.service.advance.getDataById(vid);
|
|
const advanceInfo = await this.ctx.service.advance.getDataById(vid);
|
|
|
|
+ const shenpiUrl = await this.ctx.helper.urlToShort(
|
|
|
|
+ this.ctx.protocol + '://' + this.ctx.host + '/wap/tender/' + advanceInfo.tid + '/advance/' + advanceInfo.id + '/detail'
|
|
|
|
+ );
|
|
const wechatData = {
|
|
const wechatData = {
|
|
- qi: advanceInfo.type === 0 ? '开工预付款第' + advanceInfo.order + '期' : '材料预付款第' + advanceInfo.order + '期',
|
|
|
|
|
|
+ wap_url: shenpiUrl,
|
|
|
|
+ qi: advanceConst.typeCol[advanceInfo.type].name + '第' + advanceInfo.order + '期',
|
|
status: wxConst.status.check,
|
|
status: wxConst.status.check,
|
|
tips: wxConst.tips.check,
|
|
tips: wxConst.tips.check,
|
|
tp: parseFloat(advanceInfo.cur_amount),
|
|
tp: parseFloat(advanceInfo.cur_amount),
|
|
|
|
+ code: this.ctx.session.sessionProject.code,
|
|
};
|
|
};
|
|
await this.ctx.helper.sendWechat(audit.audit_id, smsTypeConst.const.YFK, smsTypeConst.judge.approval.toString(), wxConst.template.advance, wechatData);
|
|
await this.ctx.helper.sendWechat(audit.audit_id, smsTypeConst.const.YFK, smsTypeConst.judge.approval.toString(), wxConst.template.advance, wechatData);
|
|
await transaction.commit();
|
|
await transaction.commit();
|
|
@@ -279,6 +285,9 @@ module.exports = app => {
|
|
// 无下一审核人表示,审核结束
|
|
// 无下一审核人表示,审核结束
|
|
|
|
|
|
const advanceInfo = await this.ctx.service.advance.getDataById(advanceId);
|
|
const advanceInfo = await this.ctx.service.advance.getDataById(advanceId);
|
|
|
|
+ const shenpiUrl = await this.ctx.helper.urlToShort(
|
|
|
|
+ this.ctx.protocol + '://' + this.ctx.host + '/wap/tender/' + advanceInfo.tid + '/advance/' + advanceInfo.id + '/detail'
|
|
|
|
+ );
|
|
if (nextAudit) {
|
|
if (nextAudit) {
|
|
// 流程至下一审批人
|
|
// 流程至下一审批人
|
|
await transaction.update(this.tableName, { id: nextAudit.id, status: auditConst.status.checking, create_time: time });
|
|
await transaction.update(this.tableName, { id: nextAudit.id, status: auditConst.status.checking, create_time: time });
|
|
@@ -289,11 +298,14 @@ module.exports = app => {
|
|
status: auditConst.status.checking,
|
|
status: auditConst.status.checking,
|
|
});
|
|
});
|
|
// 微信模板通知
|
|
// 微信模板通知
|
|
|
|
+
|
|
const wechatData = {
|
|
const wechatData = {
|
|
- qi: advanceInfo.type === 0 ? '开工预付款第' + advanceInfo.order + '期' : '材料预付款第' + advanceInfo.order + '期',
|
|
|
|
|
|
+ wap_url: shenpiUrl,
|
|
|
|
+ qi: advanceConst.typeCol[advanceInfo.type].name + '第' + advanceInfo.order + '期',
|
|
status: wxConst.status.check,
|
|
status: wxConst.status.check,
|
|
tips: wxConst.tips.check,
|
|
tips: wxConst.tips.check,
|
|
tp: parseFloat(advanceInfo.cur_amount),
|
|
tp: parseFloat(advanceInfo.cur_amount),
|
|
|
|
+ code: this.ctx.session.sessionProject.code,
|
|
};
|
|
};
|
|
await this.ctx.helper.sendWechat(nextAudit.audit_id, smsTypeConst.const.YFK, smsTypeConst.judge.approval.toString(), wxConst.template.advance, wechatData);
|
|
await this.ctx.helper.sendWechat(nextAudit.audit_id, smsTypeConst.const.YFK, smsTypeConst.judge.approval.toString(), wxConst.template.advance, wechatData);
|
|
} else {
|
|
} else {
|
|
@@ -306,10 +318,12 @@ module.exports = app => {
|
|
// 微信模板通知
|
|
// 微信模板通知
|
|
const users = this._.uniq(this._.concat(this._.map(auditors, 'audit_id'), advanceInfo.uid));
|
|
const users = this._.uniq(this._.concat(this._.map(auditors, 'audit_id'), advanceInfo.uid));
|
|
const wechatData = {
|
|
const wechatData = {
|
|
- qi: advanceInfo.type === 0 ? '开工预付款第' + advanceInfo.order + '期' : '材料预付款第' + advanceInfo.order + '期',
|
|
|
|
|
|
+ wap_url: shenpiUrl,
|
|
|
|
+ qi: advanceConst.typeCol[advanceInfo.type].name + '第' + advanceInfo.order + '期',
|
|
status: wxConst.status.success,
|
|
status: wxConst.status.success,
|
|
tips: wxConst.tips.success,
|
|
tips: wxConst.tips.success,
|
|
tp: parseFloat(advanceInfo.cur_amount),
|
|
tp: parseFloat(advanceInfo.cur_amount),
|
|
|
|
+ code: this.ctx.session.sessionProject.code,
|
|
};
|
|
};
|
|
await this.ctx.helper.sendWechat(users, smsTypeConst.const.YFK, smsTypeConst.judge.result.toString(), wxConst.template.advance, wechatData);
|
|
await this.ctx.helper.sendWechat(users, smsTypeConst.const.YFK, smsTypeConst.judge.result.toString(), wxConst.template.advance, wechatData);
|
|
}
|
|
}
|
|
@@ -358,11 +372,16 @@ module.exports = app => {
|
|
// 微信模板通知
|
|
// 微信模板通知
|
|
const advanceInfo = await this.ctx.service.advance.getDataById(advanceId);
|
|
const advanceInfo = await this.ctx.service.advance.getDataById(advanceId);
|
|
const users = this._.uniq(this._.concat(this._.map(auditors, 'audit_id'), advanceInfo.uid));
|
|
const users = this._.uniq(this._.concat(this._.map(auditors, 'audit_id'), advanceInfo.uid));
|
|
|
|
+ const shenpiUrl = await this.ctx.helper.urlToShort(
|
|
|
|
+ this.ctx.protocol + '://' + this.ctx.host + '/wap/tender/' + advanceInfo.tid + '/advance/' + advanceInfo.id + '/detail'
|
|
|
|
+ );
|
|
const wechatData = {
|
|
const wechatData = {
|
|
- qi: advanceInfo.type === 0 ? '开工预付款第' + advanceInfo.order + '期' : '材料预付款第' + advanceInfo.order + '期',
|
|
|
|
|
|
+ wap_url: shenpiUrl,
|
|
|
|
+ qi: advanceConst.typeCol[advanceInfo.type].name + '第' + advanceInfo.order + '期',
|
|
status: wxConst.status.back,
|
|
status: wxConst.status.back,
|
|
tips: wxConst.tips.back,
|
|
tips: wxConst.tips.back,
|
|
tp: parseFloat(advanceInfo.cur_amount),
|
|
tp: parseFloat(advanceInfo.cur_amount),
|
|
|
|
+ code: this.ctx.session.sessionProject.code,
|
|
};
|
|
};
|
|
await this.ctx.helper.sendWechat(users, smsTypeConst.const.YFK, smsTypeConst.judge.result.toString(), wxConst.template.advance, wechatData);
|
|
await this.ctx.helper.sendWechat(users, smsTypeConst.const.YFK, smsTypeConst.judge.result.toString(), wxConst.template.advance, wechatData);
|
|
// 拷贝新一次审核流程列表
|
|
// 拷贝新一次审核流程列表
|
|
@@ -424,11 +443,16 @@ module.exports = app => {
|
|
});
|
|
});
|
|
// 微信模板通知
|
|
// 微信模板通知
|
|
const advanceInfo = await this.ctx.service.advance.getDataById(advanceId);
|
|
const advanceInfo = await this.ctx.service.advance.getDataById(advanceId);
|
|
|
|
+ const shenpiUrl = await this.ctx.helper.urlToShort(
|
|
|
|
+ this.ctx.protocol + '://' + this.ctx.host + '/wap/tender/' + advanceInfo.tid + '/advance/' + advanceInfo.id + '/detail'
|
|
|
|
+ );
|
|
const wechatData = {
|
|
const wechatData = {
|
|
- qi: advanceInfo.type === 0 ? '开工预付款第' + advanceInfo.order + '期' : '材料预付款第' + advanceInfo.order + '期',
|
|
|
|
|
|
+ wap_url: shenpiUrl,
|
|
|
|
+ qi: advanceConst.typeCol[advanceInfo.type].name + '第' + advanceInfo.order + '期',
|
|
status: wxConst.status.check,
|
|
status: wxConst.status.check,
|
|
tips: wxConst.tips.check,
|
|
tips: wxConst.tips.check,
|
|
tp: parseFloat(advanceInfo.cur_amount),
|
|
tp: parseFloat(advanceInfo.cur_amount),
|
|
|
|
+ code: this.ctx.session.sessionProject.code,
|
|
};
|
|
};
|
|
await this.ctx.helper.sendWechat(preAuditor.audit_id, smsTypeConst.const.YFK, smsTypeConst.judge.approval.toString(), wxConst.template.advance, wechatData);
|
|
await this.ctx.helper.sendWechat(preAuditor.audit_id, smsTypeConst.const.YFK, smsTypeConst.judge.approval.toString(), wxConst.template.advance, wechatData);
|
|
await transaction.insert(this.tableName, newAuditors);
|
|
await transaction.insert(this.tableName, newAuditors);
|
|
@@ -609,6 +633,32 @@ module.exports = app => {
|
|
throw err;
|
|
throw err;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 取待审批期列表(wap用)
|
|
|
|
+ *
|
|
|
|
+ * @param auditorId
|
|
|
|
+ * @return {Promise<*>}
|
|
|
|
+ */
|
|
|
|
+ async getAuditAdvanceByWap(auditorId) {
|
|
|
|
+ const sql =
|
|
|
|
+ 'SELECT ad.`id`, ad.`tid`, ad.`pay_ratio`, ad.`cur_amount`, ad.`prev_amount`, ad.`prev_total_amount`, ad.`type`, ad.`order`, ' +
|
|
|
|
+ // ' s.`order` As `sorder`, s.`status` As `sstatus`, s.`s_time`, s.`contract_tp`, s.`qc_tp`, s.`pre_contract_tp`, s.`pre_qc_tp`, s.`yf_tp`, s.`pre_yf_tp`, ' +
|
|
|
|
+ ' t.`name`, t.`project_id`, t.`user_id`,' +
|
|
|
|
+ ' ti.`deal_info`, ti.`deal_param` ' +
|
|
|
|
+ ' FROM ?? AS aa, ?? AS ad, ?? As t, ?? AS ti ' +
|
|
|
|
+ ' WHERE aa.`audit_id` = ? and aa.`status` = ?' +
|
|
|
|
+ ' and aa.`vid` = ad.`id` and aa.`tid` = t.`id` and ti.`tid` = t.`id`';
|
|
|
|
+ const sqlParam = [
|
|
|
|
+ this.tableName,
|
|
|
|
+ this.ctx.service.advance.tableName,
|
|
|
|
+ this.ctx.service.tender.tableName,
|
|
|
|
+ this.ctx.service.tenderInfo.tableName,
|
|
|
|
+ auditorId,
|
|
|
|
+ auditConst.status.checking,
|
|
|
|
+ ];
|
|
|
|
+ return await this.db.query(sql, sqlParam);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
return AdvanceAudit;
|
|
return AdvanceAudit;
|
|
};
|
|
};
|