Commit 16f0be9e by 孙亚楠

dd

parent 8d37fbc3
......@@ -93,17 +93,20 @@ class ActionAPI extends APIBase {
case "signing":
opResult = await this.obusinessmenSve.signing(action_body);
break;
// 统计数据
// case "statTransData":
// opResult = await this.oorderSve.apiStatTransData(action_body);
// break;
// case "statBusinessData":
// opResult = await this.iborderSve.apiStatBusinessData(action_body);
// break;
// case "statDeliverData":
// opResult = await this.oorderSve.apiStatDeliverData(action_body);
// break;
// 统计数据(平台)
case "statTransData": //数据简报
opResult = await this.oorderSve.statTransData(action_body);
break;
case "needToBeDealtWith": //待办事项
opResult = await this.oorderSve.needToBeDealtWith(action_body);
break;
case "statDeliverData": //交付商统计
opResult = await this.oorderdeliverSve.statDeliverData(action_body);
break;
// 统计数据(平台)
case "deliverStatTransData": //交付商统计
opResult = await this.oorderdeliverSve.deliverStatTransData(action_body);
break;
//******************************************************************** */
// // 订单
......
......@@ -74,5 +74,82 @@ class OorderDao extends Dao {
return result;
}
/**
* 平台数据概览
* @param {*} begin
* @param {*} end
*/
async statOrderByTime(begin, end) {
var result = {};
var sql = [];
sql.push("SELECT");
sql.push("DATE_FORMAT(created_at, '%Y-%m') AS `month`, SUM(price) AS orderPrice, COUNT(1) AS orderCount");
sql.push("FROM `o_order`");
sql.push("WHERE 1 = 1");
var params = {
begin: begin,
end: end
};
if (begin) {
sql.push("AND created_at >= :begin");
}
if (end) {
sql.push("AND created_at <= :end");
}
sql.push("GROUP BY `month` ORDER BY `month` ASC");
var list = await this.customQuery(sql.join(" "), params);
if (!list || list.length == 0) {
return result;
}
for (var idx = 0; idx < list.length; idx++) {
var item = list[idx];
result[item.month] = item;
if (idx == 0) {
result.begin = item.month;
}
if (idx == list.length - 1) {
result.end = item.month;
}
}
return result;
}
async statDayByTime(begin, end) {
var result = {};
var sql = [];
sql.push("SELECT");
sql.push("DATE_FORMAT(created_at, '%Y-%m-%d') AS `day`, SUM(price) AS orderPrice, COUNT(1) AS orderCount");
sql.push("FROM `o_order`");
sql.push("WHERE 1 = 1");
var params = {
begin: begin,
end: end
};
if (begin) {
sql.push("AND created_at >= :begin");
}
if (end) {
sql.push("AND created_at <= :end");
}
sql.push("GROUP BY `day` ORDER BY `day` ASC");
var list = await this.customQuery(sql.join(" "), params);
if (!list || list.length == 0) {
return result;
}
for (var item of list) {
result[item.day] = item;
}
return result;
}
}
module.exports = OorderDao;
\ No newline at end of file
......@@ -3,18 +3,19 @@ const Dao = require("../../dao.base");
class OorderdeliverDao extends Dao {
constructor() {
super(Dao.getModelName(OorderdeliverDao));
this.ORDER_HANDING = ['1030', '1040', '1050', '1060', '1070', '1080', '1090', '1100', '1110', '1120', '1130'];
}
/**
* 条件查询所有符合条件的产品
* @param {*} params
*/
async orderIdsByDeliverId(deliver_id){
if(!deliver_id) {
async orderIdsByDeliverId(deliver_id) {
if (!deliver_id) {
return [];
}
let sql = `SELECT order_id FROM o_order_deliver WHERE deliver_id = :deliver_id`;
let list = await this.customQuery(sql, {deliver_id: deliver_id});
let list = await this.customQuery(sql, { deliver_id: deliver_id });
let rs = [];
if (!list) {
return rs;
......@@ -28,12 +29,12 @@ class OorderdeliverDao extends Dao {
* 条件查询所有符合条件的产品
* @param {*} params
*/
async orderIdsByOperatorId(operator_id){
if(!operator_id) {
async orderIdsByOperatorId(operator_id) {
if (!operator_id) {
return [];
}
let sql = `SELECT order_id FROM o_order_deliver WHERE operator_id = :operator_id`;
let list = await this.customQuery(sql, {operator_id: operator_id});
let list = await this.customQuery(sql, { operator_id: operator_id });
let rs = [];
if (!list) {
return rs;
......@@ -44,18 +45,18 @@ class OorderdeliverDao extends Dao {
return rs;
}
async listByIds(ids){
if(!ids || ids.length == 0) {
async listByIds(ids) {
if (!ids || ids.length == 0) {
return [];
}
let sql = `SELECT * FROM o_order_deliver WHERE id in (:deliverIdList)`;
return await this.customQuery(sql, {deliverIdList: ids});
return await this.customQuery(sql, { deliverIdList: ids });
}
async mapByIds(params) {
let list = await this.listByIds(params);
var result = {};
for(let item of list) {
for (let item of list) {
result[item.id] = item;
}
return result;
......@@ -65,11 +66,11 @@ class OorderdeliverDao extends Dao {
* 订单管理列表 分页总数查询
* @param {*} params
*/
async ordersdeliverCount(params){
async ordersdeliverCount(params) {
let sql = [];
sql.push(`SELECT COUNT(1) AS orderCount FROM o_order_deliver b INNER JOIN o_order a on
b.order_id=a.id WHERE b.deliver_id = '${params.deliver_id}' `);
this.setOrderCount(sql,params);
this.setOrderCount(sql, params);
return await this.customQuery(sql.join(" "), params);
}
......@@ -77,13 +78,13 @@ class OorderdeliverDao extends Dao {
* 订单列表 分页
* @param {*} params
*/
async findOrders(params){
async findOrders(params) {
let sql = [];
sql.push(`SELECT a.id,b.created_at,a.service_items,a.status,b.deliver_divide,b.operator_id,b.completed_at,
a.desc, a.service_remark,
b.deliver_name FROM o_order_deliver b INNER JOIN o_order a on
b.order_id=a.id WHERE b.deliver_id = '${params.deliver_id}' `);
this.setOrderCount(sql,params);
this.setOrderCount(sql, params);
sql.push(` order by id desc `);
sql.push(`limit ${params.startRow} ,${params.pageSize}`);
return await this.customQuery(sql.join(" "), params);
......@@ -93,17 +94,17 @@ class OorderdeliverDao extends Dao {
* 订单管理列表查询条件参数设置
* @param {*} params
*/
async setOrderCount(sql,params){
if(params.id){
async setOrderCount(sql, params) {
if (params.id) {
sql.push(`AND b.id = :id `);
}
if(params.order_id){
if (params.order_id) {
sql.push(`AND b.order_id = :order_id `);
}
if(params.operator_id){
if (params.operator_id) {
sql.push(`AND b.operator_id = :operator_id `);
}
if(params.status){
if (params.status) {
sql.push(`AND a.status = :status `);
}
if (params.createdBegin) {
......@@ -112,10 +113,101 @@ class OorderdeliverDao extends Dao {
if (params.createdEnd) {
sql.push(`AND a.created_at <= :createdEnd`);
}
}
/**
* 交付商统计交付商服务费用
*/
async deliverList(begin, end) {
var sql = [];
sql.push("SELECT");
sql.push("SUM(deliver_divide) AS serivce_price, deliver_name,deliver_id");
sql.push("FROM `o_order_deliver`");
sql.push("WHERE 1 = 1");
var params = {
begin: begin,
end: end
};
if (begin) {
sql.push("AND created_at >= :begin");
}
if (end) {
sql.push("AND created_at <= :end");
}
sql.push(" GROUP BY deliver_id");
return await this.customQuery(sql.join(" "), params);
}
/**
* 统计完成的订单
* @param {*} deliverSet
* @param {*} begin
* @param {*} end
*/
async orderCompletesCount(deliverSet, begin, end) {
var sql = [];
sql.push("SELECT");
sql.push("COUNT(1) as order_complete_count ,b.deliver_id");
sql.push("FROM `o_order_deliver` b inner join o_order a on b.id = a.deliver_id");
sql.push("WHERE 1 = 1 and a.status = '1080' ");
var params = {
begin: begin,
end: end,
deliverSet: deliverSet
};
if (begin) {
sql.push("AND a.created_at >= :begin");
}
if (end) {
sql.push("AND a.created_at <= :end");
}
if (deliverSet) {
sql.push(`AND b.deliver_id in (:deliverSet)`);
}
sql.push(" GROUP BY b.deliver_id");
let res = await this.customQuery(sql.join(" "), params);
let result = {};
for (let item of res) {
result[item.deliver_id] = item.order_complete_count;
}
return result;
}
/**
* 订单办理中
* @param {*} params
*/
async orderHandingCount(deliverSet, begin, end) {
var sql = [];
sql.push("SELECT");
sql.push("COUNT(1) as order_handing_count ,b.deliver_id");
sql.push("FROM `o_order_deliver` b inner join o_order a on b.id = a.deliver_id");
sql.push("WHERE 1 = 1");
var params = {
begin: begin,
end: end
};
if (begin) {
sql.push("AND a.created_at >= :begin");
}
if (end) {
sql.push("AND a.created_at <= :end");
}
sql.push(`AND a.status in (${this.ORDER_HANDING}) `);
sql.push(" GROUP BY b.deliver_id");
let res = await this.customQuery(sql.join(" "), params);
let result = {};
for (let item of res) {
result[item.deliver_id] = item.order_handing_count;
}
return result;
}
}
......
const system = require("../../../system");
const ServiceBase = require("../../sve.base")
const moment = require("moment");
/**
* 订单产品表
*/
......@@ -41,7 +41,7 @@ class OorderService extends ServiceBase {
order.contact_mobile = this.trim(params.contact_mobile);
// 验证订单是否存在
let exists = await this.dao.findOne({source_id: order.source_id, source_no: order.source_no});
let exists = await this.dao.findOne({ source_id: order.source_id, source_no: order.source_no });
if (exists) {
return system.getResult(null, `订单号${order.source_no}已存在`);
}
......@@ -122,8 +122,8 @@ class OorderService extends ServiceBase {
await this.formateSource([order]);
await this.formateProduct([order]);
this.handleDate(order, ["created_at", "sign_time","assign_time"], "YYYY-MM-DD HH:mm:ss", -8);
this.handleDate(businessmen, ["tax_reg_day","created_at",'reg_date' ], "YYYY-MM-DD HH:mm:ss", -8);
this.handleDate(order, ["created_at", "sign_time", "assign_time"], "YYYY-MM-DD HH:mm:ss", -8);
this.handleDate(businessmen, ["tax_reg_day", "created_at", 'reg_date'], "YYYY-MM-DD HH:mm:ss", -8);
this.handleDate(orderInfo, ["created_at"], "YYYY-MM-DD HH:mm:ss", -8);
orderDeliver.deliver_divide = system.f2y(orderDeliver.deliver_divide);
......@@ -186,7 +186,7 @@ class OorderService extends ServiceBase {
if (!nextObj) {
continue;
}
nextStatus.push({next_status: nextObj.status, next_name: nextObj.name});
nextStatus.push({ next_status: nextObj.status, next_name: nextObj.name });
}
let orderProcess = {
......@@ -206,7 +206,7 @@ class OorderService extends ServiceBase {
if (idx == 0 && orderProcessList.length > 0) {
let lastProcess = orderProcessList[orderProcessList.length - 1];
let nextObj = processMap[productProcess.process_id];
lastProcess.next_status = JSON.stringify([{next_status: nextObj.status, next_name: nextObj.name}]);
lastProcess.next_status = JSON.stringify([{ next_status: nextObj.status, next_name: nextObj.name }]);
}
orderProcessList.push(orderProcess);
}
......@@ -456,7 +456,146 @@ class OorderService extends ServiceBase {
}
}
/**
* 平台数据统计 (订单数量和交易额度)
* @param {*} params
*/
async statTransData(params) {
if (!params.currentDate) {
return system.getResult(null, `参数错误 当前时间不能为空`);
}
try {
var result = {
orderCount: 0,
orderPrice: 0,
};
var begin, end;
// 取开始时间和结束时间
begin = moment(params.currentDate).format("YYYY-MM") + "-01 00:00:00";
end = moment(begin).add(1, "months").subtract(1, 'days').format("YYYY-MM-DD") + " 23:59:59";
// echart数据 开始
var days = [];
var dayCounts = [];
var priceCounts = [];
// 处理查询业务
days = this.getDays(end);
// 按天统计
var dayMap = await this.dao.statDayByTime(begin, end);
for (var day of days) {
var ditem = dayMap[day] || {};
dayCounts.push(ditem.orderCount || 0);
priceCounts.push(system.f2y(ditem.orderPrice || 0));
}
//echart数据 结束
//当月订单的数量统计和订单总金额
var orderData = await this.dao.statOrderByTime(begin, end) || {};
result.orderCount = orderData.orderCount;
result.orderPrice = system.f2y(orderData.orderPrice);
result.days = days;
result.dayCounts = dayCounts;
result.priceCounts = priceCounts;
return system.getResult(result);
} catch (error) {
console.log(error);
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
getDays(end) {
var days = [];
var month = moment(end).format("YYYY-MM");
var endDay = Number(moment(end).format("DD"));
for (var i = 1; i <= endDay; i++) {
if (i < 10) {
days.push(month + "-0" + i);
} else {
days.push(month + "-" + i);
}
}
return days;
}
/**
* 待办事项
* @param {*} params
*/
async needToBeDealtWith(params) {
try {
let begin, end;
begin = moment(params.currentDate).format("YYYY-MM") + "-01 00:00:00";
end = moment(begin).add(1, "months").subtract(1, 'days').format("YYYY-MM-DD") + " 23:59:59";
//已经完成
let orderComplete = await this.dao.model.count({
where: {
created_at : {
[this.db.Op.between]: [begin, end]
},
status:"1200"
}
});
//待分配
let orderUnassignment = await this.dao.model.count({
where: {
created_at : {
[this.db.Op.between]: [begin, end]
},
status:"1000"
}
});
//待审核
let orderUnexamine = await this.dao.model.count({
where: {
created_at : {
[this.db.Op.between]: [begin, end]
},
status:"1140"
}
});
//办理中
let orderHandling = await this.dao.model.count({
where: {
created_at : {
[this.db.Op.between]: [begin, end]
},
status:{
[this.db.Op.between]: ["1030", '1130']
}
}
});
return system.getResult({
orderComplete,orderUnassignment,orderUnexamine,orderHandling
});
} catch (error) {
console.log(error);
return system.getResult(null, error);
}
}
/**
* 交付商业务概览
* @param {*} params
*/
async deliverData(params){
if(!params.currentDate){
return system.getResult(null,`参数错误 当前时间不能为空`);
}
try {
let begin, end;
begin = moment(params.currentDate).format("YYYY-MM") + "-01 00:00:00";
end = moment(begin).add(1, "months").subtract(1, 'days').format("YYYY-MM-DD") + " 23:59:59";
let deliverDataList = await this.dao.deliverData(begin,end);
return system.getResult(deliverDataList);
} catch (error) {
console.log(error);
return system.getResult(error);
}
}
}
module.exports = OorderService;
\ No newline at end of file
const system = require("../../../system");
const ServiceBase = require("../../sve.base")
const ServiceBase = require("../../sve.base");
const moment = require("moment");
/**
* 订单交付
*/
......@@ -147,6 +148,46 @@ class OorderdeliverService extends ServiceBase {
}
}
/**
* 平台数据概览(交付商数据)
* @param {*} params
*/
async statDeliverData(params){
if(!params.currentDate){
return system.getResult(null,`参数错误 当前时间不能为空`);
}
try {
let begin, end;
begin = moment(params.currentDate).format("YYYY-MM") + "-01 00:00:00";
end = moment(begin).add(1, "months").subtract(1, 'days').format("YYYY-MM-DD") + " 23:59:59";
let deliverList = await this.dao.deliverList(begin,end);
let deliverSet = new Set();
for (let item of deliverList) {
deliverSet.add(item.deliver_id);
}
let _deliverArr = Array.from(deliverSet);
let orderCompletes = await this.dao.orderCompletesCount(_deliverArr,begin,end);
let orderHanding = await this.dao.orderHandingCount(_deliverArr,begin,end);
for (let item of deliverList) {
item.order_complete_count = orderCompletes[item.deliver_id];
item.order_handing_count = orderHanding[item.deliver_id];
}
return system.getResult(deliverList);
} catch (error) {
console.log(error);
return system.getResult(error);
}
}
/**
* 交付商订单统计
* @param {*} params
*/
async deliverStatTransData(params){
}
}
......
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