import BaseService from "../baseService";
|
import * as sql from "mssql";
|
import moment = require("moment");
|
|
/**
|
* 库存统计
|
*/
|
export default class xStatStorageDayService extends BaseService {
|
public async loadDataList() {
|
try {
|
let { ctx } = this;
|
let where = `storageDay between '${ctx.header.datefrom}' And '${ctx.header.dateto}' And storage_Id=${ctx.header.storageid}`;
|
const connection: any = await this.dbWrite.connection;
|
let request = new sql.Request(connection.driver.master);
|
request.input("tblName", "vStat_StorageDay");
|
request.input(
|
"columns",
|
"storageName,consignorCode,consignorName,productCode,productName,productModel,productSpec,previousStorage,currentIn,currentOut,availableStorage,totalStorage,brandName,avgStorage,typeName,turnoverRate,turnoverDays,inventorytime"
|
);
|
request.input("sumColumnNames", "");
|
request.input("isSumAll", 0);
|
request.input("orderField", "storageDay_Id DESC");
|
request.input("strWhere", where);
|
|
request.input("dateFrom", ctx.header.datefrom);
|
request.input("dateTo", ctx.header.dateto);
|
request.input("storage_Id", ctx.header.storage_id);
|
|
request.input("pageSize", this.body.pageSize);
|
request.input("pageIndex", this.body.pageIndex);
|
|
request.output("sumResult", sql.NVarChar(2000));
|
request.output("pageCount", sql.Int);
|
request.output("recordCount", sql.Int);
|
let result = await request.execute("sp_xBase_StorageDay");
|
let recordCount = result.output.recordCount;
|
let dataList = result.recordset;
|
|
// 数据处理
|
let dateFrom = ctx.header.datefrom;
|
let dateTo = ctx.header.dateto;
|
|
var dtDateFrom = moment(dateFrom);
|
var dtDateTo = moment(dateTo);
|
|
var totalDays = dtDateTo.diff(dtDateFrom, "days");
|
//dateSpan.Value.TotalDays
|
for (var dataInfo of dataList) {
|
dataInfo.avgStorage = dataInfo.previousStorage + dataInfo.availableStorage / 2;
|
if (dataInfo.currentIn == 0) {
|
dataInfo.turnoverRate = null;
|
} else {
|
dataInfo.turnoverRate = dataInfo.currentIn / dataInfo.avgStorage;
|
}
|
if (dataInfo.turnoverRate == null) {
|
dataInfo.turnoverDays = null;
|
} else {
|
dataInfo.turnoverDays = totalDays / (dataInfo.turnoverRate == 0 ? 1 : dataInfo.turnoverRate);
|
}
|
if (dataInfo.availableStorage === 0 || dataInfo.CurrentOut === 0 || totalDays === 0) {
|
dataInfo.Inventorytime = null;
|
} else {
|
dataInfo.Inventorytime = dataInfo.availableStorage / (dataInfo.CurrentOut / totalDays);
|
}
|
}
|
|
let footer = {};
|
|
this.info.result = true;
|
this.info.data = {
|
total: recordCount,
|
rows: dataList,
|
footer: [footer]
|
};
|
} catch (error) {
|
this.info.result = false;
|
this.info.msg = error.message;
|
}
|
return this.info;
|
}
|
}
|