using Gs.DevApp.Entity;
using Gs.DevApp.ToolBox;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Data;
using System.Dynamic;
using System.Windows.Forms;
namespace Gs.DevApp.DevFrm.Work
{
public partial class Frm_Work01Fg : DevExpress.XtraEditors.XtraForm
{
string _webServiceName = "WorkCollect/";
string dianJianPath = "";//电检取值路径
string goodTag = "√";
string badTag = "×";
string fGxTouRu = "G001:投入";
///
///
///
/// 工序
/// 班次
/// 目前为电检路径
/// 是否水检
public Frm_Work01Fg(string _fGx, string _fBc)
{
InitializeComponent();
System.Drawing.Font ft1 = new System.Drawing.Font("宋体", 35F);//大按钮
System.Drawing.Font ft2 = new System.Drawing.Font("宋体", 25F);//中按钮
System.Drawing.Font ft3 = new System.Drawing.Font("宋体", 15F);//grid
System.Drawing.Font ft4 = new System.Drawing.Font("宋体", 12F);//head
System.Drawing.Font ft5 = new System.Drawing.Font("宋体", 12F);//表头
//设置字体大小
this.btnGood.Appearance.Font = ft1;
this.btnBad.Appearance.Font = ft1;
this.simpleButton3.Appearance.Font = ft2;
this.simpleButton7.Appearance.Font = ft2;
this.simpleButton5.Appearance.Font = ft2;
this.simpleButton4.Appearance.Font = ft2;
this.simpleButton6.Appearance.Font = ft2;
this.lbSum1.Appearance.Font = ft2;
this.lbSum2.Appearance.Font = ft2;
this.lbSum3.Appearance.Font = ft2;
this.lbSum4.Appearance.Font = ft2;
this.gvMx1.Appearance.Row.Font = ft3;
this.gvMx2.Appearance.Row.Font = ft3;
this.layoutControlItem1.AppearanceItemCaption.Font = ft4;
this.layoutControlItem2.AppearanceItemCaption.Font = ft4;
this.layoutControlItem3.AppearanceItemCaption.Font = ft4;
this.layoutControlItem4.AppearanceItemCaption.Font = ft4;
this.layoutControlItem5.AppearanceItemCaption.Font = ft4;
this.layShuiJian.AppearanceItemCaption.Font = ft4;
this.layoutControlItem7.AppearanceItemCaption.Font = ft4;
this.layoutControlItem8.AppearanceItemCaption.Font = ft4;
this.layoutControlItem10.AppearanceItemCaption.Font = ft4;
this.layoutControlItem11.AppearanceItemCaption.Font = ft4;
this.layoutControlItem12.AppearanceItemCaption.Font = ft4;
this.layoutControlItem13.AppearanceItemCaption.Font = ft4;
this.layoutControlItem14.AppearanceItemCaption.Font = ft4;
this.layoutControlItem15.AppearanceItemCaption.Font = ft4;
this.txt_gdbh.Properties.Appearance.Font = ft5;
this.txt_itemNo.Properties.Appearance.Font = ft5;
this.txt_itemModel.Properties.Appearance.Font = ft5;
this.txt_gx.Properties.Appearance.Font = ft5;
this.txt_bc.Properties.Appearance.Font = ft5;
this.txt_itemName.Properties.Appearance.Font = ft5;
this.txt_yjDate.Properties.Appearance.Font = ft5;
this.txt_collectBy.Properties.Appearance.Font = ft5;
this.txt_sbNo.Properties.Appearance.Font = ft5;
this.txt_sjXt.Properties.Appearance.Font = ft5;
this.txt_sjDate.Properties.Appearance.Font = ft5;
this.txt_barCode.Properties.Appearance.Font = ft5;
this.txt_currentBarCode.Properties.Appearance.Font = ft5;
this.txt_OldLiuShuiMa.Properties.Appearance.Font = ft5;
gvMx1.IndicatorWidth = 60;
gvMx1.CustomDrawRowIndicator += (s, e) =>
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
e.Info.DisplayText = (e.RowHandle + 1).ToString();
};
txt_gx.Text = _fGx;
txt_bc.Text = _fBc;
this.Text = "工序采集【" + _fGx + " - " + _fBc + "】";
label8.Text = _fGx + "数量";
//追溯码框回车事件
txt_barCode.KeyDown += (s, e) =>
{
if (e.KeyCode == Keys.Enter)
{
txt_OldLiuShuiMa.Focus();
}
};
//流水码框回车事件
txt_OldLiuShuiMa.KeyDown += (s, e) =>
{
if (e.KeyCode == Keys.Enter)
{
if (txt_OldLiuShuiMa.Text.Trim().Length <= 0)
{
Toast vm = new Toast(-1, "操作失败@n请先扫追溯码");
vm.Show();
this.ActiveControl = this.txt_OldLiuShuiMa;
txt_OldLiuShuiMa.Focus();
return;
}
addModel(goodTag);
}
};
//良品按钮事件
btnGood.Click += (s, e) =>
{
addModel(goodTag);
};
//不良品按钮事件
btnBad.Click += (s, e) =>
{
int idx = tabMx.SelectedTabPageIndex;
if (idx > 0)
{
Toast vm = new Toast(-1, "请重新操作@n已帮你切换到【良品明细】");
vm.Show();
tabMx.SelectedTabPageIndex = 0;
return;
}
string _collectGuid = "";
string _collCode = "";
var dr = gvMx1.GetFocusedDataRow();
if (dr == null || string.IsNullOrEmpty(dr["guid"].ToString()))
{
}
else
{
_collectGuid = dr["guid"].ToString();
_collCode = dr["barCode"].ToString();
}
if (_collectGuid.Length < 30)
{
Toast vm = new Toast(-1, "操作失败@n请先选择追溯码");
vm.Show();
return;
}
string _msg = "你准备将【" + _collCode + "】变更为不良";
string _type = "";
if (txt_gx.Text.Trim() == fGxTouRu)
_type = "工序G001:投入不良描述";
string condition = $" pid<>'00000000-0000-0000-0000-000000000000' ";
if (txt_orgId.Text.Trim() == "104554") // 电器
{
condition += $" and a.s_type = '{_type}' ";
}
if (txt_orgId.Text.Trim() == "104540") // 魔凡
{
condition += $" and a.s_type = '魔凡{_type}' ";
}
UcDictionarySelect frm = new UcDictionarySelect(_type, condition, _msg);
frm.UpdateParent += (ss, ee) =>
{
System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
var lst = ee.DynamicList;
foreach (dynamic dym in lst)
{
if (stringBuilder.Length > 0)
stringBuilder.Append("&");
stringBuilder.Append(dym.dicTxt);
}
string _txt = stringBuilder.ToString();
if (string.IsNullOrEmpty(_txt))
{
Toast vm = new Toast(-1, "操作失败@n请选择不良项目");
vm.Show();
}
else
addModel(badTag, _txt, _collectGuid);
};
frm.ShowDialog();
this.ActiveControl = this.txt_barCode;
txt_barCode.Focus();
};
this.ActiveControl = this.txt_barCode;
txt_barCode.Focus();
}
///
/// 根据工序,构造不同类型的实体,读取不同的数据
///
/// 条码
/// 结果
/// 不良描述
/// 采集guid,如果是不良,需要collectGuid
///
private dynamic getObj(string _barCode, string _checkResult, string _badDescription = "", string _collectGuid = "")
{
dynamic _obj = new ExpandoObject();
_obj.barCode = _barCode;
_obj.checkResult = _checkResult;//检测结果
_obj.processNo = txt_gx.Text.Trim();//工序
_obj.banCi = txt_bc.Text.Trim();//班次
_obj.gongWei = txt_OldLiuShuiMa.Text.Trim();//工位
_obj.badDescription = _badDescription.Trim();//不良描述
_obj.collectGuid = _collectGuid;
//不良,直接提交
if (!string.IsNullOrEmpty(_collectGuid))
{
return _obj;
}
//投入,直接提交
if (txt_gx.Text.Trim() == fGxTouRu)
{
return _obj;
}
return null;
}
///
/// 上报实体
///
/// 结果:√
/// 不良描述
private void addModel(string _checkResult, string _badDescription = "", string _collectGuid = "")
{
string _barCode = txt_barCode.Text.Trim();
if (string.IsNullOrEmpty(_collectGuid))
{
if (string.IsNullOrEmpty(_barCode))
{
Toast vm = new Toast(-1, "操作失败@n请先扫描追溯码");
vm.Show();
this.ActiveControl = this.txt_barCode;
txt_barCode.Focus();
return;
}
}
dynamic _obj = getObj(_barCode, _checkResult, _badDescription, _collectGuid);
try
{
string strJson = UtilityHelper.HttpPost("", _webServiceName + "GetModel", JsonConvert.SerializeObject(_obj));
ReturnModel _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
if (_rtn.rtnCode > 0)
{
dynamic dy = _rtn.rtnData;
//表头和汇总
UtilityHelper.SetValueByObj(this.layoutMx1.Controls, dy, false);
lbSum1.Text = dy.lbSum1;
lbSum2.Text = dy.lbSum2;
lbSum3.Text = dy.lbSum3;
lbSum4.Text = dy.lbSum4;
prog1.Position = dy.jd;
txt_barCode.ReadOnly = false;
txt_OldLiuShuiMa.ReadOnly = false;
//良品列表
JObject _job = JObject.Parse(strJson);
JArray array = new JArray();
foreach (var a in _job["rtnData"]["list"])
{
array.Add(a);
}
DataTable dt = JsonConvert.DeserializeObject(array.ToString());
if (dt.Rows.Count > 0)
{
gcMx1.BindingContext = new BindingContext();
gcMx1.DataSource = dt;
gcMx1.ForceInitialize();
gvMx1.BestFitColumns();
Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gvMx1);
}
else
{
Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gcMx1, gvMx1);
}
//不良品列表
JArray array2 = new JArray();
foreach (var a in _job["rtnData"]["list2"])
{
array2.Add(a);
}
DataTable dt2 = JsonConvert.DeserializeObject(array2.ToString());
if (dt2.Rows.Count > 0)
{
gcMx2.BindingContext = new BindingContext();
gcMx2.DataSource = dt2;
gcMx2.ForceInitialize();
gvMx2.BestFitColumns();
Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gvMx2);
}
else
{
Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gcMx2, gvMx2);
}
string _msg = _rtn.rtnMsg;
if (!string.IsNullOrEmpty(_msg))
{
// Toast vm = new Toast((goodTag == "√" ? 1 : -1), _msg); 2025-08-20 修改提示外观
Toast vm;
if (_msg.EndsWith("."))
vm = new Toast(-1, _rtn.rtnMsg);
else
vm = new Toast(1, _rtn.rtnMsg);
vm.Show();
}
}
else
{
Toast vm = new Toast(-1, _rtn.rtnMsg);
vm.Show();
}
}
catch (Exception ex)
{
Toast vm = new Toast(-1, ex.Message);
vm.Show();
}
txt_barCode.Text = "";
txt_OldLiuShuiMa.Text = "";
this.ActiveControl = this.txt_barCode;
txt_barCode.Focus();
}
}
}