| // import * as sql from "mssql"; | 
| import { Post } from "egg-shell-decorators"; | 
| import BaseController from "../../baseController"; | 
| import { vPurchaseEnterList } from "../../../entity/inbound/stat/vPurchaseEnterList"; | 
| import { vPurchaseOrderList } from "../../../entity/inbound/stat/vPurchaseOrderList"; | 
| import { vPurchaseShelveList } from "../../../entity/inbound/stat/vPurchaseShelveList"; | 
| // import { vPurchaseOrderList } from "../../../entity/inbound/stat/vPurchaseOrderList"; | 
| // import { vPurchaseShelveList } from "../../../entity/inbound/stat/vPurchaseShelveList"; | 
| // import { vPurchaseEnterListProduct } from "../../../entity/inbound/stat/vPurchaseEnterListProduct"; | 
| /** | 
|  * 收货统计-到货明细统计 | 
|  */ | 
| export default class VpurchaseOrderController extends BaseController { | 
|   // #region 获取进货量前十名货主柱状图信息 | 
|   @Post() | 
|   public async getProductInfo() { | 
|     let { ctx } = this; | 
|     let body = ctx.request.body; | 
|     let type = body.type; | 
|     let storage_Id = body.storage_Id; | 
|     let consignor_Id = body.consignor_Id; | 
|     let beginTime = body.beginTime; | 
|     let endTime = body.endTime; | 
|     let userProduct_Id = body.userProduct_Id; | 
|     let provider_Id = body.provider_Id; | 
|     let where: any = {}; | 
|     where.userProduct_Id = userProduct_Id; | 
|     if (storage_Id) { | 
|       where.storage_Id = storage_Id; | 
|     } | 
|     if (provider_Id) { | 
|       where.provider_Id = provider_Id; | 
|     } | 
|     if (consignor_Id) { | 
|       where.consignor_Id = consignor_Id; | 
|     } | 
|     try { | 
|       // let sql = ""; | 
|       let productList; | 
|       let datalist; | 
|       if (type === "物料统计") { | 
|         // sql = "select top 5 quantity,productName from vPurchase_EnterList where " + where + " order by quantity desc"; | 
|         if (beginTime && endTime) { | 
|           productList = await this.dbRead | 
|             .createQueryBuilder(vPurchaseEnterList, "t") | 
|             .select(["quantity", "productName"]) | 
|             .where(where) | 
|             .andWhere("applyDate>=:beginTime and  applyDate<=:endTime", { | 
|               beginTime: beginTime, | 
|               endTime: endTime | 
|             }) | 
|             .getRawMany(); | 
|         } else { | 
|           productList = await this.dbRead.createQueryBuilder(vPurchaseEnterList, "t").select(["quantity", "productName"]).where(where).getRawMany(); | 
|         } | 
|         datalist = productList.slice(0, 5); | 
|       } else { | 
|         // sql = | 
|         //   "select top 5 quantity,providerShortName from vPurchase_EnterList where " + where + " order by quantity desc"; | 
|         if (beginTime && endTime) { | 
|           productList = await this.dbRead | 
|             .createQueryBuilder(vPurchaseEnterList, "t") | 
|             .select(["quantity", "providerShortName"]) | 
|             .where(where) | 
|             .andWhere("applyDate>=:beginTime and  applyDate<=:endTime", { | 
|               beginTime: beginTime, | 
|               endTime: endTime | 
|             }) | 
|             .getRawMany(); | 
|         } else { | 
|           productList = await this.dbRead | 
|             .createQueryBuilder(vPurchaseEnterList, "t") | 
|             .select(["quantity", "providerShortName"]) | 
|             .where(where) | 
|             .getRawMany(); | 
|         } | 
|         datalist = productList.slice(0, 10); | 
|       } | 
|   | 
|       let datainfo: any = {}; | 
|       let category = []; | 
|       let seriesList: any = []; | 
|       if (type === "物料统计") { | 
|         for (let item of datalist) { | 
|           category.push(item.productName); | 
|           seriesList.push(item.quantity); | 
|         } | 
|         let series = [ | 
|           { | 
|             name: "入库量", | 
|             type: "bar", | 
|             data: seriesList | 
|           } | 
|         ]; | 
|         datainfo = { | 
|           category: category, | 
|           series: series | 
|         }; | 
|       } else { | 
|         for (let item of datalist) { | 
|           let series = { | 
|             name: item.providerShortName, | 
|             value: item.quantity | 
|           }; | 
|           seriesList.push(series); | 
|         } | 
|         datainfo = { | 
|           seriesList: seriesList | 
|         }; | 
|       } | 
|       this.info.result = true; | 
|       this.info.msg = "获取图标成功"; | 
|       this.info.data = datainfo; | 
|       ctx.body = this.info; | 
|       return; | 
|     } catch (error) { | 
|       this.info.result = false; | 
|       this.info.msg = error.message; | 
|       ctx.body = this.info; | 
|       return; | 
|     } | 
|   } | 
|   | 
|   // #endregion | 
|   | 
|   // #region 获取预到货数量信息 | 
|   /** | 
|         / 获取预到货数量信息 | 
|         */ | 
|   @Post() | 
|   public async getOrderStatistics() { | 
|     let { ctx } = this; | 
|     let body = ctx.request.body; | 
|     // let userInfo = await ctx.helper.userInfo(); | 
|     let storage_Id = body.storage_Id; | 
|     let consignor_Id = body.consignor_Id; | 
|     let beginTime = body.beginTime; | 
|     let endTime = body.endTime; | 
|     let userProduct_Id = body.userProduct_Id; | 
|     let provider_Id = body.provider_Id; | 
|     let where: any = {}; | 
|     where.userProduct_Id = userProduct_Id; | 
|     if (storage_Id) { | 
|       where.storage_Id = storage_Id; | 
|     } | 
|     if (provider_Id) { | 
|       where.provider_Id = provider_Id; | 
|     } | 
|     if (consignor_Id) { | 
|       where.consignor_Id = consignor_Id; | 
|     } | 
|     try { | 
|       let quantityInfo; | 
|       let enterQuantityInfo; | 
|       let inQuantityInfo; | 
|       let shelvedQuantityInfo; | 
|       // 预到货单数量合计 | 
|       // let sql = "select sum(Quantity) as sum  from vPurchase_OrderList where " + where + " "; | 
|       // quantityInfo = await this.dbRead.query(sql); | 
|       if (beginTime && endTime) { | 
|         quantityInfo = await this.dbRead | 
|           .createQueryBuilder(vPurchaseOrderList, "t") | 
|           .select("sum(quantity)", "sum") | 
|           .where(where) | 
|           .andWhere("AuditDate>=:beginTime and  AuditDate<=:endTime", { | 
|             beginTime: beginTime, | 
|             endTime: endTime | 
|           }) | 
|           .getRawOne(); | 
|       } else { | 
|         quantityInfo = await this.dbRead | 
|           .createQueryBuilder(vPurchaseOrderList, "t") | 
|           .select("sum(quantity)", "sum") | 
|           .where(where) | 
|   | 
|           .getRawOne(); | 
|       } | 
|   | 
|       // 收货入库数量合计 | 
|       // sql = "select sum(EnterQuantity) as sum from vPurchase_OrderList where " + where + " "; | 
|       // let enterQuantityInfo = await this.dbRead.query(sql); | 
|   | 
|       if (beginTime && endTime) { | 
|         enterQuantityInfo = await this.dbRead | 
|           .createQueryBuilder(vPurchaseOrderList, "t") | 
|           .select("sum(enterQuantity)", "sum") | 
|           .where(where) | 
|           .andWhere("AuditDate>=:beginTime and  AuditDate<=:endTime", { | 
|             beginTime: beginTime, | 
|             endTime: endTime | 
|           }) | 
|           .getRawOne(); | 
|       } else { | 
|         enterQuantityInfo = await this.dbRead | 
|           .createQueryBuilder(vPurchaseOrderList, "t") | 
|           .select("sum(enterQuantity)", "sum") | 
|           .where(where) | 
|           .getRawOne(); | 
|       } | 
|   | 
|       // 当前在途数量合计 | 
|       // sql = | 
|       //   "select sum(ISNULL(Quantity,0) -ISNULL(EnterQuantity,0)) as sum from vPurchase_OrderList where " + where + " "; | 
|       // let inQuantityInfo = await this.dbRead.query(sql); | 
|   | 
|       if (beginTime && endTime) { | 
|         inQuantityInfo = await this.dbRead | 
|           .createQueryBuilder(vPurchaseOrderList, "t") | 
|           .select("sum(ISNULL(Quantity,0) -ISNULL(EnterQuantity,0))", "sum") | 
|           .where(where) | 
|           .andWhere("AuditDate>=:beginTime and  AuditDate<=:endTime", { | 
|             beginTime: beginTime, | 
|             endTime: endTime | 
|           }) | 
|           .getRawOne(); | 
|       } else { | 
|         inQuantityInfo = await this.dbRead | 
|           .createQueryBuilder(vPurchaseOrderList, "t") | 
|           .select("sum(ISNULL(Quantity,0) -ISNULL(EnterQuantity,0))", "sum") | 
|           .where(where) | 
|           .getRawOne(); | 
|       } | 
|   | 
|       // 已上架数量合计 | 
|       // sql = "select sum(ShelvedQuantity) as sum from vPurchase_ShelveList where " + where + " "; | 
|       // let shelvedQuantityInfo = await this.dbRead.query(sql); | 
|   | 
|       if (beginTime && endTime) { | 
|         shelvedQuantityInfo = await this.dbRead | 
|           .createQueryBuilder(vPurchaseShelveList, "t") | 
|           .select("sum(shelvedQuantity)", "sum") | 
|           .where(where) | 
|           .andWhere("AuditDate>=:beginTime and  AuditDate<=:endTime", { | 
|             beginTime: beginTime, | 
|             endTime: endTime | 
|           }) | 
|           .getRawOne(); | 
|       } else { | 
|         shelvedQuantityInfo = await this.dbRead | 
|           .createQueryBuilder(vPurchaseShelveList, "t") | 
|           .select("sum(shelvedQuantity)", "sum") | 
|           .where(where) | 
|           .getRawOne(); | 
|       } | 
|   | 
|       this.info.result = true; | 
|       this.info.msg = "获取成功"; | 
|       quantityInfo = quantityInfo.sum; | 
|       enterQuantityInfo = enterQuantityInfo.sum; | 
|       inQuantityInfo = inQuantityInfo.sum; | 
|       shelvedQuantityInfo = shelvedQuantityInfo.sum; | 
|       this.info.data = { | 
|         quantityCount: quantityInfo, | 
|         enterQuantityCount: enterQuantityInfo, | 
|         inQuantityCount: inQuantityInfo, | 
|         shelvedQuantityCount: shelvedQuantityInfo | 
|       }; | 
|     } catch (ex) { | 
|       this.info.result = false; | 
|       this.info.msg = "获取数据时出错:" + ex.message; | 
|     } | 
|     ctx.body = this.info; | 
|   } | 
|   // #endregion | 
| } |