using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CoreFS.CA06;
using Core.Mes.Client.Comm.Server;
using Infragistics.Win.UltraWinTree;
using System.Collections;
using Core.Mes.Client.Comm.Tool;
using Core.StlMes.Client.SaleOrder.BLL;
using Core.StlMes.Client.Qcm;
namespace Core.StlMes.Client.SaleOrder.Dialog
{
public partial class frmDesignFallBack : FrmBase
{
private string _ordLnPk;
private string _craftSeq;
private bool _isCraft = false;
public frmDesignFallBack(string ordLnPk, string craftSeq, bool isCraft, OpeBase ob)
{
InitializeComponent();
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
_ordLnPk = ordLnPk;
_isCraft = isCraft;
if (_isCraft)
{
this.Text = "工艺评审回退";
}
_craftSeq = craftSeq;
this.ob = ob;
}
private void frmDesignFallBack_Load(object sender, EventArgs e)
{
DoQuery();
}
///
/// 生成树
///
/// DataTable
/// key
/// 显示值
private void CreateTree(DataTable dt, string hideValue, string showValue)
{
if (dt == null || dt.Rows.Count == 0)
{
return;
}
UltraTreeNode utn = null;
for (int i = 0; i < dt.Rows.Count; i++)
{
utn = new UltraTreeNode(dt.Rows[i][hideValue].ToString(), dt.Rows[i][showValue].ToString());
utn.Override.NodeStyle = NodeStyle.OptionButton;
utn.Tag = dt.Rows[i];
ultraTree.Nodes.Add(utn);
}
}
private void DoQuery()
{
DataTable dt = null;
if (_isCraft)
{
dt = GetCraftItemByOrdLnPk(_ordLnPk);
CreateTree(dt, "LST_ITEM", "LST_ITEM");
}
else
{
dt = ServerHelper.GetData("com.steering.pss.sale.order.qualityDesign.QualityDesignFallback.getItems",
new Object[] { _ordLnPk }, this.ob);
CreateTree(dt, "SEQ_INDEX", "LST_ITEM");
}
if (ultraTree.Nodes.Count > 0)
{
ultraTree.Nodes[0].CheckedState = CheckState.Checked;
}
}
private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
{
switch (e.Tool.Key)
{
case "FallBack":
if (_isCraft)
{
DoCraftFallBack();
}
else
{
DoFallBack();
}
break;
case "Cancel":
this.Close();
break;
default:
break;
}
}
private void DoCraftFallBack()
{
//...
ultraTree.Update();
if (ultraTree.ActiveNode == null)
{
MessageUtil.ShowWarning("请选择回退节点");
return;
}
CraftOrdDesignBLL craftOrdDesignBLL = new CraftOrdDesignBLL(ob);
CraftOrdDesignEntity craftOrdDesign = craftOrdDesignBLL.QueryByPk(new CraftOrdDesignEntity()
{
OrdLnPk = _ordLnPk,
CraftSeq = decimal.Parse(_craftSeq == "" ? "0" : _craftSeq)
});
if (craftOrdDesign == null)
{
MessageUtil.ShowWarning("当前合同行不存在工艺设计结果,不能回退!");
return;
}
//if (craftOrdDesign.LockFlag != "1" || craftOrdDesign.Validflag != "2")
//{
// MessageUtil.ShowWarning("当前合同行已经生成工艺文件,不能回退!");
// return;
//}
DataTable dtCraftItem = GetCraftItemByOrdLnPk(_ordLnPk);
DataRow[] drs = dtCraftItem.Select("DESIGN_STS = 'F'");
if (drs.Length > 0)
{
DataRow dr = (DataRow)ultraTree.ActiveNode.Tag;
if (decimal.Parse(dr["SEQ_INDEX"].ToString()) > decimal.Parse(drs[0]["SEQ_INDEX"].ToString()))
{
MessageUtil.ShowWarning("不能回退到失败项之后的节点!");
return;
}
}
string item = ultraTree.ActiveNode.Text.Trim();
string mscPline = "";
string processCode = "";
string dimater = "";
string height = "";
string pic = "";
if (item == "试样码(内控)")
{
DataTable dtBackLogProcess = ServerHelper.GetData("com.steering.pss.sale.order.qualityDesign.QualityDesignFallback.getCraftBackLogProcess",
new object[]{ _ordLnPk, _craftSeq }, ob);
dtBackLogProcess.Columns["MSC_PLINE"].Caption = "制程号";
dtBackLogProcess.Columns["WHOLE_BACKLOG"].Caption = "全程途径码";
dtBackLogProcess.Columns["WHOLE_BACKLOG_DESC"].Caption = "全程途径描述";
dtBackLogProcess.Columns["PROCESS_DESC"].Caption = "工序";
dtBackLogProcess.Columns["DIMATER"].Caption = "外径";
dtBackLogProcess.Columns["HEIGHT"].Caption = "壁厚";
BaseInfoPopup popup = new BaseInfoPopup(dtBackLogProcess, "MSC_PLINE", "PROCESS_CODE");
popup.Text = "选择要回退的记录!";
if (popup.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
mscPline = popup.ChoicedRow.GetValue("MSC_PLINE");
processCode = popup.ChoicedRow.GetValue("PROCESS_CODE");
dimater = popup.ChoicedRow.GetValue("DIMATER");
height = popup.ChoicedRow.GetValue("HEIGHT");
pic = popup.ChoicedRow.GetValue("PIC");
}
else
{
return;
}
}
dlgReviewMemo dlg = new dlgReviewMemo();
dlg.ReviewFlag = 0;
dlg.ReviewSatus = "工艺评审回退";
dlg.ShowDialog();
string backReason = dlg.ReviewMemo;
if (backReason.Trim().Length == 0)
{
return;
}
backReason = UserInfo.ParentDepartment + "-" + (UserInfo.GetDepartment()) + ":" + UserInfo.GetUserName() + " 退回说明:" + backReason;
ServerHelper.SetData("com.steering.pss.sale.order.qualityDesign.QualityDesignFallback.craftFallBack",
new object[] { _ordLnPk, item, backReason, mscPline, processCode, dimater, height, pic }, ob);
MessageUtil.ShowTips("回退成功!");
this.Close();
}
private DataTable GetCraftItemByOrdLnPk(string ordLnPk)
{
DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.qualityDesign.QualityDesignFallback.getCraftItems",
new object[] { ordLnPk }, ob);
return dt;
}
private void DoFallBack()
{
ultraTree.Update();
if (ultraTree.ActiveNode == null)
{
MessageUtil.ShowWarning("请选择回退节点");
return;
}
String item = ultraTree.ActiveNode.Text.Trim();
if (item.Equals("MSC(n)") || item.Equals("产品技术要求") || item.Equals(
"合同附加要求"))
{
MessageUtil.ShowWarning("MSC(n)管理科室、产品技术要求、MSC(n)、合同附加要求 暂不提供回退功能");
return;
}
if (item.Equals("生产周期"))
{
MessageUtil.ShowWarning("生产周期无需回退");
return;
}
String retrunMessage = checkOrdLine(ultraTree.ActiveNode.Text.Trim());
if (!retrunMessage.Equals(""))
{
MessageUtil.ShowWarning(retrunMessage);
return;
}
dlgReviewMemo dlg = new dlgReviewMemo();
dlg.ReviewFlag = 0;
dlg.ReviewSatus = "技术评审回退";
dlg.ShowDialog();
string backReason = dlg.ReviewMemo;
if (backReason.Trim().Length == 0)
{
return;
}
backReason = UserInfo.ParentDepartment + "-" + (UserInfo.GetDepartment()) + ":" + UserInfo.GetUserName() + " 退回说明:" + backReason;
ArrayList list = new ArrayList();
list.Add(_ordLnPk);
list.Add(ultraTree.ActiveNode.Text.Trim());
list.Add(backReason);
list.Add(UserInfo.GetDeptid());
list.Add(UserInfo.GetDepartment());
list.Add(UserInfo.GetUserName());
list.Add(UserInfo.GetUserID());
CoreClientParam ccp = new CoreClientParam();
ccp.ServerName = "com.steering.pss.sale.order.qualityDesign.QualityDesignFallback";
ccp.MethodName = "fallBack";
ccp.ServerParams = new object[] { list };
ccp = this.ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
if (ccp.ReturnCode != -1)
{
MessageUtil.ShowTips(ccp.ReturnInfo);
if (Boolean.Parse(ccp.ReturnObject.ToString()))
{
this.Close();
}
}
}
private void ultraTree_AfterActivate(object sender, NodeEventArgs e)
{
//e.TreeNode.Selected = true;
// e.TreeNode.Nodes.Override.NodeStyle = NodeStyle.OptionButton;
e.TreeNode.CheckedState = CheckState.Checked;
}
private void ultraTree_AfterCheck(object sender, NodeEventArgs e)
{
e.TreeNode.Selected = true;
ultraTree.ActiveNode = e.TreeNode;
}
private String checkOrdLine(String item)
{
List listSource = EntityHelper.GetData(
"com.steering.pss.sale.order.qualityDesign.QualityDesignFallback.getOrdLineInfo", new object[] { _ordLnPk }, this.ob);
if (listSource != null && listSource.Count > 0)
{
SlmOrderLineEntityFallBack orderLine = listSource[0];
// A:钢管(管坯)(交付、制程)
//B:钢管+接箍(交付、制程、接箍码)
//C:短节+附件 (制程、接箍码、备料码)
//D:接箍 (制程、接箍)
//E:双公短节(交付、制程、备料码)
if (orderLine.MscStyle.Equals("A"))
{
if (item.Equals("接箍") || item.Equals("备料"))
{
return "钢管/管坯产品没有接箍、备料要求,不能回退至:" + item;
}
}
else if (orderLine.MscStyle.Equals("B"))
{
if (item.Equals("备料"))
{
return "钢管+接箍产品没有备料要求,不能回退至:" + item;
}
}
else if (orderLine.MscStyle.Equals("C"))
{
if (item.Equals("成分标准") || item.Equals("理化标准") || item.Equals("公差标准") || item.Equals("探伤标准") || item.Equals("水压标准") || item.Equals("加工标准"))
{
return "短节+附件产品没有交付标准,不能回退至:" + item;
}
}
else if (orderLine.MscStyle.Equals("D"))
{
if (item.Equals("备料") || item.Equals("成分标准") || item.Equals("理化标准") || item.Equals("公差标准") || item.Equals("探伤标准") || item.Equals("水压标准") || item.Equals("加工标准"))
{
return "接箍产品没有交付标准与备料要求,不能回退至:" + item;
}
}
else
{
if (item.Equals("接箍"))
{
return "双公短节产品没有接箍要求,不能回退至:" + item;
}
}
if (orderLine.MpsFl.Equals("0") && item.Equals("MPS"))
{
return "合同对MPS 没有要求,不能回退至" + item;
}
}
return "";
}
}
}