using HH.WMS.BLL; using HH.WMS.BLL.AllQuery; using HH.WMS.BLL.Basic; using HH.WMS.BLL.External; using HH.WMS.BLL.InStock; using HH.WMS.BLL.OutStock; using HH.WMS.BLL.Pda; using HH.WMS.Common; using HH.WMS.DAL; using HH.WMS.DAL.Algorithm; using HH.WMS.DAL.Basic; using HH.WMS.DAL.InStock; using HH.WMS.Entitys; using HH.WMS.Entitys.Basic; using HH.WMS.Entitys.Common; using HH.WMS.Entitys.Entitys; using HH.WMS.Entitys.Entitys.Mes; using HH.WMS.Entitys.External; using HH.WMS.Utils; using HH.WMS.WebApi.Areas.Common.Controllers; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.Http; namespace HH.WMS.WebApi.Areas.AllQuery.Controllers { /// /// 库存统计Controller /// public class InventoryController : BaseController { #region 出入库业务查询 /// /// 出入库业务查询 /// /// /// /// [Hanhe(DBS)] CREATED BY 2018-12-03 [HttpPost] public OperateResult GetOrderBussList(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { OperateResult result; //IsoDateTimeConverter timeFormat = new IsoDateTimeConverter(); //timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss"; result = BLLCreator.Create().GetOrderBussList(searchModel.PageIndex, searchModel.PageSize, searchModel.SearchCondition); return result; } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } #endregion #region 库存统计查询 /// /// 库存统计查询 /// /// /// /// [Hanhe(DBS)] CREATED BY 2018-12-03 [HttpPost] public OperateResult GetInventoryList(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { return BLLCreator.Create().GetInventoryList(searchModel, true); } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } /// /// 库存查询不分页 /// /// /// /// [Hanhe(DBS)] CREATED BY 2019-1-20 [HttpPost] public OperateResult GetInventoryListExport(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { return BLLCreator.Create().GetInventoryList(searchModel, false); } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } #endregion #region 汇总指定日期内的出入库业务量 /// /// 汇总指定日期内的出入库业务量 /// /// /// /// /// [Hanhe(dbs)] created 2018/12/2 public OperateResult GetBussLine(int day) { return ValidateToken(x => { DataTable dt = null; try { dt = BLLCreator.Create().GetBussLine(day); return OperateResult.Succeed("", dt); } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } #endregion #region 获取货位的历史上下架记录 /// /// 获取货位的历史上下架记录 /// /// /// /// [Hanhe(DBS)] CREATED BY 2018-12-03 [HttpPost] public OperateResult GetLocationHistory(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { OperateResult result; result = BLLCreator.Create().GetLocationHistory(searchModel); return result; } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } #endregion #region 查询货位库存 /// /// 查询货位库存 /// /// /// /// [Hanhe(DBS)] CREATED BY 2018-12-03 [HttpPost] public OperateResult GetLocationInventoryList(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { OperateResult result; result = BLLCreator.Create().GetLocationInventoryList(searchModel, false); return result; } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } [HttpPost] public OperateResult GetLocationInventoryExport(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { OperateResult result; result = BLLCreator.Create().GetLocationInventoryList(searchModel, true); return result; } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } #endregion //[HttpPost] //public OperateResult HistoryLine(SearchModel searchModel) //{ // return ValidateToken(searchModel.TokenId, x => // { // try // { // OperateResult result; // result = BLLCreator.Create().HistoryLine(searchModel); // return result; // } // catch (Exception ex) // { // return OperateResult.Error(ex.Message.ToString()); // } // }); //} #region 查询盘点报表 /// /// 查询盘点报表 /// /// /// /// [Hanhe(DBS)] CREATED BY 2019-1-10 [HttpPost] public OperateResult GetCheckDtl(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { OperateResult result; result = BLLCreator.Create().GetCheckDtl(searchModel); return result; } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } #endregion #region 汇总查询盘点报表 /// /// 汇总查询盘点报表 /// /// /// /// [Hanhe(DBS)] CREATED BY 2019-1-10 [HttpPost] public OperateResult GetCheckDtlTotal(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { OperateResult result; result = BLLCreator.Create().GetCheckDtlTotal(searchModel); return result; } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } #endregion #region 物料盘点汇总 /// /// 物料盘点汇总 /// /// /// /// [Hanhe(DBS)] CREATED BY 2019-1-10 [HttpPost] public OperateResult GetItemCheckDtl(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { OperateResult result; result = BLLCreator.Create().GetItemCheckDtl(searchModel); return result; } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } #endregion #region 物料盘点数量金额汇总 /// /// 物料盘点数量金额汇总 /// /// /// /// [Hanhe(DBS)] CREATED BY 2019-1-10 [HttpPost] public OperateResult GetItemCheckDtlTotal(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { OperateResult result; result = BLLCreator.Create().GetCheckDtlTotal(searchModel); return result; } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } #endregion #region 更新记录 /// /// 更新记录 /// /// [HttpGet] public OperateResult GetVersionLog() { return ValidateToken(t => { var updateLogList = BLLCreator.Create().GetVersionLog().Where(x => x.CN_T_UPDATE.HasValue); var ul = updateLogList.Select(x => { return new { version = x.CN_S_VERSION, title = "更新时间:" + x.CN_T_UPDATE.Value.ToString("yyyy-MM-dd"), content = x.CN_S_CONTENT, order = x.CN_N_ORDER }; }); var result = ul.GroupBy(x => new { x.version, x.title }).Select(y => new { title = y.Key.version + " " + y.Key.title, update = y.AsEnumerable().OrderBy(o => o.order).Select(s => new { content = s.order + "、" + s.content }) }); return OperateResult.Succeed(null, result); }); } #endregion [HttpGet] public OperateResult OutItemBoardData() { return ValidateToken(t => { //待出库和已复验的所有出库单 var outMst = BLLCreator.CreateDapper().GetList(new { CN_S_STATE = new List() { Constants.State_WaitOut, Constants.State_Rechecked } }); //出库单子表 var outDtl = BLLCreator.CreateDapper().GetList(new { CN_S_OP_NO = outMst.Select(x => x.CN_S_OP_NO).ToList() }); //波次主表 var waveMst = BLLCreator.CreateDapper().GetList(new { CN_S_WAVE_NO = outMst.Select(x => x.CN_S_WAVE_CODE).ToList() }); var result = outMst.Select(x => { var currentDtl = outDtl.FindAll(y => y.CN_S_OP_NO == x.CN_S_OP_NO); string pickState = "待拣"; if (x.CN_S_STATE == Constants.State_Rechecked) { pickState = "已拣"; } else { var waveEntity = waveMst.Find(w => w.CN_S_WAVE_NO == x.CN_S_WAVE_CODE); if (waveEntity != null && waveEntity.CN_S_STATE != Constants.Sorting_Stay && waveEntity.CN_S_STATE != Constants.Sorting_Being) pickState = "已拣"; } return new { OpNo = x.CN_S_OP_NO, FromNo = x.CN_S_FROM_NO, Customer = x.CN_S_CUSTOMER_NAME, PickState = pickState, Items = currentDtl.Select(m => new { ItemCode = m.CN_S_ITEM_CODE, ItemName = m.CN_S_ITEM_NAME, ItemModel = m.CN_S_MODEL, ProductNo = m.CN_S_PRODUCTION_BATCH, Qty = m.CN_F_QUANTITY, Unit = m.CN_S_MEASURE_UNIT }) }; }); return OperateResult.Succeed(null, result); }); } #region 恢复到正常 [HttpGet] public IHttpActionResult LocationToNormal(string locationCode, string state) { Log.Info("恢复到正常", "接收参数为:" + locationCode + state); var result = new OperateResult(); if (string.IsNullOrEmpty(state)) state = ""; if (state.Equals("扫码异常")) { result = BLLCreator.Create().UpdateState(locationCode.Trim(), "正常", ""); } else { //更新货位状态到正常,空 result = BLLCreator.Create().UpdateState(locationCode.Trim(), "正常", ""); } return Json(result); } #endregion #region 解绑货位 [HttpGet] public IHttpActionResult LocationToUnBind(string locationCode, string state) { Log.Detail("解绑货位", "接收参数为locationCode:" + locationCode + " state为:" + state); locationCode = locationCode.Trim(); var objLocation = BLLCreator.Create().GetDetailByLocationCode(locationCode).FirstOrDefault(); var result = BLLCreator.Create>().Delete(new { CN_S_LOCATION_CODE = locationCode }); Log.Detail("解绑货位", "删除托盘货位关联结果:" + JsonConvert.SerializeObject(result)); if (!result.Success) { return Json(result); } AutoBomLocationEntity locationModel = DALCreator.Create().GetModel(locationCode); BLLCreator.Create().AddStateChange(locationCode, "空取异常", "正常", "恢复正常", "WMS", "", "", locationModel.CN_S_STOCK_CODE, locationModel.CN_S_AREA_CODE, null); //删除托盘产品关联 result = DALCreator.Create().DeleteTrayItem(" CN_S_TRAY_CODE='" + objLocation.CN_S_TRAY_CODE + "' ", null); Log.Detail("解绑货位", "删除托盘产品关联结果:" + JsonConvert.SerializeObject(result)); return Json(result); } #endregion #region 绑定托盘货位物料 [HttpGet] public IHttpActionResult LocationToBind(string locationCode, string trayCode, string materialCode) { locationCode = locationCode.Trim(); var result = new SqlExecuteResult { Success = true }; AutoBomItemEntity materialEntity = BLLCreator.Create().GetItem(materialCode); TN_WM_B_TRAY_INFOEntity trayEntity = BLLCreator.Create>().GetSingleEntity(new { CN_S_TRAY_CODE = trayCode }); //DALCreator.Create().GetModel(trayCode); TN_WM_B_TRAY_ITEM_RELEntity entity = new TN_WM_B_TRAY_ITEM_RELEntity(); entity.CN_S_TRAY_CODE = trayCode; entity.CN_S_TRAY_GRID = "1"; entity.CN_S_ITEM_CODE = materialEntity.CN_S_ITEM_CODE; entity.CN_S_ITEM_NAME = materialEntity.CN_S_ITEM_NAME; entity.CN_S_ITEM_STATE = "合格"; entity.CN_S_TRAY_TYPE = "托盘"; entity.CN_GUID = Guid.NewGuid().ToString(); entity.CN_F_QUANTITY = 1; entity.CN_T_CREATE = DateTime.Now; entity.CN_T_MODIFY = DateTime.Now; result = DAOManager.ExecuteTransaction(trans => { //删除原托盘中绑定的物料 var transResult = DALCreator.Create().DeleteTrayItem(" CN_S_TRAY_CODE='" + trayCode + "' ", trans); //result = BLLCreator.Create().DeleteItemRel(" and CN_S_TRAY_CODE = '" + trayCode + "'", trans); if (transResult.Success) { //添加托盘料架关联 transResult = BLLCreator.Create>().Add(entity); //result = BLLCreator.Create().(new List { entity }, null); } if (!transResult.Success) { DAOManager.RollbackTransaction(trans); return new SqlExecuteResult { Success = transResult.Success }; } //添加托盘货位关联 transResult = BLLCreator.Create().AddTrayLocationRelation(trayCode, locationCode, new Redis.ReisModel.RedisUserEntity(), ""); if (!transResult.Success) { DAOManager.RollbackTransaction(trans); } return new SqlExecuteResult { Success = transResult.Success }; }); return Json(result); } #endregion #region 宇寿需求变更20190926 新增业务汇总查询 /// /// 获取货位的历史上下架记录 /// /// /// /// [Hanhe(DBS)] CREATED BY 2018-12-03 [HttpPost] public OperateResult GetInventorySummary(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { OperateResult result; result = BLLCreator.Create().GetInventorySummary(searchModel); return result; } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } [HttpPost] public OperateResult ExportInventorySummary(SearchModel searchModel) { return ValidateToken(searchModel.TokenId, x => { try { OperateResult result; result = BLLCreator.Create().ExportInventorySummary(searchModel); return result; } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } }); } #endregion #region 服务执行记录日志分页 /// /// 服务执行记录日志分页 /// /// /// [HttpPost] public OperateResult GetServiceExecList(SearchModel sm) { return ValidateToken(t => { var or = BLLCreator.Create().GetServiceExecList(sm); //IsoDateTimeConverter timeFormat = new IsoDateTimeConverter(); //timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss"; //return JsonConvert.SerializeObject(or, timeFormat); return or; }); } #endregion #region 重新下达移送任务 /// /// 重新下达移送任务 /// /// /// [HttpGet] public OperateResult RestartTask(string taskNo) { return ValidateToken(t => { if (string.IsNullOrEmpty(taskNo)) return OperateResult.Warning("任务号不可为空"); var serviceExec = BLLCreator.CreateDapper().GetSingleEntity(new { CN_S_TASK_NO = taskNo }); if (serviceExec == null) return OperateResult.Warning("未找到任务号:" + taskNo); if (serviceExec.CN_S_TASK_TYPE != "移送") return OperateResult.Warning("当前任务不是移送任务"); if (serviceExec.CN_C_COMPLETE == Constants.Y) return OperateResult.Warning("当前任务已经是完成状态"); AGV_Transport_Request req = new AGV_Transport_Request() { TaskNo = serviceExec.CN_S_TASK_NO, LoadNo = serviceExec.CN_S_TRAY_CODE, MaterielCode = serviceExec.CN_S_ITEM_CODE, MaterielName = serviceExec.CN_S_ITEM_NAME, Quantity = serviceExec.CN_F_QUANTITY ?? 1, StartLocation = serviceExec.CN_S_START_LOCATION, EndLocation = serviceExec.CN_S_END_LOCATION, HasBeenReceived = Constants.N, TaskPriority = serviceExec.CN_N_PRIORITY ?? 1, RequestType = serviceExec.CN_N_REQUEST_TYPE ?? 0, LoadType = serviceExec.CN_S_TRAY_TYPE, }; List reqs = new List() {req }; var ors = BLLCreator.Create().ExecTransferTask(reqs); if (!ors.Any()) return OperateResult.Error("系统异常,请联系管理员"); return ors[0]; }); } #endregion } }