Commit ec700c4c by Sxy

fix: 分配

parent 471f0989
......@@ -4,376 +4,377 @@ const settings = require("../../../../config/settings");
const System = require("../../../system");
const appconfig = system.getSysConfig();
class DeliverybillService extends ServiceBase {
constructor() {
super("bizchance", ServiceBase.getDaoName(DeliverybillService));
this.logService = system.getObject("service.bizchance.statuslogSve");
this.fitaxschemeDao = system.getObject("service.bizchance.fitaxschemeDao");
this.bizoptDao = system.getObject("service.bizchance.bizoptDao");
this.operationrecordDao = system.getObject("service.bizchance.operationrecordDao");
}
async updateOrderStatus(pobj) {
let deliverData = await this.dao.findOne({
id: pobj.deliverId
});
if (!deliverData) {
throw new Error("查不到此交付单");
}
if (deliverData.delivery_status !== system.SERVERSESTATUS.RECEIVED) {
throw new Error("该状态下不可处理");
}
let updateResult = {};
let { delivery_info } = deliverData;
if (pobj.orderStaus === true) {
updateResult = {
delivery_info: {
...delivery_info,
setupAt: pobj.setupAt//建账时间
},
delivery_status: system.SERVERSESTATUS.WAITUSERCONFIRM
}
constructor() {
super("bizchance", ServiceBase.getDaoName(DeliverybillService));
this.logService = system.getObject("service.bizchance.statuslogSve");
this.fitaxschemeDao = system.getObject("service.bizchance.fitaxschemeDao");
this.bizoptDao = system.getObject("service.bizchance.bizoptDao");
this.operationrecordDao = system.getObject("service.bizchance.operationrecordDao");
}
if (pobj.orderStaus === false) {
updateResult = {
delivery_status: system.SERVERSESTATUS.CLOSED,
close_reason: pobj.note
}
}
await this.dao.updateByWhere(updateResult, {
id: pobj.deliverId
});
this.logService.insertInfo({
flowType: system.FLOWCODE.DELIVERY,
flowId: pobj.deliverId,
statusCode: updateResult.delivery_status,
clerkName: pobj.userid,
clerkId: pobj.username
});
return "SUCCESS"
}
async setupBill(pobj) {
let deliverData = await this.dao.findOne({
id: pobj.deliverId
});
if (!deliverData) {
throw new Error("查不到此交付单");
}
if (deliverData.delivery_status !== system.SERVERSESTATUS.INSERVICE) {
throw new Error("该状态下不可建账");
async updateOrderStatus(pobj) {
let deliverData = await this.dao.findOne({
id: pobj.deliverId
});
if (!deliverData) {
throw new Error("查不到此交付单");
}
if (deliverData.delivery_status !== system.SERVERSESTATUS.RECEIVED) {
throw new Error("该状态下不可处理");
}
let updateResult = {};
let { delivery_info } = deliverData;
if (pobj.orderStaus === true) {
updateResult = {
delivery_info: {
...delivery_info,
setupAt: pobj.setupAt//建账时间
},
delivery_status: system.SERVERSESTATUS.WAITUSERCONFIRM
}
}
if (pobj.orderStaus === false) {
updateResult = {
delivery_status: system.SERVERSESTATUS.CLOSED,
close_reason: pobj.note
}
}
await this.dao.updateByWhere(updateResult, {
id: pobj.deliverId
});
this.logService.insertInfo({
flowType: system.FLOWCODE.DELIVERY,
flowId: pobj.deliverId,
statusCode: updateResult.delivery_status,
clerkName: pobj.userid,
clerkId: pobj.username
});
return "SUCCESS"
}
await this.dao.updateByWhere({
delivery_info: {
...delivery_info,
setupStatus: system.SERVERSESTATUS.SETUP,
setupInfo: {
contactsName: pobj.contactsName,
time: pobj.time,
accountingType: pobj.accountingType,
taxpayerType: pobj.taxpayerType,
supplier: pobj.supplier
}
}
}, {
id: pobj.deliverId
});
return "SUCCESS"
}
async deliverInfo(pobj) {
let result = {};
let deliverData = await this.dao.findOne({
id: pobj.deliverId
});
if (!deliverData) {
throw new Error("查不到此交付单");
}
result.deliverData = {
deliveryId: deliverData.id, // id
deliveryNumber: deliverData.delivery_code, // 交付单编号
companyName: deliverData.delivery_info.companyName,// 企业名称
uscc: deliverData.delivery_info.uscc, //统一信用代码
taxpayerType: delivery_info.taxpayerType, //纳税人类型 1 一般;2 小规模
//会计准侧
companyBizType: delivery_info.companyBizType,// 公司类型 1-商贸型;2-服务型;3-特殊行业;4-其他
areaType: delivery_info.areaType, //区域类型 city-城市
area: service_address, // 服务 地区 编码
contactsName: delivery_info.contactsName,// 联系人
contactsPhone: delivery_info.contactsPhone,// 联系电话
owner: salesman_name,//所属人
deliveryStatus: delivery_status, // 交付单状态
setupStatus: delivery_info.setupStatus || System.SERVERSESTATUS.NOTSETUP,//建账状态 notsetup | setup
createdAt: created_at,
updatedAt: updated_at,
}
if (deliverData.scheme_number) {
let schemeData = await this.fitaxschemeDao.findOne({
solution_bizid: deliverData.scheme_number
});
if (schemeData) {
result.schemeData = {
demandCode: schemeData.demand_code, // 需求编号
schemeCode: deliverData.scheme_number,//方案编号
// 服务类型
companyType: schemeData.company_type,//公司类型
area: schemeData.service_name,//服务地区
buyDuration: schemeData.buy_duration,//购买时长
buyNumber: schemeData.number,//购买数量
totalCost: schemeData.total_cost,//总计费用
note: schemeData.remarks//备注
}
}
async setupBill(pobj) {
let deliverData = await this.dao.findOne({
id: pobj.deliverId
});
if (!deliverData) {
throw new Error("查不到此交付单");
}
if (deliverData.delivery_status !== system.SERVERSESTATUS.INSERVICE) {
throw new Error("该状态下不可建账");
}
await this.dao.updateByWhere({
delivery_info: {
...delivery_info,
setupStatus: system.SERVERSESTATUS.SETUP,
setupInfo: {
contactsName: pobj.contactsName,
time: pobj.time,
accountingType: pobj.accountingType,
taxpayerType: pobj.taxpayerType,
supplier: pobj.supplier
}
}
}, {
id: pobj.deliverId
});
return "SUCCESS"
}
return result
}
async distributionPerson(pobj) {
// let { numbers, nickName, userId, opCode, phone, type } = pobj;
// switch (type) {
// case System.FLOWCODE.DELIVERY:
// let datas = await this.dao.findAll({
// delivery_code: {
// $in: numbers
// }
// });
// if (datas.length !== numbers.length) {
// throw new Error("请检查单号是否正确");
// }
// await this.dao.updateByWhere({
// salesman_id: userId,
// salesman_opcode: opCode,
// salesman_phone: phone,
// salesman_name: nickName
// }, {
// delivery_code: {
// $in: numbers
// }
// });
// // 插入 流转 记录
// let logs = [];
// for (let val of datas) {
// logs.push({
// demand_code: val.delivery_code,
// operator: {
// id: pobj.userid,
// username: pobj.username
// },
// operation_type: "distribution",
// operation_details: {
// isFirst: val.salesman_id ? true : false,
// fromUserId: val.salesman_id,
// fromUserName: val.salesman_name,
// toUserId: userId,
// toUserName: nickName
// },
// order_type: System.FLOWCODE.DELIVERY
// })
// }
// this.operationrecordDao.bulkCreate(logs);
// break
// case System.FLOWCODE.BIZ:
// let datas = await this.bizoptDao.findAll({
// demand_code: {
// $in: numbers
// }
// });
// if (datas.length !== datas.length) {
// throw new Error("请检查单号是否正确");
// }
// return this.db.transaction(async (t) => {
// // 更新 操作人
// await this.bizoptDao.updateByWhere({
// salesman_id: userId,
// salesman_opcode: opCode,
// salesman_phone: phone,
// salesman_name: nickName
// }, {
// demand_code: {
// $in: numbers
// }
// }, t);
// // 更新 状态
// await this.bizoptDao.updateByWhere({
// business_status: "beforeFollowUp"
// }, {
// $and: [
// {
// demand_code: {
// $in: numbers
// }
// }, {
// business_status: "received"
// }
// ]
// }, t);
// // 插入 流转 记录
// let logs = [];
// for (let val of datas) {
// logs.push({
// demand_code: val.demand_code,
// operator: {
// id: pobj.userid,
// username: pobj.username
// },
// operation_type: "distribution",
// operation_details: {
// isFirst: val.salesman_id ? true : false,
// fromUserId: val.salesman_id,
// fromUserName: val.salesman_name,
// toUserId: userId,
// toUserName: nickName
// },
// order_type: System.FLOWCODE.BIZ
// })
// }
// this.operationrecordDao.bulkCreate(logs);
// return "success"
// });
// break
// }
// return "SUCCESS"
}
async deliverInfo(pobj) {
let result = {};
let deliverData = await this.dao.findOne({
id: pobj.deliverId
});
if (!deliverData) {
throw new Error("查不到此交付单");
}
result.deliverData = {
deliveryId: deliverData.id, // id
deliveryNumber: deliverData.delivery_code, // 交付单编号
companyName: deliverData.delivery_info.companyName,// 企业名称
uscc: deliverData.delivery_info.uscc, //统一信用代码
taxpayerType: delivery_info.taxpayerType, //纳税人类型 1 一般;2 小规模
//会计准侧
companyBizType: delivery_info.companyBizType,// 公司类型 1-商贸型;2-服务型;3-特殊行业;4-其他
areaType: delivery_info.areaType, //区域类型 city-城市
area: service_address, // 服务 地区 编码
contactsName: delivery_info.contactsName,// 联系人
contactsPhone: delivery_info.contactsPhone,// 联系电话
owner: salesman_name,//所属人
deliveryStatus: delivery_status, // 交付单状态
setupStatus: delivery_info.setupStatus || System.SERVERSESTATUS.NOTSETUP,//建账状态 notsetup | setup
createdAt: created_at,
updatedAt: updated_at,
}
if (deliverData.scheme_number) {
let schemeData = await this.fitaxschemeDao.findOne({
solution_bizid: deliverData.scheme_number
});
if (schemeData) {
result.schemeData = {
demandCode: schemeData.demand_code, // 需求编号
schemeCode: deliverData.scheme_number,//方案编号
// 服务类型
companyType: schemeData.company_type,//公司类型
area: schemeData.service_name,//服务地区
buyDuration: schemeData.buy_duration,//购买时长
buyNumber: schemeData.number,//购买数量
totalCost: schemeData.total_cost,//总计费用
note: schemeData.remarks//备注
}
}
}
return result
}
async insertInfo(qobj) {
var self = this;
return self.db.transaction(async function (t) {
return await self.dao.insertInfo(qobj, t);
});
}
async distributionPerson(pobj) {
let { numbers, nickName, userId, opCode, phone, type } = pobj;
switch (type) {
case System.FLOWCODE.DELIVERY:
let bizDatas = await this.dao.findAll({
delivery_code: {
$in: numbers
}
});
if (bizDatas.length !== numbers.length) {
throw new Error("请检查单号是否正确");
}
await this.dao.updateByWhere({
salesman_id: userId,
salesman_opcode: opCode,
salesman_phone: phone,
salesman_name: nickName
}, {
delivery_code: {
$in: numbers
}
});
// 插入 流转 记录
let logs = [];
for (let val of bizDatas) {
logs.push({
demand_code: val.delivery_code,
operator: {
id: pobj.userid,
username: pobj.username
},
operation_type: "distribution",
operation_details: {
isFirst: val.salesman_id ? true : false,
fromUserId: val.salesman_id,
fromUserName: val.salesman_name,
toUserId: userId,
toUserName: nickName
},
order_type: System.FLOWCODE.DELIVERY
})
}
this.operationrecordDao.bulkCreate(logs);
break
case System.FLOWCODE.BIZ:
let delDatas = await this.bizoptDao.findAll({
demand_code: {
$in: numbers
}
});
if (delDatas.length !== numbers.length) {
throw new Error("请检查单号是否正确");
}
return this.db.transaction(async (t) => {
// 更新 操作人
await this.bizoptDao.updateByWhere({
salesman_id: userId,
salesman_opcode: opCode,
salesman_phone: phone,
salesman_name: nickName
}, {
demand_code: {
$in: numbers
}
}, t);
// 更新 状态
await this.bizoptDao.updateByWhere({
business_status: "beforeFollowUp"
}, {
$and: [
{
demand_code: {
$in: numbers
}
}, {
business_status: "received"
}
]
}, t);
// 插入 流转 记录
let logs = [];
for (let val of delDatas) {
logs.push({
demand_code: val.demand_code,
operator: {
id: pobj.userid,
username: pobj.username
},
operation_type: "distribution",
operation_details: {
isFirst: val.salesman_id ? true : false,
fromUserId: val.salesman_id,
fromUserName: val.salesman_name,
toUserId: userId,
toUserName: nickName
},
order_type: System.FLOWCODE.BIZ
})
}
this.operationrecordDao.bulkCreate(logs);
return "success"
});
break
}
return "SUCCESS"
async updateServer(qobj) {
var self = this;
var bill = await self.dao.findOneByDeliveryCodeAndBizId(qobj);
var obj = {};
var whereobj = {
"delivery_code": qobj.orderId,
"biz_id": qobj.bizId
};
// source_number
if (qobj.source_number && qobj.source_number != 'undefined') {
obj.source_number = qobj.source_number;
delete qobj.source_number;
}
// demand_code
if (qobj.demand_code && qobj.demand_code != 'undefined') {
obj.demand_code = qobj.demand_code;
delete qobj.demand_code;
}
// sku_code
if (qobj.sku_code && qobj.sku_code != 'undefined') {
obj.sku_code = qobj.sku_code;
delete qobj.sku_code;
}
// scheme_number
if (qobj.solutionBizId && qobj.solutionBizId != 'undefined') {
obj.scheme_number = qobj.solutionBizId;
delete qobj.solutionBizId;
}
// product_code
if (qobj.product_code && qobj.product_code != 'undefined') {
obj.product_code = qobj.product_code;
delete qobj.product_code;
}
// product_name
if (qobj.product_name && qobj.product_name != 'undefined') {
obj.product_name = qobj.product_name;
delete qobj.product_name;
}
// service_address
if (qobj.service_address && qobj.service_address != 'undefined') {
obj.service_address = qobj.service_address;
delete qobj.service_address;
}
// delivery_status
if (qobj.delivery_status && qobj.delivery_status != 'undefined') {
obj.delivery_status = qobj.delivery_status;
delete qobj.delivery_status;
}
// selling_price
if (qobj.selling_price && qobj.selling_price != 'undefined') {
obj.selling_price = qobj.selling_price;
delete qobj.selling_price;
}
// cost_price
if (qobj.cost_price && qobj.cost_price != 'undefined') {
obj.cost_price = qobj.cost_price;
delete qobj.cost_price;
}
// close_reason
if (qobj.close_reason && qobj.close_reason != 'undefined') {
obj.close_reason = qobj.close_reason;
delete qobj.close_reason;
}
// facilitator_id
if (qobj.facilitator_id && qobj.facilitator_id != 'undefined') {
obj.facilitator_id = qobj.facilitator_id;
delete qobj.facilitator_id;
}
// facilitator_name
if (qobj.facilitator_name && qobj.facilitator_name != 'undefined') {
obj.facilitator_name = qobj.facilitator_name;
delete qobj.facilitator_name;
}
// salesman_opcode
if (qobj.salesman_opcode && qobj.salesman_opcode != 'undefined') {
obj.salesman_opcode = qobj.salesman_opcode;
delete qobj.salesman_opcode;
}
// salesman_id
if (qobj.salesman_id && qobj.salesman_id != 'undefined') {
obj.salesman_id = qobj.salesman_id;
delete qobj.salesman_id;
}
// salesman_name
if (qobj.salesman_name && qobj.salesman_name != 'undefined') {
obj.salesman_name = qobj.salesman_name;
delete qobj.salesman_name;
}
// salesman_phone
if (qobj.salesman_phone && qobj.salesman_phone != 'undefined') {
obj.salesman_phone = qobj.salesman_phone;
delete qobj.salesman_phone;
}
// source_name
if (qobj.source_name && qobj.source_name != 'undefined') {
obj.source_name = qobj.source_name;
delete qobj.source_name;
}
// master_source_number
if (qobj.master_source_number && qobj.master_source_number != 'undefined') {
obj.master_source_number = qobj.master_source_number;
delete qobj.master_source_number;
}
// settle_status
if (qobj.settle_status && qobj.settle_status != 'undefined') {
obj.settle_status = qobj.settle_status;
delete qobj.settle_status;
}
// settlebill_id
if (qobj.settlebill_id && qobj.settlebill_id != 'undefined') {
obj.settlebill_id = qobj.settlebill_id;
delete qobj.settlebill_id;
}
// delivery_man_id
if (qobj.delivery_man_id && qobj.delivery_man_id != 'undefined') {
obj.delivery_man_id = qobj.delivery_man_id;
delete qobj.delivery_man_id;
}
// delivery_man_name
if (qobj.delivery_man_name && qobj.delivery_man_name != 'undefined') {
obj.delivery_man_name = qobj.delivery_man_name;
delete qobj.delivery_man_name;
async insertInfo(qobj) {
var self = this;
return self.db.transaction(async function (t) {
return await self.dao.insertInfo(qobj, t);
});
}
// delivery_man_opcode
if (qobj.delivery_man_opcode && qobj.delivery_man_opcode != 'undefined') {
obj.delivery_man_opcode = qobj.delivery_man_opcode;
delete qobj.delivery_man_opcode;
async updateServer(qobj) {
var self = this;
var bill = await self.dao.findOneByDeliveryCodeAndBizId(qobj);
var obj = {};
var whereobj = {
"delivery_code": qobj.orderId,
"biz_id": qobj.bizId
};
// source_number
if (qobj.source_number && qobj.source_number != 'undefined') {
obj.source_number = qobj.source_number;
delete qobj.source_number;
}
// demand_code
if (qobj.demand_code && qobj.demand_code != 'undefined') {
obj.demand_code = qobj.demand_code;
delete qobj.demand_code;
}
// sku_code
if (qobj.sku_code && qobj.sku_code != 'undefined') {
obj.sku_code = qobj.sku_code;
delete qobj.sku_code;
}
// scheme_number
if (qobj.solutionBizId && qobj.solutionBizId != 'undefined') {
obj.scheme_number = qobj.solutionBizId;
delete qobj.solutionBizId;
}
// product_code
if (qobj.product_code && qobj.product_code != 'undefined') {
obj.product_code = qobj.product_code;
delete qobj.product_code;
}
// product_name
if (qobj.product_name && qobj.product_name != 'undefined') {
obj.product_name = qobj.product_name;
delete qobj.product_name;
}
// service_address
if (qobj.service_address && qobj.service_address != 'undefined') {
obj.service_address = qobj.service_address;
delete qobj.service_address;
}
// delivery_status
if (qobj.delivery_status && qobj.delivery_status != 'undefined') {
obj.delivery_status = qobj.delivery_status;
delete qobj.delivery_status;
}
// selling_price
if (qobj.selling_price && qobj.selling_price != 'undefined') {
obj.selling_price = qobj.selling_price;
delete qobj.selling_price;
}
// cost_price
if (qobj.cost_price && qobj.cost_price != 'undefined') {
obj.cost_price = qobj.cost_price;
delete qobj.cost_price;
}
// close_reason
if (qobj.close_reason && qobj.close_reason != 'undefined') {
obj.close_reason = qobj.close_reason;
delete qobj.close_reason;
}
// facilitator_id
if (qobj.facilitator_id && qobj.facilitator_id != 'undefined') {
obj.facilitator_id = qobj.facilitator_id;
delete qobj.facilitator_id;
}
// facilitator_name
if (qobj.facilitator_name && qobj.facilitator_name != 'undefined') {
obj.facilitator_name = qobj.facilitator_name;
delete qobj.facilitator_name;
}
// salesman_opcode
if (qobj.salesman_opcode && qobj.salesman_opcode != 'undefined') {
obj.salesman_opcode = qobj.salesman_opcode;
delete qobj.salesman_opcode;
}
// salesman_id
if (qobj.salesman_id && qobj.salesman_id != 'undefined') {
obj.salesman_id = qobj.salesman_id;
delete qobj.salesman_id;
}
// salesman_name
if (qobj.salesman_name && qobj.salesman_name != 'undefined') {
obj.salesman_name = qobj.salesman_name;
delete qobj.salesman_name;
}
// salesman_phone
if (qobj.salesman_phone && qobj.salesman_phone != 'undefined') {
obj.salesman_phone = qobj.salesman_phone;
delete qobj.salesman_phone;
}
// source_name
if (qobj.source_name && qobj.source_name != 'undefined') {
obj.source_name = qobj.source_name;
delete qobj.source_name;
}
// master_source_number
if (qobj.master_source_number && qobj.master_source_number != 'undefined') {
obj.master_source_number = qobj.master_source_number;
delete qobj.master_source_number;
}
// settle_status
if (qobj.settle_status && qobj.settle_status != 'undefined') {
obj.settle_status = qobj.settle_status;
delete qobj.settle_status;
}
// settlebill_id
if (qobj.settlebill_id && qobj.settlebill_id != 'undefined') {
obj.settlebill_id = qobj.settlebill_id;
delete qobj.settlebill_id;
}
// delivery_man_id
if (qobj.delivery_man_id && qobj.delivery_man_id != 'undefined') {
obj.delivery_man_id = qobj.delivery_man_id;
delete qobj.delivery_man_id;
}
// delivery_man_name
if (qobj.delivery_man_name && qobj.delivery_man_name != 'undefined') {
obj.delivery_man_name = qobj.delivery_man_name;
delete qobj.delivery_man_name;
}
// delivery_man_opcode
if (qobj.delivery_man_opcode && qobj.delivery_man_opcode != 'undefined') {
obj.delivery_man_opcode = qobj.delivery_man_opcode;
delete qobj.delivery_man_opcode;
}
delete qobj.orderId;
obj.delivery_info = JSON.parse((JSON.stringify(bill.delivery_info) + JSON.stringify(qobj)).replace(/}{/, ','));
return self.db.transaction(async function (t) {
return await self.dao.updateServer(obj, whereobj, t);
});
}
delete qobj.orderId;
obj.delivery_info = JSON.parse((JSON.stringify(bill.delivery_info) + JSON.stringify(qobj)).replace(/}{/, ','));
return self.db.transaction(async function (t) {
return await self.dao.updateServer(obj, whereobj, t);
});
}
}
module.exports = DeliverybillService;
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment