/// <summary> /// 手持端盘点功能 /// </summary> /// <param name="strSn"></param> public string ContainerCheck(string strSn, string status, string userName) { //如果没有盘点任务开启 if (YnDaoHelper.GetInstance().nHibernateHelper.GetCount("select count(*) from AscmCheck as ck where ck.count is null") == 0) { return("没有开启的盘点任务"); } Dal.SupplierPreparation.Entities.AscmContainer ascmContainer = MideaAscm.Services.SupplierPreparation.AscmContainerService.GetInstance().Get(strSn); using (ITransaction tx = YnDaoHelper.GetInstance().nHibernateHelper.GetCurrentSession().BeginTransaction()) { try { if (!string.IsNullOrEmpty(status)) { //如果状态是丢失 if (status == "LOST") { ascmContainer.status = Dal.SupplierPreparation.Entities.AscmContainer.StatusDefine.losted; } else { ascmContainer.status = Dal.SupplierPreparation.Entities.AscmContainer.StatusDefine.unuse; } //盘点ID int intcheckId = YnDaoHelper.GetInstance().nHibernateHelper.GetMaxId("select max(id) from AscmCheck)"); //如果没有重复就新建 if (YnDaoHelper.GetInstance().nHibernateHelper.GetCount("select count(*) from AscmCheckContainerInfo where containerId='" + strSn + "' and checkId=" + intcheckId + "") == 0) { Dal.ContainerManage.Entities.AscmCheckContainerInfo CheckInfo = new Dal.ContainerManage.Entities.AscmCheckContainerInfo(); CheckInfo.id = YnDaoHelper.GetInstance().nHibernateHelper.GetMaxId("select max(id) from AscmCheckContainerInfo)") + 1; CheckInfo.checkId = intcheckId; CheckInfo.containerId = ascmContainer.sn; CheckInfo.status = status; CheckInfo.supplierId = ascmContainer.supplierId; CheckInfo.createTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); CheckInfo.createUser = userName; YnDaoHelper.GetInstance().nHibernateHelper.Save <Dal.ContainerManage.Entities.AscmCheckContainerInfo>(CheckInfo); } else //重复就更新 { Dal.ContainerManage.Entities.AscmCheckContainerInfo ascmCheckContainerInfo = YnDaoHelper.GetInstance().nHibernateHelper.Get <Dal.ContainerManage.Entities.AscmCheckContainerInfo>(Convert.ToInt32(YnDaoHelper.GetInstance().nHibernateHelper.GetObject("select id from AscmCheckContainerInfo where containerId='" + strSn + "' and checkId=" + intcheckId + ""))); ascmCheckContainerInfo.status = status; YnDaoHelper.GetInstance().nHibernateHelper.Update <Dal.ContainerManage.Entities.AscmCheckContainerInfo>(ascmCheckContainerInfo); tx.Commit();//正确执行提交 return("系统已更新该容器的盘点信息"); } } ascmContainer.isCheck = 1; YnDaoHelper.GetInstance().nHibernateHelper.Update <Dal.SupplierPreparation.Entities.AscmContainer>(ascmContainer); tx.Commit();//正确执行提交 return(""); } catch (Exception ex) { tx.Rollback();//回滚 YnBaseClass2.Helper.LogHelper.GetLog().Error("保存失败(Save AscmCheckContainerInfo)", ex); throw ex; } } }
/// <summary> /// 手持机出入库 /// </summary> /// <param name="userName"></param> /// <param name="containerId"></param> /// <param name="direction"></param> public string AscmStoreInOutSave(string userName, string containerId, string direction, string docNumber) { NHibernate.IQuery query = YnDaoHelper.GetInstance().nHibernateHelper.GetCurrentSession().CreateQuery("from AscmStoreInOut where containerId='" + containerId + "' and readTime=(select max(readTime) from AscmStoreInOut where containerId='" + containerId + "')"); Dal.ContainerManage.Entities.AscmStoreInOut ack = query.UniqueResult <Dal.ContainerManage.Entities.AscmStoreInOut>(); if (ack != null && ack.direction == direction) { return("请勿重复提交!"); } else { using (ITransaction tx = YnDaoHelper.GetInstance().nHibernateHelper.GetCurrentSession().BeginTransaction()) { try { Dal.SupplierPreparation.Entities.AscmContainer ascmContainer = MideaAscm.Services.SupplierPreparation.AscmContainerService.GetInstance().Get(containerId); Dal.ContainerManage.Entities.AscmStoreInOut ascmStoreInOut = new Dal.ContainerManage.Entities.AscmStoreInOut(); ascmStoreInOut.containerId = ascmContainer.sn; ascmStoreInOut.createUser = userName; ascmStoreInOut.direction = direction; ascmStoreInOut.containerId = ascmContainer.sn; ascmStoreInOut.supplierId = ascmContainer.supplierId; ascmStoreInOut.epcId = ascmContainer.rfid; ascmStoreInOut.createTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); ascmStoreInOut.readTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); ascmStoreInOut.docNumber = docNumber;//每次提交都产生新的单据号 ascmStoreInOut.id = YnDaoHelper.GetInstance().nHibernateHelper.GetMaxId("select max(id) from AscmStoreInOut)") + 1; if (direction == "STOREIN") { ascmStoreInOut.status = AscmStoreInOut.StatusDefine.inStored; object obj = YnDaoHelper.GetInstance().nHibernateHelper.GetObject("select to_char(id) from AscmReadingHead where address= '容器监管中心' and ip='0.0.0.0'"); ascmContainer.place = obj.ToString(); } else { object obj = YnDaoHelper.GetInstance().nHibernateHelper.GetObject("select to_char(id) from AscmReadingHead where address= '厂区外' and ip='0.0.0.0'"); ascmStoreInOut.status = AscmStoreInOut.StatusDefine.outStored; if (ascmContainer.supplierId != 6128) { ascmContainer.place = obj.ToString(); } else { ascmContainer.place = null; } } ascmContainer.modifyTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); ascmContainer.modifyUser = userName; YnDaoHelper.GetInstance().nHibernateHelper.Update <Dal.SupplierPreparation.Entities.AscmContainer>(ascmContainer); YnDaoHelper.GetInstance().nHibernateHelper.Save <Dal.ContainerManage.Entities.AscmStoreInOut>(ascmStoreInOut); tx.Commit();//正确执行提交 return(""); } catch (Exception ex) { tx.Rollback();//回滚 YnBaseClass2.Helper.LogHelper.GetLog().Error("保存失败(Save AscmCheckContainerInfo)", ex); throw ex; } } } }