/// <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;
         }
     }
 }
示例#2
0
        /// <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;
                    }
                }
            }
        }