using HH.Redis.ReisModel; using HH.WMS.BLL.Algorithm; using HH.WMS.BLL.Basic; using HH.WMS.BLL.External; using HH.WMS.Common; using HH.WMS.Common.Algorithm; using HH.WMS.DAL; using HH.WMS.DAL.Algorithm; using HH.WMS.DAL.Basic; using HH.WMS.DAL.Check; using HH.WMS.DAL.Common; using HH.WMS.DAL.InStock; using HH.WMS.Entitys; using HH.WMS.Entitys.Algorithm; using HH.WMS.Entitys.Basic; using HH.WMS.Entitys.Check; using HH.WMS.Entitys.Common; using HH.WMS.Entitys.Entitys; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HH.WMS.BLL.Check { public class TN_WM_CHECK_LISTBLL : DapperBaseBLL { #region 获取分页列表 /// /// 获取分页列表 /// /// /// /// [HanHe(lt)] CREATED 2018/8/21 public DataTable GetDataTable(dynamic obj) { DataTable dt = CreateDAL().GetDataTable(obj); Dictionary stockDic = new Dictionary(); Dictionary areaDic = new Dictionary(); dt.Columns.Add("CN_S_STOCK_NAME"); dt.Columns.Add("CN_S_AREA_NAME"); for (int i = 0; i < dt.Rows.Count; i++) { if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) //获取仓库名称 { if (!stockDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) { TN_AB_STOCKEntity stockentity = CreateDAL().GetStockentity("CN_S_STOCK_CODE", dt.Rows[i]["CN_S_STOCK_CODE"].ToString());//获取仓库名称 if (stockentity != null) { dt.Rows[i]["CN_S_STOCK_NAME"] = stockentity.CN_S_STOCK_NAME; stockDic.Add(dt.Rows[i]["CN_S_STOCK_CODE"].ToString(), stockentity.CN_S_STOCK_NAME); } } else { dt.Rows[i]["CN_S_STOCK_NAME"] = stockDic[dt.Rows[i]["CN_S_STOCK_CODE"].ToString()]; } } if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))//获取库区名称 { if (!areaDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_AREA"].ToString())) { AutoBomStockAreaEntity areaentity = CreateDAL().GetModel(dt.Rows[i]["CN_S_STOCK_AREA"].ToString());//获取库区名称 if (areaentity != null) { dt.Rows[i]["CN_S_AREA_NAME"] = areaentity.CN_S_AREA_NAME; areaDic.Add(dt.Rows[i]["CN_S_STOCK_AREA"].ToString(), areaentity.CN_S_AREA_NAME); } } else { dt.Rows[i]["CN_S_AREA_NAME"] = areaDic[dt.Rows[i]["CN_S_STOCK_AREA"].ToString()]; } } } return dt; } /// /// 获取汇总分页列表 /// /// /// /// [HanHe(lt)] CREATED 2018/8/21 public DataTable GetGroupDT(string sqlWhere) { DataTable dt = CreateDAL().GetGroupDT(sqlWhere); Dictionary stockDic = new Dictionary(); Dictionary areaDic = new Dictionary(); dt.Columns.Add("CN_S_STOCK_NAME"); dt.Columns.Add("CN_S_AREA_NAME"); for (int i = 0; i < dt.Rows.Count; i++) { if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) //获取仓库名称 { if (!stockDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) { TN_AB_STOCKEntity stockentity = CreateDAL().GetStockentity("CN_S_STOCK_CODE", dt.Rows[i]["CN_S_STOCK_CODE"].ToString());//获取仓库名称 if (stockentity != null) { dt.Rows[i]["CN_S_STOCK_NAME"] = stockentity.CN_S_STOCK_NAME; stockDic.Add(dt.Rows[i]["CN_S_STOCK_CODE"].ToString(), stockentity.CN_S_STOCK_NAME); } } else { dt.Rows[i]["CN_S_STOCK_NAME"] = stockDic[dt.Rows[i]["CN_S_STOCK_CODE"].ToString()]; } } if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))//获取库区名称 { if (!areaDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_AREA"].ToString())) { AutoBomStockAreaEntity areaentity = CreateDAL().GetModel(dt.Rows[i]["CN_S_STOCK_AREA"].ToString());//获取库区名称 if (areaentity != null) { dt.Rows[i]["CN_S_AREA_NAME"] = areaentity.CN_S_AREA_NAME; areaDic.Add(dt.Rows[i]["CN_S_STOCK_AREA"].ToString(), areaentity.CN_S_AREA_NAME); } } else { dt.Rows[i]["CN_S_AREA_NAME"] = areaDic[dt.Rows[i]["CN_S_STOCK_AREA"].ToString()]; } } } return dt; } /// /// 获取分页列表 /// /// /// /// [HanHe(lt)] CREATED 2018/8/21 public DataTable GetDataTableGroup(string sqlWhere, string OrdeBy, int pageSize, int pageIndex) { DataTable dt = CreateDAL().GetDataTableGroup(sqlWhere, OrdeBy, pageSize, pageIndex); dt.Columns.Add("CN_S_AREA_NAME"); Dictionary areaDic = new Dictionary(); for (int i = 0; i < dt.Rows.Count; i++) { if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))//获取库区名称 { if (!areaDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_AREA"].ToString())) { AutoBomStockAreaEntity areaentity = CreateDAL().GetModel(dt.Rows[i]["CN_S_STOCK_AREA"].ToString());//获取库区名称 if (areaentity != null) { dt.Rows[i]["CN_S_AREA_NAME"] = areaentity.CN_S_AREA_NAME; areaDic.Add(dt.Rows[i]["CN_S_STOCK_AREA"].ToString(), areaentity.CN_S_AREA_NAME); } } else { dt.Rows[i]["CN_S_AREA_NAME"] = areaDic[dt.Rows[i]["CN_S_STOCK_AREA"].ToString()]; } } } return dt; } /// /// 获取列表 /// /// /// /// [HanHe(lt)] CREATED 2018/8/21 public DataTable GetEntity(string sqlwhere) { DataTable dt = CreateDAL().GetEntity(sqlwhere); Dictionary stockDic = new Dictionary(); Dictionary areaDic = new Dictionary(); dt.Columns.Add("CN_S_STOCK_NAME"); dt.Columns.Add("CN_S_AREA_NAME"); for (int i = 0; i < dt.Rows.Count; i++) { if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) //获取仓库名称 { if (!stockDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) { TN_AB_STOCKEntity stockentity = CreateDAL().GetStockentity("CN_S_STOCK_CODE", dt.Rows[i]["CN_S_STOCK_CODE"].ToString());//获取仓库名称 if (stockentity != null) { dt.Rows[i]["CN_S_STOCK_NAME"] = stockentity.CN_S_STOCK_NAME; stockDic.Add(dt.Rows[i]["CN_S_STOCK_CODE"].ToString(), stockentity.CN_S_STOCK_NAME); } } else { dt.Rows[i]["CN_S_STOCK_NAME"] = stockDic[dt.Rows[i]["CN_S_STOCK_CODE"].ToString()]; } } if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))//获取库区名称 { if (!areaDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_AREA"].ToString())) { AutoBomStockAreaEntity areaentity = CreateDAL().GetModel(dt.Rows[i]["CN_S_STOCK_AREA"].ToString());//获取库区名称 if (areaentity != null) { dt.Rows[i]["CN_S_AREA_NAME"] = areaentity.CN_S_AREA_NAME; areaDic.Add(dt.Rows[i]["CN_S_STOCK_AREA"].ToString(), areaentity.CN_S_AREA_NAME); } } else { dt.Rows[i]["CN_S_AREA_NAME"] = areaDic[dt.Rows[i]["CN_S_STOCK_AREA"].ToString()]; } } } return dt; } /// /// 获取列表 /// /// /// /// [HanHe(lt)] CREATED 2018/8/21 public DataTable GetList(string sqlwhere) { DataTable dt = CreateDAL().GetList(sqlwhere); Dictionary stockDic = new Dictionary(); Dictionary areaDic = new Dictionary(); dt.Columns.Add("CN_S_STOCK_NAME"); dt.Columns.Add("CN_S_AREA_NAME"); for (int i = 0; i < dt.Rows.Count; i++) { if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) //获取仓库名称 { if (!stockDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) { TN_AB_STOCKEntity stockentity = CreateDAL().GetStockentity("CN_S_STOCK_CODE", dt.Rows[i]["CN_S_STOCK_CODE"].ToString());//获取仓库名称 if (stockentity != null) { dt.Rows[i]["CN_S_STOCK_NAME"] = stockentity.CN_S_STOCK_NAME; stockDic.Add(dt.Rows[i]["CN_S_STOCK_CODE"].ToString(), stockentity.CN_S_STOCK_NAME); } } else { dt.Rows[i]["CN_S_STOCK_NAME"] = stockDic[dt.Rows[i]["CN_S_STOCK_CODE"].ToString()]; } } if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))//获取库区名称 { if (!areaDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_AREA"].ToString())) { AutoBomStockAreaEntity areaentity = CreateDAL().GetModel(dt.Rows[i]["CN_S_STOCK_AREA"].ToString());//获取库区名称 if (areaentity != null) { dt.Rows[i]["CN_S_AREA_NAME"] = areaentity.CN_S_AREA_NAME; areaDic.Add(dt.Rows[i]["CN_S_STOCK_AREA"].ToString(), areaentity.CN_S_AREA_NAME); } } else { dt.Rows[i]["CN_S_AREA_NAME"] = areaDic[dt.Rows[i]["CN_S_STOCK_AREA"].ToString()]; } } } return dt; } #endregion #region 获取盘点结果查询 /// /// 获取盘点结果查询 /// /// 查询条件 /// /// [HanHe(lt)] CREATED 2018/8/21 public DataTable GetDataTable(string sqlwhere) { DataTable dt = CreateDAL().GetDataTable(sqlwhere); dt.Columns.Add("CN_C_IS_SN"); Dictionary itemDic = new Dictionary(); foreach (DataRow row in dt.Rows) { if (!string.IsNullOrEmpty(row["CN_S_ITEM_CODE"].ToString())) { if (!itemDic.ContainsKey(row["CN_S_ITEM_CODE"].ToString())) { AutoBomItemEntity ItemEntity = CreateDAL().GetItemEntity(row["CN_S_ITEM_CODE"].ToString()); row["CN_C_IS_SN"] = ItemEntity == null ? "" : ItemEntity.CN_C_IS_SN; itemDic.Add(row["CN_S_ITEM_CODE"].ToString(), ItemEntity == null ? "" : ItemEntity.CN_C_IS_SN); } else { row["CN_C_IS_SN"] = itemDic[row["CN_S_ITEM_CODE"].ToString()]; } } } return dt; } /// /// 获取盘点结果查询 /// /// 查询条件 /// /// [HanHe(lt)] CREATED 2018/8/21 public List GetUnitCheckList(string opNo, string trayCode, string locationCode) { string sqlWhere = " where CN_S_OP_NO='" + opNo + "' and CN_S_ISCHECK='N' "; if (!string.IsNullOrEmpty(trayCode)) { sqlWhere += " AND CN_S_TRAY_CODE = '" + trayCode + "'"; } if (!string.IsNullOrEmpty(locationCode)) { sqlWhere += " AND CN_S_LOCATION_CODE = '" + locationCode + "'"; } List list = CreateDAL().GetUnitCheckList(sqlWhere); foreach (TN_WM_CHECK_LISTEntity entity in list) { AutoBomItemEntity ItemEntity = CreateDAL().GetItemEntity(entity.CN_S_ITEM_CODE); entity.CN_C_IS_SN = ItemEntity == null ? "" : ItemEntity.CN_C_IS_SN; entity.AuxiliaryUnitList = ItemEntity == null ? null : ItemEntity.AuxiliaryUnitList; } return list; } /// /// 获取二次盘点盘点结果查询 /// /// 查询条件 /// /// [HanHe(lt)] CREATED 2018/8/21 public List GetChecklist(string sqlwhere) { List list = CreateDAL().GetChecklist(sqlwhere); foreach (TN_WM_CHECK_LISTEntity entity in list) { AutoBomItemEntity ItemEntity = CreateDAL().GetItemEntity(entity.CN_S_ITEM_CODE); entity.CN_C_IS_SN = ItemEntity == null ? "" : ItemEntity.CN_C_IS_SN; entity.AuxiliaryUnitList = ItemEntity == null ? null : ItemEntity.AuxiliaryUnitList; } return list; } #endregion #region 根据盘点查询托盘与物料表 /// /// 根据盘点查询托盘与物料表 /// /// /// /// [HanHe(lt)] CREATED 2018/8/24 public List GetTrayitemByOpno(string sqlwhere, string type) { return CreateDAL().GetTrayitemByOpno(sqlwhere, type); } #endregion #region 根据托盘编码获取盘点托盘信息 /// /// 根据托盘编码获取盘点托盘信息 /// /// 查询条件 /// /// [HanHe(lt)] CREATED 2018/8/27 public DataTable GetTrayCheckByCode(string sqlwhere) { return CreateDAL().GetTrayCheckByCode(sqlwhere); } #endregion #region 根据托盘编码获取盘点托盘信息 /// /// 根据托盘编码获取盘点托盘信息 /// /// 查询条件 /// /// [HanHe(lt)] CREATED 2018/8/27 public DataTable GetTrayItemByCode(string sqlwhere) { return CreateDAL().GetTrayItemByCode(sqlwhere); } #endregion #region 盘点执行 /// ///盘点执行 /// /// /// /// [HanHe(lt)] CREATED 2018/8/29 public SqlExecuteResult CheckImplementConfirm(TN_WM_CHECK_MSTEntity entitymst, List entitylist1, List entitylist2) { SqlExecuteResult result = new SqlExecuteResult(); return DAOManager.ExecuteTransaction(trans => { //result = CreateDAL().UpdateMsts(entitymst, trans);//修改主表 //if (!result.Success) //{ // DAOManager.RollbackTransaction(trans); // return result; //} result = CreateDAL().UpdateQTY(entitylist1, trans);//修改盘点明细数量 if (!result.Success) { DAOManager.RollbackTransaction(trans); return result; } result = CreateDAL().Addlist(entitylist2, entitymst.CN_S_MODIFY_BY, DateTime.Now, trans);//新增明细 if (!result.Success) { DAOManager.RollbackTransaction(trans); return result; } return result; }); } #endregion #region 根据货位获取托盘信息 /// /// 根据托盘编码获取盘点托盘信息 /// /// 查询条件 /// /// [HanHe(lt)] CREATED 2018/8/27 public DataTable GetTrayByLocationCode(string sqlwhere) { return CreateDAL().GetTrayByLocationCode(sqlwhere); } #endregion #region 盘点执行 /// ///盘点执行 /// /// /// /// [HanHe(lt)] CREATED 2018/8/29 //public SqlExecuteResult SaveCheck(JObject obj) //{ // SqlExecuteResult result = new SqlExecuteResult(); // List entity = JsonConvert.DeserializeObject>(obj.Value // ("entitylist").ToString()); // List entitylistadd = entity.Where(o => o.CN_S_OPERATION.Contains("3")).ToList(); // List entitylistUpdate = entity.Where(o => o.CN_S_OPERATION.Contains("1")).ToList(); // #region 入库任务 // string CN_S_OP_NO = entity[0].CN_S_OP_NO; // string CN_S_TRAY_CODE = entity[0].CN_S_TRAY_CODE; // string orgCode = obj.Value("orgCode"); // string orgFlag = obj.Value("orgFlag"); // string deviceNo = obj.Value("deviceNo"); // string creator = obj.Value("creator"); // string creatorBy = obj.Value("creatorby"); // string postData = "{\"appCode\":\"AutoWMS\",\"ruleName\":\"" + Constants.Rule_InTaskNo + "\",\"orgId\":\"" + orgCode + "\",\"orgFlag\":\"" + orgFlag + "\"}"; // string opNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData); // if (string.IsNullOrEmpty(opNo)) // { // result.Exception = new Exception("生成单据编码失败!"); // return result; // } // List deviceList = new List(); // //TaskTransferEntity taskentity = new TaskTransferEntity(); // //string clValue = SysConfig.GetValue(Constants.CL_WorkPlatform_Model); // //TaskTransferEntity taskTransfer = new TaskTransferEntity() // //{ // // WorkType = Constants.WorkType_UpperReachesIn // //}; // //if (clValue.Equals(Constants.CL_WorkPlatform_Model_Value.货位.ToString())) // // taskTransfer.StartBit = deviceNo; // //if (clValue.Equals(Constants.CL_WorkPlatform_Model_Value.分拣区.ToString())) // // taskTransfer.StartArea = deviceNo; // //MsgEntity msg = BLLCreator.Create().GetWorkPosition(taskTransfer); // //if (!msg.Success) // //{ // // return new SqlExecuteResult() { Exception = new Exception(msg.Msg) }; // //} // //List pros = (List)msg.Data; // string itemcode = ""; // if (entity.Count > 0) // { // itemcode = entity[0].CN_S_ITEM_CODE; // } // //调用入库算法-调用调用AutoBom接口,获取空货位 // InAlgorEnitty iAe = new InAlgorEnitty() // { // // stockCode = listCode[0].Trim(), // stockAreaCode = "",//pros[0].CN_S_END_AREA_CODE, // logicCode = "", // locationQty = 1, // trayCode = CN_S_TRAY_CODE, // itemCode = itemcode // }; // iAe.lstDevice = deviceList; // var paramString = JsonConvert.SerializeObject(iAe); // // string resultBit = HH.WMS.Common.WebApiManager.HttpWMS_Post("api/Algor/In", paramString); // // OutResultEntity are = JsonConvert.DeserializeObject(resultBit); // InResultEntity irEresult = BLLCreator.Create().In(iAe); // if (!irEresult.Success) // { // result.Exception = new Exception(irEresult.Msg);//货位获取失败! // return result; // } // // 拼接任务实体 // List taskList = new List(); // TN_WM_IN_TASKEntity taskEntity = new TN_WM_IN_TASKEntity(); // taskEntity.CN_S_TASK_NO = opNo; // taskEntity.CN_S_BILL_NO = ""; // taskEntity.CN_S_TRAY_CODE = CN_S_TRAY_CODE; // taskEntity.CN_S_START_AREA = pros[0].CN_S_START_AREA_CODE; // taskEntity.CN_S_START_BIT = deviceNo; // taskEntity.CN_S_END_AREA = pros[0].CN_S_END_AREA_CODE; // taskEntity.CN_S_END_BIT = irEresult.lstLocation[0].locationCode; // taskEntity.CN_S_STATE = "未执行"; // taskEntity.CN_T_START = DateTime.Now; // taskEntity.CN_S_BF_TASK_NO = ""; // taskEntity.CN_S_AF_TASK_NO = ""; // taskEntity.CN_S_STOCK_CODE = ""; // taskEntity.CN_S_OP_TYPE = "上架"; // taskEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper(); // taskEntity.CN_S_CREATOR = creator; // taskEntity.CN_S_CREATOR_BY = creatorBy; // taskEntity.CN_S_MODIFY = creator; // taskEntity.CN_S_MODIFY_BY = creatorBy; // taskEntity.CN_T_CREATE = DateTime.Now; // taskEntity.CN_T_MODIFY = DateTime.Now; // taskEntity.CN_S_STATUS = "新建"; // taskEntity.CN_S_DEPARTMENT = orgCode; // taskEntity.CN_S_ORGAN = orgCode; // taskEntity.CN_S_CREATE_TYPE = "手工"; // taskEntity.CN_S_FROM = "WMS"; // taskList.Add(taskEntity); // #endregion // if (entitylistadd.Count > 0) // { // List packlist = entitylistadd.Select(p => p.CN_S_PACK_CODE).ToList(); // var packcode = string.Join("','", packlist); // DataTable dt = CreateDAL().GetBarCodeDatatable("AND CN_S_PACKING_CODE in ('" + packcode + "')"); // int row = CreateDAL().GetMaxRow(" where CN_S_OP_NO='" + entitylistadd[0].CN_S_OP_NO + "'"); // DateTime tiem = DateTime.Now; // foreach (TN_WM_CHECK_LISTEntity item in entitylistadd) // { // DataView dv = dt.DefaultView; // dv.RowFilter = "CN_S_PACKING_CODE = '" + item.CN_S_PACK_CODE + "'"; // DataTable danew = dv.ToTable(); // AutoBomItemEntity itemEntity = BLLCreator.Create().GetItem(danew.Rows[0]["CN_S_ITEM_CODE"].ToString()); // item.CN_S_ITEM_CODE = danew.Rows[0]["CN_S_ITEM_CODE"].ToString(); // item.CN_S_ITEM_NAME = danew.Rows[0]["CN_S_ITEM_NAME"].ToString(); // item.CN_S_ITEM_STATE = danew.Rows[0]["CN_S_ITEM_STATE"].ToString(); // item.CN_S_OWNER = danew.Rows[0]["CN_S_OWNER"].ToString(); // item.CN_S_DTL_ROW = ++row; // item.CN_S_LOT_NO = danew.Rows[0]["CN_S_LOT_CODE"].ToString(); // item.CN_S_FIGURE_NO = itemEntity == null ? "" : itemEntity.CN_S_FIGURE_NO; // item.CN_S_MODEL = itemEntity == null ? "" : itemEntity.CN_S_MODEL; // item.CN_S_MEASURE_UNIT = itemEntity == null ? "" : itemEntity.CN_S_MEASURE_UNIT; // item.CN_S_ISCHECK = "Y"; // item.CN_S_ISWIN = "Y"; // item.CN_F_QUANTITY = 0; // item.CN_F_CHECK_QTY = Convert.ToDecimal(danew.Rows[0]["CN_S_PACK_NUM"]); // item.CN_S_OPERATOR = creatorBy; // item.CN_T_OPERATE = tiem; // } // } // return DAOManager.ExecuteTransaction(trans => // { // //给货位扩展表指定任务编码 // result = CreateDAL().UpdateLocationTaskNoIn(taskList, trans); // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // result = CreateDAL().UpdateQTY(entitylistUpdate, trans);//修改盘点明细数量 // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // result = CreateDAL().AddChecklist(entitylistadd, trans);//新增明细 // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // //生成入库任务 // result = CreateDAL().Add(taskList, trans); // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // //调用方法,下达AMS指令 // result = new InfRequest().SendTask(taskList); // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // return result; // }); //} #endregion #region 执行下达任务 ///// ///// 执行下达任务 ///// ///// ///// ///// [HanHe(lt)] CREATED 2018/8/30 //public SqlExecuteResult CheckTask(TN_WM_CHECK_MSTEntity entity) //{ // SqlExecuteResult result = new SqlExecuteResult(); // List areaentity = CreateDAL().GetList("", "1");//获取库区 // DataTable dt = CreateDAL().GetDataTable("where CN_S_OP_NO='" + entity.CN_S_OP_NO + "'"); // // // var info = areaentity.Where(w => w.CN_C_IS_AUTO.Contains("Y") && dt.AsEnumerable().Where(d => d.Field("CN_S_STOCK_AREA").Contains(w.CN_S_AREA_CODE)).Any()).Select(s => s.CN_S_AREA_CODE).ToList(); // if (info.Any()) // { // //判断自动库是否执行 // var areaCodelist = areaentity.Where(w => w.CN_C_IS_AUTO.Contains("Y")).Select(s => s.CN_S_AREA_CODE).ToList(); // var areaNamelist = areaentity.Where(w => w.CN_C_IS_AUTO.Contains("Y")).Select(s => s.CN_S_AREA_NAME).ToList(); // var areaCodes = string.Join("','", areaCodelist); // var areaNames = string.Join(",", areaNamelist); // string sqlWhere = " AND CN_S_OP_NO IN (SELECT CN_S_OP_NO FROM dbo.tn_wm_check_dtl WHERE CN_S_STOCK_AREA IN ('" + areaCodes + "'))"; // DataTable dtms = CreateDAL().GetExist(sqlWhere); // if (dtms.Rows.Count > 0) // { // return new SqlExecuteResult() { Exception = new Exception("库区【" + areaNames + "】已有盘点单在执行!") }; // } // } // List list = new List();//定义出库任务 // string endBit = ""; // //分组库区 // var checkarea = from t in dt.AsEnumerable() // group t by new { CN_S_STOCK_AREA = t.Field("CN_S_STOCK_AREA"), CN_S_STOCK_CODE = t.Field("CN_S_STOCK_CODE") } into m // select new // { // CN_S_STOCK_AREA = m.Key.CN_S_STOCK_AREA, // CN_S_STOCK_CODE = m.Key.CN_S_STOCK_CODE // }; // foreach (var g in checkarea) // { // var area = areaentity.Where(x => x.CN_S_STOCK_CODE.Contains("" + g.CN_S_STOCK_CODE + "") && x.CN_S_AREA_CODE.Contains("" + g.CN_S_STOCK_AREA + "")).Select(y => y.CN_C_IS_AUTO).ToArray(); // if (area.Length > 0) // { // if (area[0] != "Y") // { // continue; // } // } // List endAreas = new List(); // HH.WMS.Entitys.Func.MsgEntity msg = new HH.WMS.Entitys.Func.MsgEntity(); // TaskTransferEntity taskTransferEntity = new TaskTransferEntity() // { // WorkType = Constants.WorkType_LowerReachesOut, // CirObj = Constants.TU_Tray, // StartArea = g.CN_S_STOCK_AREA//赋值起始库区 // }; // if (SysConfig.GetValue(Constants.CL_FullTaryNoNeedSorting).Equals("Y")) // taskTransferEntity.IsTrayAll = false; // msg = BLLCreator.Create().GetWorkPosition(taskTransferEntity); // if (!msg.Success) // { // return new SqlExecuteResult() { Exception = new Exception("" + msg.Msg + "") }; // } // List pickAreaPros = (List)msg.Data; // if (pickAreaPros.Count == 1) // { // //只存在一个分拣台 // if (pickAreaPros[0].CN_C_IS_AUTO == "Y") // endAreas.Add(pickAreaPros[0].CN_S_END_AREA_CODE); // } // else // { // #region 判断分拣任务是否根据策略进行均衡分配 // string cfg = SysConfig.GetValue(Constants.CL_PickDivideWorkMode); // if (cfg.Length > 0) // { // switch (cfg) // { // case "分拣台任务均衡": // cfg = SysConfig.GetValue(Constants.CL_IsControlPickTaskEquilibrium); // if (cfg.Length == 0) // { // //msg.Success = false; // //msg.Msg = "请维护是否控制分拣任务均衡策略"; // return new SqlExecuteResult() { Exception = new Exception("请维护是否控制分拣任务均衡策略") }; // } // else // { // if (cfg.Equals("N")) // { // endAreas = pickAreaPros.Where(x => x.CN_C_IS_AUTO == "Y").Select(x => x.CN_S_END_AREA_CODE).ToList(); // } // }; break; // case "只有一个分拣台": // endAreas = pickAreaPros.Where(x => x.CN_C_IS_AUTO == "Y").Select(x => x.CN_S_END_AREA_CODE).ToList(); // break; // } // } // else // { // //msg.Success = false; // //msg.Msg = "请维护拣货分工模式策略"; // return new SqlExecuteResult() { Exception = new Exception("请维护拣货分工模式策略") }; // } // #endregion // } // //分组货位托盘 // var groupLocation = from t in dt.AsEnumerable().Where(n => n.Field("CN_S_STOCK_AREA") == "" + g.CN_S_STOCK_AREA + "") // group t by new { CN_S_LOCATION_CODE = t.Field("CN_S_LOCATION_CODE"), CN_S_TRAY_CODE = t.Field("CN_S_TRAY_CODE") } into m // select new // { // CN_S_LOCATION_CODE = m.Key.CN_S_LOCATION_CODE, // CN_S_TRAY_CODE = m.Key.CN_S_TRAY_CODE // }; // foreach (var l in groupLocation) // { // string postData = "{\"appCode\":\"AutoWMS\",\"ruleName\":\"" + Constants.Rule_OutTaskNo + "\",\"orgId\":\"" + entity.OrgCode + "\",\"orgFlag\":\"" + entity.OrgFlag + "\"}"; // string outTaskNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData); // list.Add(new TN_WM_OUT_TASKEntity() // { // CN_S_DEAL_MODE = "系统", // CN_S_START_BIT = l.CN_S_LOCATION_CODE, // CN_S_END_AREA = endBit.Length > 0 ? endAreas[0] : "", // CN_S_END_BIT = endBit, // CN_S_FROM_NO = entity.CN_S_OP_NO, // CN_S_OP_FROM = "盘点", // CN_S_OP_TYPE = "盘点出库", // CN_S_STATE = "未执行", // CN_S_TASK_NO = outTaskNo, // CN_S_TRAY_CODE = l.CN_S_TRAY_CODE, // CN_GUID = Guid.NewGuid().ToString(), // CN_S_CREATOR = entity.CN_S_CREATOR, // CN_S_CREATOR_BY = entity.CN_S_CREATOR_BY, // CN_T_CREATE = DateTime.Now.ToString(), // CN_T_MODIFY = DateTime.Now.ToString(), // END_AREAS = endAreas, // CN_S_CREATE_TYPE = "系统", // CN_N_PRIORITY = 1 // }); // } // } // return DAOManager.ExecuteTransaction(trans => // { // if (list.Count > 0) // { // //生成任务 // result = CreateDAL().Add(list, trans); // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // //获取出库任务号与货位 // List location = list.Select(x => x.CN_S_TASK_NO + "|" + x.CN_S_START_BIT).ToList(); // result = CreateDAL().UpdateLocationStateTask(location, "预出库锁定", trans); // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // } // //修改 // result = CreateDAL().UpdateMsts(entity, trans); // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // if (list.Count > 0) // { // result = new InfRequest().SendTask(list); // } // return result; // }); //} #endregion #region 根据盘点单更新状态 /// /// 根据盘点单更新状态 /// /// /// /// /// [HanHe(lt)] CREATED 2018/12/17 public OperateResult UpdateMstByOpNo(string state, string sqlwhere) { return CreateDAL().UpdateMstByOpNo(state, sqlwhere, null); } #endregion #region 获取执行单号 /// /// 获取执行单号 /// /// /// [HanHe(lt)] CREATED 2018/8/30 public DataTable GetopNo() { //判断自动库是否执行 List areaentity = CreateDAL().GetList("", "1");//获取库区 var arealist = areaentity.Where(w => w.CN_C_IS_AUTO.Contains("Y")).Select(s => s.CN_S_AREA_CODE).ToList(); var areaCodes = string.Join("','", arealist); string sqlWhere = " AND CN_S_OP_NO in (SELECT CN_S_OP_NO FROM dbo.tn_wm_check_dtl WHERE CN_S_STOCK_AREA IN ('" + areaCodes + "'))"; return CreateDAL().GetExist(sqlWhere); } #endregion #region 根据盘点单托盘编码更新 /// /// 根据盘点单托盘编码更新 /// /// 实体类 /// 事务 /// /// [HanHe(lt)] CREATED 2018/9/17 //public SqlExecuteResult UpdateByCode(JObject obj) //{ // SqlExecuteResult result = new SqlExecuteResult(); // #region 入库任务 // string CN_S_OP_NO = obj.Value("opNo"); // string CN_S_TRAY_CODE = obj.Value("TrayCode"); // string orgCode = obj.Value("orgCode"); // string orgFlag = obj.Value("orgFlag"); // string deviceNo = obj.Value("deviceNo"); // string creator = obj.Value("creator"); // string creatorBy = obj.Value("creatorby"); // string postData = "{\"appCode\":\"AutoWMS\",\"ruleName\":\"" + Constants.Rule_InTaskNo + "\",\"orgId\":\"" + orgCode + "\",\"orgFlag\":\"" + orgFlag + "\"}"; // string opNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData); // if (string.IsNullOrEmpty(opNo)) // { // result.Exception = new Exception("生成单据编码失败!"); // return result; // } // List deviceList = new List(); // TaskTransferEntity taskentity = new TaskTransferEntity(); // string clValue = SysConfig.GetValue(Constants.CL_WorkPlatform_Model); // TaskTransferEntity taskTransfer = new TaskTransferEntity() // { // WorkType = Constants.WorkType_UpperReachesIn // }; // if (clValue.Equals(Constants.CL_WorkPlatform_Model_Value.货位.ToString())) // taskTransfer.StartBit = deviceNo; // if (clValue.Equals(Constants.CL_WorkPlatform_Model_Value.分拣区.ToString())) // taskTransfer.StartArea = deviceNo; // MsgEntity msg = BLLCreator.Create().GetWorkPosition(taskTransfer); // if (!msg.Success) // { // return new SqlExecuteResult() { Exception = new Exception(msg.Msg) }; // } // List pros = (List)msg.Data; // string itemcode = ""; // //if (lstQuery.Count > 0) // //{ // // itemcode = lstQuery[0].CN_S_ITEM_CODE; // //} // //调用入库算法-调用调用AutoBom接口,获取空货位 // InAlgorEnitty iAe = new InAlgorEnitty() // { // // stockCode = listCode[0].Trim(), // stockAreaCode = pros[0].CN_S_END_AREA_CODE,// listCode[1].Trim(), // logicCode = "", // locationQty = 1, // trayCode = CN_S_TRAY_CODE, // itemCode = itemcode // }; // iAe.lstDevice = deviceList; // var paramString = JsonConvert.SerializeObject(iAe); // // string resultBit = HH.WMS.Common.WebApiManager.HttpWMS_Post("api/Algor/In", paramString); // // OutResultEntity are = JsonConvert.DeserializeObject(resultBit); // InResultEntity irEresult = BLLCreator.Create().In(iAe); // if (!irEresult.Success) // { // result.Exception = new Exception(irEresult.Msg);//货位获取失败! // return result; // } // // 拼接任务实体 // List taskList = new List(); // TN_WM_IN_TASKEntity taskEntity = new TN_WM_IN_TASKEntity(); // taskEntity.CN_S_TASK_NO = opNo; // taskEntity.CN_S_BILL_NO = ""; // taskEntity.CN_S_TRAY_CODE = CN_S_TRAY_CODE; // taskEntity.CN_S_START_AREA = pros[0].CN_S_START_AREA_CODE; // taskEntity.CN_S_START_BIT = deviceNo; // taskEntity.CN_S_END_AREA = pros[0].CN_S_END_AREA_CODE; // taskEntity.CN_S_END_BIT = irEresult.lstLocation[0].locationCode; // taskEntity.CN_S_STATE = "未执行"; // taskEntity.CN_T_START = DateTime.Now; // taskEntity.CN_S_BF_TASK_NO = ""; // taskEntity.CN_S_AF_TASK_NO = ""; // taskEntity.CN_S_STOCK_CODE = ""; // taskEntity.CN_S_OP_TYPE = "上架"; // taskEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper(); // taskEntity.CN_S_CREATOR = creator; // taskEntity.CN_S_CREATOR_BY = creatorBy; // taskEntity.CN_S_MODIFY = creator; // taskEntity.CN_S_MODIFY_BY = creatorBy; // taskEntity.CN_T_CREATE = DateTime.Now; // taskEntity.CN_T_MODIFY = DateTime.Now; // taskEntity.CN_S_STATUS = "新建"; // taskEntity.CN_S_DEPARTMENT = orgCode; // taskEntity.CN_S_ORGAN = orgCode; // taskEntity.CN_S_CREATE_TYPE = "手工"; // taskEntity.CN_S_FROM = "WMS"; // taskList.Add(taskEntity); // #endregion // return DAOManager.ExecuteTransaction(trans => // { // result = CreateDAL().UpdateByCode(CN_S_OP_NO, CN_S_TRAY_CODE, null);//修改盘点明细数量 // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // //生成入库任务 // result = CreateDAL().Add(taskList, trans); // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // //调用方法,下达AMS指令 // result = new InfRequest().SendTask(taskList); // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // return result; // }); //} #endregion #region 出库任务状态修改 /// /// 出库任务状态修改 /// /// /// /// [HanHe(lt)] CREATED 2018/9/25 //public SqlExecuteResult SetOutTaskByopNo(JObject obj) //{ // string CN_S_OP_NO = obj.Value("opNo"); // string CN_S_TRAY_CODE = obj.Value("TrayCode"); // string deviceNo = obj.Value("deviceNo"); // string orgId = obj.Value("orgId"); // string orgFlag = obj.Value("orgFlag"); // string Operator = obj.Value("Operator"); // SqlExecuteResult result = new SqlExecuteResult(); // return DAOManager.ExecuteTransaction(trans => // { // result = CreateDAL().SetOutTaskByopNo(CN_S_OP_NO, CN_S_TRAY_CODE, deviceNo, "完成", null);//修改出库任务为完成 // if (!result.Success) // { // DAOManager.RollbackTransaction(trans); // return result; // } // DataTable dt = CreateDAL().GetTasklist(" WHERE CN_S_FROM_NO='" + CN_S_OP_NO + "' AND CN_S_TRAY_CODE='" + CN_S_TRAY_CODE + "'"); // result = BLL.BLLCreator.Create().Complete(dt.Rows[0]["CN_S_TASK_NO"].ToString(), "完成", orgId, orgFlag, Operator); // return result; // }); //} #endregion #region 根据货位获取托盘中物料 /// /// 根据货位获取托盘中物料 /// /// 查询条件 /// /// [HanHe(lt)] CREATED 2019/1/2 public DataTable GetTrayitemBylocation(string locationCode) { DataTable dt = CreateDAL().GetTrayitemBylocation(locationCode); dt.Columns.Add("CN_C_IS_SN"); foreach (DataRow row in dt.Rows) { AutoBomItemEntity ItemEntity = CreateDAL().GetItemEntity(row["CN_S_ITEM_CODE"].ToString()); row["CN_C_IS_SN"] = ItemEntity == null ? "" : ItemEntity.CN_C_IS_SN; } return dt; } #endregion #region PDA盘点执行 /// ///盘点执行 /// /// /// /// [HanHe(lt)] CREATED 2018/8/29 public OperateResult SaveCheckPDA(TN_WM_CHECK_MAINEntity entity, RedisUserEntity user) { List GetModel = BLLCreator.Create().GetModel("where CN_S_LOCATION_CODE='" + entity.CN_S_LOCATION_CODE + "'"); if (GetModel.Count == 0) { return OperateResult.Error("在表TN_WM_LOCATION_EXT中未查询到该货位!"); } AutoBomStockAreaEntity areaModel = DALCreator.Create().GetAreaModelByLocation(entity.CN_S_LOCATION_CODE); if (areaModel == null) { //非法的目的货位 return OperateResult.Error(string.Format("在mongo(TN_AB_B_STOCK_AREA或TN_AB_STOCK_LOCATION表)中未查询到该货位信息!", entity.CN_S_LOCATION_CODE)); } //货位状态:正常 if (GetModel[0].CN_S_LOCATION_STATE != Constants.Location_State_Normal && GetModel[0].CN_S_LOCATION_STATE != Constants.Location_Check_Lock) { return OperateResult.Error(string.Format("当前货位状态为{0},不允许盘点保存!", GetModel[0].CN_S_LOCATION_STATE)); } foreach (TN_WM_CHECK_LISTEntity clEntity in entity.row) { clEntity.CN_GUID = Guid.NewGuid().ToString(); clEntity.CN_S_STOCK_AREA = areaModel.CN_S_AREA_CODE; clEntity.CN_S_STOCK_CODE = areaModel.CN_S_STOCK_CODE; clEntity.CN_S_CREATOR = user.CN_S_LOGIN; clEntity.CN_S_CREATOR_BY = user.CN_S_NAME; clEntity.CN_T_CREATE = DateTime.Now; clEntity.CN_S_MODIFY = user.CN_S_LOGIN; clEntity.CN_S_MODIFY_BY = user.CN_S_NAME; clEntity.CN_T_MODIFY = DateTime.Now; } OperateResult operateResult = UseTransaction(trans => { if (GetModel[0].CN_S_LOCATION_STATE == Constants.Location_State_Normal) { operateResult = CreateDAL().UpdateLocationExtStateLock(entity.CN_S_LOCATION_CODE, Constants.Location_Check_Lock, Constants.Location_State_Normal, "", "", trans); if (operateResult.AffectedRows == 0) { throw new Exception("盘点锁定货位状态并发冲突,该货位状态可能已经发生变化"); } BLLCreator.Create().AddStateChange(entity.CN_S_LOCATION_CODE, Constants.Location_State_Normal, Constants.Location_Check_Lock, "PDA盘点锁定货位", "PDA", user.CN_S_LOGIN, "", areaModel.CN_S_STOCK_CODE, areaModel.CN_S_AREA_CODE, trans); } CreateDAL>().AddRange(entity.row, trans); //更新托盘贮存状态 if (!string.IsNullOrEmpty(entity.CN_S_USE_STATE)) { CreateDAL>().Update(new { CN_S_USE_STATE = entity.CN_S_USE_STATE }, new { CN_S_TRAY_CODE = entity.CN_S_TRAY_CODE }, trans); } }); return operateResult; } #endregion #region PDA 盘点锁定解锁货位 public OperateResult LockLocation(string locationCode, RedisUserEntity userEntity) { TN_WM_LOCATION_EXTEntity locationExt = BLLCreator.Create().GetExtModel(" where CN_S_LOCATION_CODE='" + locationCode + "'"); if (locationExt == null) { return OperateResult.Error("在表TN_WM_LOCATION_EXT中未查询到该货位!"); } if (locationExt.CN_S_LOCATION_STATE != Constants.Location_State_Normal) { return OperateResult.Error(string.Format("当前货位状态为{0},不允许盘点该货位!", locationExt.CN_S_LOCATION_STATE)); } AutoBomStockAreaEntity areaE = CreateDAL().GetAreaModelByLocation(locationCode); if (areaE == null) { //非法的目的货位 return OperateResult.Error(string.Format("在mongo(TN_AB_B_STOCK_AREA或TN_AB_STOCK_LOCATION表)中未查询到该货位{0}的库区信息!", locationCode)); } OperateResult operateResult = UseTransaction(trans => { operateResult = CreateDAL().UpdateLocationExtStateLock(locationCode, Constants.Location_Check_Lock, Constants.Location_State_Normal, "", "", trans); if (operateResult.AffectedRows == 0) { throw new Exception("锁定货位状态并发冲突,该货位状态可能已经发生变化"); } BLLCreator.Create().AddStateChange(locationCode, Constants.Location_State_Normal, Constants.Location_Check_Lock, "PDA盘点锁定货位", "PDA", userEntity.CN_S_LOGIN, "", areaE.CN_S_STOCK_CODE, areaE.CN_S_AREA_CODE, trans); }); return operateResult; } public OperateResult UnLockLocation(string locationCode, RedisUserEntity userEntity) { TN_WM_LOCATION_EXTEntity locationExt = BLLCreator.Create().GetExtModel(" where CN_S_LOCATION_CODE='" + locationCode + "'"); if (locationExt == null) { return OperateResult.Error("在表TN_WM_LOCATION_EXT中未查询到该货位!"); } if (locationExt.CN_S_LOCATION_STATE != Constants.Location_Check_Lock) { return OperateResult.Error(string.Format("当前货位状态为{0},不需要解锁!", locationExt.CN_S_LOCATION_STATE)); } AutoBomStockAreaEntity areaE = CreateDAL().GetAreaModelByLocation(locationCode); if (areaE == null) { //非法的目的货位 return OperateResult.Error(string.Format("在mongo(TN_AB_B_STOCK_AREA或TN_AB_STOCK_LOCATION表)中未查询到该货位{0}的库区信息!", locationCode)); } //再检查盘点数据是否已提交,已提交的不能解锁 List lstCheck = CreateDAL().CheckList(locationCode); if(lstCheck.Count>0) { return OperateResult.Error("当前货位的盘点数据已生成单据,不允许解锁!"); } OperateResult operateResult = UseTransaction(trans => { CreateDAL>().Delete(new { CN_S_LOCATION_CODE = locationCode }, trans); operateResult = CreateDAL().UpdateLocationExtStateLock(locationCode, Constants.Location_State_Normal, Constants.Location_Check_Lock, "", "", trans); if (operateResult.AffectedRows == 0) { throw new Exception("解锁货位状态并发冲突,该货位状态可能已经发生变化"); } BLLCreator.Create().AddStateChange(locationCode, Constants.Location_Check_Lock, Constants.Location_State_Normal, "PDA盘点解锁货位", "PDA", userEntity.CN_S_LOGIN, "", areaE.CN_S_STOCK_CODE, areaE.CN_S_AREA_CODE, trans); }); return operateResult; } #endregion #region PDA 人工搬运锁定解锁货位 public OperateResult LockLocationManual(string locationCode, RedisUserEntity userEntity) { TN_WM_LOCATION_EXTEntity locationExt = BLLCreator.Create().GetExtModel(" where CN_S_LOCATION_CODE='" + locationCode + "'"); if (locationExt == null) { return OperateResult.Error("在表TN_WM_LOCATION_EXT中未查询到该货位!"); } if (locationExt.CN_S_LOCATION_STATE != Constants.Location_State_Normal) { return OperateResult.Error(string.Format("当前货位状态为{0},不允许搬运该货位!", locationExt.CN_S_LOCATION_STATE)); } AutoBomStockAreaEntity areaE = CreateDAL().GetAreaModelByLocation(locationCode); if (areaE == null) { //非法的目的货位 return OperateResult.Error(string.Format("在mongo(TN_AB_B_STOCK_AREA或TN_AB_STOCK_LOCATION表)中未查询到该货位{0}的库区信息!", locationCode)); } OperateResult operateResult = UseTransaction(trans => { operateResult = CreateDAL().UpdateLocationExtStateLock(locationCode, Constants.Location_Carry_Lock, Constants.Location_State_Normal, "", "", trans); if (operateResult.AffectedRows == 0) { throw new Exception("锁定货位状态并发冲突,该货位状态可能已经发生变化"); } BLLCreator.Create().AddStateChange(locationCode, Constants.Location_State_Normal, Constants.Location_Carry_Lock, "PDA人工搬运锁定货位", "PDA", userEntity.CN_S_LOGIN, "", areaE.CN_S_STOCK_CODE, areaE.CN_S_AREA_CODE, trans); }); return operateResult; } public OperateResult UnLockLocationManual(string locationCode, RedisUserEntity userEntity) { TN_WM_LOCATION_EXTEntity locationExt = BLLCreator.Create().GetExtModel(" where CN_S_LOCATION_CODE='" + locationCode + "'"); if (locationExt == null) { return OperateResult.Error("在表TN_WM_LOCATION_EXT中未查询到该货位!"); } if (locationExt.CN_S_LOCATION_STATE != Constants.Location_Carry_Lock) { return OperateResult.Error(string.Format("当前货位状态为{0},不需要解锁,只能解锁搬运锁定的货位!", locationExt.CN_S_LOCATION_STATE)); } AutoBomStockAreaEntity areaE = CreateDAL().GetAreaModelByLocation(locationCode); if (areaE == null) { //非法的目的货位 return OperateResult.Error(string.Format("在mongo(TN_AB_B_STOCK_AREA或TN_AB_STOCK_LOCATION表)中未查询到该货位{0}的库区信息!", locationCode)); } OperateResult operateResult = UseTransaction(trans => { operateResult = CreateDAL().UpdateLocationExtStateLock(locationCode, Constants.Location_State_Normal, Constants.Location_Carry_Lock, "", "", trans); if (operateResult.AffectedRows == 0) { throw new Exception("解锁货位状态并发冲突,该货位状态可能已经发生变化"); } BLLCreator.Create().AddStateChange(locationCode, Constants.Location_Carry_Lock, Constants.Location_State_Normal, "PDA人工搬运解锁货位", "PDA", userEntity.CN_S_LOGIN, "", areaE.CN_S_STOCK_CODE, areaE.CN_S_AREA_CODE, trans); }); return operateResult; } #endregion } }