import { default as BaseController } from "../baseController";
|
import { Post } from "egg-shell-decorators";
|
|
/**
|
* TMS首页统计数据
|
*/
|
export default class TmsController extends BaseController {
|
//#region TMS首页第一屏统计
|
/**
|
* TMS首页第一屏统计
|
*/
|
@Post()
|
public async getTmsNumStatistics() {
|
let { ctx } = this;
|
let redis = ctx.app.redis.clients.get("common");
|
let userInfo = await ctx.helper.userInfo();
|
let key = "REDIS_" + userInfo.userProduct_Id + "DASHBORAD_GETTMSNUMSTATISTICS";
|
try {
|
let cacheValue = await redis.get(key);
|
if (cacheValue) {
|
this.info.result = true;
|
this.info.data = JSON.parse(cacheValue);
|
ctx.body = this.info;
|
return;
|
}
|
let where = "";
|
if (userInfo.userType === "consignor") {
|
where = " consignor_Id=" + userInfo.consignor_Id;
|
key += "_" + userInfo.consignor_Id;
|
}
|
let sql = "SELECT COUNT(1) as cnt FROM dbo.TMS_WayBill Where userProduct_Id=" + userInfo.userProduct_Id;
|
if (userInfo.userType === "consignor") {
|
sql += " where " + where;
|
}
|
let wayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql =
|
"SELECT COUNT(1) as cnt FROM dbo.TMS_WayBill WHERE OrderStatus='已提交' And userProduct_Id=" +
|
userInfo.userProduct_Id;
|
if (userInfo.userType === "consignor") {
|
sql += " and " + where;
|
}
|
let waitWayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql =
|
"SELECT COUNT(1) as cnt FROM dbo.Base_ProductInfo WHERE Auditing=0 And userProduct_Id=" +
|
userInfo.userProduct_Id;
|
if (userInfo.userType === "consignor") {
|
sql += " and " + where;
|
}
|
let waitProductNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql = `SELECT COUNT(1) as cnt FROM TMS_WayBill WHERE CollectStatus='已揽收' AND OrderStatus IN ('已提交','审核成功','录入异常','组板异常','处理中','处理完成') And
|
userProduct_Id=${userInfo.userProduct_Id}`;
|
if (userInfo.userType === "consignor") {
|
sql += " and " + where;
|
}
|
let noGroupWayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
let dataInfo: any = {};
|
dataInfo.wayBillNum = wayBillNum;
|
dataInfo.waitWayBillNum = waitWayBillNum;
|
dataInfo.waitProductNum = waitProductNum;
|
dataInfo.noGroupWayBillNum = noGroupWayBillNum;
|
this.info.result = true;
|
this.info.data = dataInfo;
|
|
// 缓存数据
|
await redis.set(key, JSON.stringify(dataInfo));
|
await redis.expire(key, 60 * 60 * 3);
|
} catch (ex) {
|
this.info.msg = ex.message;
|
this.info.result = false;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region TMS首页第二屏左侧统计
|
/**
|
* TMS首页第二屏左侧统计
|
*/
|
@Post()
|
public async getWayBillNumStatistics() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let redis = ctx.app.redis.clients.get("common");
|
let userInfo = await ctx.helper.userInfo();
|
let key = "REDIS_" + userInfo.userProduct_Id + "DASHBORAD_GETWAYBILLNUMSTATISTICS";
|
try {
|
let where = "userProduct_Id=" + userInfo.userProduct_Id;
|
if (userInfo.userType === "consignor") {
|
where = " consignor_Id=" + userInfo.consignor_Id;
|
key += "_" + userInfo.consignor_Id;
|
}
|
let cacheValue = await redis.get(key);
|
if (cacheValue) {
|
this.info.result = true;
|
this.info.data = JSON.parse(cacheValue);
|
ctx.body = this.info;
|
return;
|
}
|
|
if (body.dateType == "今日") {
|
where += "and DateDiff(dd,CreateDate,getdate())=0";
|
} else if (body.dateType == "近两日") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=1";
|
} else if (body.dateType == "近一星期") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=6";
|
} else if (body.dateType == "近一月") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=30";
|
} else if (body.dateType == "近三月") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=90";
|
} else if (body.dateType == "近半年") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=180";
|
} else if (body.dateType == "近一年") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=365";
|
}
|
let dataInfo: any = {};
|
let sql = "SELECT COUNT(1) as cnt FROM dbo.TMS_WayBill WHERE 1=1 " + where;
|
let wayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql = "SELECT COUNT(1) as cnt FROM dbo.TMS_WayBill WHERE CollectStatus='已揽收' " + where;
|
let acceptWayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql =
|
"SELECT COUNT(1) as cnt FROM TMS_WayBill WHERE ( CollectStatus='未揽收' OR CollectStatus is NULL ) " + where;
|
let noAcceptWayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql = "SELECT COUNT(1) as cnt FROM TMS_WayBill WHERE OrderStatus='已组板' " + where;
|
let endWayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
dataInfo.noAcceptWayBillNum = noAcceptWayBillNum;
|
dataInfo.acceptWayBillNum = acceptWayBillNum;
|
dataInfo.endWayBillNum = endWayBillNum;
|
dataInfo.wayBillNum = wayBillNum;
|
|
this.info.result = true;
|
this.info.data = dataInfo;
|
|
// 缓存数据
|
await redis.set(key, JSON.stringify(dataInfo));
|
await redis.expire(key, 60 * 60 * 3);
|
} catch (ex) {
|
this.info.msg = ex.message;
|
this.info.result = false;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region TMS首页第二屏右侧统计
|
/**
|
* TMS首页第二屏右侧统计
|
*/
|
@Post()
|
public async getHistogramNumStatistics() {
|
let { ctx } = this;
|
let numStatisticsList: Array<any> = [];
|
let redis = ctx.app.redis.clients.get("common");
|
let userInfo = await ctx.helper.userInfo();
|
let key = "REDIS_" + userInfo.userProduct_Id + "DASHBORAD_GETHISTOGRAMNUMSTATISTICS";
|
try {
|
let where = "userProduct_Id=" + userInfo.userProduct_Id;
|
if (userInfo.userType === "consignor") {
|
where = " AND consignor_Id=" + userInfo.consignor_Id;
|
key += "_" + userInfo.consignor_Id;
|
}
|
let cacheValue = await redis.get(key);
|
if (cacheValue) {
|
this.info.result = true;
|
this.info.data = JSON.parse(cacheValue);
|
ctx.body = this.info;
|
return;
|
}
|
|
let sql = `SELECT year(CreateDate) as year,month(CreateDate) as month,count(1) as count
|
from TMS_WayBill
|
WHERE year(CreateDate) IS NOT NULL AND month(CreateDate) IS NOT NULL${where}
|
GROUP BY year(CreateDate), month(CreateDate)
|
ORDER BY year(CreateDate), month(CreateDate)`;
|
let dt = await this.dbRead.query(sql);
|
for (let dr of dt) {
|
let year = dr["year"];
|
let month = dr["month"];
|
let countWayBillNum = dr["count"];
|
let dataInfo = {
|
year: year,
|
month: month,
|
countWayBillNum: countWayBillNum
|
};
|
numStatisticsList.push(dataInfo);
|
}
|
|
this.info.result = true;
|
this.info.data = numStatisticsList;
|
|
// 缓存数据
|
await redis.set(key, JSON.stringify(numStatisticsList));
|
await redis.expire(key, 60 * 60 * 3);
|
} catch (ex) {
|
this.info.msg = ex.message;
|
this.info.result = false;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region TMS首页第三屏统计
|
/**
|
* TMS首页第三屏统计
|
*/
|
@Post()
|
public async getWayBillLineStatistics() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let redis = ctx.app.redis.clients.get("common");
|
let userInfo = await ctx.helper.userInfo();
|
let key = "REDIS_" + userInfo.userProduct_Id + "DASHBORAD_GETWAYBILLLINESTATISTICS";
|
try {
|
let where = "";
|
if (userInfo.userType === "consignor") {
|
where = " consignor_Id=" + userInfo.consignor_Id;
|
key += "_" + userInfo.consignor_Id;
|
}
|
let cacheValue = await redis.get(key);
|
if (cacheValue) {
|
this.info.result = true;
|
this.info.data = JSON.parse(cacheValue);
|
ctx.body = this.info;
|
return;
|
}
|
|
if (body.dateType == "今日") {
|
where += "and DateDiff(dd,CreateDate,getdate())=0";
|
} else if (body.dateType == "近两日") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=1";
|
} else if (body.dateType == "近一星期") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=6";
|
} else if (body.dateType == "近一月") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=30";
|
} else if (body.dateType == "近三月") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=90";
|
} else if (body.dateType == "近半年") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=180";
|
} else if (body.dateType == "近一年") {
|
where += "and DateDiff(dd,CreateDate,getdate())<=365";
|
}
|
let numStatisticsList: Array<any> = [];
|
|
let sql =
|
"SELECT year(CreateDate) as year,month(CreateDate) as month,DAY(CreateDate) AS day,count(1) as count from TMS_WayBill where 1=1 " +
|
where +
|
" GROUP BY year(CreateDate), month(CreateDate),DAY(CreateDate) ORDER BY year(CreateDate),month(CreateDate),DAY(CreateDate)";
|
let dt = await this.dbRead.query(sql);
|
for (let dr of dt) {
|
let year = dr["year"];
|
let month = dr["month"];
|
let day = dr["day"];
|
let countWayBillNum = dr["count"];
|
let dataInfo = {
|
year: year,
|
month: month,
|
day: day,
|
countWayBillNum: countWayBillNum
|
};
|
numStatisticsList.push(dataInfo);
|
}
|
|
this.info.result = true;
|
this.info.data = numStatisticsList;
|
|
// 缓存数据
|
await redis.set(key, JSON.stringify(numStatisticsList));
|
await redis.expire(key, 60 * 60 * 3);
|
} catch (ex) {
|
this.info.msg = ex.message;
|
this.info.result = false;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region 客户端首页第一屏统计
|
/**
|
* TMS首页第一屏统计
|
*/
|
@Post()
|
public async getUserNumStatistics() {
|
let { ctx } = this;
|
let userInfo = await ctx.helper.userInfo();
|
let redis = ctx.app.redis.clients.get("common");
|
const key = "REDIS_" + userInfo.consignor_Id + "DASHBORAD_GETUSERNUMSTATISTICS";
|
try {
|
let cacheValue = await redis.get(key);
|
if (cacheValue) {
|
this.info.result = true;
|
this.info.data = JSON.parse(cacheValue);
|
ctx.body = this.info;
|
return;
|
}
|
|
let dataInfo: any = {};
|
let sql = "SELECT COUNT(1) as cnt FROM dbo.TMS_WayBill where consignor_Id=" + userInfo.consignor_Id;
|
let wayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql =
|
"SELECT COUNT(1) as cnt FROM dbo.TMS_WayBill WHERE consignor_Id=" +
|
userInfo.consignor_Id +
|
" AND (PrintStatus='待打印' OR PrintStatus IS NULL)";
|
let waitWayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql =
|
"SELECT COUNT(1) as cnt FROM dbo.TMS_WayBill WHERE consignor_Id=" +
|
userInfo.consignor_Id +
|
" AND ConsigneeIdcard IS NULL";
|
let waitProductNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql =
|
"SELECT COUNT(1) as cnt FROM dbo.TMS_WayBill WHERE consignor_Id=" +
|
userInfo.consignor_Id +
|
" AND OrderStatus='已退货'";
|
let noGroupWayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
dataInfo.wayBillNum = wayBillNum;
|
dataInfo.waitWayBillNum = waitWayBillNum;
|
dataInfo.waitProductNum = waitProductNum;
|
dataInfo.noGroupWayBillNum = noGroupWayBillNum;
|
this.info.result = true;
|
this.info.data = dataInfo;
|
|
// 缓存数据
|
await redis.set(key, JSON.stringify(dataInfo));
|
await redis.expire(key, 60 * 60 * 3);
|
} catch (ex) {
|
this.info.msg = ex.message;
|
this.info.result = false;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region 客户端首页第二屏左侧统计
|
/**
|
* TMS首页第二屏左侧统计
|
*/
|
@Post()
|
public async getUserWayBillNumStatistics() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let userInfo = await ctx.helper.userInfo();
|
let redis = ctx.app.redis.clients.get("common");
|
const key = "REDIS_" + userInfo.consignor_Id + "DASHBORAD_GETUSERWAYBILLNUMSTATISTICS";
|
try {
|
// let cacheValue = await redis.get(key);
|
// if (cacheValue) {
|
// this.info.result = true;
|
// this.info.data = JSON.parse(cacheValue);
|
// ctx.body = this.info;
|
// return;
|
// }
|
|
let where = "";
|
if (body.dateType == "今日") {
|
where += " and DateDiff(dd,CreateDate,getdate())=0";
|
} else if (body.dateType == "近两日") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=1";
|
} else if (body.dateType == "近一星期") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=6";
|
} else if (body.dateType == "近一月") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=30";
|
} else if (body.dateType == "近三月") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=90";
|
} else if (body.dateType == "近半年") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=180";
|
} else if (body.dateType == "近一年") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=365";
|
}
|
let dataInfo: any = {};
|
let sql = "SELECT COUNT(1) as cnt FROM dbo.TMS_WayBill WHERE consignor_Id=" + userInfo.consignor_Id + where;
|
let wayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql =
|
"SELECT COUNT(1) as cnt FROM dbo.TMS_WayBill WHERE consignor_Id=" +
|
userInfo.consignor_Id +
|
" and CollectStatus ='已揽收' " +
|
where;
|
let acceptWayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql =
|
"SELECT COUNT(1) as cnt FROM TMS_WayBill WHERE consignor_Id=" +
|
userInfo.consignor_Id +
|
" and ( CollectStatus='未揽收' OR CollectStatus is NULL) " +
|
where;
|
let noAcceptWayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
sql =
|
"SELECT COUNT(1) as cnt FROM TMS_WayBill WHERE consignor_Id=" +
|
userInfo.consignor_Id +
|
" and OrderStatus='处理完成' " +
|
where;
|
let endWayBillNum = (await this.dbRead.query(sql))[0].cnt;
|
|
dataInfo.noAcceptWayBillNum = noAcceptWayBillNum;
|
dataInfo.acceptWayBillNum = acceptWayBillNum;
|
dataInfo.endWayBillNum = endWayBillNum;
|
dataInfo.wayBillNum = wayBillNum;
|
this.info.result = true;
|
this.info.data = dataInfo;
|
|
// 缓存数据
|
await redis.set(key, JSON.stringify(dataInfo));
|
await redis.expire(key, 60 * 60 * 3);
|
} catch (ex) {
|
this.info.msg = ex.message;
|
this.info.result = false;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region 客户端首页第二屏右侧统计
|
/**
|
* 客户端首页第二屏右侧统计
|
*/
|
@Post()
|
public async getUserHistogramNumStatistics() {
|
let { ctx } = this;
|
let userInfo = await ctx.helper.userInfo();
|
let redis = ctx.app.redis.clients.get("common");
|
const key = "REDIS_" + userInfo.consignor_Id + "DASHBORAD_GETUSERHISTOGRAMNUMSTATISTICS";
|
try {
|
let cacheValue = await redis.get(key);
|
if (cacheValue) {
|
this.info.result = true;
|
this.info.data = JSON.parse(cacheValue);
|
ctx.body = this.info;
|
return;
|
}
|
|
let sql =
|
"SELECT year(CreateDate) as year,month(CreateDate) as month,count(1) as count from TMS_WayBill where consignor_Id=" +
|
userInfo.consignor_Id +
|
" GROUP BY year(CreateDate), month(CreateDate)";
|
let dt = await this.dbRead.query(sql);
|
this.info.result = true;
|
this.info.data = dt;
|
|
// 缓存数据
|
await redis.set(key, JSON.stringify(dt));
|
await redis.expire(key, 60 * 60 * 3);
|
} catch (ex) {
|
this.info.msg = ex.message;
|
this.info.result = false;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region 客户端首页第三屏统计
|
/**
|
* 客户端首页第三屏统计
|
*/
|
@Post()
|
public async getUserWayBillLineStatistics() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let userInfo = await ctx.helper.userInfo();
|
let redis = ctx.app.redis.clients.get("common");
|
const key = "REDIS_" + userInfo.consignor_Id + "DASHBORAD_GETUSERWAYBILLLINESTATISTICS";
|
try {
|
let cacheValue = await redis.get(key);
|
if (cacheValue) {
|
this.info.result = true;
|
this.info.data = JSON.parse(cacheValue);
|
ctx.body = this.info;
|
return;
|
}
|
|
let where = "";
|
if (body.dateType == "今日") {
|
where += " and DateDiff(dd,CreateDate,getdate())=0";
|
} else if (body.dateType == "近两日") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=1";
|
} else if (body.dateType == "近一星期") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=6";
|
} else if (body.dateType == "近一月") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=30";
|
} else if (body.dateType == "近三月") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=90";
|
} else if (body.dateType == "近半年") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=180";
|
} else if (body.dateType == "近一年") {
|
where += " and DateDiff(dd,CreateDate,getdate())<=365";
|
}
|
|
let sql =
|
"SELECT year(CreateDate) as year,month(CreateDate) as month,DAY(CreateDate) AS day,count(1) as count from TMS_WayBill where consignor_Id=" +
|
userInfo.consignor_Id +
|
where +
|
" GROUP BY year(CreateDate), month(CreateDate),DAY(CreateDate)";
|
let dt = await this.dbRead.query(sql);
|
|
this.info.result = true;
|
this.info.data = dt;
|
|
// 缓存数据
|
await redis.set(key, JSON.stringify(dt));
|
await redis.expire(key, 60 * 60 * 3);
|
} catch (ex) {
|
this.info.msg = ex.message;
|
this.info.result = false;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
}
|