using HH.Redis.ReisModel; using HH.WMS.Common; using HH.WMS.DAL; 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 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.InStock { public class TN_WM_HKINBLL : DapperBaseBLL { #region 新增工单 /// /// 新增工单 /// /// 工单实体 /// /// [HANHE(XDL)] CREATED BY 2019-02-20 public OperateResult AddInOrder(TN_WM_WORK_ORDEREntity Entity, RedisUserEntity t) { OperateResult operateResult = UseTransaction(trans => { //新增主表 CreateDAL>().Add(Entity, trans); }); return operateResult; } #endregion #region 修改工单 /// /// 修改工单 /// /// 工单实体 /// /// [HANHE(XDL)] CREATED BY 2019-02-20 public OperateResult UpdateInOrder(TN_WM_WORK_ORDEREntity entity) { OperateResult operateResult = UseTransaction(trans => { // WorkOrderQtyReportBack("GD20081200097", "19", "9", trans); //修改主表 CreateDAL>().Update(entity, new { CN_S_WO_NO = entity.CN_S_WO_NO }, trans); }); return operateResult; } #endregion #region 删除工单 /// /// 删除工单 /// /// 工单号 /// /// [HANHE(XDL)] CREATED BY 2019-02-20 public OperateResult DeleteInOrder(string opNo) { OperateResult operateResult = UseTransaction(trans => { //删除主表 CreateDAL>().Delete(new { CN_S_WO_NO = opNo }, trans); }); return operateResult; } #endregion #region 提交工单 /// /// 提交工单 /// /// 审批实体 /// /// [HANHE(XDL)] CREATED BY 2019-02-20 public OperateResult SubmitInOrder(string opNo) { var workOrderEntity = BLLCreator.Create>().GetSingleEntity(new { CN_S_WO_NO = opNo }); if (workOrderEntity != null) { var hasEntity = BLLCreator.Create>().GetSingleEntity(new { CN_S_LINE = workOrderEntity.CN_S_LINE, CN_S_STATUS = Constants.State_HK_Excuting }); if (hasEntity != null) { return OperateResult.Error("执行失败!产线<" + hasEntity.CN_S_LINE + ">已存在执行中的工单:" + hasEntity.CN_S_WO_NO + "!"); } } else { return OperateResult.Error("工单:" + opNo + "不存在!"); } OperateResult operateResult = UseTransaction(trans => { //提交主表 CreateDAL().ExamineMst(opNo, Constants.State_HK_Excuting, this.userInfo, trans); }); return operateResult; } #endregion #region 强制完成工单 /// /// 强制完成工单 /// /// 审批实体 /// /// [HANHE(XDL)] CREATED BY 2019-02-20 public OperateResult CompleteInOrder(string opNo) { OperateResult operateResult = UseTransaction(trans => { //提交主表 CreateDAL().ExamineMst(opNo, Constants.State_HK_QZComplete, this.userInfo, trans); }); return operateResult; } #endregion #region 查询工单列表 /// /// 查询工单列表 /// /// 实体 /// /// [HANHE(XDL)] CREATED BY 2018-12-18 public OperateResult GetInOrderList(SearchModel searchModel) { return CreateDAL().GetInOrderList(searchModel); } #endregion #region 接口:提供工单号和排产数量,增加工单中累计数 /// /// 回报数量 /// /// 工单号 /// 回报数量 /// 托盘码盘数 /// public OperateResult WorkOrderQtyReportBack(string woNo, string reportQty, string trayQty, IDbTransaction trans) { Log.Info("开始进入回报接口:WorkOrderQtyReportBack,传参", woNo + "||" + reportQty + "||" + trayQty); if (string.IsNullOrEmpty(woNo) || string.IsNullOrEmpty(reportQty) || string.IsNullOrEmpty(trayQty)) { return OperateResult.Error("参数缺失!"); } if (trayQty == "0") { return OperateResult.Error("托盘码盘数不能为0!"); } var workOrderEntity = BLLCreator.Create>().GetSingleEntity(new { CN_S_WO_NO = woNo }); if (workOrderEntity != null) { //标记是否已经完成 bool isAllOver = false; if (workOrderEntity.CN_S_STATUS != Constants.State_HK_Excuting) { return OperateResult.Error("工单:" + woNo + "状态非<执行中>,禁止回报数量!"); } if (workOrderEntity.CN_S_STATUS == Constants.State_HK_QZComplete) { return OperateResult.Error("工单:" + woNo + "已被强制完成,禁止回报数量!"); } decimal addupQty = workOrderEntity.CN_F_REAL_QTY + Convert.ToDecimal(reportQty); if (addupQty > workOrderEntity.CN_F_PLAN_QTY) { return OperateResult.Error("工单:" + woNo + "实际生产数量<" + workOrderEntity.CN_F_REAL_QTY + ">与本次回报数量<" + reportQty + ">之和将超过计划数量<" + workOrderEntity.CN_F_PLAN_QTY + ">,禁止回报数量!"); } decimal thisTrayQty = Math.Ceiling(Convert.ToDecimal(reportQty) / Convert.ToDecimal(trayQty)); decimal addupTrayQty = workOrderEntity.CN_F_REAL_TRAY_QTY + thisTrayQty; if (addupTrayQty > workOrderEntity.CN_F_PLAN_TRAY_QTY) { return OperateResult.Error("工单:" + woNo + "实际生产托数<" + workOrderEntity.CN_F_REAL_TRAY_QTY + ">与本次回报托数<" + thisTrayQty + ">之和将超过计划托数<" + workOrderEntity.CN_F_PLAN_TRAY_QTY + ">,禁止回报数量!"); } if (addupQty == workOrderEntity.CN_F_PLAN_QTY && addupTrayQty == workOrderEntity.CN_F_PLAN_TRAY_QTY) { isAllOver = true; } Log.Info("位置一:workOrderEntity--》", JsonConvert.SerializeObject(workOrderEntity)); Log.Info("位置二:addupQty--》", addupQty.ToString()); Log.Info("位置三:thisTrayQty--》", thisTrayQty.ToString()); Log.Info("位置四:addupTrayQty--》", addupTrayQty.ToString()); Log.Info("位置五:isAllOver--》", isAllOver.ToString()); OperateResult up = new OperateResult(); if (isAllOver) { up = CreateDAL>().Update(new { CN_F_REAL_QTY = addupQty, CN_F_REAL_TRAY_QTY = addupTrayQty, CN_S_STATUS = Constants.State_HK_Complete, CN_T_MODIFY = DateTime.Now }, new { CN_S_WO_NO = woNo }, trans); } else { up = CreateDAL>().Update(new { CN_F_REAL_QTY = addupQty, CN_F_REAL_TRAY_QTY = addupTrayQty }, new { CN_S_WO_NO = woNo }, trans); } Log.Info("位置六:up--》", JsonConvert.SerializeObject(up)); Log.Info("结束本次回报!", ""); return up; } else { return OperateResult.Error("工单:" + woNo + "不存在!"); } return OperateResult.Succeed(); } #endregion } }