using HH.WMS.Common; using HH.WMS.Common.External; using HH.WMS.DAL; using HH.WMS.DAL.MoveStock; using HH.WMS.Entitys; using HH.WMS.Entitys.MoveStock; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HH.WMS.BLL.MoveStock { public class MoveStockTaskBLL : DapperBaseBLL { public DataTable GetDataList(string tableName, int pageIndex, int pageSize, out long total, string orderBy = "") { return CreateDAL().GetDataList(tableName, pageIndex, pageSize, out total, orderBy); } public TN_WM_MOVE_STOCK_TASK_MSTEntity GetMst() { return CreateDAL().GetMst(); } public TN_WM_MOVE_STOCK_TASK_DTLEntity GetDtlByTaskNo(string taskNo) { return CreateDAL().GetDtlByTaskNo(taskNo); } public OperateResult AddMst(TN_WM_MOVE_STOCK_TASK_MSTEntity moveStockTaskMst, IDbTransaction tran) { return CreateDAL().AddMst(moveStockTaskMst, tran); } public OperateResult AddDtl(string parentGuid, string taskNo, string taskType, decimal quantity, IDbTransaction tran, LogPara logPara = null) { try { var dtl = new TN_WM_MOVE_STOCK_TASK_DTLEntity { CN_GUID = Guid.NewGuid().ToString(), CN_PARENT_GUID = parentGuid, CN_S_TASK_NO = taskNo, CN_S_TASK_TYPE = taskType, CN_F_QUANTITY = quantity, CN_T_CREATE = DateTime.Now, CN_T_MODIFY = DateTime.Now }; if (logPara != null) Log.Detail(logPara, LogDescribe.Content(dtl)); if (taskType.Equals("移库")) { //增主表移动数 AddMoveAllocQty(parentGuid, quantity.ToString(), tran, logPara); } return CreateDAL().AddDtl(dtl, tran); } catch (Exception ex) { return OperateResult.Error("新增移库任务子表失败!原因:" + ex.Message); } } public OperateResult AddMoveAllocQty(string guid, string qty, IDbTransaction trans, LogPara logPara = null) { if (logPara != null) { Log.Detail(logPara, "增加移库任务主表:" + guid + "的移动数:" + qty); } return CreateDAL().AddMoveAllocQty(guid, qty, trans); } public OperateResult ReduceMoveQty(string guid, string qty, IDbTransaction trans, LogPara logPara = null) { if (logPara != null) { Log.Detail(logPara, "降移库任务主表:" + guid + "的移动数:" + qty); } return CreateDAL().ReduceMoveQty(guid, qty, trans); } public OperateResult UpdateMstState(string guid, string state, IDbTransaction trans, LogPara logPara = null) { if (logPara != null) { Log.Detail(logPara, "更新移库任务主表guid:" + guid + " 的状态为:" + state); } return CreateDAL().UpdateMstState(guid, state, trans); } public OperateResult CheckComplete(string taskNo, IDbTransaction trans, LogPara logPara = null) { if (logPara != null) Log.Detail(logPara, "检查移库任务是否完成,当前任务号taskNo:" + taskNo); try { var dtl = CreateDAL().GetDtlByTaskNo(taskNo); var mst = CreateDAL().GetMst(dtl.CN_PARENT_GUID); var result = CreateDAL().AddMoveQty(dtl.CN_PARENT_GUID, trans); Log.Detail(logPara, "新增移库数量结果:" + JsonConvert.SerializeObject(result)); if (mst.CN_F_QUANTITY <= (mst.CN_F_MOVE_QUANTITY + mst.CN_F_ALLOC_QUANTITY)) { return UpdateMstState(dtl.CN_PARENT_GUID, "完成", trans); } return new OperateResult { Success = true }; } catch (Exception ex) { return new OperateResult { Success = false, Msg = "检查移库任务是否完成 出错!" + ex.Message }; } } #region 删除移库 /// /// 删除移库 /// /// 移库单号 /// /// [HanHe(lt)] CREATED 2018/9/18 public OperateResult Delete(string opNo) { return UseTransaction(trans => { CreateDAL().Cancel("where CN_GUID in ('" + opNo + "')", trans);//删除移库主表 //CreateDAL().DeleteDtl(" CN_PARENT_GUID in ('" + opNo + "')", trans);//删除移库子表 }); } #endregion } }