Пример #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            string   queryValue = this.textBox1.Text;
            CodeRule codeR      = codeRuleService.queryRuleById(queryValue);

            if (codeR != null)
            {
                this.textBox2.Text            = codeR.RuleDesc;
                this.textBox3.Text            = codeR.Opuser;
                this.textBox4.Text            = codeR.Createtime;
                this.dataGridView1.DataSource = codeR.RuleItem;


                //DGV 改變列名,列寬
                this.dataGridView1.Columns[0].Visible    = false;
                this.dataGridView1.Columns[0].Width      = 0;
                this.dataGridView1.Columns[1].HeaderText = "規則編號";
                this.dataGridView1.Columns[1].Width      = 80;
                this.dataGridView1.Columns[2].HeaderText = "流水編號";
                this.dataGridView1.Columns[2].Width      = 80;
                this.dataGridView1.Columns[3].HeaderText = "規則類型";
                this.dataGridView1.Columns[3].Width      = 80;
                this.dataGridView1.Columns[4].HeaderText = "規則值";
                this.dataGridView1.Columns[4].Width      = 80;
                this.dataGridView1.Columns[5].HeaderText = "規則長度";
                this.dataGridView1.Columns[5].Width      = 80;
                this.dataGridView1.Columns[6].HeaderText = "操作用戶";
                this.dataGridView1.Columns[6].Width      = 80;
                this.dataGridView1.Columns[7].HeaderText = "創建時間";
                this.dataGridView1.Columns[7].Width      = 140;
                this.dataGridView1.Columns[8].HeaderText = "修改時間";
                this.dataGridView1.Columns[8].Width      = 140;
                this.dataGridView1.Columns[9].Visible    = false;
                this.dataGridView1.Columns[9].Width      = 0;
            }
        }
Пример #2
0
        public static String gennerateQualityNo(string ruleNo)
        {
            StringBuilder qualityNo = new StringBuilder();
            CodeRule      codeRule  = codeRuleService.queryRuleById(ruleNo);

            if (codeRule != null)
            {
                foreach (RuleItem ruleItem in codeRule.RuleItem)
                {
                    int ruleInt = ruleItem.Rulelength;
                    switch (ruleItem.Ruletype)
                    {
                    case "T001":

                        break;

                    case "T002":
                        qualityNo.Append(GenerateTimeCode(ruleInt));
                        break;

                    case "T003":

                        break;

                    case "T004":
                        break;

                    case "T005":
                        break;

                    case "T006":            //流水碼34進制
                        break;

                    case "T007":
                        qualityNo.Append(ruleItem.Rulevalue);
                        break;

                    case "T008":
                        break;

                    case "T009":
                        //机种号3-7位
                        break;

                    case "T010":
                        break;

                    case "T011":
                        //流水码十六进制
                        string maxQualityNo    = qualityInfoService.queryMaxQualityNo(qualityNo.ToString());
                        string prefixQualityNo = qualityNo.ToString();
                        if (maxQualityNo == null || maxQualityNo == "")
                        {
                            string seqCode = "1";
                            for (int numLength = seqCode.Length; numLength < Convert.ToInt32(ruleItem.Rulelength); numLength++)
                            {
                                seqCode = "0" + seqCode;
                            }
                            qualityNo.Append(seqCode);
                        }
                        else
                        {
                            //獲取流水號
                            string subCode       = maxQualityNo.Substring(prefixQualityNo.Length, Convert.ToInt32(ruleItem.Rulelength));
                            int    qualitySeq    = convert16CodeTo10(subCode);
                            string quality16Code = Convert16Code(qualitySeq + 1);
                            string seqNo         = "";
                            for (int i = quality16Code.Length; i < Convert.ToInt32(ruleItem.Rulelength); i++)
                            {
                                seqNo += 0;
                            }
                            quality16Code = seqNo + quality16Code;
                            qualityNo.Append(quality16Code);
                        }
                        break;

                    case "T012":                    //43码
                        String prefix = qualityNo.ToString();
                        int    modNum = 0;
                        foreach (char result in prefix.ToCharArray())
                        {
                            string exchangeInt = result.ToString();
                            int    numExchange = inverseBase43Code[exchangeInt];
                            modNum += numExchange;
                        }
                        int    modReuslt = modNum % 43;
                        string modString = base43Code[modReuslt];
                        qualityNo.Append(modString);
                        break;

                    case "T013":                    //十進制流水碼
                        string maxQuality10    = qualityInfoService.queryMaxQualityNo(qualityNo.ToString());
                        string prefixQuality10 = qualityNo.ToString();
                        if (maxQuality10 == null || maxQuality10 == "")
                        {
                            string seqCode = "1";
                            for (int numLength = seqCode.Length; numLength < Convert.ToInt32(ruleItem.Rulelength); numLength++)
                            {
                                seqCode = "0" + seqCode;
                            }
                            qualityNo.Append(seqCode);
                        }
                        else
                        {
                            //獲取流水號
                            string subCode10     = maxQuality10.Substring(prefixQuality10.Length, Convert.ToInt32(ruleItem.Rulelength));
                            int    qualitySeq10  = int.Parse(subCode10);
                            string quality10Code = (qualitySeq10 + 1).ToString();
                            string seqNo         = "";
                            for (int i = quality10Code.Length; i < Convert.ToInt32(ruleItem.Rulelength); i++)
                            {
                                seqNo += 0;
                            }
                            quality10Code = seqNo + quality10Code;
                            qualityNo.Append(quality10Code);
                        }

                        break;

                    case "T015":                    //年月日進制表示
                        qualityNo.Append(getInsuprTime());
                        break;

                    case "T016":                            //浪潮批次号
                        break;

                    case "T017":                    //批次号
                        break;

                    case "T018":                    //年月日進制表示
                        StringBuilder h3cTime       = new StringBuilder();
                        string        h3cYearString = DateTime.Now.Year.ToString();
                        int           h3cYearInt    = int.Parse(h3cYearString.Substring(h3cYearString.Length - 2)); //獲取兩位年
                        int           h3cInt        = DateTime.Now.Month;
                        string        h3cDD         = DateTime.Now.ToString("dd");                                  //获得两位日
                        h3cTime.Append(h3cYearInt);
                        h3cTime.Append(Base33Code[h3cInt]);
                        h3cTime.Append(h3cDD);
                        qualityNo.Append(h3cTime.ToString());

                        break;

                    case "T019":                    //工单十进制流水
                        break;

                    case "T020":

                        break;
                    }
                }
            }
            return(qualityNo.ToString());
        }
Пример #3
0
        public List <CTCode> generateCTNumber(CTCode ctCodeInfo, int printQty, DateTime currentTime)
        {
            bool          judgeSerial = false;                                      //判断是否需要流水号
            List <CTCode> listCode    = new List <CTCode>();
            StringBuilder ctCode      = new StringBuilder();
            CodeRule      codeRule    = codeRuleService.queryRuleById(ctCodeInfo.Ruleno);

            if (codeRule != null)
            {
                foreach (RuleItem ruleItem in codeRule.RuleItem)
                {
                    int ruleInt = ruleItem.Rulelength;
                    switch (ruleItem.Ruletype)
                    {
                    case "T001":
                        string poOrWorkNo = "";
                        if (ctCodeInfo.Cuspo != null && ctCodeInfo.Cuspo != "")
                        {
                            poOrWorkNo = ctCodeInfo.Cuspo;
                        }
                        else
                        {
                            poOrWorkNo = ctCodeInfo.Workno;
                        }
                        if (listCode.Count > 1)
                        {
                            for (int i = 0; i < listCode.Count; i++)
                            {
                                listCode[i].Ctcode = listCode[i].Ctcode + poOrWorkNo.Substring(0, ruleInt);
                            }
                        }
                        else
                        {
                            ctCode.Append(poOrWorkNo.Substring(0, ruleInt));
                        }
                        break;

                    case "T002":
                        if (listCode.Count > 1)
                        {
                            for (int i = 0; i < listCode.Count; i++)
                            {
                                listCode[i].Ctcode = listCode[i].Ctcode + GenerateTimeCode(ruleInt, currentTime);
                            }
                        }
                        else
                        {
                            ctCode.Append(GenerateTimeCode(ruleInt, currentTime));
                        }
                        break;

                    case "T003":
                        string assistStr = "";
                        if (ctCodeInfo.Cusmatno.Length > ruleInt)
                        {
                            assistStr = ctCodeInfo.Cusmatno.Trim().Substring(0, ruleInt);
                        }
                        if (listCode.Count > 1)
                        {
                            for (int i = 0; i < listCode.Count; i++)
                            {
                                listCode[i].Ctcode = listCode[i].Ctcode + assistStr;
                            }
                        }
                        else
                        {
                            ctCode.Append(assistStr);
                        }
                        break;

                    case "T004":
                        if (ctCodeInfo.Offino.Trim().Length > ruleInt)
                        {
                            string assistT004 = ctCodeInfo.Offino.Trim().Substring(0, ruleInt);

                            if (listCode.Count > 1)
                            {
                                for (int i = 0; i < listCode.Count; i++)
                                {
                                    listCode[i].Ctcode = listCode[i].Ctcode + assistT004;
                                }
                            }
                            else
                            {
                                ctCode.Append(assistT004);
                            }
                        }
                        else
                        {
                            if (listCode.Count > 1)
                            {
                                for (int i = 0; i < listCode.Count; i++)
                                {
                                    listCode[i].Ctcode = listCode[i].Ctcode + ctCodeInfo.Offino.Trim();
                                }
                            }
                            else
                            {
                                ctCode.Append(ctCodeInfo.Offino.Trim());
                            }
                        }
                        break;

                    case "T005":
                        string assistT005 = "";
                        if (ctCodeInfo.Verno.Length > ruleInt)
                        {
                            assistT005 = ctCodeInfo.Verno.Trim().Substring(0, ruleInt);
                        }

                        if (listCode.Count >= 1)
                        {
                            for (int i = 0; i < listCode.Count; i++)
                            {
                                listCode[i].Ctcode = listCode[i].Ctcode + assistT005;
                            }
                        }
                        else
                        {
                            ctCode.Append(assistT005);
                        }
                        break;

                    case "T006":
                        judgeSerial = true;
                        string maxCode  = printM.getMaxCTCode(ctCode.ToString());
                        string prefixCT = ctCode.ToString();
                        if (maxCode == null || maxCode == "")
                        {
                            for (int i = 1; i <= printQty; i++)
                            {
                                CTCode ctCodeIn = new CTCode();
                                ctCodeIn = exchangeCT(ctCodeIn, ctCodeInfo);
                                string seqNo   = "";
                                string tempCT  = "";
                                string seqCode = Convert34Code(i);
                                for (int numLength = seqCode.Length; numLength < ruleInt; numLength++)
                                {
                                    seqNo += "0";
                                }
                                seqNo          += seqCode;
                                tempCT          = prefixCT + seqNo;
                                ctCodeIn.Ctcode = tempCT;
                                listCode.Add(ctCodeIn);
                            }
                            if (printQty == 1)
                            {
                                ctCode.Clear();
                                ctCode.Append(listCode[0].Ctcode);
                            }
                        }
                        else
                        {
                            //獲取流水號
                            string subCode = maxCode.Substring(ctCode.Length, ruleInt);
                            int    ctNo    = convert34CodeTo10(subCode);
                            for (int i = 0; i < printQty; i++)
                            {
                                CTCode ctCodeIn = new CTCode();
                                ctCodeIn = exchangeCT(ctCodeIn, ctCodeInfo);
                                ctNo++;
                                string ct34Code = Convert34Code(ctNo);
                                string temStr   = "";
                                string tempCT   = "";
                                for (int j = ct34Code.Length; j < ruleInt; j++)
                                {
                                    temStr += 0;
                                }
                                ct34Code        = temStr + ct34Code;
                                tempCT          = prefixCT + ct34Code;
                                ctCodeIn.Ctcode = tempCT;
                                listCode.Add(ctCodeIn);
                            }
                            if (printQty == 1)
                            {
                                ctCode.Clear();
                                ctCode.Append(listCode[0].Ctcode);
                            }
                        }
                        break;

                    case "T007":
                        if (listCode.Count > 1)
                        {
                            for (int i = 0; i < listCode.Count; i++)
                            {
                                listCode[i].Ctcode = listCode[i].Ctcode + ruleItem.Rulevalue;
                            }
                        }
                        else
                        {
                            ctCode.Append(ruleItem.Rulevalue);
                        }
                        break;

                    case "T008":
                        string subOperation = this.extractString(ctCodeInfo.SoOrder, ruleInt);
                        //ctCode.Append(subOperation);
                        if (listCode.Count > 1)
                        {
                            for (int i = 0; i < listCode.Count; i++)
                            {
                                listCode[i].Ctcode = listCode[i].Ctcode + subOperation;
                            }
                        }
                        else
                        {
                            ctCode.Append(subOperation);
                        }
                        break;

                    case "T013":                    //十進制流水碼
                        judgeSerial = true;
                        string maxTenCode  = printM.getMaxCTCode(ctCode.ToString());
                        string prefixTenCT = ctCode.ToString();
                        if (maxTenCode == null || maxTenCode == "")
                        {
                            for (int i = 1; i <= printQty; i++)
                            {
                                CTCode ctCodeIn = new CTCode();
                                ctCodeIn = exchangeCT(ctCodeIn, ctCodeInfo);
                                string seqNo   = "";
                                string tempCT  = "";
                                string seqCode = i.ToString();
                                for (int numLength = seqCode.Length; numLength < ruleInt; numLength++)
                                {
                                    seqNo += "0";
                                }
                                seqNo          += seqCode;
                                tempCT          = prefixTenCT + seqNo;
                                ctCodeIn.Ctcode = tempCT;
                                listCode.Add(ctCodeIn);
                            }
                            if (printQty == 1)
                            {
                                ctCode.Clear();
                                ctCode.Append(listCode[0].Ctcode);
                            }
                        }
                        else
                        {
                            //獲取流水號
                            string subCode = maxTenCode.Substring(ctCode.Length, ruleInt);
                            int    ctNo    = int.Parse(subCode);
                            for (int i = 0; i < printQty; i++)
                            {
                                CTCode ctCodeIn = new CTCode();
                                ctCodeIn = exchangeCT(ctCodeIn, ctCodeInfo);
                                ctNo++;
                                string ct34Code = ctNo.ToString();
                                string temStr   = "";
                                string tempCT   = "";
                                for (int j = ct34Code.Length; j < ruleInt; j++)
                                {
                                    temStr += 0;
                                }
                                ct34Code        = temStr + ct34Code;
                                tempCT          = prefixTenCT + ct34Code;
                                ctCodeIn.Ctcode = tempCT;
                                listCode.Add(ctCodeIn);
                            }
                            if (printQty == 1)
                            {
                                ctCode.Clear();
                                ctCode.Append(listCode[0].Ctcode);
                            }
                        }
                        break;

                    case "T014":                    //年月日進制表示
                        StringBuilder timeString = new StringBuilder();
                        string        yearString = currentTime.Year.ToString();
                        int           yearInt    = int.Parse(yearString.Substring(yearString.Length - 2)); //獲取兩位年
                        int           monthInt   = currentTime.Month;
                        int           dayInt     = currentTime.Day;
                        timeString.Append(Base31Code[yearInt]);
                        timeString.Append(Base31Code[monthInt]);
                        timeString.Append(Base31Code[dayInt]);
                        if (listCode.Count > 1)
                        {
                            for (int i = 0; i < listCode.Count; i++)
                            {
                                listCode[i].Ctcode = listCode[i].Ctcode + timeString.ToString();
                            }
                        }
                        else
                        {
                            ctCode.Append(timeString.ToString());
                        }
                        break;

                    case "T015":                    //浪潮年月日進制表示
                        if (listCode.Count > 1)
                        {
                            for (int i = 0; i < listCode.Count; i++)
                            {
                                listCode[i].Ctcode = listCode[i].Ctcode + getInsuprTime();
                            }
                        }
                        else
                        {
                            ctCode.Append(getInsuprTime());
                        }
                        break;

                    case "T016":                                                              //浪潮批次号
                        string woBatchNo  = woBatchService.getBatchNoByWO(ctCodeInfo.Workno); //查询工单批次号
                        string batchSeqNo = "1";
                        if (woBatchNo == null || woBatchNo.Equals(""))
                        {
                            string        queryCond = getInsuprTime() + "Q";
                            List <String> batchNos  = woBatchService.queryBatchNos(queryCond);
                            if (batchNos != null && batchNos.Count > 0)
                            {
                                int maxNo = 0;
                                foreach (string batch in batchNos)
                                {
                                    int tempMathNo = InverseBase34Code[batch.Substring(batch.Length - 1, 1)];
                                    if (tempMathNo > maxNo)
                                    {
                                        maxNo = tempMathNo;
                                    }
                                }
                                batchSeqNo = Base34Code[maxNo + 1];
                            }
                            if (listCode.Count > 1)
                            {
                                for (int i = 0; i < listCode.Count; i++)
                                {
                                    listCode[i].Ctcode = listCode[i].Ctcode + batchSeqNo;
                                }
                                woBatchNo = listCode[0].Ctcode;
                            }
                            else
                            {
                                ctCode.Append(batchSeqNo);
                                woBatchNo = ctCode.ToString();
                            }
                            //保存工单批次
                            WoBatch woBatch = new WoBatch();
                            woBatch.BatchNo = woBatchNo;
                            woBatch.Workno  = ctCodeInfo.Workno;
                            woBatchService.saveWoBatch(woBatch);                        //占用工单批次
                        }
                        else
                        {
                            if (listCode.Count > 1)
                            {
                                for (int i = 0; i < listCode.Count; i++)
                                {
                                    listCode[i].Ctcode = "";
                                    listCode[i].Ctcode = woBatchNo;
                                }
                            }
                            else
                            {
                                ctCode.Clear();
                                ctCode.Append(woBatchNo);
                            }
                        }

                        break;
                    }
                }
            }
            if (!judgeSerial)
            {
                for (int i = 1; i <= printQty; i++)
                {
                    CTCode ctCodeIn = new CTCode();
                    ctCodeIn        = exchangeCT(ctCodeIn, ctCodeInfo);
                    ctCodeIn.Ctcode = ctCode.ToString();
                    listCode.Add(ctCodeIn);
                }
            }
            if (printQty == 1)
            {
                listCode[0].Ctcode = ctCode.ToString();
            }
            return(listCode);
        }