예제 #1
0
        /// <summary>
        /// 获取所有RFID类型的吊牌数据
        /// </summary>
        /// <returns></returns>
        public static List <HLATagInfo> GetAllRfidHlaTagList()
        {
            string    sql   = "SELECT * FROM dbo.taginfo WHERE ISNULL(RFID_EPC,'')!=''";
            DataTable table = DBHelper.GetTable(sql, false);

            if (table != null && table.Rows.Count > 0)
            {
                List <HLATagInfo> list = new List <HLATagInfo>();
                foreach (DataRow row in table.Rows)
                {
                    HLATagInfo item = new HLATagInfo();
                    item.MATNR        = row["MATNR"].ToString();
                    item.BARCD        = row["BARCD"].ToString();
                    item.BARCD_ADD    = row["BARCD_ADD"].ToString();
                    item.BARDL        = row["BARDL"].ToString();
                    item.CHARG        = row["CHARG"].ToString();
                    item.Id           = long.Parse(row["Id"].ToString());
                    item.RFID_ADD_EPC = row["RFID_ADD_EPC"].ToString();
                    item.RFID_EPC     = row["RFID_EPC"].ToString();
                    list.Add(item);
                }
                return(list);
            }

            return(null);
        }
예제 #2
0
        string getBarAdd(string bar, out string pin, out string se, out string gui)
        {
            pin = "";
            se  = "";
            gui = "";
            TagDetailInfo ti = tagDetailList.FirstOrDefault(i => i.BARCD == bar);

            if (ti != null)
            {
                pin = ti.ZSATNR;
                se  = ti.ZCOLSN;
                gui = ti.ZSIZTX;
                return(ti.BARCD_ADD);
            }
            HLATagInfo t = hlaTagList.FirstOrDefault(i => i.BARCD == bar);

            if (t != null)
            {
                MaterialInfo mi = materialList.FirstOrDefault(i => i.MATNR == t.MATNR);
                if (mi != null)
                {
                    pin = mi.ZSATNR;
                    se  = mi.ZCOLSN;
                    gui = mi.ZSIZTX;
                }
                return(t.BARCD_ADD);
            }
            return("");
        }
예제 #3
0
        /// <summary>
        /// 获取吊牌详细信息
        /// </summary>
        /// <param name="epc"></param>
        /// <returns></returns>
        private TagDetailInfo getTagDetailInfoByEpc(string epc)
        {
            if (string.IsNullOrEmpty(epc) || epc.Length < 20)
            {
                return(null);
            }
            string     rfidEpc    = epc.Substring(0, 14) + "000000";
            string     rfidAddEpc = rfidEpc.Substring(0, 14);
            HLATagInfo tag        = null;

            if (tagList.ContainsKey(rfidEpc))
            {
                tag = tagList[rfidEpc];
            }
            if (tag == null && tagList.ContainsKey(rfidAddEpc))
            {
                tag = tagList[rfidAddEpc];
            }
            if (tag == null)
            {
                return(null);
            }
            else
            {
                MaterialInfo mater = materialList.ContainsKey(tag.MATNR) ? materialList[tag.MATNR] : null;
                if (mater == null)
                {
                    return(null);
                }
                else
                {
                    TagDetailInfo item = new TagDetailInfo();
                    item.RFID_EPC     = tag.RFID_EPC;
                    item.RFID_ADD_EPC = tag.RFID_ADD_EPC;
                    item.CHARG        = tag.CHARG;
                    item.MATNR        = tag.MATNR;
                    item.BARCD        = tag.BARCD;
                    item.ZSATNR       = mater.ZSATNR;
                    item.ZCOLSN       = mater.ZCOLSN;
                    item.ZSIZTX       = mater.ZSIZTX;
                    item.PXQTY        = mater.PXQTY;
                    item.EPC          = epc;
                    //判断是否为辅条码epc
                    if (rfidEpc == item.RFID_EPC)
                    {
                        item.IsAddEpc = false;
                    }
                    else
                    {
                        item.IsAddEpc = true;
                    }
                    return(item);
                }
            }
        }
예제 #4
0
        /// <summary>
        /// 获取吊牌详细信息
        /// </summary>
        /// <param name="epc"></param>
        /// <returns></returns>
        public static TagDetailInfo GetTagDetailInfoByEpc(string epc)
        {
            if (string.IsNullOrEmpty(epc) || epc.Length < 20)
            {
                return(null);
            }

            List <HLATagInfo>   tagList      = Cache.Instance[CacheKey.TAG] as List <HLATagInfo>;
            List <MaterialInfo> materialList = Cache.Instance[CacheKey.MATERIAL] as List <MaterialInfo>;
            string     rfidEpc    = epc.Substring(0, 14) + "000000";
            string     rfidAddEpc = rfidEpc.Substring(0, 14);
            HLATagInfo tag        = tagList != null?tagList.FirstOrDefault(i => i.RFID_EPC == rfidEpc || i.RFID_ADD_EPC == rfidAddEpc) : null;

            if (tag == null)
            {
                return(null);
            }
            else
            {
                MaterialInfo mater = materialList != null?materialList.FirstOrDefault(i => i.MATNR == tag.MATNR) : null;

                if (mater == null)
                {
                    return(null);
                }
                else
                {
                    TagDetailInfo item = new TagDetailInfo();
                    item.EPC          = epc;
                    item.RFID_EPC     = tag.RFID_EPC;
                    item.RFID_ADD_EPC = tag.RFID_ADD_EPC;
                    item.CHARG        = tag.CHARG;
                    item.MATNR        = tag.MATNR;
                    item.BARCD        = tag.BARCD;
                    item.ZSATNR       = mater.ZSATNR;
                    item.ZCOLSN       = mater.ZCOLSN;
                    item.ZSIZTX       = mater.ZSIZTX;
                    item.PXQTY        = mater.PXQTY;

                    //判断是否为辅条码epc
                    if (rfidEpc == item.RFID_EPC)
                    {
                        item.IsAddEpc = false;
                    }
                    else
                    {
                        item.IsAddEpc = true;
                    }
                    return(item);
                }
            }
        }
예제 #5
0
        string getBarAdd(string bar)
        {
            TagDetailInfo ti = tagDetailList.FirstOrDefault(i => i.BARCD == bar);

            if (ti != null)
            {
                return(ti.BARCD_ADD);
            }
            HLATagInfo t = hlaTagList.FirstOrDefault(i => i.BARCD == bar);

            if (t != null)
            {
                return(t.BARCD_ADD);
            }
            return("");
        }
예제 #6
0
        public TagDetailInfo GetTagDetailInfoByBar(string bar)
        {
            if (string.IsNullOrEmpty(bar))
            {
                return(null);
            }
            if (hlaTagList == null || materialList == null)
            {
                return(null);
            }
            List <HLATagInfo> tags = hlaTagList.FindAll(i => i.BARCD.ToUpper() == bar.ToUpper() || (i.BARCD_ADD.ToUpper() == bar.ToUpper()));

            if (tags == null || tags.Count == 0)
            {
                return(null);
            }
            else
            {
                HLATagInfo   tag   = tags.First();
                MaterialInfo mater = materialList.FirstOrDefault(i => i.MATNR == tag.MATNR);
                if (mater == null)
                {
                    return(null);
                }
                else
                {
                    TagDetailInfo item = new TagDetailInfo();
                    item.EPC          = "";
                    item.RFID_EPC     = tag.RFID_EPC;
                    item.RFID_ADD_EPC = tag.RFID_ADD_EPC;
                    item.CHARG        = tag.CHARG;
                    item.MATNR        = tag.MATNR;
                    item.BARCD        = tag.BARCD;
                    item.BARCD_ADD    = tag.BARCD_ADD;

                    item.ZSATNR     = mater.ZSATNR;
                    item.ZCOLSN     = mater.ZCOLSN;
                    item.ZSIZTX     = mater.ZSIZTX;
                    item.ZCOLSN_WFG = mater.ZCOLSN_WFG;
                    item.PXQTY      = mater.PXQTY;
                    item.PXQTY_FH   = mater.PXQTY_FH;
                    item.PACKMAT    = mater.PXMAT;
                    item.PACKMAT_FH = mater.PXMAT_FH;
                    item.PUT_STRA   = mater.PUT_STRA;
                    item.BRGEW      = mater.BRGEW;
                    item.MAKTX      = mater.MAKTX;

                    if (bar.ToUpper() == item.BARCD.ToUpper())
                    {
                        item.IsAddEpc = false;
                    }
                    else
                    {
                        item.IsAddEpc = true;
                    }
                    item.LIFNRS = new List <string>();
                    foreach (HLATagInfo t in tags)
                    {
                        if (!string.IsNullOrEmpty(t.LIFNR))
                        {
                            if (!item.LIFNRS.Contains(t.LIFNR))
                            {
                                item.LIFNRS.Add(t.LIFNR);
                            }
                        }
                    }
                    return(item);
                }
            }
        }
예제 #7
0
        public TagDetailInfo GetTagDetailInfoByEpc(string epc)
        {
            if (string.IsNullOrEmpty(epc) || epc.Length < 20)
            {
                return(null);
            }
            string rfidEpc    = epc.Substring(0, 14) + "000000";
            string rfidAddEpc = rfidEpc.Substring(0, 14);

            if (hlaTagList == null || materialList == null)
            {
                return(null);
            }
            List <HLATagInfo> tags = hlaTagList.FindAll(i => i.RFID_EPC == rfidEpc || i.RFID_ADD_EPC == rfidAddEpc);

            if (tags == null || tags.Count == 0)
            {
                return(null);
            }
            else
            {
                HLATagInfo   tag   = tags.First();
                MaterialInfo mater = materialList.FirstOrDefault(i => i.MATNR == tag.MATNR);
                if (mater == null)
                {
                    return(null);
                }
                else
                {
                    TagDetailInfo item = new TagDetailInfo();
                    item.EPC          = epc;
                    item.RFID_EPC     = tag.RFID_EPC;
                    item.RFID_ADD_EPC = tag.RFID_ADD_EPC;
                    item.CHARG        = tag.CHARG;
                    item.MATNR        = tag.MATNR;
                    item.BARCD        = tag.BARCD;
                    item.BARCD_ADD    = tag.BARCD_ADD;

                    item.ZSATNR     = mater.ZSATNR;
                    item.ZCOLSN     = mater.ZCOLSN;
                    item.ZSIZTX     = mater.ZSIZTX;
                    item.ZCOLSN_WFG = mater.ZCOLSN_WFG;
                    item.PXQTY      = mater.PXQTY;
                    item.PXQTY_FH   = mater.PXQTY_FH;
                    item.PACKMAT    = mater.PXMAT;
                    item.PACKMAT_FH = mater.PXMAT_FH;
                    item.PUT_STRA   = mater.PUT_STRA;
                    item.BRGEW      = mater.BRGEW;
                    item.MAKTX      = mater.MAKTX;

                    if (rfidEpc == item.RFID_EPC)
                    {
                        item.IsAddEpc = false;
                    }
                    else
                    {
                        item.IsAddEpc = true;
                    }
                    item.LIFNRS = new List <string>();
                    foreach (HLATagInfo t in tags)
                    {
                        if (!string.IsNullOrEmpty(t.LIFNR))
                        {
                            if (!item.LIFNRS.Contains(t.LIFNR))
                            {
                                item.LIFNRS.Add(t.LIFNR);
                            }
                        }
                    }
                    return(item);
                }
            }
        }
예제 #8
0
        public List <CTagSumDif> duibi(List <CMatQty> std)
        {
            List <CTagSumDif> re = new List <CTagSumDif>();

            if (std != null && std.Count > 0)
            {
                List <string> matList = tagDetailList.Select(i => i.MATNR).Distinct().ToList();
                foreach (var v in matList)
                {
                    TagDetailInfo ti = tagDetailList.FirstOrDefault(i => i.MATNR == v);

                    if (std.Exists(i => i.mat == v))
                    {
                        bool       hasAdd = !string.IsNullOrEmpty(ti.BARCD_ADD);
                        int        stdQty = std.First(i => i.mat == v).qty;
                        CTagSumDif d      = new CTagSumDif(ti.MATNR, ti.BARCD, ti.BARCD_ADD, ti.ZSATNR, ti.ZCOLSN, ti.ZSIZTX
                                                           , tagDetailList.Count(i => i.MATNR == v && !i.IsAddEpc), tagDetailList.Count(i => i.MATNR == v && i.IsAddEpc)
                                                           , tagDetailList.Count(i => i.MATNR == v && !i.IsAddEpc) - stdQty
                                                           , tagDetailList.Count(i => i.MATNR == v && i.IsAddEpc) - (hasAdd ? stdQty : 0));
                        re.Add(d);
                    }
                    else
                    {
                        CTagSumDif d = new CTagSumDif(ti.MATNR, ti.BARCD, ti.BARCD_ADD, ti.ZSATNR, ti.ZCOLSN, ti.ZSIZTX
                                                      , tagDetailList.Count(i => i.MATNR == v && !i.IsAddEpc), tagDetailList.Count(i => i.MATNR == v && i.IsAddEpc)
                                                      , tagDetailList.Count(i => i.MATNR == v && !i.IsAddEpc), tagDetailList.Count(i => i.MATNR == v && i.IsAddEpc));
                        re.Add(d);
                    }
                }

                foreach (var v in std)
                {
                    if (!matList.Exists(i => i == v.mat))
                    {
                        MaterialInfo mi     = materialList.FirstOrDefault(i => i.MATNR == v.mat);
                        HLATagInfo   ti     = hlaTagList.FirstOrDefault(i => i.MATNR == v.mat);
                        bool         hasAdd = false;
                        if (ti != null && !string.IsNullOrEmpty(ti.BARCD_ADD))
                        {
                            hasAdd = true;
                        }
                        CTagSumDif d = new CTagSumDif(v.mat, ti != null ? ti.BARCD : "", ti != null ? ti.BARCD_ADD : ""
                                                      , mi != null ? mi.ZSATNR : "", mi != null ? mi.ZCOLSN : "", mi != null ? mi.ZSIZTX : ""
                                                      , 0, 0
                                                      , 0 - v.qty, 0 - (hasAdd ? v.qty : 0));
                        re.Add(d);
                    }
                }
            }
            else
            {
                List <string> matList = tagDetailList.Select(i => i.MATNR).Distinct().ToList();
                foreach (var v in matList)
                {
                    TagDetailInfo ti = tagDetailList.FirstOrDefault(i => i.MATNR == v);

                    CTagSumDif d = new CTagSumDif(ti.MATNR, ti.BARCD, ti.BARCD_ADD, ti.ZSATNR, ti.ZCOLSN, ti.ZSIZTX
                                                  , tagDetailList.Count(i => i.MATNR == v && !i.IsAddEpc), tagDetailList.Count(i => i.MATNR == v && i.IsAddEpc)
                                                  , tagDetailList.Count(i => i.MATNR == v && !i.IsAddEpc), tagDetailList.Count(i => i.MATNR == v && i.IsAddEpc));
                    re.Add(d);
                }
            }

            return(re);
        }
예제 #9
0
        private void dateMatTagButton_Click(object sender, EventArgs e)
        {
            matProgressBar.Value = 0;

            if (eDateTime.Value.Date < sDateTime.Value.Date)
            {
                matLogLabel.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + "结束日期必须大于等于开始日期";
                return;
            }

            dateMatTagButton.Enabled = false;

            new Thread(new ThreadStart(() =>
            {
                List <HLATagInfo> tagList = SAPDataService.GetHLATagInfoListByDate(SysConfig.LGNUM, sDateTime.Value.Date.ToString("yyyyMMdd"), eDateTime.Value.Date.ToString("yyyyMMdd"));

#if DEBUG
                HLATagInfo t = tagList.FirstOrDefault(i => i.MATNR == "HTXAD1R088A88014");
#endif

                if (tagList == null)
                {
                    matLogLabel.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + "下载出错";
                    return;
                }

                Invoke(new Action(() => { matProgressBar.Maximum = tagList.Count; }));

                int tagFailCount = 0;
                foreach (HLATagInfo tag in tagList)
                {
                    Invoke(new Action(() => { matProgressBar.Value++; }));
                    if (!string.IsNullOrEmpty(tag.RFID_EPC))
                    {
                        if (!LocalDataService.SaveTagInfo(tag))
                        {
                            tagFailCount++;
                        }
                    }
                }

                string log = string.Format("下载吊牌{0}条,同步失败{1}条"
                                           , tagList.Count, tagFailCount);

                Invoke(new Action(() =>
                {
                    matLogLabel.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + log;
                    if (tagFailCount > 0)
                    {
                        matLogLabel.BackColor = Color.Red;
                    }
                    else
                    {
                        matLogLabel.BackColor = Color.White;
                    }
                }));


                Invoke(new Action(() =>
                {
                    dateMatTagButton.Enabled = true;
                }));
            })).Start();
        }