/* *生成拨烟数据:101|总长度(四位)任务号(八位)订单总数量(四位)烟仓号A(两位)打几下(三位)烟仓号B(两位)打几下(三位);下一个任务号。。。 * */ public string allocateCigarStr(out String tasknums) { string retStr = "101|"; String cigarDataStr = getAllocateCigarDataFromDB(out tasknums); //计算字符串总长度 int StrLen = 4 + 4 + cigarDataStr.Length; //拼接长度串 String StrLenStr = SortingPub.formatData(StrLen.ToString(), 4); retStr = retStr + StrLenStr + cigarDataStr; return(retStr); }
/* * 从数据库取拨烟数据,任务号(八位)订单总数量(四位)烟仓号A(两位)打几下(三位)烟仓号B(两位)打几下(三位);下一个任务号。。。 * */ public string getAllocateCigarDataFromDB(out String tasknums) { string retStr = ""; tasknums = ""; ht.Clear(); //String sql = "SELECT * FROM ( SELECT rownum seq, a.* FROM (select * from t_produce_poke t WHERE T.status='10' order by to_number(tasknum)) a )WHERE seq >=1 AND seq <200"; String sql = "SELECT a.*,b.regioncode,b.taskquantity FROM t_produce_poke a,t_produce_task b WHERE a.tasknum=b.tasknum AND a.tasknum IN( SELECT tasknum FROM (select DISTINCT tasknum from t_produce_poke t WHERE T.status='10' order by tasknum) WHERE ROWNUM <4 ) and status='10' ORDER BY b.regioncode,a.tasknum"; OracleDataReader myread = DataPublic.ReadDb(sql); try { String taskNum = "", taskQty = "", troughNum = "", pokeNum = "", regioncode = ""; String taskNumTemp = ""; String export = ""; //ht = new Hashtable(); while (myread.Read()) { taskNum = myread["tasknum"].ToString().Trim(); taskQty = myread["taskquantity"].ToString().Trim(); regioncode = myread["regioncode"].ToString().Trim(); export = myread["export"].ToString().Trim(); if (export.Equals("L")) { export = "1"; } else { export = "2"; } if (!taskNumTemp.Equals(taskNum)) { tasknums += "," + taskNum; //增加一个新任务号前,判断组装的字符串长度,所有拼接后的长度不能超过4000字节。 if (retStr.Length > 3500) { break; } if (!ht_taskinfo.ContainsKey(taskNum)) { ht.Add(SortingPub.formatData(taskNum, 8), "0");//hashtable 存放任务号和0,表示未完成分拣 ht_taskinfo.Add(taskNum, regioncode + "-" + taskQty); }//存放 任务号对应的车组和任务数量 用于更新分拣数据 retStr += ";" + SortingPub.formatData(taskNum, 8) + export; retStr += SortingPub.formatData(taskQty, 4); //已经取过的更新status为15 /*临时 * troughNum = myread["troughNum"].ToString().Trim(); * pokeNum = myread["pokeNum"].ToString().Trim(); * * retStr += SortingPub.formatData(troughNum, 2); * retStr += SortingPub.formatData(pokeNum, 3); * taskNumTemp = taskNum;*/ } troughNum = myread["machineseq"].ToString().Trim(); pokeNum = myread["pokeNum"].ToString().Trim(); retStr += SortingPub.formatData(troughNum, 2); retStr += SortingPub.formatData(pokeNum, 3); taskNumTemp = taskNum; } } finally { myread.Close(); myread.Dispose(); } if (ht != null) { htSize += ht.Count; } if (retStr.Length > 0) { retStr = retStr.Substring(1) + "."; } return(retStr); }