New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading; |
| | | using DevComponents.DotNetBar.Controls; |
| | | using System.Windows.Forms; |
| | | using System.Drawing; |
| | | //using com.force.json; |
| | | using System.Data; |
| | | using System.Data.SqlClient; |
| | | |
| | | namespace WCS |
| | | { |
| | | /// <summary> |
| | | /// 回报处理线程 |
| | | /// </summary> |
| | | class UpdateThread |
| | | { |
| | | #region 画面上同步显示控件 |
| | | public ListViewEx frmdata; |
| | | delegate void SetTextCallback(string seq, string Errif, string arg_string); |
| | | #endregion |
| | | |
| | | Thread trd = null; |
| | | |
| | | public UpdateThread() |
| | | { |
| | | try |
| | | { |
| | | trd = new Thread(new ThreadStart(this.ThreadTask)); |
| | | trd.IsBackground = true; |
| | | trd.Start(); |
| | | } |
| | | catch (Exception em) |
| | | { |
| | | Common.WriteLogFile("WcsError", "UpdateThread/UpdateThread--回报线程启动出错:" + em.Message); |
| | | } |
| | | } |
| | | |
| | | #region 通讯反馈同步显示 |
| | | /// <summary> |
| | | /// 显示处理信息 |
| | | /// </summary> |
| | | /// <param name="text"></param> |
| | | private void DisplayInfo(string seq, string Errif, string arg_string) |
| | | { |
| | | if (frmdata == null) |
| | | { |
| | | return; |
| | | } |
| | | if (frmdata.InvokeRequired) |
| | | { |
| | | try |
| | | { |
| | | SetTextCallback d = new SetTextCallback(DisplayInfo); |
| | | frmdata.Invoke(d, new object[] { seq, Errif, arg_string }); |
| | | } |
| | | catch (Exception em) |
| | | { |
| | | Common.WriteLogFile("WcsError", "UpdateThread/DisplayInfo--同步回报信息失败:" + em.Message); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | add_dw_log(seq, Errif, arg_string); |
| | | if (frmdata.Items.Count > 200) |
| | | { |
| | | frmdata.Items.Clear(); ; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 添加ListView界面显示 |
| | | /// </summary> |
| | | /// <param name="le">listview</param> |
| | | /// <param name="seq">需要</param> |
| | | /// <param name="Errif">异常信息</param> |
| | | /// <param name="arg_string">显示内容</param> |
| | | public void add_dw_log(string seq, string Errif, string arg_string) |
| | | { |
| | | try |
| | | { |
| | | ListViewItem lvi = new ListViewItem(); |
| | | lvi.SubItems[0].Text = "【" + DateTime.Now.ToString() + "】" + seq + arg_string; |
| | | if (Errif == "N") |
| | | { |
| | | lvi.ForeColor = Color.Black; |
| | | } |
| | | else if (Errif == "E") |
| | | { |
| | | lvi.ForeColor = Color.Red; |
| | | } |
| | | else if (Errif == "P") |
| | | { |
| | | lvi.ForeColor = Color.Blue; |
| | | } |
| | | frmdata.Items.Add(lvi); |
| | | frmdata.EnsureVisible(frmdata.Items.Count - 1); |
| | | } |
| | | catch (Exception em) |
| | | { |
| | | ListViewItem lvi = new ListViewItem(); |
| | | lvi.SubItems[0].Text = "【" + DateTime.Now.ToString() + "】" + seq + arg_string + "异常:" + em.Message; |
| | | frmdata.Items.Add(lvi); |
| | | Common.WriteLogFile("WcsError", "UpdateThread/add_dw_log--回报添加界面显示出错:" + em.Message); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region 业务处理 |
| | | /// <summary> |
| | | /// 生成出库工作档 |
| | | /// </summary> |
| | | public void ProcOutToWorkData(string seq) |
| | | { |
| | | string ls_locno = ""; |
| | | string ls_error_memo = "", sql = ""; |
| | | int li_wrkno = 0, li_io_type = 0, li_stnNo = 0, li_e_stnNo = 0; |
| | | DateTime ldt_date = System.DateTime.Now; |
| | | double d_outQty = 0, d_stkQty = 0; |
| | | int action = 0, prnstatus = 0; |
| | | |
| | | DisplayInfo(seq, "N", " --处理出库通知档,生成出库工作档......"); |
| | | |
| | | try |
| | | { |
| | | //查找最早一条待出库库位 |
| | | sql = "select top 1 vlpla from cust_wait_pakout where status<>'Y' and nltyp<>'A01' order by status,modi_time"; |
| | | DataView dvLoc = Common.ExecAsrsSelect(sql); |
| | | if (dvLoc.Count <= 0) |
| | | { |
| | | return; |
| | | } |
| | | foreach (DataRowView drow in dvLoc) |
| | | { |
| | | ls_locno = drow[0].ToString(); |
| | | } |
| | | if (ls_locno == "") |
| | | { |
| | | return; |
| | | } |
| | | |
| | | //查询库位号是否在库状态,并查询条码号 |
| | | sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_locno + "' and loc_sts='F'"; |
| | | string barcode = ""; |
| | | DataView dv = Common.ExecAsrsSelect(sql); |
| | | if (dv.Count <= 0) |
| | | { |
| | | ls_error_memo = " " + seq + ".1 库位" + ls_locno + "不存在或非在库状态,请检查"; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | else |
| | | { |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | barcode = drow[1].ToString(); |
| | | } |
| | | } |
| | | |
| | | //根据库位号查找该库位所有出库资料 |
| | | sql = "select lgnum,tanum,tapos,matnr,maktx,werks,vsolm,meins,bname "; |
| | | sql += " from cust_wait_pakout where status<>'Y' and nltyp<>'A01' and vlpla='" + ls_locno + "' order by status,modi_time"; |
| | | dv = Common.ExecAsrsSelect(sql); |
| | | if (dv.Count <= 0) |
| | | { |
| | | return; |
| | | } |
| | | li_wrkno = Common.GetWrkno(0); |
| | | string sqlDetl = "", sqlWaitIn = ""; |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | string lgnum = drow[0].ToString(); |
| | | string tanum = drow[1].ToString(); |
| | | string tapos = drow[2].ToString(); |
| | | string matnr = drow[3].ToString(); |
| | | string maktx = drow[4].ToString(); |
| | | string werks = drow[5].ToString(); |
| | | string vsolm = drow[6].ToString(); |
| | | string meins = drow[7].ToString(); |
| | | string bname = drow[8].ToString(); |
| | | sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname,zpallet) "; |
| | | sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", "; |
| | | sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "','" + barcode + "');"; |
| | | sqlWaitIn += " update cust_wait_pakout set status='Y' where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + " and vlpla=" + ls_locno + ";"; |
| | | d_outQty += double.Parse(vsolm); |
| | | } |
| | | DisplayInfo("", "P", " " + seq + ".2 正在处理待出库资料!库位:" + ls_locno); |
| | | |
| | | //查询库位号对应库存明细总数量 |
| | | sql = "select sum(anfme) from asr_loc_detl where loc_no='" + ls_locno + "' "; |
| | | dv = Common.ExecAsrsSelect(sql); |
| | | if (dv.Count <= 0) |
| | | { |
| | | ls_error_memo = " " + seq + ".3 库位" + ls_locno + "没有库存明细,请检查"; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | else |
| | | { |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | d_stkQty += double.Parse(drow[0].ToString()); |
| | | } |
| | | } |
| | | |
| | | int li_crnrow = int.Parse(ls_locno.Substring(0, 2)); |
| | | int li_crnno = (li_crnrow + 1) / 2; |
| | | string new_loc_sts = ""; |
| | | if (d_outQty < d_stkQty) |
| | | { |
| | | li_io_type = 103; |
| | | new_loc_sts = "P"; |
| | | li_e_stnNo = 4; |
| | | li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo); |
| | | action = 2; //单独打印 |
| | | //prnstatus = 0; //默认等待,拣料站更新 |
| | | } |
| | | else if (d_outQty == d_stkQty) |
| | | { |
| | | li_io_type = 101; |
| | | new_loc_sts = "R"; |
| | | li_e_stnNo = 13; |
| | | li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo); |
| | | action = 3; //既打印又确认 |
| | | //prnstatus = 0; //默认等待,拣料站更新 |
| | | } |
| | | else |
| | | { |
| | | ls_error_memo = " " + seq + ".4 库位" + ls_locno + "通知出库数量超出库存数量,请检查"; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | |
| | | sqlWaitIn = sqlWaitIn.Replace("update cust_wait_pakout set", "update cust_wait_pakout set action=" + action + ","); |
| | | |
| | | sql = sqlDetl; |
| | | sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) "; |
| | | sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_locno + "', "; |
| | | sql += " " + li_e_stnNo + "," + li_stnNo + ",'" + barcode + "'); "; |
| | | sql += " update asr_loc_mast set loc_sts='" + new_loc_sts + "' where loc_no='" + ls_locno + "'; "; |
| | | sql += sqlWaitIn; |
| | | SqlConnection sqlconn = new SqlConnection(Common.sqlcon); |
| | | sqlconn.Open(); |
| | | SqlTransaction sqltrans = sqlconn.BeginTransaction(); |
| | | SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); |
| | | sqlcmd.Transaction = sqltrans; |
| | | try |
| | | { |
| | | sqlcmd.ExecuteNonQuery(); |
| | | sqltrans.Commit(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | //sqlcommon.Close(); |
| | | ls_error_memo = " " + seq + ".4 插入工作主档[asr_wrk_mast]错误 !库位:" + ls_locno + " 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | finally |
| | | { |
| | | sqlcmd.Dispose(); |
| | | sqlconn.Dispose(); |
| | | } |
| | | return; |
| | | |
| | | re: |
| | | sql = "update cust_wait_pakout set status='X',action=" + action + ",modi_time='" + ldt_date + "' where vlpla='" + ls_locno + "'"; |
| | | bool result = Common.ExecAsrsModify(sql); |
| | | if (!result) |
| | | { |
| | | ls_error_memo = " " + seq + ".5 更新出库档失败!库位:" + ls_locno; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | catch (Exception em) |
| | | { |
| | | ls_error_memo = " " + seq + ".6 处理待处理档生成出库工作档失败:" + em.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 生成库位调整工作档 |
| | | /// </summary> |
| | | public void ProcLocToWorkData(string seq) |
| | | { |
| | | string ls_slocno = "", ls_dlocno = ""; |
| | | string ls_error_memo = "", sql = ""; |
| | | int li_wrkno = 0, li_io_type = 0, li_stnNo = 0, li_e_stnNo = 0; |
| | | DateTime ldt_date = System.DateTime.Now; |
| | | double d_outQty = 0, d_stkQty = 0; |
| | | |
| | | DisplayInfo(seq, "N", " --处理出库通知档,生成出库工作档......"); |
| | | |
| | | try |
| | | { |
| | | //查找最早一条待出库库位 |
| | | sql = "select top 1 vlpla,nlpla from cust_wait_pakout where status<>'Y' and nltyp='A01' order by status,modi_time"; |
| | | DataView dvLoc = Common.ExecAsrsSelect(sql); |
| | | if (dvLoc.Count <= 0) |
| | | { |
| | | return; |
| | | } |
| | | foreach (DataRowView drow in dvLoc) |
| | | { |
| | | ls_slocno = drow[0].ToString(); |
| | | ls_dlocno = drow[1].ToString(); |
| | | } |
| | | if (ls_slocno == "" || ls_dlocno=="") |
| | | { |
| | | ls_error_memo = " " + seq + ".1 出库通知档源库位为空[cust_wait_pakout]错误 !库位:" + ls_slocno; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | |
| | | //查询目标库位状态,如果为空表示库位已转,如果在库表示源库位出库,目标库位并板,如果不在库,则报警停止执行 |
| | | string loc_sts = "", barcoded = ""; |
| | | sql = "select loc_sts,barcode from asr_loc_mast where loc_no='" + ls_dlocno + "' "; |
| | | DataView dv = Common.ExecAsrsSelect(sql); |
| | | if (dv.Count <= 0) |
| | | { |
| | | ls_error_memo = " " + seq + ".2 目标库位" + ls_dlocno + "不存在,请检查"; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | else |
| | | { |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | loc_sts = drow[0].ToString(); |
| | | barcoded = drow[1].ToString(); |
| | | } |
| | | } |
| | | |
| | | if (loc_sts == "O") |
| | | { //库位移转 |
| | | sql = "select lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname "; |
| | | sql += " from asr_loc_detl where loc_no='" + ls_slocno + "' order by matnr,modi_time"; |
| | | dv = Common.ExecAsrsSelect(sql); |
| | | if (dv.Count <= 0) |
| | | { |
| | | return; |
| | | } |
| | | li_wrkno = Common.GetWrkno(0); |
| | | string sqlDetl = "", sqlWaitIn = ""; |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | string lgnum = drow[0].ToString(); |
| | | string tanum = drow[1].ToString(); |
| | | string tapos = drow[2].ToString(); |
| | | string matnr = drow[3].ToString(); |
| | | string maktx = drow[4].ToString(); |
| | | string werks = drow[5].ToString(); |
| | | string vsolm = drow[6].ToString(); |
| | | string meins = drow[7].ToString(); |
| | | string bname = drow[8].ToString(); |
| | | sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname) "; |
| | | sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", "; |
| | | sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "');"; |
| | | sqlWaitIn += " update cust_wait_pakout set status='Y' where nltyp='A01' and vlpla='" + ls_slocno + "' and nlpla='" + ls_dlocno + "';"; |
| | | } |
| | | DisplayInfo("", "P", " " + seq + ".3 正在处理待出库资料!库位:" + ls_slocno); |
| | | |
| | | //查询库位号是否在库状态,并查询条码号 |
| | | sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_slocno + "' and loc_sts='F'"; |
| | | string barcode = ""; |
| | | dv = Common.ExecAsrsSelect(sql); |
| | | if (dv.Count <= 0) |
| | | { |
| | | ls_error_memo = " " + seq + ".4 源库位" + ls_slocno + "不存在或非在库状态,请检查"; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | else |
| | | { |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | barcode = drow[1].ToString(); |
| | | } |
| | | } |
| | | int li_crnrow = int.Parse(ls_slocno.Substring(0, 2)); |
| | | int li_crnno = (li_crnrow + 1) / 2; |
| | | li_io_type = 11; |
| | | |
| | | sql = sqlDetl; |
| | | sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,loc_no,barcode,empty_mk) "; |
| | | sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_slocno + "', "; |
| | | sql += " '" + ls_dlocno + "','" + barcode + "','N'); "; |
| | | sql += " update asr_loc_mast set loc_sts='R' where loc_no='" + ls_slocno + "'; "; |
| | | sql += " update asr_loc_mast set loc_sts='S' where loc_no='" + ls_dlocno + "'; "; |
| | | sql += sqlWaitIn; |
| | | SqlConnection sqlconn = new SqlConnection(Common.sqlcon); |
| | | sqlconn.Open(); |
| | | SqlTransaction sqltrans = sqlconn.BeginTransaction(); |
| | | SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); |
| | | sqlcmd.Transaction = sqltrans; |
| | | try |
| | | { |
| | | sqlcmd.ExecuteNonQuery(); |
| | | sqltrans.Commit(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | //sqlcommon.Close(); |
| | | ls_error_memo = " " + seq + ".5 插入工作主档[asr_wrk_mast]错误 !库位:" + ls_slocno + " 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | finally |
| | | { |
| | | sqlcmd.Dispose(); |
| | | sqlconn.Dispose(); |
| | | } |
| | | } |
| | | else if (loc_sts == "F") |
| | | {//目标库位并板 |
| | | //源库位出库 |
| | | string sqlDetld = ""; |
| | | int li_wrknod = 0; |
| | | int action = 0; |
| | | sql = "select lgnum,tanum,tapos,matnr,maktx,werks,vsolm,meins,bname "; |
| | | sql += " from cust_wait_pakout where status<>'Y' and nltyp='A01' and vlpla='" + ls_slocno + "' and nlpla='" + ls_dlocno + "' order by status,modi_time"; |
| | | dv = Common.ExecAsrsSelect(sql); |
| | | if (dv.Count <= 0) |
| | | { |
| | | return; |
| | | } |
| | | li_wrkno = Common.GetWrkno(0); |
| | | li_wrknod = Common.GetWrkno(0); |
| | | string sqlDetl = "", sqlWaitIn = ""; |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | string lgnum = drow[0].ToString(); |
| | | string tanum = drow[1].ToString(); |
| | | string tapos = drow[2].ToString(); |
| | | string matnr = drow[3].ToString(); |
| | | string maktx = drow[4].ToString(); |
| | | string werks = drow[5].ToString(); |
| | | string vsolm = drow[6].ToString(); |
| | | string meins = drow[7].ToString(); |
| | | string bname = drow[8].ToString(); |
| | | sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname) "; |
| | | sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", "; |
| | | sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "');"; |
| | | |
| | | sqlDetld += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname) "; |
| | | sqlDetld += " values(" + li_wrknod + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", "; |
| | | sqlDetld += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "');"; |
| | | |
| | | sqlWaitIn += " update cust_wait_pakout set status='Y' where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + " and vlpla=" + ls_slocno + ";"; |
| | | d_outQty += double.Parse(vsolm); |
| | | } |
| | | DisplayInfo("", "P", " " + seq + ".6 正在处理待出库资料!库位:" + ls_slocno); |
| | | |
| | | //查询库位号是否在库状态,并查询条码号 |
| | | sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_slocno + "' and loc_sts='F'"; |
| | | string barcode = ""; |
| | | dv = Common.ExecAsrsSelect(sql); |
| | | if (dv.Count <= 0) |
| | | { |
| | | ls_error_memo = " " + seq + ".7 源库位" + ls_slocno + "不存在或非在库状态,请检查"; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | else |
| | | { |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | barcode = drow[1].ToString(); |
| | | } |
| | | } |
| | | |
| | | //查询库位号对应库存明细总数量 |
| | | sql = "select sum(anfme) from asr_loc_detl where loc_no='" + ls_slocno + "' "; |
| | | dv = Common.ExecAsrsSelect(sql); |
| | | if (dv.Count <= 0) |
| | | { |
| | | ls_error_memo = " " + seq + ".8 库位" + ls_slocno + "没有库存明细,请检查"; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | else |
| | | { |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | d_stkQty += double.Parse(drow[0].ToString()); |
| | | } |
| | | } |
| | | |
| | | int li_crnrow = int.Parse(ls_slocno.Substring(0, 2)); |
| | | int li_crnno = (li_crnrow + 1) / 2; |
| | | string new_loc_sts = ""; |
| | | if (d_outQty < d_stkQty) |
| | | { |
| | | li_io_type = 103; |
| | | new_loc_sts = "P"; |
| | | li_e_stnNo = 4; |
| | | li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo); |
| | | action = 2; |
| | | } |
| | | else if (d_outQty == d_stkQty) |
| | | { |
| | | li_io_type = 101; |
| | | new_loc_sts = "R"; |
| | | li_e_stnNo = 13; |
| | | li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo); |
| | | action = 3; |
| | | } |
| | | else |
| | | { |
| | | ls_error_memo = " " + seq + ".9 库位" + ls_slocno + "通知出库数量超出库存数量,请检查"; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | |
| | | int li_crnrowd = int.Parse(ls_dlocno.Substring(0, 2)); |
| | | int li_crnnod = (li_crnrowd + 1) / 2; |
| | | int li_io_typed = 104; |
| | | int li_e_stnNod = 4; |
| | | int li_stnNod = Common.getIoStaNo(li_io_typed, li_crnnod, li_e_stnNod); |
| | | |
| | | sqlWaitIn = sqlWaitIn.Replace("update cust_wait_pakout set", "update cust_wait_pakout set action=" + action + ","); |
| | | |
| | | sql = sqlDetl; |
| | | sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) "; |
| | | sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_slocno + "', "; |
| | | sql += " " + li_e_stnNo + "," + li_stnNo + ",'" + barcode + "'); "; |
| | | sql += sqlDetld; |
| | | sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) "; |
| | | sql += " values(" + li_wrknod + ",'" + ldt_date + "',11," + li_io_typed + "," + li_crnnod + ",13,'" + ls_dlocno + "', "; |
| | | sql += " " + li_e_stnNod + "," + li_stnNod + ",'" + barcoded + "'); "; |
| | | sql += " update asr_loc_mast set loc_sts='" + new_loc_sts + "' where loc_no='" + ls_slocno + "'; "; |
| | | sql += " update asr_loc_mast set loc_sts='P' where loc_no='" + ls_dlocno + "'; "; |
| | | sql += sqlWaitIn; |
| | | SqlConnection sqlconn = new SqlConnection(Common.sqlcon); |
| | | sqlconn.Open(); |
| | | SqlTransaction sqltrans = sqlconn.BeginTransaction(); |
| | | SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); |
| | | sqlcmd.Transaction = sqltrans; |
| | | try |
| | | { |
| | | sqlcmd.ExecuteNonQuery(); |
| | | sqltrans.Commit(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | //sqlcommon.Close(); |
| | | ls_error_memo = " " + seq + ".10 插入工作主档[asr_wrk_mast]错误 !库位:" + ls_slocno + " 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | finally |
| | | { |
| | | sqlcmd.Dispose(); |
| | | sqlconn.Dispose(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | ls_error_memo = " " + seq + ".11 目标库位" + ls_dlocno + "不是在库或空库位状态,请检查"; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | return; |
| | | |
| | | re: |
| | | sql = "update cust_wait_pakout set status='X',modi_time='" + ldt_date + "' where vlpla='" + ls_slocno + "'"; |
| | | bool result = Common.ExecAsrsModify(sql); |
| | | if (!result) |
| | | { |
| | | ls_error_memo = " " + seq + ".12 更新出库档失败!库位:" + ls_slocno; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | catch (Exception em) |
| | | { |
| | | ls_error_memo = " " + seq + ".13 处理待处理档生成出库工作档失败:" + em.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 生成盘点工作档 |
| | | /// </summary> |
| | | public void ProcCheckToWorkData(string seq) |
| | | { |
| | | string ls_locno = ""; |
| | | string ls_error_memo = "", sql = ""; |
| | | int li_wrkno = 0, li_io_type = 0, li_stnNo = 0, li_e_stnNo = 0; |
| | | DateTime ldt_date = System.DateTime.Now; |
| | | int type = 1; |
| | | |
| | | DisplayInfo(seq, "N", " --处理盘点通知档,生成盘点工作档......"); |
| | | |
| | | try |
| | | { |
| | | //查找最早一条待出库库位 |
| | | sql = "select top 1 lgpla from cust_wait_check where status<>'Y' order by status,modi_time"; |
| | | DataView dvLoc = Common.ExecAsrsSelect(sql); |
| | | if (dvLoc.Count <= 0) |
| | | { |
| | | return; |
| | | } |
| | | foreach (DataRowView drow in dvLoc) |
| | | { |
| | | ls_locno = drow[0].ToString(); |
| | | } |
| | | if (ls_locno == "") |
| | | { |
| | | return; |
| | | } |
| | | |
| | | //查询库位号是否在库状态,并查询条码号 |
| | | sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_locno + "' and loc_sts='F'"; |
| | | string barcode = ""; |
| | | DataView dv = Common.ExecAsrsSelect(sql); |
| | | if (dv.Count <= 0) |
| | | { |
| | | ls_error_memo = " " + seq + ".2 库位" + ls_locno + "不存在或非在库状态,请检查"; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | else |
| | | { |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | barcode = drow[1].ToString(); |
| | | } |
| | | } |
| | | |
| | | //根据库位号查找该库位所有出库资料 |
| | | sql = "select a.lgnum,a.ivnum,a.ivpos,b.matnr,b.maktx,b.altme,b.werks "; |
| | | sql += " from cust_wait_check a, asr_loc_detl b "; |
| | | sql += " where a.status<>'Y' and a.lgpla='" + ls_locno + "' and a.matnr=b.matnr and lgpla=b.loc_no and io_status='N'"; |
| | | sql += " order by a.status,a.modi_time"; |
| | | dv = Common.ExecAsrsSelect(sql); |
| | | if (dv == null || dv.Count <= 0) |
| | | { |
| | | sql = "select b.lgnum,b.tbnum,b.tbpos,b.matnr,b.maktx,b.altme,b.werks "; |
| | | sql += " from cust_wait_check a, asr_loc_detl b "; |
| | | sql += " where a.status<>'Y' and a.lgpla='" + ls_locno + "' and a.lgpla=b.loc_no and io_status='N'"; |
| | | sql += " order by a.status,a.modi_time"; |
| | | dv = Common.ExecAsrsSelect(sql); |
| | | if (dv == null || dv.Count <= 0) |
| | | { |
| | | ls_error_memo = " " + seq + ".3 查询库存明细[asr_loc_detl]没有 !库位:" + ls_locno; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | type = 2; |
| | | //return; |
| | | } |
| | | li_wrkno = Common.GetWrkno(0); |
| | | string sqlDetl = "", sqlWaitIn = ""; |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | string lgnum = drow[0].ToString(); |
| | | string tanum = drow[1].ToString(); |
| | | string tapos = drow[2].ToString(); |
| | | string matnr = drow[3].ToString(); |
| | | string maktx = drow[4].ToString(); |
| | | string altme = drow[5].ToString(); |
| | | string werks = drow[6].ToString(); |
| | | sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,altme,werks,zpallet) "; |
| | | sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", "; |
| | | sqlDetl += " '" + matnr + "','" + maktx + "','" + altme + "','" + werks + "','" + barcode + "');"; |
| | | if (type == 1) |
| | | { |
| | | sqlWaitIn += " update cust_wait_check set status='Y' where lgnum='" + lgnum + "' and ivnum=" + tanum + " and ivpos=" + tapos + ";"; |
| | | } |
| | | else |
| | | { |
| | | sqlWaitIn += " update cust_wait_check set status='Y' where lgpla='" + ls_locno + "';"; |
| | | } |
| | | } |
| | | DisplayInfo("", "P", " " + seq + ".1 正在处理待盘点资料!库位:" + ls_locno); |
| | | |
| | | int li_crnrow = int.Parse(ls_locno.Substring(0, 2)); |
| | | int li_crnno = (li_crnrow + 1) / 2; |
| | | li_io_type = 107; |
| | | li_e_stnNo = 4; |
| | | li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo); |
| | | |
| | | sql = sqlDetl; |
| | | sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) "; |
| | | sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_locno + "', "; |
| | | sql += " " + li_e_stnNo + "," + li_stnNo + ",'" + barcode + "'); "; |
| | | sql += " update asr_loc_mast set loc_sts='P' where loc_no='" + ls_locno + "'; "; |
| | | sql += sqlWaitIn; |
| | | SqlConnection sqlconn = new SqlConnection(Common.sqlcon); |
| | | sqlconn.Open(); |
| | | SqlTransaction sqltrans = sqlconn.BeginTransaction(); |
| | | SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); |
| | | sqlcmd.Transaction = sqltrans; |
| | | try |
| | | { |
| | | sqlcmd.ExecuteNonQuery(); |
| | | sqltrans.Commit(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | //sqlcommon.Close(); |
| | | ls_error_memo = " " + seq + ".3 插入工作主档[asr_wrk_mast]错误 !库位:" + ls_locno + " 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | finally |
| | | { |
| | | sqlcmd.Dispose(); |
| | | sqlconn.Dispose(); |
| | | } |
| | | return; |
| | | |
| | | re: |
| | | sql = "update cust_wait_check set status='X',modi_time='" + ldt_date + "' where lgpla='" + ls_locno + "'"; |
| | | bool result = Common.ExecAsrsModify(sql); |
| | | if (!result) |
| | | { |
| | | ls_error_memo = " " + seq + ".4 更新盘点档失败!库位:" + ls_locno; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | catch (Exception em) |
| | | { |
| | | ls_error_memo = " " + seq + ".5 处理盘点通知档生成盘点工作档失败:" + em.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 处理工作档中工作状态为4和14、6的资料,更新库存档、待处理档 |
| | | /// </summary> |
| | | public void ProcWorkMast(string seq) |
| | | { |
| | | string ls_error_memo = "", sql = "", ls_barcode = ""; |
| | | int li_wrk_no = 0, li_wrk_sts = 0, li_io_type = 0, li_sta_no = 0, li_source_sta_no = 0;//, li_wrk_model = 1; |
| | | string ls_loc_no = "", ls_source_loc_no = "";//, ls_wmsId = "", ls_boxId = ""; |
| | | DateTime ldt_date = System.DateTime.Now, ldt_io_time; |
| | | string ls_sheet_no = "", ls_empty_mk = "", ls_full_mk = "", ls_online_yn = ""; |
| | | int li_io_pri = 0, li_whs_type; |
| | | DisplayInfo(seq, "N", "--处理工作档 (status=4,14)......"); |
| | | try |
| | | { |
| | | try |
| | | { |
| | | DataView dv = Common.ExecAsrsSelect("select getdate() from sys_dual"); |
| | | foreach (System.Data.DataRowView drow in dv) |
| | | { |
| | | ldt_date = Convert.ToDateTime(drow[0]); |
| | | } |
| | | } |
| | | catch (SqlException) |
| | | { |
| | | return; |
| | | } |
| | | sql = "select wrk_no,sheet_no,wrk_sts,io_type,io_pri,empty_mk," + |
| | | " io_time,loc_no,sta_no,source_sta_no,source_loc_no,whs_type,online_yn,barcode" + |
| | | " from dbo.asr_wrk_mast where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type <> 103 and io_type <> 104 and io_type <> 107 ) or (wrk_sts = 2 and io_type=6)" + |
| | | " order by upd_mk,io_time,wrk_no"; |
| | | DataView dv_wrkmast = Common.ExecAsrsSelect(sql); |
| | | if (dv_wrkmast == null || dv_wrkmast.Count < 1) |
| | | { |
| | | DisplayInfo("", "N", " " + seq + ".1 工作档 [asr_wrk_mast] 没有资料!"); |
| | | return; |
| | | } |
| | | foreach (DataRowView drow_wrkmast in dv_wrkmast) |
| | | { |
| | | li_wrk_no = Convert.ToInt32(drow_wrkmast[0]); |
| | | ls_sheet_no = drow_wrkmast[1].ToString(); |
| | | li_wrk_sts = Convert.ToInt32(drow_wrkmast[2]); |
| | | li_io_type = Convert.ToInt32(drow_wrkmast[3]); |
| | | li_io_pri = Convert.ToInt32(drow_wrkmast[4]); |
| | | ls_empty_mk = drow_wrkmast[5].ToString(); |
| | | ldt_io_time = Convert.ToDateTime(drow_wrkmast[6]); |
| | | ls_loc_no = drow_wrkmast[7].ToString(); |
| | | li_sta_no = Convert.ToInt32(drow_wrkmast[8]); |
| | | li_source_sta_no = Convert.ToInt32(drow_wrkmast[9]); |
| | | ls_source_loc_no = drow_wrkmast[10].ToString(); |
| | | //li_whs_type = Convert.ToInt32(drow_wrkmast[11]); |
| | | //ls_full_mk = drow_wrkmast[12].ToString(); |
| | | ls_online_yn = drow_wrkmast[12].ToString(); |
| | | ls_barcode = drow_wrkmast[13].ToString(); |
| | | |
| | | DisplayInfo("", "P", " " + seq + ".2 处理工作档:" + li_wrk_no.ToString()); |
| | | SqlConnection sqlconn = new SqlConnection(Common.sqlcon); |
| | | sqlconn.Open(); |
| | | SqlTransaction sqltrans = sqlconn.BeginTransaction(); |
| | | if (li_wrk_sts == 4) |
| | | { |
| | | switch (li_io_type) |
| | | { |
| | | #region 空托盘入库 |
| | | case 10: |
| | | sql = "update asr_loc_mast set loc_sts='D',io_time='" + ldt_date + "',modi_time='" + ldt_date + "'"; |
| | | sql += " where loc_no='" + ls_loc_no + "' and (loc_sts = 'S' Or loc_sts = 'Q')"; |
| | | SqlCommand cmd_10 = new SqlCommand(sql, sqlconn); |
| | | cmd_10.Transaction = sqltrans; |
| | | try |
| | | { |
| | | cmd_10.ExecuteNonQuery(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | cmd_10.Dispose(); |
| | | sqlconn.Dispose(); |
| | | ls_error_memo = " " + seq + ".3 入库-更新库位状态异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + " 库位号:" + ls_loc_no + " 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | break; |
| | | #endregion |
| | | #region 全板入库 |
| | | case 1: |
| | | ///检查库存明细档是否已存在数据 |
| | | int li_count1 = 0; |
| | | sql = ""; |
| | | try |
| | | { |
| | | li_count1 = Common.ExecAsrsSelect1("select count(*) from asr_loc_detl where loc_no ='" + ls_loc_no + "'"); |
| | | |
| | | } |
| | | catch (Exception em) |
| | | { |
| | | ls_error_memo = " " + seq + ".4 查询库存明细[asr_loc_detl]出错!工作号:" + li_wrk_no.ToString() + "!" + em.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | |
| | | ///根据工作号,查询工作明细档物料编码 |
| | | string sqlDetl = ""; |
| | | string sqlWaitIn = ""; |
| | | sql = "select lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname from asr_wrk_detl where wrk_no=" + li_wrk_no; |
| | | DataView dv_wrkdetl = Common.ExecAsrsSelect(sql); |
| | | if (dv_wrkdetl == null || dv_wrkdetl.Count < 1) |
| | | { |
| | | DisplayInfo("", "E", " " + seq + ".5 工作明细档 [asr_wrk_detl] 没有资料!"); |
| | | return; |
| | | } |
| | | foreach (DataRowView drow in dv_wrkdetl) |
| | | { |
| | | string lgnum = "", tbnum = "", tbpos = "", zmatid = "", matnr = "", maktx = "", werks = "", anfme = "", altme = "", zpallet = "", bname = ""; |
| | | lgnum = drow[0].ToString(); |
| | | tbnum = drow[1].ToString(); |
| | | tbpos = drow[2].ToString(); |
| | | zmatid = drow[3].ToString(); |
| | | matnr = drow[4].ToString(); |
| | | maktx = drow[5].ToString(); |
| | | werks = drow[6].ToString(); |
| | | anfme = drow[7].ToString(); |
| | | altme = drow[8].ToString(); |
| | | zpallet = drow[9].ToString(); |
| | | bname = drow[10].ToString(); |
| | | |
| | | string sqlLocDetl = "select anfme from asr_loc_detl where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'"; |
| | | DataView dvLocDetl = Common.ExecAsrsSelect(sqlLocDetl); |
| | | if (dvLocDetl != null) |
| | | { |
| | | if (dvLocDetl.Count > 0) |
| | | {//库存已有,更新数量 |
| | | sqlDetl = " update asr_loc_detl set anfme=anfme+" + anfme + " where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'; "; |
| | | Common.ExecAsrsModify(sqlDetl); |
| | | } |
| | | else |
| | | {//库存没有,插入 |
| | | sqlDetl = " insert into asr_loc_detl(loc_no,lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname) "; |
| | | sqlDetl += " values('" + ls_loc_no + "','" + lgnum + "'," + tbnum + "," + tbpos + ",'" + zmatid + "', "; |
| | | sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + anfme + ",'" + altme + "','" + ls_barcode + "','" + bname + "');"; |
| | | Common.ExecAsrsModify(sqlDetl); |
| | | } |
| | | } |
| | | sqlWaitIn += " update cust_wait_pakin set io_status='Y' where lgnum='" + lgnum + "' and tbnum=" + tbnum + " and tbpos=" + tbpos + " and zmatid='" + zmatid + "';"; |
| | | } |
| | | |
| | | ///更新库存信息,插入库存明细档,并更新库存主档 |
| | | sql = ""; |
| | | if (li_count1 > 0) |
| | | { |
| | | sql += "delete from asr_loc_detl where loc_no ='" + ls_loc_no + "';"; |
| | | } |
| | | sql += " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'"; |
| | | sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'S';"; |
| | | //sql += sqlDetl; |
| | | sql += sqlWaitIn; |
| | | |
| | | SqlCommand cmd_1 = new SqlCommand(sql, sqlconn); |
| | | cmd_1.Transaction = sqltrans; |
| | | try |
| | | { |
| | | cmd_1.ExecuteNonQuery(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | cmd_1.Dispose(); |
| | | sqlconn.Dispose(); |
| | | ls_error_memo = " " + seq + ".6 入库-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + " 库位号:" + ls_loc_no + " !" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | break; |
| | | #endregion |
| | | #region 拣料再入库 |
| | | case 53: |
| | | ///根据工作号,查询工作明细档物料编码 |
| | | sqlDetl = ""; |
| | | sqlWaitIn = ""; |
| | | sql = "select lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname from asr_wrk_detl where wrk_no=" + li_wrk_no; |
| | | DataView dv_wrkdetl53 = Common.ExecAsrsSelect(sql); |
| | | if (dv_wrkdetl53 == null || dv_wrkdetl53.Count < 1) |
| | | { |
| | | DisplayInfo("", "E", " " + seq + ".6 工作明细档 [asr_wrk_detl] 没有资料!"); |
| | | return; |
| | | } |
| | | foreach (DataRowView drow in dv_wrkdetl53) |
| | | { |
| | | string lgnum = "", tbnum = "", tbpos = "", zmatid = "", matnr = "", maktx = "", werks = "", anfme = "", altme = "", zpallet = "", bname = ""; |
| | | lgnum = drow[0].ToString(); |
| | | tbnum = drow[1].ToString(); |
| | | tbpos = drow[2].ToString(); |
| | | zmatid = drow[3].ToString(); |
| | | matnr = drow[4].ToString(); |
| | | maktx = drow[5].ToString(); |
| | | werks = drow[6].ToString(); |
| | | anfme = drow[7].ToString(); |
| | | altme = drow[8].ToString(); |
| | | zpallet = drow[9].ToString(); |
| | | bname = drow[10].ToString(); |
| | | sqlDetl += " update asr_loc_detl set anfme=anfme-" + anfme + " where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'"; |
| | | sqlWaitIn += " update cust_wait_pakout set io_status='Y' where lgnum='" + lgnum + "' and tanum=" + tbnum + " and tapos=" + tbpos + " and matnr=" + matnr + ";"; |
| | | } |
| | | |
| | | ///更新库存信息,插入库存明细档,并更新库存主档 |
| | | sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'"; |
| | | sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'Q';"; |
| | | sql += sqlDetl; |
| | | sql += sqlWaitIn; |
| | | |
| | | |
| | | SqlCommand cmd_53 = new SqlCommand(sql, sqlconn); |
| | | cmd_53.Transaction = sqltrans; |
| | | try |
| | | { |
| | | cmd_53.ExecuteNonQuery(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | cmd_53.Dispose(); |
| | | sqlconn.Dispose(); |
| | | ls_error_memo = " " + seq + ".7 拣料-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + " 库位号:" + ls_loc_no + " !" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | break; |
| | | #endregion |
| | | #region 并板再入库 |
| | | case 54: |
| | | ///根据工作号,查询工作明细档物料编码 |
| | | sqlDetl = ""; |
| | | sqlWaitIn = ""; |
| | | sql = "select lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname from asr_wrk_detl where wrk_no=" + li_wrk_no; |
| | | DataView dv_wrkdetl54 = Common.ExecAsrsSelect(sql); |
| | | if (dv_wrkdetl54 == null || dv_wrkdetl54.Count < 1) |
| | | { |
| | | DisplayInfo("", "E", " " + seq + ".8 工作明细档 [asr_wrk_detl] 没有资料!"); |
| | | return; |
| | | } |
| | | foreach (DataRowView drow in dv_wrkdetl54) |
| | | { |
| | | string lgnum = "", tbnum = "", tbpos = "", zmatid = "", matnr = "", maktx = "", werks = "", anfme = "", altme = "", zpallet = "", bname = ""; |
| | | lgnum = drow[0].ToString(); |
| | | tbnum = drow[1].ToString(); |
| | | tbpos = drow[2].ToString(); |
| | | zmatid = drow[3].ToString(); |
| | | matnr = drow[4].ToString(); |
| | | maktx = drow[5].ToString(); |
| | | werks = drow[6].ToString(); |
| | | anfme = drow[7].ToString(); |
| | | altme = drow[8].ToString(); |
| | | zpallet = drow[9].ToString(); |
| | | bname = drow[10].ToString(); |
| | | string sql1 = "select anfme from asr_loc_detl where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'"; |
| | | DataView dv_locdetl54 = Common.ExecAsrsSelect(sql1); |
| | | if (dv_locdetl54 != null && dv_locdetl54.Count > 0) |
| | | { |
| | | sqlDetl += " update asr_loc_detl set anfme=anfme+" + anfme + " where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'"; |
| | | //sqlWaitIn += " update cust_wait_pakin set io_status='Y' where matnr=" + matnr + ";"; |
| | | } |
| | | else |
| | | { |
| | | sqlDetl += " insert into asr_loc_detl(loc_no,lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname) "; |
| | | sqlDetl += " values('" + ls_loc_no + "','" + lgnum + "'," + tbnum + "," + tbpos + ",'" + zmatid + "', "; |
| | | sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + anfme + ",'" + altme + "','" + ls_barcode + "','" + bname + "');"; |
| | | } |
| | | sqlWaitIn += " update cust_wait_pakout set io_status='Y' where lgnum='" + lgnum + "' and tanum=" + tbnum + " and tapos=" + tbpos + ";"; |
| | | } |
| | | |
| | | ///更新库存信息,插入库存明细档,并更新库存主档 |
| | | //sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'"; |
| | | sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "' "; |
| | | sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'Q';"; |
| | | sql += sqlDetl; |
| | | sql += sqlWaitIn; |
| | | |
| | | SqlCommand cmd_54 = new SqlCommand(sql, sqlconn); |
| | | cmd_54.Transaction = sqltrans; |
| | | try |
| | | { |
| | | cmd_54.ExecuteNonQuery(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | cmd_54.Dispose(); |
| | | sqlconn.Dispose(); |
| | | ls_error_memo = " " + seq + ".9 并板再入库-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + " 库位号:" + ls_loc_no + " !" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | break; |
| | | #endregion |
| | | #region 盘点再入库 |
| | | case 57: |
| | | ///根据工作号,查询工作明细档物料编码 |
| | | sqlDetl = ""; |
| | | sqlWaitIn = ""; |
| | | sql = "select lgnum,tbnum,tbpos,matnr from asr_wrk_detl where wrk_no=" + li_wrk_no; |
| | | DataView dv_wrkdetl57 = Common.ExecAsrsSelect(sql); |
| | | if (dv_wrkdetl57 == null || dv_wrkdetl57.Count < 1) |
| | | { |
| | | DisplayInfo("", "E", " " + seq + ".10 工作明细档 [asr_wrk_detl] 没有资料!"); |
| | | return; |
| | | } |
| | | foreach (DataRowView drow in dv_wrkdetl57) |
| | | { |
| | | string lgnum = "", tbnum = "", tbpos = "", matnr = ""; |
| | | lgnum = drow[0].ToString(); |
| | | tbnum = drow[1].ToString(); |
| | | tbpos = drow[2].ToString(); |
| | | matnr = drow[3].ToString(); |
| | | //sqlWaitIn += " update cust_wait_check set io_status='Y' where lgnum='" + lgnum + "' and ivnum=" + tbnum + " and ivpos=" + tbpos + ";"; |
| | | } |
| | | sqlWaitIn += " update cust_wait_check set io_status='Y' where lgpla='" + ls_loc_no + "';"; |
| | | ///更新库存信息,插入库存明细档,并更新库存主档 |
| | | sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'"; |
| | | sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'Q';"; |
| | | sql += sqlDetl; |
| | | sql += sqlWaitIn; |
| | | |
| | | SqlCommand cmd_57 = new SqlCommand(sql, sqlconn); |
| | | cmd_57.Transaction = sqltrans; |
| | | try |
| | | { |
| | | cmd_57.ExecuteNonQuery(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | cmd_57.Dispose(); |
| | | sqlconn.Dispose(); |
| | | ls_error_memo = " " + seq + ".11 盘点再入库-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + " 库位号:" + ls_loc_no + " !" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | break; |
| | | #endregion |
| | | #region 库位移转 |
| | | case 11: |
| | | sql = ""; |
| | | string ls_loc_sts = ""; |
| | | if (ls_empty_mk == "N") |
| | | { |
| | | ls_loc_sts = "F"; |
| | | sql += "Update dbo.asr_loc_detl set loc_no='" + ls_loc_no + "',modi_time='" + ldt_date + "' where loc_no='" + ls_source_loc_no + "';"; |
| | | } |
| | | else |
| | | { |
| | | ls_loc_sts = "D"; |
| | | } |
| | | |
| | | sql += " Update dbo.asr_loc_mast set loc_sts='O',barcode='',io_time='" + ldt_date + "' where loc_no='" + ls_source_loc_no + "'; "; |
| | | sql += " Update dbo.asr_loc_mast set loc_sts='" + ls_loc_sts + "',barcode='" + ls_barcode + "',io_time='" + ldt_date + "' where loc_no='" + ls_loc_no + "';"; |
| | | sql += " update cust_wait_pakout set io_status='Y' where vlpla='" + ls_source_loc_no + "' and nlpla='" + ls_loc_no + "'"; |
| | | SqlCommand cmd_11 = new SqlCommand(sql, sqlconn); |
| | | cmd_11.Transaction = sqltrans; |
| | | try |
| | | { |
| | | cmd_11.ExecuteNonQuery(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | cmd_11.Dispose(); |
| | | sqlconn.Dispose(); |
| | | ls_error_memo = " " + seq + ".12 库位移转-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + " 库位号:" + ls_loc_no + " !" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | |
| | | break; |
| | | #endregion |
| | | } |
| | | |
| | | sql = "update asr_wrk_mast set wrk_sts=5,modi_time='" + ldt_date + "' where wrk_no=" + li_wrk_no + "; "; |
| | | SqlCommand cmd_wrk = new SqlCommand(sql, sqlconn); |
| | | cmd_wrk.Transaction = sqltrans; |
| | | try |
| | | { |
| | | cmd_wrk.ExecuteNonQuery(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | cmd_wrk.Dispose(); |
| | | sqlconn.Dispose(); |
| | | ls_error_memo = " " + seq + ".13 更新工作状态异常 [asr_wrk_mast] !工作号:" + li_wrk_no.ToString() + " 时间:" + ldt_date.ToString() + " 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | } |
| | | else if (li_wrk_sts == 14) |
| | | { |
| | | switch (li_io_type) |
| | | { |
| | | #region 全板出库 |
| | | case 101: |
| | | ///根据工作号,查询工作明细档物料编码 |
| | | string sqlWaitIn = ""; |
| | | sql = "select lgnum,tbnum,tbpos,matnr from asr_wrk_detl where wrk_no=" + li_wrk_no; |
| | | DataView dv_wrkdetl = Common.ExecAsrsSelect(sql); |
| | | if (dv_wrkdetl == null || dv_wrkdetl.Count < 1) |
| | | { |
| | | DisplayInfo("", "E", " " + seq + ".14 工作明细档 [asr_wrk_detl] 没有资料!"); |
| | | goto re; |
| | | } |
| | | foreach (DataRowView drow in dv_wrkdetl) |
| | | { |
| | | string lgnum = drow[0].ToString(); |
| | | string tbnum = drow[1].ToString(); |
| | | string tbpos = drow[2].ToString(); |
| | | string matnr = drow[3].ToString(); |
| | | sqlWaitIn += " update cust_wait_pakout set io_status='Y' where lgnum='" + lgnum + "' and tanum=" + tbnum + " and tapos=" + tbpos + " and vlpla=" + ls_source_loc_no + ";"; |
| | | } |
| | | |
| | | sql = "delete from asr_loc_detl where loc_no ='" + ls_source_loc_no + "';"; |
| | | sql += " update asr_loc_mast set loc_sts='O',io_time='" + ldt_date + "',barcode=null"; |
| | | sql += " where loc_no='" + ls_source_loc_no + "' and loc_sts = 'R';"; |
| | | sql += sqlWaitIn; |
| | | SqlCommand cmd_101 = new SqlCommand(sql, sqlconn); |
| | | cmd_101.Transaction = sqltrans; |
| | | try |
| | | { |
| | | cmd_101.ExecuteNonQuery(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | cmd_101.Dispose(); |
| | | sqlconn.Dispose(); |
| | | ls_error_memo = " " + seq + ".15 出库-更新库位状态异常[asr_loc_mast] !库位号:" + ls_source_loc_no + " 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | break; |
| | | #endregion |
| | | #region 空板出库 |
| | | case 110: |
| | | sql = "update asr_loc_mast set loc_sts='O',io_time='" + ldt_date + "'"; |
| | | sql += " where loc_no='" + ls_source_loc_no + "' and loc_sts = 'R'"; |
| | | SqlCommand cmd_110 = new SqlCommand(sql, sqlconn); |
| | | cmd_110.Transaction = sqltrans; |
| | | try |
| | | { |
| | | cmd_110.ExecuteNonQuery(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | cmd_110.Dispose(); |
| | | sqlconn.Dispose(); |
| | | ls_error_memo = " " + seq + ".16 出库-更新库位状态异常[asr_loc_mast] !库位号:" + ls_source_loc_no + " 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | break; |
| | | #endregion |
| | | } |
| | | |
| | | sql = "update asr_wrk_mast set wrk_sts=15,modi_time='" + ldt_date + "' where wrk_no=" + li_wrk_no + "; "; |
| | | SqlCommand cmd_wrk1 = new SqlCommand(sql, sqlconn); |
| | | cmd_wrk1.Transaction = sqltrans; |
| | | try |
| | | { |
| | | cmd_wrk1.ExecuteNonQuery(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | cmd_wrk1.Dispose(); |
| | | sqltrans.Dispose(); |
| | | ls_error_memo = " " + seq + ".17 更新工作状态异常 [asr_wrk_mast] !工作号:" + li_wrk_no.ToString() + " 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | goto re; |
| | | } |
| | | } |
| | | sqltrans.Commit(); |
| | | sqlconn.Dispose(); |
| | | } |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | ls_error_memo = " " + seq + ".18 处理工作档数据失败! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | |
| | | re: |
| | | if (ls_error_memo != "") |
| | | { |
| | | try |
| | | { |
| | | bool bl = Common.ExecAsrsModify("update dbo.asr_wrk_mast set upd_mk ='X',error_time='" + ldt_date + "',error_memo='" + ls_error_memo + "' where wrk_no =" + li_wrk_no + ""); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | ls_error_memo = " " + seq + ".19 更新工作主档状态 [asr_wrk_mast] 异常! 工作号:" + li_wrk_no.ToString() + " 时间:" + ldt_date.ToString(); |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | return; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 处理工作档中工作状态为5和15的资料,转历史档 |
| | | /// </summary> |
| | | public void ProcWorkToLog(string seq) |
| | | { |
| | | string ls_error_memo = ""; |
| | | DisplayInfo(seq, "N", "--处理工作档转历史档......"); |
| | | int wrkno = 0; |
| | | try |
| | | { |
| | | string sql = "select top 1 wrk_no from asr_wrk_mast where wrk_sts=5 ";// or wrk_sts=15 or (wrk_sts=15 and io_type=110) "; |
| | | sql += " or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))"; |
| | | sql += " or (wrk_sts=15 and dateadd(mi,15,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))"; |
| | | sql += " or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp)) "; |
| | | //sql += " or (wrk_sts=15 and dateadd(day,1,io_time) <= getdate() and crn_end_time is null) "; |
| | | //sql += " or (wrk_sts=15 and dateadd(hh,1,crn_end_time) <= getdate()) "; |
| | | //sql += " or (wrk_sts=15 and wrk_no not in (select wrk_no from asr_bas_devp))"; |
| | | sql += " order by io_time,wrk_no asc"; |
| | | DataView dv = Common.ExecAsrsSelect(sql); |
| | | if (dv.Count <= 0) |
| | | { |
| | | DisplayInfo("", "N", " " + seq + ".1 工作档 [asr_wrk_mast] 没有资料处理!"); |
| | | return; |
| | | } |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | wrkno = int.Parse(drow[0].ToString()); |
| | | } |
| | | DisplayInfo("", "P", " " + seq + ".2 正在处理转历史档" + wrkno); |
| | | |
| | | sql = "insert into asr_wrk_mast_log select * from asr_wrk_mast where wrk_no=" + wrkno + "; "; |
| | | //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_devp) "; |
| | | //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_crnp);"; |
| | | sql += " delete from asr_wrk_mast where wrk_no=" + wrkno + "; "; |
| | | sql += " insert into asr_wrk_detl_log select * from asr_wrk_detl where wrk_no=" + wrkno + "; "; |
| | | sql += " delete from asr_wrk_detl where wrk_no=" + wrkno + "; "; |
| | | //sql += " update asr_wrk_mast set wrk_sts=16 where wrk_sts=15 and dateadd(day,1,io_time) <= getdate();"; |
| | | //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_devp) "; |
| | | //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_crnp);"; |
| | | |
| | | SqlConnection sqlconn = new SqlConnection(Common.sqlcon); |
| | | sqlconn.Open(); |
| | | SqlTransaction sqltrans = sqlconn.BeginTransaction(); |
| | | SqlCommand sqlcmd = new SqlCommand(); |
| | | sqlcmd.Transaction = sqltrans; |
| | | string[] arraySql = sql.Split(';'); |
| | | try |
| | | { |
| | | for (int i = 0; i < arraySql.Length; i++) |
| | | { |
| | | if (arraySql[i] != "") |
| | | { |
| | | sqlcmd.CommandText = arraySql[i]; |
| | | sqlcmd.Connection = sqlconn; |
| | | sqlcmd.Transaction = sqltrans; |
| | | int result = sqlcmd.ExecuteNonQuery(); |
| | | } |
| | | } |
| | | sqltrans.Commit(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | ls_error_memo = " " + seq + ".3 工作档[asr_wrk_mast]转历史档错误 ! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | finally |
| | | { |
| | | sqlcmd.Dispose(); |
| | | sqltrans.Dispose(); |
| | | sqlconn.Dispose(); |
| | | } |
| | | return; |
| | | } |
| | | catch (Exception t) |
| | | { |
| | | ls_error_memo = " " + seq + ".4 处理工作档转历史档失败! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 处理堆垛机、输送机命令,转历史档 |
| | | /// </summary> |
| | | public void ProcDevCommandToLog(string seq) |
| | | { |
| | | string ls_error_memo = ""; |
| | | DisplayInfo(seq, "N", "--处理堆垛机&PLC命令转历史档......"); |
| | | try |
| | | { |
| | | string sql = "insert into asr_stk_hplc "; |
| | | sql += " select * from asr_stk_plcm where dateadd(day,7,appe_time) <= getdate();"; |
| | | sql += " delete from asr_stk_plcm where dateadd(day,7,appe_time) <= getdate();"; |
| | | SqlConnection sqlconn = new SqlConnection(Common.sqlcon); |
| | | sqlconn.Open(); |
| | | SqlTransaction sqltrans = sqlconn.BeginTransaction(); |
| | | SqlCommand sqlcmd = new SqlCommand(); |
| | | sqlcmd.Transaction = sqltrans; |
| | | string[] arraySql = sql.Split(';'); |
| | | try |
| | | { |
| | | for (int i = 0; i < arraySql.Length; i++) |
| | | { |
| | | if (arraySql[i] != "") |
| | | { |
| | | sqlcmd.CommandText = arraySql[i]; |
| | | sqlcmd.Connection = sqlconn; |
| | | sqlcmd.Transaction = sqltrans; |
| | | int result = sqlcmd.ExecuteNonQuery(); |
| | | } |
| | | } |
| | | sqltrans.Commit(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | //sqlcommon.Close(); |
| | | ls_error_memo = " " + seq + ".1 堆垛机&PLC命令转历史档错误 ! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | finally |
| | | { |
| | | sqlcmd.Dispose(); |
| | | sqltrans.Dispose(); |
| | | sqlconn.Dispose(); |
| | | } |
| | | return; |
| | | } |
| | | catch (Exception t) |
| | | { |
| | | ls_error_memo = " " + seq + ".2 堆垛机&PLC命令转历史档失败! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 转已完成物料信息到历史档 |
| | | /// </summary> |
| | | public void ProcMatCodeToLog(string seq) |
| | | { |
| | | string ls_error_memo = "", mat_no = ""; |
| | | DisplayInfo(seq, "N", "--处理已完成物料数据转历史档......"); |
| | | try |
| | | { |
| | | string condition = " and mat_no not in (select mat_no from asr_loc_detl) and mat_no not in (select mat_no from asr_wrk_detl) "; |
| | | //condition += " and mat_no not in (select mat_no from cust_wait_pakout) "; |
| | | string sql0 = " select top 1 mat_no from bas_mat_code where status>1 " + condition + " ;"; |
| | | DataView dv = Common.ExecAsrsSelect(sql0); |
| | | if (dv.Count <= 0) |
| | | { |
| | | DisplayInfo("", "N", " " + seq + ".1 物料档 [bas_mat_code] 没有资料处理!"); |
| | | return; |
| | | } |
| | | |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | mat_no = drow[0].ToString(); |
| | | } |
| | | |
| | | string sql = "delete from bas_mat_code_log where mat_no='" + mat_no + "';"; |
| | | sql += " insert into bas_mat_code_log "; |
| | | sql += " select * from bas_mat_code where status>1 " + condition + " ;"; |
| | | sql += " delete from bas_mat_code where status>1 " + condition + " ;"; |
| | | sql += " delete from bas_mat_code where status=0 and dateadd(hh,2,modi_time) <= getdate() " + condition + " ;"; |
| | | |
| | | SqlConnection sqlconn = new SqlConnection(Common.sqlcon); |
| | | sqlconn.Open(); |
| | | SqlTransaction sqltrans = sqlconn.BeginTransaction(); |
| | | SqlCommand sqlcmd = new SqlCommand(); |
| | | sqlcmd.Transaction = sqltrans; |
| | | string[] arraySql = sql.Split(';'); |
| | | try |
| | | { |
| | | for (int i = 0; i < arraySql.Length; i++) |
| | | { |
| | | if (arraySql[i] != "") |
| | | { |
| | | sqlcmd.CommandText = arraySql[i]; |
| | | sqlcmd.Connection = sqlconn; |
| | | sqlcmd.Transaction = sqltrans; |
| | | int result = sqlcmd.ExecuteNonQuery(); |
| | | } |
| | | } |
| | | sqltrans.Commit(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | //sqlcommon.Close(); |
| | | ls_error_memo = " " + seq + ".1 已完成物料数据转历史档错误 ! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | finally |
| | | { |
| | | sqlcmd.Dispose(); |
| | | sqlconn.Dispose(); |
| | | } |
| | | return; |
| | | } |
| | | catch (Exception t) |
| | | { |
| | | ls_error_memo = " " + seq + ".2 已完成物料数据转历史档失败! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 转已完成待出库档信息到历史档 |
| | | /// </summary> |
| | | public void ProcWaitOutToLog(string seq) |
| | | { |
| | | string ls_error_memo = "", sql = ""; |
| | | DisplayInfo(seq, "N", "--处理已完成入/出库档数据转历史档......"); |
| | | try |
| | | { |
| | | string sql0 = " select lgnum,tbnum,tbpos from cust_wait_pakin where io_status='F';"; |
| | | DataView dv = Common.ExecAsrsSelect(sql0); |
| | | if (dv == null || dv.Count <= 0) |
| | | { |
| | | DisplayInfo("", "N", " " + seq + ".1 入库档 [cust_wait_pakin] 没有资料处理!"); |
| | | } |
| | | else |
| | | { |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | string lgnum = drow[0].ToString(); |
| | | string tanum = drow[1].ToString(); |
| | | string tapos = drow[2].ToString(); |
| | | sql = "insert into cust_wait_pakin_log "; |
| | | sql += " select * from cust_wait_pakin where lgnum='" + lgnum + "' and tbnum=" + tanum + " and tbpos=" + tapos + "; "; |
| | | sql += " delete from cust_wait_pakin where lgnum='" + lgnum + "' and tbnum=" + tanum + " and tbpos=" + tapos + "; "; |
| | | } |
| | | } |
| | | |
| | | sql0 = " select lgnum,tanum,tapos from cust_wait_pakout where io_status='F';"; |
| | | dv = Common.ExecAsrsSelect(sql0); |
| | | if (dv == null || dv.Count <= 0) |
| | | { |
| | | DisplayInfo("", "N", " " + seq + ".2 出库档 [cust_wait_pakout] 没有资料处理!"); |
| | | } |
| | | else |
| | | { |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | string lgnum = drow[0].ToString(); |
| | | string tanum = drow[1].ToString(); |
| | | string tapos = drow[2].ToString(); |
| | | sql = "insert into cust_wait_pakout_log "; |
| | | sql += " select * from cust_wait_pakout where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + "; "; |
| | | sql += " delete from cust_wait_pakout where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + "; "; |
| | | } |
| | | } |
| | | |
| | | sql0 = " select lgnum,ivnum,ivpos from cust_wait_check where io_status='Y';"; |
| | | dv = Common.ExecAsrsSelect(sql0); |
| | | if (dv == null || dv.Count <= 0) |
| | | { |
| | | DisplayInfo("", "N", " " + seq + ".3 盘点档 [cust_wait_check] 没有资料处理!"); |
| | | } |
| | | else |
| | | { |
| | | foreach (DataRowView drow in dv) |
| | | { |
| | | string lgnum = drow[0].ToString(); |
| | | string tanum = drow[1].ToString(); |
| | | string tapos = drow[2].ToString(); |
| | | sql = "insert into cust_wait_check_log "; |
| | | sql += " select * from cust_wait_check where lgnum='" + lgnum + "' and ivnum=" + tanum + " and ivpos=" + tapos + "; "; |
| | | sql += " delete from cust_wait_check where lgnum='" + lgnum + "' and ivnum=" + tanum + " and ivpos=" + tapos + "; "; |
| | | } |
| | | } |
| | | |
| | | if (sql == "") |
| | | { |
| | | return; |
| | | } |
| | | SqlConnection sqlconn1 = new SqlConnection(Common.sqlcon); |
| | | sqlconn1.Open(); |
| | | SqlTransaction sqltrans1 = sqlconn1.BeginTransaction(); |
| | | SqlCommand sqlcmd1 = new SqlCommand(); |
| | | sqlcmd1.Transaction = sqltrans1; |
| | | string[] arraySql1 = sql.Split(';'); |
| | | try |
| | | { |
| | | for (int i = 0; i < arraySql1.Length; i++) |
| | | { |
| | | if (arraySql1[i] != "") |
| | | { |
| | | sqlcmd1.CommandText = arraySql1[i]; |
| | | sqlcmd1.Connection = sqlconn1; |
| | | sqlcmd1.Transaction = sqltrans1; |
| | | int result = sqlcmd1.ExecuteNonQuery(); |
| | | } |
| | | } |
| | | sqltrans1.Commit(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans1.Rollback(); |
| | | //sqlcommon.Close(); |
| | | ls_error_memo = " " + seq + ".1 已完成物料数据转历史档错误 ! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | finally |
| | | { |
| | | sqlcmd1.Dispose(); |
| | | sqlconn1.Dispose(); |
| | | } |
| | | |
| | | return; |
| | | } |
| | | catch (Exception t) |
| | | { |
| | | ls_error_memo = " " + seq + ".2 已完成出库数据转历史档失败! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除超过半年的历史档信息 |
| | | /// </summary> |
| | | public void ProcOverYearLog(string seq) |
| | | { |
| | | string ls_error_memo = ""; |
| | | DisplayInfo(seq, "N", "--处理超过半年历史档信息......"); |
| | | try |
| | | { |
| | | string sql = "delete from asr_stk_hplc where dateadd(day,180,appe_time) <= getdate(); "; |
| | | sql += " delete from sys_tts_mast where dateadd(day,180,modi_time) <= getdate();"; |
| | | sql += " delete from asr_wrk_detl_log where dateadd(day,360,appe_time) <= getdate();"; |
| | | sql += " delete from asr_wrk_mast_log where dateadd(day,360,appe_time) <= getdate();"; |
| | | sql += " delete from cust_wait_pakout_log where dateadd(day,360,appe_time) <= getdate();"; |
| | | sql += " delete from bas_mat_code_log where dateadd(day,360,appe_time) <= getdate();"; |
| | | SqlConnection sqlconn = new SqlConnection(Common.sqlcon); |
| | | sqlconn.Open(); |
| | | SqlTransaction sqltrans = sqlconn.BeginTransaction(); |
| | | SqlCommand sqlcmd = new SqlCommand(); |
| | | sqlcmd.Transaction = sqltrans; |
| | | string[] arraySql = sql.Split(';'); |
| | | try |
| | | { |
| | | for (int i = 0; i < arraySql.Length; i++) |
| | | { |
| | | if (arraySql[i] != "") |
| | | { |
| | | sqlcmd.CommandText = arraySql[i]; |
| | | sqlcmd.Connection = sqlconn; |
| | | sqlcmd.Transaction = sqltrans; |
| | | int result = sqlcmd.ExecuteNonQuery(); |
| | | } |
| | | } |
| | | sqltrans.Commit(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | //sqlcommon.Close(); |
| | | ls_error_memo = " " + seq + ".1 堆垛机&PLC命令转历史档错误 ! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | finally |
| | | { |
| | | sqlcmd.Dispose(); |
| | | sqltrans.Dispose(); |
| | | sqlconn.Dispose(); |
| | | } |
| | | return; |
| | | } |
| | | catch (Exception t) |
| | | { |
| | | ls_error_memo = " " + seq + ".2 堆垛机&PLC命令转历史档失败! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 处理库存档中库位状态为D O但是有明细的数据,清空明细 |
| | | /// </summary> |
| | | private void ProcErrorStockData(string seq) |
| | | { |
| | | string ls_error_memo = ""; |
| | | string loc_no = "", mat_no = ""; |
| | | DisplayInfo(seq, "N", "--处理库存档中异常库存信息......"); |
| | | try |
| | | { |
| | | string sqlDetl = "delete from asr_loc_detl where anfme <= 0;"; |
| | | Common.ExecAsrsModify(sqlDetl); |
| | | |
| | | string sql = "SELECT a.loc_no,b.matnr FROM asr_loc_mast a,asr_loc_detl b where a.loc_no=b.loc_no "; |
| | | sql += " and (a.loc_sts='O' or a.loc_sts='D') "; |
| | | |
| | | DataView dv_stkDetl = Common.ExecAsrsSelect(sql); |
| | | if (dv_stkDetl == null || dv_stkDetl.Count < 1) |
| | | { |
| | | return; |
| | | } |
| | | foreach (DataRowView drow_stkDetl in dv_stkDetl) |
| | | { |
| | | loc_no = drow_stkDetl[0].ToString(); |
| | | mat_no = drow_stkDetl[1].ToString(); |
| | | string sql0 = " delete from asr_loc_detl where loc_no='" + loc_no + "'; "; |
| | | SqlConnection sqlconn = new SqlConnection(Common.sqlcon); |
| | | sqlconn.Open(); |
| | | SqlTransaction sqltrans = sqlconn.BeginTransaction(); |
| | | SqlCommand sqlcmd = new SqlCommand(); |
| | | sqlcmd.Transaction = sqltrans; |
| | | string[] arraySql = sql0.Split(';'); |
| | | try |
| | | { |
| | | for (int i = 0; i < arraySql.Length; i++) |
| | | { |
| | | if (arraySql[i] != "") |
| | | { |
| | | sqlcmd.CommandText = arraySql[i]; |
| | | sqlcmd.Connection = sqlconn; |
| | | sqlcmd.Transaction = sqltrans; |
| | | int result = sqlcmd.ExecuteNonQuery(); |
| | | } |
| | | } |
| | | sqltrans.Commit(); |
| | | } |
| | | catch (SqlException t) |
| | | { |
| | | sqltrans.Rollback(); |
| | | //sqlcommon.Close(); |
| | | ls_error_memo = " " + seq + ".1 处理库存档中异常库存信息错误 ! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | finally |
| | | { |
| | | sqlcmd.Dispose(); |
| | | sqltrans.Dispose(); |
| | | sqlconn.Dispose(); |
| | | } |
| | | } |
| | | return; |
| | | } |
| | | catch (Exception t) |
| | | { |
| | | ls_error_memo = " " + seq + ".2 处理库存档中异常库存信息失败! 异常:" + t.Message; |
| | | DisplayInfo("", "E", ls_error_memo); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// 回报主线程 |
| | | /// </summary> |
| | | private void ThreadTask() |
| | | { |
| | | DisplayInfo("", "N", "---------------系统运行中-------------"); |
| | | while (true) |
| | | { |
| | | try |
| | | { |
| | | //生成出库工作档 |
| | | ProcOutToWorkData("1"); |
| | | ProcLocToWorkData("11"); |
| | | |
| | | //处理工作档状态4、14、6的资料 |
| | | ProcWorkMast("2"); |
| | | |
| | | //工作档转历史档 |
| | | ProcWorkToLog("3"); |
| | | |
| | | //堆垛机&PLC命令转历史档 |
| | | ProcDevCommandToLog("4"); |
| | | |
| | | //转已完成物料信息到历史档 |
| | | //ProcMatCodeToLog("5"); |
| | | //转出库完成待出库档数据到历史档 |
| | | ProcCheckToWorkData("5"); |
| | | |
| | | //转出库完成待出库档数据到历史档 |
| | | ProcWaitOutToLog("6"); |
| | | |
| | | //删除超过半年历史档 |
| | | ProcOverYearLog("7"); |
| | | |
| | | ProcErrorStockData("8"); |
| | | |
| | | Thread.Sleep(3000); |
| | | } |
| | | catch (Exception em) |
| | | { |
| | | Common.WriteLogFile("WcsError", "UpdateThread/ThreadTask--回报主线程循环出错:" + em.Message); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |