/// <summary>
        ///  <!--0:入库,1:报警/点检,2:出库-->
        ///  出入库标记更新
        ///  status 状态 smallint 默认1:可用 0:不可用
        /// </summary>
        /// <param name="sysType"></param>
        /// <returns></returns>
        public bool toDoSomeThing(string tmpStrRFID, string tmpMoveFlag, string RFIDClientIP)
        {
            string sysType = "";
            m_terminaldevice tmpDevice = null;
            t_videodata tmpVideo = new t_videodata();
            try
            {
                logger.DebugFormat("*******#############IP:{0},移动标记:{1},RFID:{2}.", RFIDClientIP, tmpMoveFlag, tmpStrRFID);

                using (var db = new MysqlDbContext())
                {
                    tmpDevice = db.m_terminaldevice.Where(m => m.ModelNo.Equals("500") && m.SerialNoIPAddr.Equals(RFIDClientIP)).FirstOrDefault();

                    if (tmpDevice != null)
                    {
                        //实际入库表
                        var tmpcontStockIn = db.t_stockinctnnodetail.Where(m => m.rfid_no.Equals(tmpStrRFID) && m.status == 2).Count();
                        //库存明细表
                        var tmpcontStockOut = db.t_stockdetail.Where(m => m.rfid_no.Equals(tmpStrRFID) && m.status == 2).Count();

                        sysType = tmpDevice.param3;

                        if (!sysType.Equals("1"))
                        {
                            if (tmpcontStockIn > 0)
                            {
                                sysType = "0";
                            }
                            else
                            {
                                if (tmpcontStockOut > 0)
                                {
                                    sysType = "2";
                                }
                            }
                        }
                        logger.DebugFormat("*******############# {0},开始处理操作:{1},IP:{2}", tmpDevice.param3, tmpDevice.TerminalName, RFIDClientIP);
                    }
                    else
                    {
                        logger.ErrorFormat("*******#############****Error: 没有找到 {0} 对应的设备。", RFIDClientIP);
                        return false;
                    }
                }

                switch (sysType)
                {
                    case "0":
                        #region stock in

                        if (_tmpListScanRFID.Keys.Contains(tmpStrRFID))
                        {

                            if (_tmpListScanRFID[tmpStrRFID])
                            {
                                logger.DebugFormat("#***********已扫并处理OK,不做处理。RFID: {0}", tmpStrRFID);
                                logger.InfoFormat("#***********已扫并处理OK,不做处理。RFID: {0}", tmpStrRFID);

                                //sendTxtToLED(tmpItemRFID);
                                return true;
                            }
                            else
                            {
                                // sendTxtToLED(tmpItemRFID);// + "已扫"
                                logger.DebugFormat("#***********已扫但处理失败,重做处理。RFID: {0}", tmpStrRFID);

                            }

                        }
                        else
                        {
                            _tmpListScanRFID.Add(tmpStrRFID, false);
                        }

                        //0:入库
                        //查实际入库明细(2),有-->更新为(1);
                        using (var db = new MysqlDbContext())
                        {
                            var tmpcont = db.t_stockinctnnodetail.Where(m => m.rfid_no.Equals(tmpStrRFID) && m.status == 2).Count();

                            if (tmpcont > 0)
                            {
                                var tmpModelin = db.t_stockinctnnodetail.Where(m => m.rfid_no.Equals(tmpStrRFID) && m.status == 2).First();
                                var tmpStockIn = db.t_stockindetail.Where(m => m.stockin_id.Equals(tmpModelin.stockin_id)).First();

                                logger.DebugFormat("#开始入库**********#########共有{0}条记录.入库单号:{1},货物编号:{2},托盘号:{3},rfid_no:{4}", tmpcont, tmpModelin.stockin_id, tmpModelin.prdct_no, tmpModelin.ctnno_no, tmpStrRFID);
                                logger.Debug("*********(2--->1)[status 1:可用 0:不可用 2:卸料]**********");

                                string tmpUpdateSQL = "update t_stockinctnnodetail set STATUS='1',updtime=now(),videodevice_id='" + tmpDevice.TerminalNo + "' WHERE STATUS='2' and rfid_no=@rfid_no";
                                var tmpRetunCount = db.Database.ExecuteSqlCommand(tmpUpdateSQL, new MySqlParameter("@rfid_no", tmpStrRFID.Trim()));

                                if (tmpRetunCount > 0)
                                {
                                    logger.DebugFormat("*#入库**********#########t_stockinctnnodetail: 更新成功入库标记,共有{0}条已更新.入库单号:{1},货物编号:{2},托盘号:{3},rfid_no:{4}", tmpRetunCount, tmpModelin.stockin_id, tmpModelin.prdct_no, tmpModelin.ctnno_no, tmpStrRFID);
                                    var tmpSendLedMsg = tmpStrRFID + "入库";
                                    sendTxtToLED(tmpSendLedMsg, tmpDevice);
                                    Program.saveLog("入库", "0入库:" + tmpStrRFID, 0, 1);
                                    short tmpchannle = 0;
                                    if (short.TryParse(tmpDevice.param4, out tmpchannle))
                                    {
                                        var msg = tmpStockIn.bespeak_no + " " + tmpModelin.rfid_no + " " + tmpModelin.prdct_no + " " + tmpModelin.qty + " 入库";
                                        Program.saveVideoSet(msg, tmpchannle);
                                    }
                                    else
                                    {
                                        Program.saveLog("入库Video设置", "入库Video设置失败,没有通道号。" + tmpStrRFID, 3, 0);
                                    }

                                    return true;
                                }

                                logger.DebugFormat("*error开始入库*失败,系统错误,请联系管理员**************************************************************", tmpStrRFID);
                                Program.saveLog("入库", "0入库:" + tmpStrRFID, 0, 0);
                                return false;
                            }
                            logger.DebugFormat("*开始入库*失败,未查到[可入库/有效的]实际入库明细记录,RFID:{0}**************************************************************", tmpStrRFID);
                            return false;
                        }
                        break;
                        #endregion
                    case "2":
                        #region stock out

                        if (_tmpListScanRFID.Keys.Contains(tmpStrRFID))
                        {

                            if (_tmpListScanRFID[tmpStrRFID])
                            {
                                logger.DebugFormat("#***********已扫并处理OK,不做处理。RFID: {0}", tmpStrRFID);
                                logger.InfoFormat("#***********已扫并处理OK,不做处理。RFID: {0}", tmpStrRFID);

                                //sendTxtToLED(tmpItemRFID);
                                return true;
                            }
                            else
                            {
                                // sendTxtToLED(tmpItemRFID);// + "已扫"
                                logger.DebugFormat("#***********已扫但处理失败,重做处理。RFID: {0}", tmpStrRFID);

                            }

                        }
                        else
                        {
                            _tmpListScanRFID.Add(tmpStrRFID, false);
                        }

                        //1:出库
                        using (var db = new MysqlDbContext())
                        {
                            //库存明细表
                            //2:下架
                            //1:在库可用,0:不可用(出库更新库存时更新(2-->0)

                            //查库存明细表(1),得:仓单号.
                            //(有-->查申.货物出库明细(仓单号)
                            //      [有-->更新库存表,库存明细表(0),无-->报警]),
                            //无-->报警)
                            var tmpcont = db.t_stockdetail.Where(m => m.rfid_no.Equals(tmpStrRFID) && m.status == 2).Count();
                            if (tmpcont > 0)
                            {

                                #region 查库存明细表
                                //查库存明细表
                                var tmpstockdetailForOut = db.t_stockdetail.Where(m => m.rfid_no.Equals(tmpStrRFID) && m.status == 2).FirstOrDefault();

                                if (tmpstockdetailForOut == null)
                                {
                                    logger.DebugFormat("*****无效RFID:{0}.", tmpStrRFID);
                                    return false;
                                }
                                #endregion

                                #region 货物出库明细
                                //货物出库明细
                                t_stockoutdetail tmpStockoutDetails = null;
                                var strremark = "";
                                if (string.IsNullOrEmpty(tmpstockdetailForOut.receiptNo))
                                {
                                    #region 没有仓单号
                                    logger.DebugFormat("*开始出库**********#########没有仓单号,货物编号:{0},托盘号:{1},rfid_no:{2}", tmpstockdetailForOut.prdct_no, tmpstockdetailForOut.ctnno_no, tmpStrRFID);
                                    ////***********报警*********

                                    //var tmpNewAlerm = new t_alarmdata();
                                    //tmpNewAlerm.recd_id = DateTime.Now.ToString("yyyyMMddHHmmss") + "D" + _tmpRandom.Next(100000).ToString() + "R" + tmpStrRFID;
                                    //tmpNewAlerm.alarm_type = "Alarm_06";
                                    //tmpNewAlerm.depot_no = "0";
                                    //tmpNewAlerm.cell_no = tmpStrRFID;
                                    //tmpNewAlerm.begin_time = DateTime.Now;
                                    //tmpNewAlerm.over_time = DateTime.Now;
                                    //tmpNewAlerm.remark = "RFID:" + tmpStrRFID + "无出库指示。";
                                    //tmpNewAlerm.status = 1;
                                    //tmpNewAlerm.addtime = DateTime.Now;
                                    //tmpNewAlerm.adduser =Program._serverIP;
                                    //tmpNewAlerm.updtime = DateTime.Now;
                                    //tmpNewAlerm.upduser =Program._serverIP;
                                    //db.t_alarmdata.Add(tmpNewAlerm);
                                    //var saveflag = db.SaveChanges();

                                    //if (saveflag > 0)
                                    //{
                                    //    logger.DebugFormat("********报警 保存完成。IP:{0},移动标记:{1},RFID:{2}.SaveFlag:{3}.", RFIDClientIP, tmpMoveFlag, tmpStrRFID, saveflag);
                                    //}
                                    //else
                                    //{

                                    //    logger.DebugFormat("********报警 保存失败。IP:{0},移动标记:{1},RFID:{2}.SaveFlag:{3}", RFIDClientIP, tmpMoveFlag, tmpStrRFID, saveflag);
                                    //}
                                    //var tmpLedMsg = tmpStrRFID + "无出库指示.";
                                    //sendTxtToLED(tmpLedMsg, tmpDevice);
                                    //return false;
                                    #endregion

                                    tmpStockoutDetails = db.t_stockoutdetail.Where(m => m.rfid_no.Equals(tmpStrRFID) && m.prdct_no.Equals(tmpstockdetailForOut.prdct_no) && m.status == 2).FirstOrDefault();
                                    strremark = "RFID:" + tmpStrRFID + ",无单号,没有查到[有效的]货物出库明细记录。";
                                }
                                else
                                {
                                    tmpStockoutDetails = db.t_stockoutdetail.Where(m => m.rfid_no.Equals(tmpStrRFID) && m.receiptNo.Equals(tmpstockdetailForOut.receiptNo) && m.prdct_no.Equals(tmpstockdetailForOut.prdct_no) && m.status == 2).FirstOrDefault();
                                    strremark = "RFID:" + tmpStrRFID + ",仓单号:" + tmpstockdetailForOut.receiptNo + ",没有查到[有效的]货物出库明细记录。";
                                }
                                logger.DebugFormat("*开始出库**********#########共有{0}条记录.仓单号:{1},货物编号:{2},托盘号:{3},rfid_no:{4}", tmpcont, tmpstockdetailForOut.receiptNo, tmpstockdetailForOut.prdct_no, tmpstockdetailForOut.ctnno_no, tmpStrRFID);

                                if (tmpStockoutDetails == null)
                                {
                                    logger.DebugFormat("*error开始出库**********{0}#########没有查到[有效的]货物出库明细记录.仓单号:{1},货物编号:{2},托盘号:{3},rfid_no:{4}", tmpcont, tmpstockdetailForOut.receiptNo, tmpstockdetailForOut.prdct_no, tmpstockdetailForOut.ctnno_no, tmpStrRFID);

                                    var tmpNewAlerm = new t_alarmdata();
                                    tmpNewAlerm.recd_id = DateTime.Now.ToString("yyyyMMddHHmmss") + "D" + _tmpRandom.Next(100000).ToString() + "R" + tmpStrRFID;
                                    tmpNewAlerm.alarm_type = "Alarm_06";
                                    tmpNewAlerm.depot_no = "";
                                    tmpNewAlerm.cell_no = tmpstockdetailForOut.shelf_no;
                                    tmpNewAlerm.begin_time = DateTime.Now;
                                    tmpNewAlerm.over_time = DateTime.Now;
                                    tmpNewAlerm.remark = strremark;
                                    tmpNewAlerm.status = 1;
                                    tmpNewAlerm.param2 = tmpStrRFID;
                                    tmpNewAlerm.param4 = tmpDevice.TerminalNo;
                                    tmpNewAlerm.addtime = DateTime.Now;
                                    tmpNewAlerm.adduser = Program._serverIP;
                                    tmpNewAlerm.updtime = DateTime.Now;
                                    tmpNewAlerm.upduser = Program._serverIP;
                                    db.t_alarmdata.Add(tmpNewAlerm);
                                    var saveflag = db.SaveChanges();

                                    if (saveflag > 0)
                                    {
                                        short tmpchannle = 0;
                                        if (short.TryParse(tmpDevice.param4, out tmpchannle))
                                        {
                                            var msg3 = tmpstockdetailForOut.rfid_no + " " + tmpstockdetailForOut.shelf_no + " 无出库指示";
                                            Program.saveVideoSet(msg3, tmpchannle);
                                        }
                                        else
                                        {
                                            Program.saveLog("出库Video设置", "出库Video设置失败,没有通道号。" + tmpStrRFID, 3, 0);
                                        }
                                        logger.DebugFormat("********报警 保存完成。IP:{0},移动标记:{1},RFID:{2}.SaveFlag:{3}.", RFIDClientIP, tmpMoveFlag, tmpStrRFID, saveflag);

                                    }
                                    else
                                    {

                                        logger.DebugFormat("********报警 保存失败。IP:{0},移动标记:{1},RFID:{2}.SaveFlag:{3}", RFIDClientIP, tmpMoveFlag, tmpStrRFID, saveflag);
                                    }
                                    var tmpLedMsg = tmpStrRFID + "无出库指示.";
                                    sendTxtToLED(tmpLedMsg, tmpDevice);

                                    return false;
                                }
                                #endregion
                                #region 插入明细记录.
                                //插入明细记录.
                                var tmpExitStockDetails = db.t_stockoutctnnodetail.Find(new object[]{
                                    tmpStockoutDetails.stockout_id,
                                    tmpstockdetailForOut.prdct_no,
                                    tmpstockdetailForOut.rfid_no,
                                    tmpstockdetailForOut.ctnno_no
                                });
                                if (tmpExitStockDetails == null)
                                {
                                    var tmpNewStockDetails = new t_stockoutctnnodetail();
                                    tmpNewStockDetails.stockout_id = tmpStockoutDetails.stockout_id;

                                    tmpNewStockDetails.prdct_no = tmpstockdetailForOut.prdct_no;
                                    tmpNewStockDetails.rfid_no = tmpstockdetailForOut.rfid_no;
                                    tmpNewStockDetails.ctnno_no = tmpstockdetailForOut.ctnno_no;
                                    tmpNewStockDetails.receiptNo = tmpstockdetailForOut.receiptNo;
                                    tmpNewStockDetails.pqty = tmpstockdetailForOut.pqty;
                                    tmpNewStockDetails.qty = tmpstockdetailForOut.qty;
                                    tmpNewStockDetails.nwet = tmpstockdetailForOut.nwet;
                                    tmpNewStockDetails.gwet = tmpstockdetailForOut.gwet;
                                    tmpNewStockDetails.adduser = Program._serverIP;// "RFIDStockOut";
                                    tmpNewStockDetails.updtime = DateTime.Now;
                                    tmpNewStockDetails.upduser = Program._serverIP;
                                    tmpNewStockDetails.addtime = DateTime.Now;
                                    tmpNewStockDetails.status = 1;

                                    tmpNewStockDetails.device_id = tmpDevice.TerminalNo;

                                    db.t_stockoutctnnodetail.Add(tmpNewStockDetails);

                                    //db.SaveChanges();
                                }

                                #endregion
                                #region 更新库存
                                //更新库存
                                var tmpstock = db.t_stock.Where(m => m.prdct_no.Equals(tmpstockdetailForOut.prdct_no)).FirstOrDefault();

                                if (tmpstock != null)
                                {
                                    logger.DebugFormat("*开始出库**********#########更新库存前:箱数:{0},数量:{1},重量:{2},净重:{3}", tmpstock.pqty, tmpstock.qty, tmpstock.gwet, tmpstock.nwet);

                                    tmpstock.pqty -= tmpstockdetailForOut.pqty;
                                    tmpstock.qty -= tmpstockdetailForOut.qty;
                                    tmpstock.gwet -= tmpstockdetailForOut.gwet;
                                    tmpstock.nwet -= tmpstockdetailForOut.nwet;

                                    //if (tmpflagsave > 0)
                                    //{
                                    //    logger.DebugFormat("*开始出库*********#########Save flag:{0}.", tmpflagsave);
                                    //    logger.DebugFormat("*开始出库**********#########更新库存成功,货物编号:{0},托盘号:{1},rfid_no:{2}", tmpstockdetailForOut.prdct_no, tmpstockdetailForOut.ctnno_no, tmpStrRFID);
                                    //    logger.DebugFormat("*开始出库**********#########更新库存后:箱数:{0},数量:{1},重量:{2},净重:{3}", tmpstock.pqty, tmpstock.qty, tmpstock.gwet, tmpstock.nwet);

                                    //}
                                    //else
                                    //{
                                    //    logger.DebugFormat("*error开始出库**********#########更新库存失败,货物编号:{0},托盘号:{1},rfid_no:{2}", tmpstockdetailForOut.prdct_no, tmpstockdetailForOut.ctnno_no, tmpStrRFID);

                                    //    return false;
                                    //}
                                }
                                else
                                {
                                    logger.DebugFormat("*error开始出库**********#########没有库存,货物编号:{0},托盘号:{1},rfid_no:{2}", tmpstockdetailForOut.prdct_no, tmpstockdetailForOut.ctnno_no, tmpStrRFID);

                                    return false;
                                }

                                #endregion

                                #region 更新明细状态
                                //更新明细状态

                                string tmpUpdateSQLt_stockoutdetail = "update t_stockoutdetail set STATUS='0' WHERE STATUS='2' and rfid_no=@rfid_no";
                                string tmpUpdateSQL = "update t_stockdetail set STATUS='0' WHERE STATUS='2' and rfid_no=@rfid_no";
                                var tmpRetunCountt_stockoutdetail = db.Database.ExecuteSqlCommand(tmpUpdateSQLt_stockoutdetail, new MySqlParameter("@rfid_no", tmpStrRFID.Trim()));
                                var tmpRetunCount = db.Database.ExecuteSqlCommand(tmpUpdateSQL, new MySqlParameter("@rfid_no", tmpStrRFID.Trim()));

                                if (tmpRetunCount > 0)
                                {
                                    //logger.DebugFormat("*success出库明细**********#########t_stockdetail: 更新成功明细出库标记,共有{0}条已更新.仓单号:{1},货物编号:{2},托盘号:{3},rfid_no:{4}", tmpRetunCount, tmpstockdetailForOut.receiptNo, tmpstockdetailForOut.prdct_no, tmpstockdetailForOut.ctnno_no, tmpStrRFID);
                                    logger.DebugFormat("*success出库**********#########:更新成功,共有{0}条已更新.仓单号:{1},货物编号:{2},托盘号:{3},rfid_no:{4}", tmpRetunCount, tmpstockdetailForOut.receiptNo, tmpstockdetailForOut.prdct_no, tmpstockdetailForOut.ctnno_no, tmpStrRFID);

                                    var tmpflagsave = db.SaveChanges();

                                    var tmpLedMsg = "仓单" + tmpstockdetailForOut.receiptNo + "托盘" + tmpstockdetailForOut.ctnno_no;//shelf_no;

                                    sendTxtToLED(tmpLedMsg, tmpDevice);

                                    short tmpchannle = 0;
                                    if (short.TryParse(tmpDevice.param4, out tmpchannle))
                                    {
                                        var msg2 = tmpStockoutDetails.cash_no + " " + tmpStockoutDetails.rfid_no + " " + tmpStockoutDetails.prdct_no + " 出库";
                                        Program.saveVideoSet(msg2, tmpchannle);
                                    }
                                    else
                                    {
                                        Program.saveLog("出库Video设置", "出库Video设置失败,没有通道号。" + tmpStrRFID, 3, 0);
                                    }

                                    Program.saveLog("出库", "2出库:" + tmpStrRFID, 1, 1);

                                    return true;
                                }

                                logger.DebugFormat("*error开始出库*失败,系统错误,请联系管理员**************************************************************", tmpStrRFID);
                                Program.saveLog("出库", "2出库:" + tmpStrRFID, 1, 0);
                                return false;

                                #endregion
                            }

                            logger.DebugFormat("*error开始出库*失败,未查到[可出库/有效的]库存明细表记录,RFID:{0}**************************************************************", tmpStrRFID);
                            return false;
                        }
                        break;
                        #endregion
                    case "1":
                        var tmpShelf = "没找到对应仓位号。";
                        var tmpStockDetail = new t_stockdetail();
                        #region 报警
                        using (var db = new MysqlDbContext())
                        {
                            tmpStockDetail = db.t_stockdetail.Where(m => m.rfid_no.Equals(tmpStrRFID) && m.status == 1).FirstOrDefault();
                            if (tmpStockDetail != null)
                            {
                                if (tmpMoveFlag.Equals("1"))
                                {
                                    tmpShelf = tmpStockDetail.shelf_no;

                                    var tmpNewAlerm = new t_alarmdata();
                                    tmpNewAlerm.recd_id = DateTime.Now.ToString("yyyyMMddHHmmss") + "D" + _tmpRandom.Next(100000).ToString() + "R" + tmpStrRFID;
                                    tmpNewAlerm.alarm_type = "Alarm_04";
                                    tmpNewAlerm.depot_no = "";
                                    tmpNewAlerm.cell_no = tmpShelf;// tmpStrRFID + "," + tmpShelf;
                                    tmpNewAlerm.begin_time = DateTime.Now;
                                    tmpNewAlerm.over_time = DateTime.Now;
                                    tmpNewAlerm.param1 = tmpStrRFID;
                                    tmpNewAlerm.param4 = tmpDevice.TerminalNo;
                                    tmpNewAlerm.remark = "RFID:" + tmpStrRFID + ",移动了.仓位号:" + tmpShelf;
                                    tmpNewAlerm.status = 1;
                                    tmpNewAlerm.addtime = DateTime.Now;
                                    tmpNewAlerm.adduser = Program._serverIP;
                                    tmpNewAlerm.updtime = DateTime.Now;
                                    tmpNewAlerm.upduser = Program._serverIP;
                                    db.t_alarmdata.Add(tmpNewAlerm);
                                    var saveflag = db.SaveChanges();

                                    if (saveflag > 0)
                                    {
                                        short tmpchannle = 0;
                                        if (short.TryParse(tmpDevice.param4, out tmpchannle))
                                        {
                                            Program.saveVideoSet(tmpStrRFID + " 移动报警", tmpchannle);
                                        }
                                        else
                                        {
                                            Program.saveLog("移动报警Video设置", "移动报警Video设置失败,没有通道号。" + tmpStrRFID, 3, 0);
                                        }

                                        Program.saveLog("移动报警", "2移动报警:" + tmpStrRFID, 3, 1);
                                        logger.DebugFormat("********报警 保存完成。IP:{0},移动标记:{1},RFID:{2}.SaveFlag:{3},仓位号:{4}.", RFIDClientIP, tmpMoveFlag, tmpStrRFID, saveflag, tmpShelf);

                                    }
                                    else
                                    {
                                        Program.saveLog("移动报警", "2移动报警:" + tmpStrRFID, 3, 1);
                                        logger.DebugFormat("********报警 保存失败。IP:{0},移动标记:{1},RFID:{2}.SaveFlag:{3},仓位号:{4}", RFIDClientIP, tmpMoveFlag, tmpStrRFID, saveflag, tmpShelf);
                                    }

                                }
                            }
                            else
                            {
                                logger.DebugFormat("********报警 IP:{0},移动标记:{1},RFID:{2} 不存在有效库存记录.}.", RFIDClientIP, tmpMoveFlag, tmpStrRFID);
                                return false;
                            }
                        }
                        #endregion
                        break;
                    default:
                        break;
                }

                return false;
            }
            catch (Exception ex)
            {
                logger.ErrorFormat("{0}:{1},flag:{2},rfid_no:{3}", 481, ex, sysType, tmpStrRFID);
                throw ex;
                return false;
            }
        }
示例#2
0
        public void Execute(IJobExecutionContext context)
        {
            logger.DebugFormat("*********开始运行 手动点检 job:{0}.下次job时间:{1}.", context.JobDetail.Key, context.NextFireTimeUtc);

            try
            {
                using (var db = new MysqlDbContext())
                {
                    //var tmpcont = db.m_users.Count();
                    //logger.DebugFormat("********************{0} 个用户.",tmpcont);
                    var m1odelchecktime1 = db.m_parameter.Where(m => m.paramkey.Equals("SetCheck") && m.paramtype == 1).FirstOrDefault();
                    if (m1odelchecktime1 != null)
                    {
                        logger.DebugFormat("*************开始手动点检,点检时间:{0}。***************", m1odelchecktime1.paramvalue);

                        //check add today
                        #region check add today

                        var sqlExit = "select count(*) from t_checkresult a where DATE_FORMAT(a.addtime,'%Y%m%d')=DATE_FORMAT(now(),'%Y%m%d') and a.check_date='" + m1odelchecktime1.paramvalue + "'";
                        var tmpExit = db.Database.SqlQuery<int>(sqlExit).FirstOrDefault();

                        if (tmpExit > 0)
                        {
                            logger.DebugFormat("*************系统已经手动点检过1,点检时间:{0}。***************", m1odelchecktime1.paramvalue);
                            Program._checkAutoRfid.Clear();
                            Program._checkAutoCount = 1;
                            m1odelchecktime1.paramtype = 0;
                            var saveflag2 = db.SaveChanges();
                            if (saveflag2 > 0)
                            {
                                Program.saveLog("手动点检", "2系统已经手动点检过:" + m1odelchecktime1.paramvalue, 3, 1);

                                logger.DebugFormat("********手动点检标记 更新完成。{0}.", m1odelchecktime1.paramvalue);

                            }
                            else
                            {
                                Program.saveLog("手动点检", "2系统已经手动点检过:" + m1odelchecktime1.paramvalue, 3, 0);

                                logger.DebugFormat("********手动点检标记 更新失败。{0}.", m1odelchecktime1.paramvalue);
                            }
                            return;
                        }
                        #endregion

                        switch (Program._checkCount)
                        {
                            case 0:
                                Program._checkCurrRfid.Clear();
                                Program._checkCount = 1;
                                break;
                            case 1:
                                #region save checklog
                                var m2odelofStockDetails2 = db.t_stockdetail.Where(m => m.status == 1).ToList();
                                if (m2odelofStockDetails2.Count > 0)
                                {
                                    var tmpGuidId = DateTime.Now.ToString("yyyyMMddHHmmss") + "D" + Program._tmpRandom.Next(100000).ToString(); //Guid.NewGuid().ToString();
                                    //主
                                    var tmpNewt_checkresult = new t_checkresult();
                                    tmpNewt_checkresult.bespeak_no = "";

                                    tmpNewt_checkresult.check_id = tmpGuidId;
                                    tmpNewt_checkresult.check_date = m1odelchecktime1.paramvalue;
                                    tmpNewt_checkresult.user_no = "";// Program._serverIP; //"";//点检
                                    tmpNewt_checkresult.user_nm = "";//tmpStrRFID;
                                    tmpNewt_checkresult.status = 1; //1表示正常点检  0表示报警点检
                                    tmpNewt_checkresult.checktype = 0;//1表示手动点检  0手动点检

                                    tmpNewt_checkresult.remark = "";// "手动点检:" + m1odelchecktime1.paramvalue + ",收到 RFID:" + item.rfid_no;

                                    tmpNewt_checkresult.addtime = DateTime.Now;
                                    tmpNewt_checkresult.adduser = Program._serverIP;
                                    tmpNewt_checkresult.updtime = DateTime.Now;
                                    tmpNewt_checkresult.upduser = Program._serverIP;

                                    db.t_checkresult.Add(tmpNewt_checkresult);
                                    foreach (var item in m2odelofStockDetails2)
                                    {
                                        var tmpNewt_checkdetailresult = new t_checkdetailresult();

                                        #region 明细表
                                        //明细表
                                        tmpNewt_checkdetailresult.check_id = tmpGuidId;
                                        tmpNewt_checkdetailresult.out_item_no = "1";
                                        tmpNewt_checkdetailresult.rfid_no = item.rfid_no;

                                        tmpNewt_checkdetailresult.prdct_no = item.prdct_no;
                                        tmpNewt_checkdetailresult.receiptNo = item.receiptNo;
                                        tmpNewt_checkdetailresult.qty = item.qty;
                                        tmpNewt_checkdetailresult.nwet = item.nwet;
                                        tmpNewt_checkdetailresult.gwet = item.gwet;

                                        tmpNewt_checkdetailresult.cell_no = item.shelf_no;
                                        tmpNewt_checkdetailresult.remark = "";// "手动点检:" + m1odelchecktime1.paramvalue + ",收到 RFID:" + item.rfid_no;

                                        tmpNewt_checkdetailresult.addtime = DateTime.Now;
                                        tmpNewt_checkdetailresult.adduser = Program._serverIP;//Program._serverIP;
                                        tmpNewt_checkdetailresult.updtime = DateTime.Now;
                                        tmpNewt_checkdetailresult.upduser = Program._serverIP;

                                        #endregion
                                        if (Program._checkCurrRfid.Keys.Contains(item.rfid_no))
                                        {

                                            tmpNewt_checkdetailresult.status = 0;//0:正常,1:点检报警,2:补点
                                            db.t_checkdetailresult.Add(tmpNewt_checkdetailresult);

                                        }
                                        else
                                        {
                                            //点检报警
                                            #region 明细表

                                            tmpNewt_checkdetailresult.status = 1;//0:正常,1:点检报警,2:补点
                                            db.t_checkdetailresult.Add(tmpNewt_checkdetailresult);
                                            #endregion

                                            #region 报警
                                            //报警
                                            var tmpNewAlerm = new t_alarmdata();
                                            tmpNewAlerm.recd_id = tmpGuidId + "R" + item.rfid_no;
                                            tmpNewAlerm.alarm_type = "Alarm_05";
                                            tmpNewAlerm.depot_no = "";// _tmpPreCheckTime;
                                            tmpNewAlerm.cell_no = item.shelf_no;//tmpRfidShelf;
                                            tmpNewAlerm.begin_time = DateTime.Now;
                                            tmpNewAlerm.over_time = DateTime.Now;
                                            tmpNewAlerm.param1 = m1odelchecktime1.paramvalue;
                                            tmpNewAlerm.param2 = item.rfid_no;
                                            tmpNewAlerm.remark = "";//"手动点检报警:RFID:" + item.rfid_no + ",仓位号:" + item.shelf_no + ",没有点检到。点检时间:" + m1odelchecktime1.paramvalue;
                                            tmpNewAlerm.status = 1;
                                            tmpNewAlerm.addtime = DateTime.Now;
                                            tmpNewAlerm.adduser = Program._serverIP;
                                            tmpNewAlerm.updtime = DateTime.Now;
                                            tmpNewAlerm.upduser = Program._serverIP;
                                            db.t_alarmdata.Add(tmpNewAlerm);

                                            Program.saveLog("手动点检报警", "2手动点检报警:" + m1odelchecktime1.paramvalue, 3, 1);
                                            logger.DebugFormat("********手动点检报警 保存完成。RFID:{0}.仓位号:{1}.", item.rfid_no, item.shelf_no);

                                            #endregion

                                        }
                                    }
                                    //change flag;
                                    m1odelchecktime1.paramtype = 0;
                                    var saveflag2 = db.SaveChanges();
                                    if (saveflag2 > 0)
                                    {
                                        Program.saveLog("手动点检", "2手动点检标记更新:" + m1odelchecktime1.paramvalue, 3, 1);

                                        logger.DebugFormat("********手动点检标记 更新完成。{0}.", m1odelchecktime1.paramvalue);

                                    }
                                    else
                                    {
                                        Program.saveLog("手动点检", "2手动点检标记更新:" + m1odelchecktime1.paramvalue, 3, 0);

                                        logger.DebugFormat("********手动点检标记 更新失败。{0}.", m1odelchecktime1.paramvalue);
                                    }
                                }
                                #endregion
                                //end
                                Program._checkCurrRfid.Clear();
                                Program._checkCount = 0;
                                break;
                            default:
                                break;
                        }

                    }
                    else
                    {
                        Program._checkCurrRfid.Clear();
                        Program._checkCount = 0;
                    }
                }
            }
            catch (Exception ex)
            {
                logger.ErrorFormat("######运行出错误:{0}", ex);
            }
        }