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 System.Collections;
using CoreFS.CA06;
using Core.Mes.Client.Comm.Tool;
using com.steering.pss.plnsaleord.order.model;
using Infragistics.Win.UltraWinGrid;
using Core.Mes.Client.Comm.Server;
using Core.Mes.Client.Comm;
using com.steering.pss.plnsaleord.ordAmCal.model;
using Core.StlMes.Client.PlnSaleOrd.BaseMethod;
namespace Core.StlMes.Client.PlnSaleOrd.PopupWindow
{
public partial class FrmChangeBomDp : FrmBase
{
///
/// 全程产线号
///
private string mscPline = "";
///
/// 轧管产线代码
///
private string plinCode = "";
///
/// Bom
///
private string bom = "";
///
/// 交货行pk
///
private string ordLnDlyPk = "";
///
/// 排产流水号
///
private string plnDivideId = "";
///
/// DESGiN_KEY
///
private string desginKey = "";
///
/// 物料编码
///
private string materialNo = "";
///
/// 冶金规范码
///
private string msc = "";
///
/// 冶金规范类型
///
private string mscStyle = "";
///
/// 产品码
///
private string psc = "";
///
/// 成品外径
///
private string outdiameter = "";
///
/// 成品壁厚
///
private string wallthick = "";
///
/// 成品规格代码
///
private string specCode = "";
///
/// 成品规格描述
///
private string specName = "";
///
/// 品名代码
///
private string producCode = "";
///
/// 品名
///
private string producName = "";
///
/// 扣型代码
///
private string modelCode = "";
///
/// 扣型
///
private string modelName = "";
///
/// 外购坯
///
private string outsBilletFl = "";
///
/// 外购管
///
private string outsStlPipeFl = "";
///
/// 最终用户代码
///
private string finalUser = "";
///
/// 分类
///
private string custom = "";
///
/// 分类
///
public string Custom
{
get { return custom; }
set { custom = value; }
}
private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
{
switch (e.Tool.Key)
{
case "Query":
DoQuery();
break;
case "Save":
DoSave();
break;
case "AddEspec":
DoAddEspec();
break;
case "Colse":
this.Close();
break;
}
}
public FrmChangeBomDp(string _ordLnDlyPk, string _plnDivideId, OpeBase baseOb)
{
this.IsLoadUserView = true;
this.ob = baseOb;
ordLnDlyPk = _ordLnDlyPk;
plnDivideId = _plnDivideId;
InitializeComponent();
EntityHelper.ShowGridCaption(ultraGridBom.DisplayLayout.Bands[0]);
EntityHelper.ShowGridCaption(this.ultraGridDPine.DisplayLayout.Bands[0]);
}
private void FrmChangeBomDp_Load(object sender, EventArgs e)
{
Init();
DoQuery();
}
private void Init()
{
if (!this.custom.Equals("Dbk") && !this.custom.Equals(""))
{
ultraToolbarsManager1.Tools.Remove(ultraToolbarsManager1.Tools["AddEspec"]);
}
if (!this.custom.Equals("Zg") && !this.custom.Equals(""))
{
splitContainer1.Panel2Collapsed = true;
}
}
///
/// 刷新
///
//private void RefresDate()
//{
// DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreSaleOrderReceive.querySaleProcStatus",
// new object[] { ordLnDlyPk, plnDivideId }, this.ob);
// if (dt != null && dt.Rows.Count > 0)
// {
// DataRow dr = dt.Rows[0];
// desginKey = dr["DESGIN_KEY"].ToString();
// msc = dr["MSC"].ToString();
// mscStyle = dr["MSC_STYLE"].ToString();//冶金规范描述
// psc = dr["PSC"].ToString();//产品码
// outdiameter = dr["OUTDIAMETER"].ToString();
// wallthick = dr["WALLTHICK"].ToString();
// specCode = dr["SPEC_CODE"].ToString();//规格
// specName = dr["SPEC_NAME"].ToString();
// modelCode = dr["MODEL_CODE"].ToString();//扣型
// modelName = dr["MODEL_DESC"].ToString();
// producCode = dr["PRODUCCODE"].ToString();//品名
// producName = dr["PRODUCNAME"].ToString();
// outsBilletFl = dr["OUTS_BILLET_FL"].ToString();//外购坯(COM_BASE_INFO:1218)
// outsStlPipeFl = dr["OUTS_STL_PIPE_FL"].ToString();//外购管(COM_BASE_INFO:1219)
// materialNo = dr["MATERIAL_NO"].ToString();//外购管(COM_BASE_INFO:1219)
// finalUser = dr["FINAL_USER"].ToString();//外购管(COM_BASE_INFO:1219)
// }
//}
///
/// 查询
///
private void DoQuery()
{
//ArrayList param = new ArrayList();
List listSource = null;
string checkDbk = "";
string checkZgPline = "";
DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreSaleOrderReceive.querySaleProcStatus",
new object[] { ordLnDlyPk, plnDivideId }, this.ob);
if (dt == null || dt.Rows.Count <= 0)
{
MessageUtil.ShowError("找不到合同信息!");
this.Close();
return;
}
DataRow dr = dt.Rows[0];
desginKey = dr["DESGIN_KEY"].ToString();
msc = dr["MSC"].ToString();
mscStyle = dr["MSC_STYLE"].ToString();//冶金规范描述
psc = dr["PSC"].ToString();//产品码
outdiameter = dr["OUTDIAMETER"].ToString();
wallthick = dr["WALLTHICK"].ToString();
specCode = dr["SPEC_CODE"].ToString();//规格
specName = dr["SPEC_NAME"].ToString();
modelCode = dr["MODEL_CODE"].ToString();//扣型
modelName = dr["MODEL_DESC"].ToString();
producCode = dr["PRODUCCODE"].ToString();//品名
producName = dr["PRODUCNAME"].ToString();
outsBilletFl = dr["OUTS_BILLET_FL"].ToString();//外购坯(COM_BASE_INFO:1218)
outsStlPipeFl = dr["OUTS_STL_PIPE_FL"].ToString();//外购管(COM_BASE_INFO:1219)
materialNo = dr["MATERIAL_NO"].ToString();//外购管(COM_BASE_INFO:1219)
finalUser = dr["FINAL_USER"].ToString();//外购管(COM_BASE_INFO:1219)
mscPline = dr["INDEX_SEQ"].ToString();
plinCode = dr["GROUP_ROLL"].ToString();
bom = dr["BOM"].ToString();
if (!this.custom.Equals("Dbk" ) && !this.custom.Equals(""))
{
if (dr["E_IS_OK"].ToString().Trim().Equals("1"))
{
checkDbk = dr["E_IN_MATERIAL_NO"].ToString();
}
if (!this.custom.Equals("Zg"))
{
if (dr["D_IS_OK"].ToString().Trim().Equals("1"))
{
checkZgPline = dr["GROUP_ROLL"].ToString();
}
}
}
//param.Add(mscPline);
//param.Add(msc);
//param.Add(materialNo);
//param.Add(dr["PROCESS_SEQ"].ToString());
//listSource = EntityHelper.GetData(
// "com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getOrdDesignBom", new object[] {
// param, checkDbk, checkZgPline }, this.ob);
listSource = EntityHelper.GetData(
"com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getOrdLineDesignBom", new object[] {
desginKey, checkDbk, checkZgPline }, this.ob);
slmOrdDesignBomEntityBindingSource.DataSource = listSource;
PlanComm.setGridActivation(ultraGridBom.DisplayLayout.Bands[0], "CHC");
ultraGridBom.Update();
IQueryable checkRows = ultraGridBom.Rows.AsQueryable().Where(" Bom = '" + bom + "' ");
if (checkRows.Count() == 0)
{
return;
}
checkRows.First().Cells["CHC"].Value = true;
ultraGridBom.ActiveRow = checkRows.First();
}
///
/// 查询 可选产线
///
///
///
private void DoQueryPline(string inMaterialNo, string outMaterialNo)
{
ArrayList param = new ArrayList();
param.Add(inMaterialNo);
param.Add(outMaterialNo);
param.Add(desginKey);
param.Add(mscPline);
param.Add(finalUser);
param.Add(producCode);
List listSource = EntityHelper.GetData(
"com.steering.pss.plnsaleord.order.CoreSaleOrderReceive.getBomMaterialDpl", new object[] { param }, this.ob);
this.slmBaseMaterialDPlEntitybindingSource.DataSource = listSource;
PlanComm.setGridActivation(this.ultraGridDPine.DisplayLayout.Bands[0], "CHC");
ultraGridDPine.Update();
IQueryable checkRows = ultraGridDPine.Rows.AsQueryable().Where(" PlineCode = '" + plinCode + "' ");
if (checkRows.Count() == 0)
{
return;
}
checkRows.First().Cells["CHC"].Value = true;
ultraGridDPine.ActiveRow = checkRows.First();
}
///
/// 新增镦拔扩规格
///
private void DoAddEspec()
{
ultraGridBom.UpdateData();
IQueryable checkRows = ultraGridBom.Rows.AsQueryable().Where(" CHC = 'True' ");
if (checkRows.Count() == 0)
{
MessageUtil.ShowTips("未指定钢种!");
return;
}
UltraGridRow ugr = checkRows.First();
FrmAddEinSpec addSpec = new FrmAddEinSpec(this.ob);
ArrayList param = new ArrayList();
param.Add(desginKey);
param.Add(ugr.Cells["MscPline"].Value.ToString());
DataTable dtProcess = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CorePlnSaleOrder.queryMscplPrc",
new object[] { param }, this.ob);
if (dtProcess != null && dtProcess.Rows.Count > 0)
{
string bjType = "";
foreach (DataRow dr in dtProcess.Rows)
{
if (dr["PROCESS_CODE"].ToString().Equals("E"))
{
bjType = dr["PROCESS_CODE_C"].ToString();
}
}
if (bjType.Equals(""))
{
MessageUtil.ShowError("未找到镦拔扩二级工序!");
return;
}
addSpec.Prolineinfo = bjType;
addSpec.Gztype = ugr.Cells["Gradecode"].Value.ToString();
addSpec.BjOutdiameter = outdiameter;
addSpec.BjWallthick = wallthick;
addSpec.ShowDialog();
if (addSpec.isModify)
{
ArrayList listMscPline = new ArrayList();
ArrayList listwholeBacklog = new ArrayList();
ArrayList listParam = new ArrayList();
listMscPline.Add(ugr.Cells["MscPline"].Value.ToString());
listwholeBacklog.Add(ugr.Cells["wholeBacklog"].Value.ToString());
listParam.Add(desginKey);
listParam.Add(msc);
listParam.Add(mscStyle);
listParam.Add(psc);//产品码
listParam.Add(outdiameter);
listParam.Add(wallthick);
listParam.Add(specCode);//规格
listParam.Add(specName);
listParam.Add(modelCode);//扣型
listParam.Add(modelName);
listParam.Add(producCode);//品名
listParam.Add(producName);
listParam.Add(outsBilletFl);//外购坯(COM_BASE_INFO:1218)
listParam.Add(outsStlPipeFl);//外购管(COM_BASE_INFO:1219)
CoreClientParam ccp = new CoreClientParam();
ccp.ServerName = "com.steering.pss.sale.order.craftDesign.main.CraftDesignStandard";
ccp.MethodName = "checkNewSpec";
//ccp.ServerParams = new object[] { desginKey, msc, listMscPline,
// listwholeBacklog, outdiameter, wallthick, specCode, specName, psc };
ccp.ServerParams = new object[] { listParam, listMscPline, listwholeBacklog };
ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
if (ccp.ReturnCode != -1)
{
MessageUtil.ShowTips(ccp.ReturnInfo);
}
}
}
DoQuery();
}
///
/// 保存更改
///
private void DoSave()
{
try
{
ultraGridBom.UpdateData();
ultraGridDPine.UpdateData();
IQueryable checkRows = ultraGridBom.Rows.AsQueryable().Where("CHC = 'True'");
PlnSaleordProcEntity orderPrcEntity = new PlnSaleordProcEntity();
if (checkRows.Count() == 0)
{
MessageUtil.ShowError("未选择任何BOM!");
return;
}
IQueryable checkRows1 = this.ultraGridDPine.Rows.AsQueryable().Where("CHC = 'True'");
DataTable dtSatus = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreSaleOrderReceive.querySaleProcStatus",
new object[] { ordLnDlyPk, plnDivideId }, this.ob);
if (dtSatus == null || dtSatus.Rows.Count <= 0)
{
MessageUtil.ShowError("找不到合同信息!");
this.Close();
return;
}
string outsStlPipeFl = dtSatus.Rows[0]["OUTS_STL_PIPE_FL"].ToString();
orderPrcEntity.Bom = checkRows.First().Cells["Bom"].Value.ToString();
DataTable dtBom = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getDesignBomInf",
new object[] { orderPrcEntity.Bom }, this.ob);
if (dtBom == null || dtBom.Rows.Count <= 0)
{
return;
}
orderPrcEntity.GroupRollAll = dtBom.Rows[0]["D_PLINE"].ToString();
orderPrcEntity.Gradecode = dtBom.Rows[0]["GRADECODE"].ToString();
orderPrcEntity.EInMaterialDesc = dtBom.Rows[0]["E_IN_MATERIAL_DESC"].ToString();
orderPrcEntity.EInMaterialNo = dtBom.Rows[0]["E_IN_MATERIAL_NO"].ToString();
orderPrcEntity.DimaterYlg = dtBom.Rows[0]["DIMATER"].ToString();
orderPrcEntity.HeightYlg = dtBom.Rows[0]["HEIGHT"].ToString();
orderPrcEntity.GroupJgx = FrmDefGroup.DefJgxGourp(desginKey,
dtSatus.Rows[0]["INDEX_SEQ"].ToString(), orderPrcEntity.Bom, this.ob);
orderPrcEntity.GroupRcl = FrmDefGroup.DefRclGourp(desginKey,
dtSatus.Rows[0]["INDEX_SEQ"].ToString(), orderPrcEntity.Bom, this.ob);
#region 判断坯料的属性
string dinMaterial = "";
///轧管投入物料(炼钢末工序产出物料)
if (!dtBom.Rows[0]["D_IN_MATERIAL_NO"].ToString().Equals(""))
{
dinMaterial = dtBom.Rows[0]["D_IN_MATERIAL_NO"].ToString();
}
else if (!dtBom.Rows[0]["C_OUT_MATERIAL_NO"].ToString().Equals(""))
{
dinMaterial = dtBom.Rows[0]["C_OUT_MATERIAL_NO"].ToString();
}
else if (!dtBom.Rows[0]["B_OUT_MATERIAL_NO"].ToString().Equals(""))
{
dinMaterial = dtBom.Rows[0]["B_OUT_MATERIAL_NO"].ToString();
}
else
{
dinMaterial = dtBom.Rows[0]["A_OUT_MATERIAL_NO"].ToString();
}
orderPrcEntity.StuffProperty = PlnSaleOrderBase.stuffProperty(dinMaterial);
#endregion
// 轧管去向
orderPrcEntity.Abc = PlnSaleOrderBase.getPlnOrdZgAbc(dtBom.Rows[0]["WHOLE_BACKLOG"].ToString(), dtBom.Rows[0]["WHOLE_BACKLOG_DESC"].ToString());
#region 确认
if (this.custom.Equals("Dbk"))
{
orderPrcEntity.EIsOk = "1";
orderPrcEntity.DIsOk = dtSatus.Rows[0]["D_IS_OK"].ToString();
orderPrcEntity.GradecodeIsOk = dtSatus.Rows[0]["GRADECODE_IS_OK"].ToString();
if (checkRows1.Count() == 0)
{
if (ultraGridDPine.Rows.Count > 0)
{
orderPrcEntity.GroupRoll = ultraGridDPine.Rows[0].Cells["PlineCode"].Value.ToString();
}
orderPrcEntity.DIsOk = "0";
}
else
{
orderPrcEntity.GroupRoll = checkRows1.First().Cells["PlineCode"].Value.ToString();
}
if (!orderPrcEntity.Bom.Equals(dtSatus.Rows[0]["BOM"].ToString()))
{
orderPrcEntity.GradecodeIsOk = "0";
}
}
else if (this.custom.Equals("Zg"))
{
orderPrcEntity.EIsOk = dtSatus.Rows[0]["E_IS_OK"].ToString();
orderPrcEntity.DIsOk = "1";
orderPrcEntity.GradecodeIsOk = dtSatus.Rows[0]["GRADECODE_IS_OK"].ToString();
if (checkRows1.Count() == 0)
{
MessageUtil.ShowError("未选择任何轧管产线!");
return;
}
orderPrcEntity.GroupRoll = checkRows1.First().Cells["PlineCode"].Value.ToString();
if (!orderPrcEntity.Bom.Equals(dtSatus.Rows[0]["BOM"].ToString()))
{
orderPrcEntity.GradecodeIsOk = "0";
}
}
else if (this.custom.Equals("Grade"))
{
orderPrcEntity.EIsOk = dtSatus.Rows[0]["E_IS_OK"].ToString();
orderPrcEntity.DIsOk = dtSatus.Rows[0]["D_IS_OK"].ToString();
orderPrcEntity.GradecodeIsOk = "1";
if (checkRows1.Count() == 0)
{
if (ultraGridDPine.Rows.Count > 0)
{
orderPrcEntity.GroupRoll = ultraGridDPine.Rows[0].Cells["PlineCode"].Value.ToString();
}
}
else
{
orderPrcEntity.GroupRoll = checkRows1.First().Cells["PlineCode"].Value.ToString();
}
}
else
{
if (checkRows1.Count() == 0)
{
MessageUtil.ShowError("未选择任何轧管产线!");
return;
}
orderPrcEntity.GroupRoll = checkRows1.First().Cells["PlineCode"].Value.ToString();
orderPrcEntity.EIsOk = "1";
orderPrcEntity.DIsOk = "1";
orderPrcEntity.GradecodeIsOk = "1";
}
#endregion
if (dtSatus.Rows[0]["PROCESS_SEQ"].ToString().Contains("D")
&& !orderPrcEntity.GroupRoll.Trim().Equals("C072")
&& !outsStlPipeFl.Equals("121903")
&& !outsStlPipeFl.Equals("121902"))
{
#region 合同量转换
OutOrdParamEntity outOrdParam = new OutOrdParamEntity();
InOrdParamEntity inOrdParam = new InOrdParamEntity();
PlnGetOrdAmount ordAmountCal = new PlnGetOrdAmount(this.ob);
DateTime date = new DateTime();
string errMessage = "";
double putRate = 1;
if (DateTime.TryParse(dtSatus.Rows[0]["ROLL_MONTH"].ToString(), out date))
{
//投料率
putRate = FrmPlnSaleOrder.queryPutRate(date.Year, date.Month, this.ob);
}
inOrdParam = ordAmountCal.getInOrdPlnParam(desginKey, dtSatus.Rows[0]["INDEX_SEQ"].ToString(),
ordLnDlyPk, plnDivideId, orderPrcEntity.GroupRoll, orderPrcEntity.Bom,
dtSatus.Rows[0]["CODE_JG"].ToString(), putRate);
if (!ordAmountCal.isRightParam(inOrdParam, desginKey, dtSatus.Rows[0]["CODE_JG"].ToString(),
orderPrcEntity.Bom, orderPrcEntity.GroupRoll, out errMessage))
{
MessageUtil.ShowError(errMessage);
return;
}
ordAmountCal.InEnity = inOrdParam;
outOrdParam = ordAmountCal.getOrdAmount();
if (outOrdParam.ErrCode == -1)
{
MessageUtil.ShowError("合同量转换出错(" + outOrdParam.ErrMessage + ")。");
return;
}
orderPrcEntity.WeightPerM = outOrdParam.WeightMi.ToString();
orderPrcEntity.PlanWtD = outOrdParam.WeightInA.ToString();
orderPrcEntity.PlanNumD = outOrdParam.PlanNum.ToString();
orderPrcEntity.AimLenRoll = outOrdParam.AimlengthZg.ToString();
orderPrcEntity.AimLenEnd = outOrdParam.AimLength.ToString();
orderPrcEntity.PlanPMain = outOrdParam.WeightPc.ToString();
orderPrcEntity.PlanTotLenD = (outOrdParam.PlanNum * outOrdParam.AimLength).ToString();
orderPrcEntity.TotLenOneP = outOrdParam.TotLenOneP.ToString();
orderPrcEntity.CutNumP = outOrdParam.CutNumP.ToString();
orderPrcEntity.RollLength = outOrdParam.RollLength.ToString();
orderPrcEntity.AimWallthick = outOrdParam.AimWallthick.ToString();
orderPrcEntity.LenRollMax = outOrdParam.LenRollMax.ToString();
orderPrcEntity.LenRollMin = outOrdParam.LenRollMin.ToString();
orderPrcEntity.AimOutdiameter = outOrdParam.AimOutdiameter.ToString();
orderPrcEntity.FeedRate = putRate.ToString();
orderPrcEntity.Coefficient = outOrdParam.Coefficient.ToString();
orderPrcEntity.CoefficientMin = outOrdParam.CoefficientMin.ToString();
orderPrcEntity.PlanPMainMin = outOrdParam.PlanPMainMin.ToString();
orderPrcEntity.AimWtEnd = outOrdParam.AimWtEnd.ToString();
orderPrcEntity.WeightKzM = outOrdParam.WeightKzM.ToString();
#endregion
}
orderPrcEntity.OrdLnDlyPk = ordLnDlyPk;
orderPrcEntity.PlnDivideId = plnDivideId;
int succeed = ServerHelper.SetData("com.steering.pss.plnsaleord.order.CoreSaleOrderReceive.updateSaleordProcBomDp",
new object[] { orderPrcEntity }, this.ob);
if (succeed > 0)
{
MessageUtil.ShowTips("保存成功。");
}
}
catch (Exception ex)
{
if (!(ex is MESException))
{
MessageUtil.ShowError(ex.Message);
}
}
DoQuery();
}
///
/// 查询BOM向下可选产线
///
///
///
private void ultraGridBom_AfterRowActivate(object sender, EventArgs e)
{
string inMaterialNo = ultraGridBom.ActiveRow.Cells["DInMaterialNo"].Value.ToString();
string outMaterialNo = ultraGridBom.ActiveRow.Cells["DOutMaterialNo"].Value.ToString();
DoQueryPline(inMaterialNo, outMaterialNo);
}
///
/// 控制单选
///
///
///
private void ultraGridBom_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
{
if (e.Cell.Column.Key.Equals("CHC"))
{
if (Convert.ToBoolean(e.Cell.Row.Cells["CHC"].Text))
{
foreach (UltraGridRow uRow in ultraGridBom.Rows)
{
if (uRow != e.Cell.Row)
{
uRow.Cells["CHC"].Value = false;
}
}
}
else
{
e.Cell.Row.Cells["CHC"].Value = true;
}
}
}
///
/// 控制单选
///
///
///
private void ultraGridDPine_CellChange(object sender, CellEventArgs e)
{
if (e.Cell.Column.Key.Equals("CHC"))
{
if (Convert.ToBoolean(e.Cell.Row.Cells["CHC"].Text))
{
foreach (UltraGridRow uRow in this.ultraGridDPine.Rows)
{
if (uRow != e.Cell.Row)
{
uRow.Cells["CHC"].Value = false;
}
}
}
else
{
e.Cell.Row.Cells["CHC"].Value = true;
}
}
}
}
}