using System; using System.Collections.Generic; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Model.ModelDto.DataDto; using Model.ModelVm.DataVm; using WMS.Entity.DataEntity; using WMS.IBLL.IDataServer; using WMS.IBLL.ILogServer; namespace WmsApi.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class StatisticalController : ControllerBase { /// /// 依赖注入 /// private readonly IStockServer _stock; //统计报表 private readonly IStockDetailServer _stockDetail; //托盘明细 private readonly IDataBoxInfoServer _dataBoxInfo; //导出 private readonly IOperationSysServer _operation; //操作日志 /// /// 构造函数 /// /// 统计报表 public StatisticalController(IStockServer stock, IOperationSysServer operation) { _stock = stock; //统计报表 _operation = operation; //操作日志 } #region 库存明细 /// /// 获取库存总量 /// /// /// [HttpGet] public IActionResult GetInventoryList(string skuNo) { List StockList = _stock.GetDataStockList(skuNo); return Ok(new { data = StockList, code = 0, msg = "获取库存总量成功" }); } /// /// 获取库存明细 /// /// 物料编码 /// 批次 /// 类型 /// 储位地址 /// 托盘条码 /// 库存状态 /// 质检状态 /// 是否字母拖 /// 是否缠膜 /// 是否打包 /// [HttpGet] public IActionResult GetInventoryList1(string skuNo, string lotNo, string type, string locatNo, string palletNo, string status, string inspectStatus, string PalletType, string IsBale, string IsBelt) { List stockDetailsList = _stock.GetInventoryList1(skuNo, lotNo, type, locatNo, palletNo, status, inspectStatus, PalletType, IsBale, IsBelt); return Ok(new { data = stockDetailsList, code = 0, msg = "获取库存明细成功" }); } /// /// 获取库存明细 /// /// Id /// [HttpGet] public IActionResult GetInventoryListById(string Id) { MateDataStockDto stockDetailsList = _stock.GetInventoryListById(Id); return Ok(new { data = stockDetailsList, code = 0, msg = "根据ID获取库存明细成功" }); } /// /// 增加库存备注 /// /// 库存model /// /// 捕获异常 [HttpPost] public async Task EditDetailDemo(DataStockDetail model) { //捕获异常 try { //获取当前操作用户id var claimsIdentity = this.User.Identity as ClaimsIdentity; var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; int uid = Convert.ToInt32(userId); //更改人 model.UpdateUser = uid; int i = await _stock.EditDetailDemo(model); //判断是否编辑成功 if (i == 0) { return Ok(new { data = i, code = 1, msg = "编辑失败" }); } else { await _operation.InsertOperation("统计报表", "角色权限", model.PalletNo, "添加", "添加库存备注 托盘号:" + model.PalletNo, uid); return Ok(new { data = i, code = 0, msg = "编辑成功" }); } } catch (System.Exception ex) { //抛出异常 throw new System.Exception("增加备注异常", ex); } } /// /// 获取库外托盘信息 /// /// /// [HttpPost] public IActionResult GetOutSideStock(DataVm model) { try { var stockDetailsList = _stock.GetOutSideStockList(model.SkuNo, model.SkuName, model.LotNo, model.PalletNo, model.Status, model.Page, model.Limit, out int count); return Ok(new { code = 0, count, msg = "获取库存明细成功", data = stockDetailsList }); } catch (Exception e) { return Ok(new { code = 1, count = 0, msg = e.Message }); } } #endregion #region 托盘明细 /// /// 获取托盘明细 /// /// 物料号 /// 托盘号 /// 批次号 /// 箱码 /// 箱支状态 /// 检验标记 /// 零托标记 /// 零箱标记 /// 质量状态 /// [HttpGet] public IActionResult GetBindList(string skuNo, string palletNo, string lotNo, string boxNo, string status, string inspectMark, string bitPalletMark, string bitBoxMark, string inspectStatus) { List boxInforList = _stock.GetBindList(skuNo, palletNo, lotNo, boxNo, status, inspectMark, bitPalletMark, bitBoxMark, inspectStatus); return Ok(new { data = boxInforList, code = 0, msg = "获取托盘明细成功" }); } /// /// 获取箱码明细 /// /// id /// 物料号 /// 物料名称 /// 托盘号 /// 批次号 /// 箱码 /// 箱支状态 /// 检验标记 /// 零箱标记 /// 质量状态 /// [HttpGet] public IActionResult GetBoxInfor(string id, string skuNo, string skuName, string palletNo, string lotNo, string boxNo, string status, string inspectMark, string bitBoxMark, string inspectStatus) { List boxInfor = _stock.GetBoxInfor(id, skuNo, skuName, palletNo, lotNo, boxNo, status, inspectMark, bitBoxMark, inspectStatus); return Ok(new { data = boxInfor, code = 0, msg = "获取箱码明细成功" }); } /// /// 根据箱码获取箱支信息 /// /// 箱码 /// 支码 /// [HttpGet] public IActionResult GetBoxInforByBoxNo(string boxNo, string boxNo3) { List boxInfor = _stock.GetBoxInforByBoxNo(boxNo, boxNo3); return Ok(new { data = boxInfor, code = 0, msg = "根据箱码获取箱支信息成功" }); } #endregion #region 低库存预警 /// /// 低库存预警 /// /// 物料号 /// 物料名称 /// 批次 /// 物料类型 /// [HttpGet] public IActionResult GetInventoryWarning(string skuNo, string skuName, string lotNo, string type) { List stockList = _stock.GetInventoryWarning(skuNo, skuName, lotNo, type); return Ok(new { data = stockList, code = 0, msg = "获取低库存预警成功" }); } #endregion #region 临期预警 /// /// 获取临期预警信息 /// /// 物料号 /// 物料名称 /// 批次 /// 托盘号 /// 状态 /// 检验标记 /// 质量状态 /// 是否裹包 /// 是否打带 /// [HttpGet] public IActionResult GetEmergencyWarning(string skuNo, string skuName, string lotNo, string palletNo, string status, string inspectMark, string inspectStatus, string isBale, string isBelt) { List stockList = _stock.GetEmergencyWarning(skuNo, skuName, lotNo, palletNo, status, inspectMark, inspectStatus, isBale, isBelt); return Ok(new { data = stockList, code = 0, msg = "获取临期预警成功" }); } #endregion #region 出入库报表 /// /// 获取出入库总量 /// /// 物料号 /// 物料名称 /// 批次 /// [HttpGet] public IActionResult GetTotalRecord(string skuNo, string skuName, string lotNo) { List totalsList = _stock.GetTotalRecord(skuNo, skuName, lotNo); return Ok(new { data = totalsList, code = 0, msg = "获取出入库总量成功" }); } /// /// 获取出入库记录 /// /// 物料号 /// 物料名称 /// 批次 /// 托盘 /// [HttpGet] public IActionResult GetDetailedRecord(string skuNo, string skuName, string lotNo, string palletNo) { List totalsList = _stock.GetDetailedRecord(skuNo, skuName, lotNo, palletNo); return Ok(new { data = totalsList, code = 0, msg = "获取出入库记录成功" }); } #endregion #region 周期报表 #region 周期 /// /// 周期报表 /// /// /// [HttpPost] public IActionResult GetToCycleDataStockDetails(DataStockVm model) { try { var palletBindList = _stock.GetToCycleDataStockDetails(model.TaskNo, model.DataStatus, model.SkuNo, model.LotNo, model.PalletNo, model.Type, model.Page, model.Limit, out int count); return Ok(new { code = 0, count, msg = "获取每日报表明细成功", data = palletBindList }); } catch (Exception e) { return Ok(new { code = 1, count = 0, msg = e.Message }); } } /// /// 周期报表 /// /// /// [HttpPost] public IActionResult GetDataStockInfo(DataStockVm model) { try { var palletBindList = _stock.GetDataStockInfo(model.StartTime, model.EndTime); return Ok(new { code = 0, msg = "获取周期报表成功", data = palletBindList }); } catch (Exception e) { return Ok(new { code = 1, count = 0, msg = e.Message }); } } /// /// 获取年报表 /// /// /// /// [HttpGet] public IActionResult GetAssSoInfo(string StartTime, string EndTime) { try { var skulist = _stock.GetAssSoInfo(StartTime, EndTime); return Ok(new { code = 0, count = 0, data = skulist, msg = "获取总量成功" }); } catch (Exception ex) { return Ok(new { code = 1, count = 0, msg = ex.Message }); } } /// /// 获取年报表明细 /// /// /// /// /// [HttpGet] public IActionResult GetAssSoInfoDetail(string skuNo, string StartTime, string EndTime) { try { var infolist = _stock.GetAssSoInfoDetail(skuNo, StartTime, EndTime); return Ok(new { code = 0, count = 0, data = infolist, msg = "获取明细成功" }); } catch (Exception ex) { return Ok(new { code = 1, count = 0, msg = ex.Message }); } } #endregion /* #region 日 /// /// 每日报表 /// /// /// [HttpPost] public IActionResult GetToDayDataStockDetails(DataStockVm model) { try { var palletBindList = _stock.GetToDayDataStockDetails(model.SkuNo, model.LotNo, model.PalletNo, model.Type, model.Page, model.Limit, out int count); return Ok(new { code = 0, count, msg = "获取每日报表明细成功", data = palletBindList }); } catch (Exception e) { return Ok(new { code = 1, count = 0, msg = e.Message }); } } #endregion #region 周 /// /// 每周报表 /// /// /// [HttpPost] public IActionResult GetToWeekDataStockDetails(DataStockVm model) { try { var palletBindList = _stock.GetToWeekDataStockDetails(model.SkuNo, model.LotNo, model.PalletNo, model.Type, model.Page, model.Limit, out int count); return Ok(new { code = 0, count, msg = "获取每周报表明细成功", data = palletBindList }); } catch (Exception e) { return Ok(new { code = 1, count = 0, msg = e.Message }); } } #endregion #region 月 /// /// 每月报表 /// /// /// [HttpPost] public IActionResult GetToMonthsDataStockDetails(DataStockVm model) { try { var palletBindList = _stock.GetToMonthsDataStockDetails(model.SkuNo, model.LotNo, model.PalletNo, model.Type, model.Page, model.Limit, out int count); return Ok(new { code = 0, count, msg = "获取每月报表明细成功", data = palletBindList }); } catch (Exception e) { return Ok(new { code = 1, count = 0, msg = e.Message }); } } #endregion #region 年 /// /// 每年报表 /// /// /// [HttpPost] public IActionResult GetToYearDataStockDetails(DataStockVm model) { try { var palletBindList = _stock.GetToYearDataStockDetails(model.SkuNo, model.LotNo, model.PalletNo, model.Type, model.Page, model.Limit, out int count); return Ok(new { code = 0, count, msg = "获取每年报表明细成功", data = palletBindList }); } catch (Exception e) { return Ok(new { code = 1, count = 0, msg = e.Message }); } } #endregion */ #endregion #region 导出 #region 导出库存信息 /// /// 导出库存总量 /// /// /// /// [HttpGet] public IActionResult GetInventoryListDaoChu(string skuNo, string skuName) { List StockList = _stock.GetDataStockListDaoChu(skuNo, skuName); return Ok(new { data = StockList, code = 0, msg = "导出库存总量成功" }); } /// /// 导出库存明细 /// /// 物料编码 /// 物料名称 /// 批次 /// 储位地址 /// 托盘条码 /// 库存状态 /// 质检状态 /// [HttpGet] public IActionResult GetInventoryList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus) { List stockDetailsList = _stock.GetInventoryList1DaoChu(skuNo, skuName, lotNo, locatNo, palletNo, status, inspectStatus); return Ok(new { data = stockDetailsList, code = 0, msg = "导出库存明细成功" }); } #endregion #region 导出托盘明细 /// /// 导出托盘明细 /// /// 物料号 /// 物料名称 /// 托盘号 /// 批次号 /// 箱码 /// 箱支状态 /// 检验标记 /// 零托标记 /// 零箱标记 /// 质量状态 /// [HttpGet] public IActionResult GetBindListDaoChu(string skuNo, string skuName, string palletNo, string lotNo, string boxNo, string status, string inspectMark, string bitPalletMark, string bitBoxMark, string inspectStatus) { try { List boxInfoList = _stockDetail.GetBindListDaoChu(skuNo, skuName, palletNo, lotNo, boxNo, status, inspectMark, bitPalletMark, bitBoxMark, inspectStatus); return Ok(new { data = boxInfoList, code = 0, msg = "导出托盘明细成功" }); } catch (Exception e) { return Ok(new { data = "", code = 0, msg = e.Message }); } } #endregion #region 导出箱码明细 /// /// 导出箱码明细 /// /// id /// 物料号 /// 物料名称 /// 托盘号 /// 批次号 /// 箱码 /// 箱支状态 /// 检验标记 /// 零箱标记 /// 质量状态 /// [HttpGet] public IActionResult GetBoxInfoDaoChu(string id, string skuNo, string skuName, string palletNo, string lotNo, string boxNo, string status, string inspectMark, string bitBoxMark, string inspectStatus) { try { List boxInfo = _dataBoxInfo.GetDataBoxInfoDaoChu(id, skuNo, skuName, palletNo, lotNo, boxNo, status, inspectMark, bitBoxMark, inspectStatus); return Ok(new { data = boxInfo, code = 0, msg = "导出箱码明细成功" }); } catch (Exception e) { return Ok(new { data = "", code = 0, msg = e.Message }); } } #endregion #region 导出出入库报表 /// /// 导出出入库总量 /// /// 物料号 /// 批次 /// 托盘号 /// [HttpGet] public IActionResult GetTotalRecordDaoChu(string skuNo, string lotNo, string palletNo) { List StockList = _stock.GetTotalRecordDaoChu(skuNo, lotNo, palletNo); return Ok(new { data = StockList, code = 0, msg = "导出库存总量成功" }); } /// /// 导出出入库记录 /// /// 物料编码 /// 批次 /// 托盘号 /// [HttpGet] public IActionResult GetDetailedRecordDaoChu(string skuNo, string lotNo, string palletNo) { List stockDetailsList = _stock.GetDetailedRecordDaoChu(skuNo, lotNo, palletNo); return Ok(new { data = stockDetailsList, code = 0, msg = "导出库存明细成功" }); } #endregion #endregion } }