|
|
@@ -31,7 +31,7 @@ namespace UAS_MES.Query
|
|
|
|
|
|
DataTable dt;
|
|
|
|
|
|
- string ms_id;//记录ms_id
|
|
|
+ DataTable ms_id;//记录ms_id
|
|
|
|
|
|
DataTable ListA;//记录数据的当前序列号和之前序列号
|
|
|
|
|
|
@@ -60,9 +60,21 @@ namespace UAS_MES.Query
|
|
|
{
|
|
|
if (e.KeyCode == Keys.Enter)
|
|
|
{
|
|
|
- ms_id = dh.getFieldDataByCondition("makeserial", "max(ms_id) ms_id", "ms_sncode='" + sn_code.Text + "' or ms_beforesn='"+sn_code.Text+"'").ToString();
|
|
|
- ListA = (DataTable)dh.ExecuteSql("select ms_beforesn,ms_sncode from makeserial where ms_id='"+ms_id+"'","select");
|
|
|
- dt = (DataTable)dh.ExecuteSql("select ms_status,ms_nextstepcode,ms_paststep,ms_stepcode,NVL(ms_ifrework, 0) ms_ifrework,NVL(ms_reworkstatus, 0) ms_reworkstatus from makeserial where ms_id='" + ms_id + "'", "select");
|
|
|
+ ms_id = (DataTable)dh.ExecuteSql("select ms_id from makeserial where ms_sncode='" + sn_code.Text + "' or ms_beforesn='"+sn_code.Text+"' order by ms_id","select");
|
|
|
+ if (ms_id.Rows.Count==0)
|
|
|
+ {
|
|
|
+ //无值则提示
|
|
|
+ MessageBox.Show("序列号" + sn_code.Text + "不存在");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ StringBuilder ms_ids = new StringBuilder();//存所有的ms_id
|
|
|
+ int idCount = ms_id.Rows.Count;
|
|
|
+ for (int i=0;i<idCount;i++)
|
|
|
+ {
|
|
|
+ ms_ids.Append("'"+ms_id.Rows[i]["ms_id"].ToString()+"',");
|
|
|
+ }
|
|
|
+ ListA = (DataTable)dh.ExecuteSql("select ms_beforesn,ms_sncode,ms_makecode from makeserial where ms_id in ("+ms_ids.ToString().Substring(0,ms_ids.ToString().Length-1)+")","select");
|
|
|
+ dt = (DataTable)dh.ExecuteSql("select ms_status,ms_nextstepcode,ms_paststep,ms_stepcode,NVL(ms_ifrework, 0) ms_ifrework,NVL(ms_reworkstatus, 0) ms_reworkstatus from makeserial where ms_id in (" + ms_ids.ToString().Substring(0, ms_ids.ToString().Length - 1) + ") order by ms_id", "select");
|
|
|
if (dt.Rows.Count > 0)
|
|
|
{
|
|
|
if (Step != null && Step.Count > 0)
|
|
|
@@ -71,11 +83,11 @@ namespace UAS_MES.Query
|
|
|
SerialPanel.Controls.Clear();
|
|
|
PaintColor.Clear();
|
|
|
}
|
|
|
- string ifRework = dt.Rows[0]["ms_ifrework"].ToString();
|
|
|
+ string ifRework = dt.Rows[idCount-1]["ms_ifrework"].ToString();
|
|
|
//执行过的步骤
|
|
|
- PastStep = dt.Rows[0]["ms_paststep"].ToString();
|
|
|
+ PastStep = dt.Rows[idCount - 1]["ms_paststep"].ToString();
|
|
|
//下一步骤
|
|
|
- nextStepCode = dt.Rows[0]["ms_nextstepcode"].ToString();
|
|
|
+ nextStepCode = dt.Rows[idCount - 1]["ms_nextstepcode"].ToString();
|
|
|
//如果为不良的时候
|
|
|
string BadStep = "";
|
|
|
string RejectStep = "";
|
|
|
@@ -84,41 +96,49 @@ namespace UAS_MES.Query
|
|
|
if (ifRework != "0")
|
|
|
{
|
|
|
//是返工的
|
|
|
- if (dt.Rows[0]["ms_reworkstatus"].ToString() == "3")
|
|
|
+ if (dt.Rows[idCount - 1]["ms_reworkstatus"].ToString() == "3")
|
|
|
{
|
|
|
- BadStep = dt.Rows[0]["ms_stepcode"].ToString();
|
|
|
+ BadStep = dt.Rows[idCount - 1]["ms_stepcode"].ToString();
|
|
|
}
|
|
|
- else if (dt.Rows[0]["ms_reworkstatus"].ToString() == "4")
|
|
|
+ else if (dt.Rows[idCount - 1]["ms_reworkstatus"].ToString() == "4")
|
|
|
{
|
|
|
- RejectStep = dt.Rows[0]["ms_stepcode"].ToString();
|
|
|
+ RejectStep = dt.Rows[idCount - 1]["ms_stepcode"].ToString();
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//不是返工的
|
|
|
- if (dt.Rows[0]["ms_status"].ToString() == "3")
|
|
|
+ if (dt.Rows[idCount - 1]["ms_status"].ToString() == "3")
|
|
|
{
|
|
|
- BadStep = dt.Rows[0]["ms_stepcode"].ToString();
|
|
|
+ BadStep = dt.Rows[idCount - 1]["ms_stepcode"].ToString();
|
|
|
}
|
|
|
- else if (dt.Rows[0]["ms_status"].ToString() == "4")
|
|
|
+ else if (dt.Rows[idCount - 1]["ms_status"].ToString() == "4")
|
|
|
{
|
|
|
- RejectStep = dt.Rows[0]["ms_stepcode"].ToString();
|
|
|
+ RejectStep = dt.Rows[idCount - 1]["ms_stepcode"].ToString();
|
|
|
}
|
|
|
}
|
|
|
- currentStep = dt.Rows[0]["ms_stepcode"].ToString();
|
|
|
- //添加开始节点绿色,除了返工单
|
|
|
- if (BadStep==""&& ((dt.Rows[0]["ms_status"].ToString() == "3"&&ifRework=="0")||(dt.Rows[0]["ms_reworkstatus"].ToString()=="3"&&ifRework=="-1")))
|
|
|
+ currentStep = dt.Rows[idCount - 1]["ms_stepcode"].ToString();
|
|
|
+ //如果只有一个单
|
|
|
+ if (idCount == 1)
|
|
|
{
|
|
|
- PaintColor.Add(Brushes.Red);
|
|
|
+ //添加开始节点绿色,除了返工单
|
|
|
+ if (BadStep == "" && ((dt.Rows[idCount - 1]["ms_status"].ToString() == "3" && ifRework == "0") || (dt.Rows[idCount - 1]["ms_reworkstatus"].ToString() == "3" && ifRework == "-1")))
|
|
|
+ {
|
|
|
+ PaintColor.Add(Brushes.Red);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ PaintColor.Add(Brushes.Green);
|
|
|
+ }
|
|
|
}
|
|
|
- else
|
|
|
+ else//有至少两个工单,之前的工单肯定是已经完工的
|
|
|
{
|
|
|
PaintColor.Add(Brushes.Green);
|
|
|
}
|
|
|
//查询执行过的步骤
|
|
|
sql.Clear();
|
|
|
- sql.Append("select CD_DETNO,CD_STEPCODE,ms_makecode from craft left join craftdetail on cd_crid = cr_id left join makeserial ");
|
|
|
- sql.Append("on ms_craftcode=cr_code and ms_prodcode=cr_prodcode where ms_id='" + ms_id + "' order by cd_detno");
|
|
|
+ sql.Append("select CD_DETNO,CD_STEPCODE,ms_makecode,ms_id from craft left join craftdetail on cd_crid = cr_id left join makeserial ");
|
|
|
+ sql.Append("on ms_craftcode=cr_code and ms_prodcode=cr_prodcode where ms_id in (" + ms_ids.ToString().Substring(0, ms_ids.ToString().Length - 1) + ") order by ms_id,cd_detno");
|
|
|
dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
|
|
|
Step = new Dictionary<int, string>();
|
|
|
for (int i = 0; i < dt.Rows.Count + 2; i++)
|
|
|
@@ -135,70 +155,83 @@ namespace UAS_MES.Query
|
|
|
int index = 0;
|
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
{
|
|
|
- if (nextStepCode == dt.Rows[i]["CD_STEPCODE"].ToString())
|
|
|
+ //正在生产的途程才算
|
|
|
+ if (dt.Rows[i]["ms_id"].ToString()==ms_id.Rows[ms_id.Rows.Count-1]["ms_id"].ToString())
|
|
|
{
|
|
|
- index = i;
|
|
|
+ if (nextStepCode == dt.Rows[i]["CD_STEPCODE"].ToString())
|
|
|
+ {
|
|
|
+ index = i;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
{
|
|
|
- ////下一步不在途程中,不良或者报废或者完工
|
|
|
- if (nextStepCode == ""||nextStepCode==" ")
|
|
|
+ //只考虑正在生产的途程,之前工单的途程工序必定为绿色完工
|
|
|
+ if (dt.Rows[i]["ms_id"].ToString() == ms_id.Rows[ms_id.Rows.Count - 1]["ms_id"].ToString())
|
|
|
{
|
|
|
- //返工单
|
|
|
- if (currentStep=="")
|
|
|
- {
|
|
|
- passed = false;
|
|
|
- }
|
|
|
- //找到不良步骤
|
|
|
- if (BadStep == dt.Rows[i]["CD_STEPCODE"].ToString())
|
|
|
- {
|
|
|
- PaintColor.Add(Brushes.Red);
|
|
|
- //是不良品,后面就不执行
|
|
|
- passed = false;
|
|
|
- }
|
|
|
- //找到报废步骤
|
|
|
- else if (PastStep.Contains(dt.Rows[i]["CD_STEPCODE"].ToString() + "," + RejectStep)&&RejectStep!="")
|
|
|
+ ////下一步不在途程中,不良或者报废或者完工
|
|
|
+ if (nextStepCode == "" || nextStepCode == " ")
|
|
|
{
|
|
|
- PaintColor.Add(Brushes.Black);
|
|
|
- //是报废品,后面就不执行
|
|
|
- passed = false;
|
|
|
+ //返工单
|
|
|
+ if (currentStep == "")
|
|
|
+ {
|
|
|
+ passed = false;
|
|
|
+ }
|
|
|
+ //找到不良步骤
|
|
|
+ if (BadStep == dt.Rows[i]["CD_STEPCODE"].ToString())
|
|
|
+ {
|
|
|
+ PaintColor.Add(Brushes.Red);
|
|
|
+ //是不良品,后面就不执行
|
|
|
+ passed = false;
|
|
|
+ }
|
|
|
+ //找到报废步骤
|
|
|
+ else if (PastStep.Contains(dt.Rows[i]["CD_STEPCODE"].ToString() + "," + RejectStep) && RejectStep != "")
|
|
|
+ {
|
|
|
+ PaintColor.Add(Brushes.Black);
|
|
|
+ //是报废品,后面就不执行
|
|
|
+ passed = false;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //通过加绿色
|
|
|
+ if (passed)
|
|
|
+ {
|
|
|
+ PaintColor.Add(Brushes.Green);
|
|
|
+ }
|
|
|
+ //不通过加白色
|
|
|
+ else
|
|
|
+ {
|
|
|
+ PaintColor.Add(Brushes.White);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ ////序列号下一步不为空
|
|
|
else
|
|
|
{
|
|
|
- //通过加绿色
|
|
|
- if (passed)
|
|
|
+ /////SN下一步是否在途程中,是则标记
|
|
|
+ //找到下一步
|
|
|
+ if (i < index)
|
|
|
{
|
|
|
+ //已执行
|
|
|
PaintColor.Add(Brushes.Green);
|
|
|
}
|
|
|
- //不通过加白色
|
|
|
else
|
|
|
{
|
|
|
+ //未执行
|
|
|
PaintColor.Add(Brushes.White);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- ////序列号下一步不为空
|
|
|
else
|
|
|
{
|
|
|
- /////SN下一步是否在途程中,是则标记
|
|
|
- //找到下一步
|
|
|
- if (i < index)
|
|
|
- {
|
|
|
- //已执行
|
|
|
- PaintColor.Add(Brushes.Green);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //未执行
|
|
|
- PaintColor.Add(Brushes.White);
|
|
|
- }
|
|
|
+ //就是之前生产的途程,为绿色
|
|
|
+ PaintColor.Add(Brushes.Green);
|
|
|
}
|
|
|
}
|
|
|
if (ifRework != "0")
|
|
|
{
|
|
|
//完工添加绿色,未完工添加白色
|
|
|
- if (dh.CheckExist("Makeserial", "ms_id='" + ms_id + "' and ms_reworkstatus='2'"))
|
|
|
+ if (dh.CheckExist("Makeserial", "ms_id='" + ms_id.Rows[ms_id.Rows.Count - 1]["ms_id"] + "' and ms_reworkstatus='2'"))
|
|
|
PaintColor.Add(Brushes.Green);
|
|
|
else
|
|
|
PaintColor.Add(Brushes.White);
|
|
|
@@ -206,17 +239,27 @@ namespace UAS_MES.Query
|
|
|
else
|
|
|
{
|
|
|
//完工添加绿色,未完工添加白色
|
|
|
- if (dh.CheckExist("Makeserial", "ms_id='" + ms_id + "' and ms_status='2'"))
|
|
|
+ if (dh.CheckExist("Makeserial", "ms_id='" + ms_id.Rows[ms_id.Rows.Count - 1]["ms_id"] + "' and ms_status='2'"))
|
|
|
PaintColor.Add(Brushes.Green);
|
|
|
else
|
|
|
PaintColor.Add(Brushes.White);
|
|
|
}
|
|
|
Refresh();
|
|
|
SerialPanel.Refresh();
|
|
|
+ StringBuilder mp_sncodes = new StringBuilder();
|
|
|
+ StringBuilder makecodes = new StringBuilder();
|
|
|
+ //拼接序列号的和工单号的
|
|
|
+ for (int i=0;i<ListA.Rows.Count;i++)
|
|
|
+ {
|
|
|
+ //sql mp_sncode
|
|
|
+ mp_sncodes.Append("'" + ListA.Rows[i]["ms_sncode"].ToString() + "',"+(ListA.Rows[i]["ms_beforesn"].ToString()==""?"":(" '"+ListA.Rows[i]["ms_beforesn"].ToString()+"',")));
|
|
|
+ //sql ma_code
|
|
|
+ makecodes.Append("'"+ListA.Rows[i]["ms_makecode"].ToString()+"',");
|
|
|
+ }
|
|
|
sql.Clear();
|
|
|
sql.Append("select mp_makecode,ma_prodcode,sc_linecode,ma_craftcode,mp_sourcecode,mp_sncode,");
|
|
|
sql.Append("mp_indate,mp_inman,em_name from makeprocess left join make on mp_makecode=ma_code left join employee on mp_inman = em_code left join source on ");
|
|
|
- sql.Append("mp_sourcecode=sc_code where mp_sncode in ('" + ListA.Rows[0]["ms_sncode"].ToString() + "'"+(ListA.Rows[0]["ms_beforesn"].ToString()==""?"":(",'"+ListA.Rows[0]["ms_beforesn"].ToString()+"'")) +") and ma_code='" + dt.Rows[0]["ms_makecode"].ToString() + "' order by mp_indate");
|
|
|
+ sql.Append("mp_sourcecode=sc_code where mp_sncode in ("+mp_sncodes.ToString().Substring(0,mp_sncodes.ToString().Length-1)+") and ma_code in (" + makecodes.ToString().Substring(0,makecodes.ToString().Length-1)+ ") order by mp_indate");
|
|
|
dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
|
|
|
BaseUtil.FillDgvWithDataTable(CraftInfDgv, dt);
|
|
|
}
|