/*******************************************************************************
* 类的信息:
* 1.程序名称:F_PM_1107.cs
* 2.功能描述:批量报废信息窗体
* 编辑履历:
* 作者 日期
* 李士越 2024/05/29
*******************************************************************************/
using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using Dongke.IBOSS.PRD.Basics.BaseResources;
using Dongke.IBOSS.PRD.WCF.Proxys;
using Dongke.IBOSS.PRD.WCF.Proxys.PMModuleService;
using Dongke.IBOSS.PRD.Client.CommonModule;
using Dongke.IBOSS.PRD.Basics.BaseControls;
using Dongke.IBOSS.PRD.Basics.Library;
using Dongke.IBOSS.PRD.WCF.DataModels;
using Dongke.IBOSS.PRD.Client.Controls;
namespace Dongke.IBOSS.PRD.Client.PMModule
{
///
/// 批量报废信息窗体
///
public partial class F_PM_1107 : DKFormBase
{
#region 成员变量
//窗体模式ID
private Constant.FormMode _formType;
//修改产品报损信息ID
private string _barCode;
//页面报损工序的数据源
private List _productionDataList = new List();
//该产品在产信息实体
private InProductionEntity _isScrapProductEntity;
//用户选择报损工序实体
private ProductionDataEntity _scrapProductResponProcedure;
//当前责任人集合
private List _scrapResponsibleList = new List();
//修改用废弃产品实体
private ScrapProductEntity _updateEntity;
//修改用废弃责任工序实体
private ResponProcedureEntity _updateProcedureEntity;
//修改用责任人集合
private List _updateScrapResponsibleList;
//有效条码标示
private bool _yxBarCode = false;
//产品分级类别ID
private int _goodsLevelTypeID = Convert.ToInt32(Constant.GoodsLevelType.Damage);
//产品分级ID
private int _goodsLevelId;
//报损信息ID
private int _editSPId;
//是否允许审批
private bool _isScrap = false;
//未干补
int SpecialRepairFlag = 0;
//完成工序
int? _CompleteProcdureID = null;
//完成工序编码
string _CompleteProcdureCode = "";
//完成工序名称
string _CompleteProcdureName = "";
// 商标ID
int? _LogoID = null;
//可以报损的产品条码集合
List ReportingLosses = new List();
// 可成型报损产品条码
Dictionary GroutingScrapProducts = new Dictionary();
DataRow _barCodeRow = null;
#endregion
#region 构造函数
///
/// 窗体构造
///
public F_PM_1107(Constant.FormMode formType, string BarCode, int EditSPId, bool isScrap)
{
InitializeComponent();
this._formType = formType;
this._barCode = BarCode;
this._editSPId = EditSPId;
this._isScrap = isScrap;
//if (formType == Constant.FormMode.Add)
//{
this.Text = "批量报损";
//}
//else
//{
// this.Text = FormTitles.F_PM_1107_EDIT;
//}
//this.btnViewApprover.Text = ButtonText.BTN_VIEWAPPROVER;
this.btnSave.Text = ButtonText.BTN_SAVE;
this.btnCancel.Text = ButtonText.BTN_CLOSE;
}
#endregion
#region 事件
///
/// 窗体加载
///
///
///
private void F_PM_1107_Load(object sender, EventArgs e)
{
try
{
//获取当前产品分级ID
this._goodsLevelId = Convert.ToInt32(SystemModuleProxy.Service.GetGoodsLevelDataById(_goodsLevelTypeID, null)
.Tables[0].Rows[0]["GoodsLevelID"]);
DataTable dt = new DataTable();
dt.Columns.Add("DictionaryID", typeof(int));
dt.Columns.Add("DictionaryValue", typeof(string));
DataRow drbydt = dt.NewRow();
drbydt["DictionaryID"] = 119;
drbydt["DictionaryValue"] = "盘点报损";
dt.Rows.Add(drbydt);
this.cmbRreason.DisplayMember = "DictionaryValue";
this.cmbRreason.ValueMember = "DictionaryID";
this.cmbRreason.DataSource = dt;
//绑定损坯状态
DataTable dtAuditStatus = new DataTable();
dtAuditStatus.Columns.Add("AuditStatusID");
dtAuditStatus.Columns.Add("AuditStatusValue");
DataRow dr = dtAuditStatus.NewRow();
dr = dtAuditStatus.NewRow();
dr["AuditStatusID"] = 1;
dr["AuditStatusValue"] = "损坯通过";
dtAuditStatus.Rows.Add(dr);
this.cmbAuditStatus.DisplayMember = "AuditStatusValue";
this.cmbAuditStatus.ValueMember = "AuditStatusID";
this.cmbAuditStatus.DataSource = dtAuditStatus;
if (this._formType == Constant.FormMode.Edit)
{
BindEntity();
}
}
catch (Exception ex)
{
// 对异常进行共通处理
ExceptionManager.HandleEventException(this.ToString(),
System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
}
}
///
/// 提交操作
///
///
///
private void btnSave_Click(object sender, EventArgs e)
{
try
{
if (this.txtBarCode.Text == string.Empty)
{
this.txtBarCode.Focus();
return;
}
//模拟回车
KeyPressEventArgs args = new KeyPressEventArgs('\r');
//条码校验防止重复报损
txtBarCode_KeyPress(sender, args);
this.txtRemarks.Focus();//把光标移开,由于删除工号后,值未变
//if (ReportingLosses.Count == 0)
//{
// MessageBox.Show("未有可报损条码",
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
//}
//this.txtRemarks.Focus();//把光标移开,由于删除工号后,值未变
DataTable dt = new DataTable();
//备注
dt.Columns.Add("notes");
//产品编码
dt.Columns.Add("ProductCode");
// 成型报损
foreach (var item in GroutingScrapProducts.Keys)
{
DataRow dr = dt.NewRow();
dr["notes"] = saveGroutingScrapProducts(item);
dr["ProductCode"] = item;
dt.Rows.Add(dr);
}
// 产品报损
foreach (var item in ReportingLosses) {
DataRow dr = dt.NewRow();
dr["notes"] = save(item);
dr["ProductCode"] = item;
dt.Rows.Add(dr);
}
this.detailsView.DataSource = dt;
}
catch (Exception ex)
{
// 对异常进行共通处理
ExceptionManager.HandleEventException(this.ToString(),
System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
}
}
private string saveGroutingScrapProducts(string barcode)
{
try
{
_barCodeRow = GroutingScrapProducts[barcode];
int ResponUserID = Convert.ToInt32(_barCodeRow["GroutingUserID"]);
string ResponUserCode = _barCodeRow["GroutingUserCode"] + "";
// 校验数据
DataSet dsUser = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return HRModuleProxy.Service.SearchHrStaffInfo(ResponUserID);
}));
if (dsUser != null && dsUser.Tables.Count > 0)
{
//DataTable returnTable = dsUser.Tables[0];
//if (!returnTable.Columns.Contains("UserSelected"))
//{
// returnTable.Columns.Add("UserSelected", typeof(int));
//}
//foreach (DataRow row in returnTable.Rows)
//{
// row["UserSelected"] = 1;
//}
}
else
{
return string.Format(Messages.W_CMN_C_003, "责任员工");
}
// 给实体赋值
ClientRequestEntity cre = new ClientRequestEntity();
cre.NameSpace = "GroutingScrapProduct";
cre.Name = "SaveGroutingScrapProduct";
// 产品条码
cre.Properties["BarCode"] = _barCodeRow["BarCode"];
// 产品ID
cre.Properties["GoodsID"] = _barCodeRow["GoodsID"];
// 产品编码
cre.Properties["GoodsCode"] = _barCodeRow["GoodsCode"];
// 产品名称
cre.Properties["GoodsName"] = _barCodeRow["GoodsName"];
// 注浆日报ID
cre.Properties["GroutingDailyID"] = _barCodeRow["GroutingDailyID"];
// 注浆日报明细ID
cre.Properties["GroutingDailyDetailID"] = _barCodeRow["GroutingDailyDetailID"];
// 注浆日期
cre.Properties["GroutingDate"] = _barCodeRow["GroutingDate"];
// 成型生产线ID
cre.Properties["GroutingLineID"] = _barCodeRow["GroutingLineID"];
// 成型生产线编码
cre.Properties["GroutingLineCode"] = _barCodeRow["GroutingLineCode"];
// 成型生产线名称
cre.Properties["GroutingLineName"] = _barCodeRow["GroutingLineName"];
// 成型线类型ID
cre.Properties["GMouldTypeID"] = _barCodeRow["GMouldTypeID"];
// 成型生产线明细ID
cre.Properties["GroutingLineDetailID"] = _barCodeRow["GroutingLineDetailID"];
// 注浆模具编号
cre.Properties["GroutingMouldCode"] = _barCodeRow["GroutingMouldCode"];
// 模具编号
cre.Properties["MouldCode"] = _barCodeRow["MouldCode"];
// 注浆工号ID
cre.Properties["GroutingUserID"] = _barCodeRow["GroutingUserID"];
// 注浆工号编码
cre.Properties["GroutingUserCode"] = _barCodeRow["GroutingUserCode"];
// 注浆次数
cre.Properties["GroutingNum"] = _barCodeRow["GroutingNum"];
// 报损类型
cre.Properties["ScrapType"] = "1";
// 损坯日期
cre.Properties["ScrapDate"] = DateTime.Now.ToString("yyyy-MM-dd");
// 报损原因
cre.Properties["ScrapRreasonID"] = 3;
// 责任工号ID
cre.Properties["ResponUserID"] = ResponUserID;
// 责任工号编码
cre.Properties["ResponUserCode"] = ResponUserCode;
// 备注
cre.Properties["Remarks"] = this.txtRemarks.Text.Trim();
// 审核状态
cre.Properties["AuditStatus"] = this.cmbAuditStatus.SelectedValue;
// 责任员工
//DataTable returnTable = this.dgvResponsible.DataSource as DataTable;
//returnTable.AcceptChanges();
//returnTable = returnTable.Copy();
//returnTable.DefaultView.RowFilter = "UserSelected = 1";
//returnTable = returnTable.DefaultView.ToTable();
//cre.Data = new DataSet();
//cre.Data.Tables.Add(returnTable);
cre.Data = dsUser;
ServiceResultEntity result = (ServiceResultEntity)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxyNew.Service.HandleRequest(cre);
}));
int resultRow = (int)result.Result;
if (resultRow > Constant.INT_IS_ZERO)
{
//成功
return string.Format(Messages.MSG_CMN_I001, "成型报损", "保存");
}
else if (resultRow == -99)
{
return string.Format(Messages.W_CMN_C_006, "未查询到该产品信息,请确认该产品是否已经进行注浆");
}
else if (resultRow == -100)
{
return string.Format(Messages.W_CMN_C_006, "该产品还未进行注浆");
}
else if (resultRow == -101)
{
return string.Format(Messages.W_CMN_C_006, "该产品已经交坯");
}
else if (resultRow == -102)
{
return string.Format(Messages.W_CMN_C_006, "该产品已经报损");
}
else
{
//失败
return string.Format(Messages.MSG_CMN_W001, "成型报损", "保存");
}
}
catch (Exception ex)
{
// 对异常进行共通处理
ExceptionManager.HandleEventException(this.ToString(),
System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
}
return string.Format(Messages.MSG_CMN_W001, "成型报损", "保存");
}
///
/// 保存方法
///
///
///
public string save(string barcode) {
string result = "";
try
{
if (this.txtBarCode.Text == string.Empty)
{
this.txtBarCode.Focus();
return "";
}
ServiceResultEntity sreByid = DoAsync(() =>
{
ClientRequestEntity cre = new ClientRequestEntity();
cre.NameSpace = "F_PM_1107";
cre.Name = "ReadAllDataByProductCode";
cre.Properties["BARCODE"] = barcode;
return SystemModuleProxy.Service.DoRequest(cre);
});
if (sreByid.Data.Tables[0].Rows[0]["USERID"].ToString()==string.Empty || sreByid.Data.Tables[0].Rows[0]["USERID"].ToString()=="" || sreByid.Data.Tables[0].Rows[0]["USERID"].ToString()==null) {
return "信息不全,此产品不做任何处理";
}
ServiceResultEntity sreByuserid = DoAsync(() =>
{
ClientRequestEntity cre = new ClientRequestEntity();
cre.NameSpace = "F_PM_1107";
cre.Name = "ReadStaffInformation";
cre.Properties["USERID"] = sreByid.Data.Tables[0].Rows[0]["USERID"].ToString();
return SystemModuleProxy.Service.DoRequest(cre);
});
this.txtRemarks.Focus();//把光标移开,由于删除工号后,值未变
if (this._formType == Constant.FormMode.Add)
{
//获取责任人集合
List addResponsibleList = new List()
{
new ScrapResponsibleEntity() {
BarCode = sreByid.Data.Tables[0].Rows[0]["BarCode"].ToString(),
StaffID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["STAFFID"].ToString()),
StaffStatus = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["Staffstatus"].ToString()),
UserID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["USERID"].ToString()),
UserCode = sreByuserid.Data.Tables[0].Rows[0]["USERCODE"].ToString() + "",
UJobsID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["UJobsId"].ToString()),
SJobsID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["JOBS"].ToString()),
}
};
//如果选择了责任工序就一定要选择责任人
//if (cbResponProcedure.Text != string.Empty && addResponsibleList.Count == Constant.INT_IS_ZERO)
if (addResponsibleList.Count == Constant.INT_IS_ZERO)
{
//MessageBox.Show("请选择责任人!",
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
return "请选择责任人!";
}
//首先判断责任类型
int thisResponType = 0;
if (sreByid.Data.Tables[0].Rows.Count == 0 && addResponsibleList.Count == Constant.INT_IS_ZERO)
{
thisResponType = 1;
}
else if (sreByid.Data.Tables[0].Rows.Count > 0 && addResponsibleList.Count != Constant.INT_IS_ZERO)
{
thisResponType = 3;
}
else if (sreByid.Data.Tables[0].Rows.Count == 0 && addResponsibleList.Count != Constant.INT_IS_ZERO)
{
thisResponType = 2;
}
if (thisResponType == Constant.INT_IS_ZERO)
{
//MessageBox.Show("责任类别不正确!",
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
return "责任类别不正确!";
}
//新建报损产品实体
ScrapProductEntity addScrapProduct = new ScrapProductEntity();
addScrapProduct.BarCode = sreByid.Data.Tables[0].Rows[0]["BarCode"].ToString();
addScrapProduct.ProductionLineID = int.Parse(sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINEID"].ToString());
addScrapProduct.ProductionLineCode = sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINECODE"].ToString();
addScrapProduct.ProductionLineName = sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINENAME"].ToString();
addScrapProduct.GoodsID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GOODSID"].ToString());
addScrapProduct.GoodsCode = sreByid.Data.Tables[0].Rows[0]["GOODSCODE"].ToString();
addScrapProduct.GoodsName = sreByid.Data.Tables[0].Rows[0]["GOODSNAME"].ToString();
addScrapProduct.GroutingDailyID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GROUTINGDAILYID"].ToString());
addScrapProduct.GroutingDailyDetailID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GROUTINGDAILYDETAILID"].ToString());
addScrapProduct.GroutingDate = Convert.ToDateTime(sreByid.Data.Tables[0].Rows[0]["GROUTINGDATE"].ToString());
addScrapProduct.GroutingLineID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GROUTINGLINEID"].ToString());
addScrapProduct.GroutingLineCode = sreByid.Data.Tables[0].Rows[0]["GROUTINGLINECODE"].ToString();
addScrapProduct.GroutingLineName = sreByid.Data.Tables[0].Rows[0]["GROUTINGLINENAME"].ToString();
addScrapProduct.GMouldTypeID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GMOULDTYPEID"].ToString());
addScrapProduct.GroutingLineDetailID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GROUTINGLINEDETAILID"].ToString());
addScrapProduct.GroutingMouldCode = sreByid.Data.Tables[0].Rows[0]["GROUTINGMOULDCODE"].ToString();
addScrapProduct.MouldCode = sreByid.Data.Tables[0].Rows[0]["MOULDCODE"].ToString();
addScrapProduct.GoodsLevelTypeID = _goodsLevelTypeID;
addScrapProduct.GoodsLevelID = _goodsLevelId;
addScrapProduct.ScrapDate = DateTime.Now;
addScrapProduct.Rreason = "盘点报损";
addScrapProduct.ResponUserID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["USERID"].ToString());
addScrapProduct.ResponUserCode = sreByuserid.Data.Tables[0].Rows[0]["USERCODE"].ToString() + "";
addScrapProduct.ResponUserName = sreByuserid.Data.Tables[0].Rows[0]["USERNAME"].ToString();
addScrapProduct.Remarks = this.txtRemarks.Text;
addScrapProduct.AuditStatus = 0;
addScrapProduct.SettlementFlag = 0;
addScrapProduct.ResponType = thisResponType;
addScrapProduct.GroutingUserID = Convert.ToInt32(sreByid.Data.Tables[0].Rows[0]["GROUTINGUSERID"].ToString());
addScrapProduct.GroutingUserCode = sreByid.Data.Tables[0].Rows[0]["GROUTINGUSERCODE"].ToString();
addScrapProduct.GroutingNum = decimal.Parse(sreByid.Data.Tables[0].Rows[0]["GROUTINGNUM"].ToString());
addScrapProduct.IsPublicBody = Convert.ToInt32(sreByid.Data.Tables[0].Rows[0]["ISPUBLICBODY"].ToString());
addScrapProduct.IsReFire = Convert.ToInt32(sreByid.Data.Tables[0].Rows[0]["ISREFIRE"].ToString());
addScrapProduct.AuditStatus = Convert.ToInt32(cmbAuditStatus.SelectedValue);
addScrapProduct.SpecialRepairflag = int.Parse(sreByid.Data.Tables[0].Rows[0]["SPECIALREPAIRFLAG"].ToString());
addScrapProduct.LogoID = int.Parse(sreByid.Data.Tables[0].Rows[0]["LogoID"].ToString());
if (sreByid.Data.Tables[0].Rows[0]["PROCEDUREID"].ToString() != null)
{
addScrapProduct.ProcedureID = int.Parse(sreByid.Data.Tables[0].Rows[0]["PROCEDUREID"].ToString());
//addScrapProduct.ProcedureName = this.txtCompleteProcdure.Text;
addScrapProduct.ProcedureName = sreByid.Data.Tables[0].Rows[0]["ProcedureName"].ToString();
addScrapProduct.ProcedureCode = sreByid.Data.Tables[0].Rows[0]["ProcedureCode"].ToString();
}
ResponProcedureEntity addRProcedure = new ResponProcedureEntity();
//如果存在责任工序的话,也要添加责任工序
if (thisResponType == Constant.INT_IS_THREE)
{
addRProcedure.BarCode = sreByid.Data.Tables[0].Rows[0]["BarCode"].ToString();
addRProcedure.ProductionDataID = int.Parse(sreByid.Data.Tables[0].Rows[0]["PRODUCTIONDATAID"].ToString());
addRProcedure.ProductionLineID = int.Parse(sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINEID"].ToString());
addRProcedure.ProductionLineCode = sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINECODE"].ToString();
addRProcedure.ProductionLineName = sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINENAME"].ToString();
addRProcedure.ProcedureID = int.Parse(sreByid.Data.Tables[0].Rows[0]["PROCEDUREID"].ToString());
addRProcedure.ProcedureCode = sreByid.Data.Tables[0].Rows[0]["ProcedureCode"].ToString();
addRProcedure.ProcedureName = sreByid.Data.Tables[0].Rows[0]["ProcedureName"].ToString();
addRProcedure.UserID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["USERID"].ToString());
addRProcedure.UserCode = sreByuserid.Data.Tables[0].Rows[0]["USERCODE"].ToString() + "";
addRProcedure.UserName = sreByuserid.Data.Tables[0].Rows[0]["USERNAME"].ToString();
addRProcedure.Remarks = "";
}
int addReturn = (int)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.AddScrapProduct(addScrapProduct, addRProcedure, addResponsibleList);
}));
if (addReturn > Constant.INT_IS_ZERO)
{
//成功
//MessageBox.Show(string.Format(Messages.MSG_CMN_I001, "废弃产品", "保存"),
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
//this.DialogResult = DialogResult.OK;
return string.Format(Messages.MSG_CMN_I001, "废弃产品", "保存");
}
else if (addReturn == Constant.RETURN_IS_DATACHANGED)
{
//成功
//MessageBox.Show(string.Format(Messages.MSG_CMN_W007, "操作的数据已经发生了变化"),
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
//this.DialogResult = DialogResult.OK;
return string.Format(Messages.MSG_CMN_W007, "操作的数据已经发生了变化");
}
else
{
//失败
//MessageBox.Show(string.Format(Messages.MSG_CMN_W001, "废弃产品", "保存"),
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return string.Format(Messages.MSG_CMN_W001, "废弃产品", "保存");
}
}
}
catch (Exception ex)
{
// 对异常进行共通处理
ExceptionManager.HandleEventException(this.ToString(),
System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
}
return result;
}
///
/// 窗体关闭
///
///
///
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
///
/// 按下回车后调用产品条码检验
///
///
///
private void txtBarCode_KeyPress(object sender, KeyPressEventArgs e)
{
try
{
if ((int)e.KeyChar == 13 && (this.txtBarCode.Text != "" && this.txtBarCode.Text != string.Empty && this.txtBarCode.Text != null)) // 按了回车键
{
//var sss = SplitLong11(this.txtBarCode.Text);
var sss = this.txtBarCode.Lines;
//清除所有产品条码
ReportingLosses.Clear();
GroutingScrapProducts.Clear();
var dt = new DataTable();
//备注
dt.Columns.Add("notes");
//产品编码
dt.Columns.Add("ProductCode");
foreach (var item in sss)
{
if (string.IsNullOrWhiteSpace(item))
{
continue;
}
_barCodeRow = null;
string pubg = GroutingScrapProduct(item);
if ("NEXT" == pubg)
{
pubg = ReadAllDataByProductCode(item);
if (pubg == "没有问题")
{
ReportingLosses.Add(item);
}
}
else if (pubg == "没有问题")
{
GroutingScrapProducts.Add(item, _barCodeRow);
}
_barCodeRow = null;
DataRow dr = dt.NewRow();
dr["notes"] = pubg;
dr["ProductCode"] = item;
dt.Rows.Add(dr);
}
this.dgvResponsible.DataSource = dt;
}
}
catch (Exception ex)
{
// 对异常进行共通处理
ExceptionManager.HandleEventException(this.ToString(),
System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
}
}
///
/// 字符串按11位分割
///
///
///
public List SplitLong11(string item) {
List result = new List();
// 检查字符串长度是否大于或等于分组大小
if (item.Length >= 11)
{
for (int i = 0; i < item.Length; i += 11)
{
// 截取当前分组,注意不要超出字符串长度
int length = Math.Min(11, this.txtBarCode.Text.Length - i);
string chunk = this.txtBarCode.Text.Substring(i, length);
result.Add(chunk);
}
}
return result;
}
#endregion
///
/// 成型报损
///
///
///
private string GroutingScrapProduct(string item)
{
string notes = "没有问题";
try
{
if (!string.IsNullOrWhiteSpace(item))
{
ClientRequestEntity cre = new ClientRequestEntity();
cre.NameSpace = "GroutingScrapProduct";
cre.Name = "GetGroutingDailyDetail";
cre.Properties["BarCode"] = item;
ServiceResultEntity result = (ServiceResultEntity)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxyNew.Service.HandleRequest(cre);
}));
if (result == null || result.Data == null || result.Data.Tables.Count == 0
|| result.Data.Tables[0].Rows.Count == 0)
{
return notes = "未查询到该产品信息,请确认该产品是否已经进行注浆!";
}
_barCodeRow = result.Data.Tables[0].Rows[0];
// 判断是否进行了注浆
if ("0".Equals(_barCodeRow["GroutingFlag"]))
{
return notes = "该产品还未进行注浆!";
}
// 判断是否已经报损
if ("1".Equals(_barCodeRow["ScrapFlag"]))
{
return notes = "该产品已经报损!";
}
// 判断是否进行了交坯
if ("1".Equals(_barCodeRow["DeliverFlag"]) || "1".Equals(_barCodeRow["beginningflag"]))
{
//return notes = "该产品已经交坯!";
return notes = "NEXT";
}
return notes;
}
// 如果产品条码是空,那么就清空相关信息
return notes = "无效条码";
}
catch (Exception ex)
{
// 对异常进行共通处理
ExceptionManager.HandleEventException(this.ToString(),
System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
}
return "条码成型报损验证异常";
}
///
/// 产品条码检验
///
///
///
private string ReadAllDataByProductCode(string item)
{
string notes = "没有问题";
try
{
string doRuselt = (string)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.ScrapProductChack(item);
}));
string[] doRuselts = doRuselt.Split(':');
int isHave = Convert.ToInt32(doRuselts[0]);
if (isHave == 2)
{
return notes = "不是在产产品不能报损!";
//MessageBox.Show("产品编码为" + item + " 不是在产产品不能报损!",
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
//this.txtBarCode.Text = "";
//this.txtBarCode.Focus();
//Product = false;
}
if (isHave == 3)
{
return notes = "当前工号没有此产品所在工序"+ doRuselts[1] + "的操作权限,不能报损!";
//MessageBox.Show(string.Format("产品编码为" + item + " 当前工号没有此产品所在工序【{0}】的操作权限,不能报损!", doRuselts[1]),
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
//this.txtBarCode.Text = "";
//this.txtBarCode.Focus();
//Product = false;
}
if (isHave == 4)
{
return notes = doRuselts[1];
// MessageBox.Show(doRuselts[1],
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
//this.txtBarCode.Text = "";
//this.txtBarCode.Focus();
//Product = false;
}
if (isHave == Constant.INT_IS_ZERO)
{
return notes = "已经存在报损记录!";
// MessageBox.Show("产品编码为" + item + " 已经存在报损记录!",
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
//this.txtBarCode.Text = "";
//this.txtBarCode.Focus();
//Product = false;
}
DataSet dsReturn = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetInProductionAndProductionData(item);
}));
if (dsReturn != null)
{
if (dsReturn.Tables.Count == Constant.INT_IS_TWO)
{
if (dsReturn.Tables[0].Rows.Count == Constant.INT_IS_ZERO) //在产表中没有数据
{
//目前不在生产线上也只报损 2015/07/14 modify wangx
DataSet dsDailyDetail = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetBarCodeInGroutingDailyDetail(item);
}));
if (dsDailyDetail != null && dsDailyDetail.Tables[0].Rows.Count == 0)
{
return notes = "条码无效,无法报损!";
//MessageBox.Show("产品编码为" + item + " 条码无效,无法报损!",
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
//this.txtBarCode.Text = "";
//this.txtBarCode.Focus();
//Product = false;
}
return notes = "不是在产产品不能报损!";
// 2015/07/14 modify wangx end
////产品不在生产线上
//MessageBox.Show("产品编码为" + item + " 不是在产产品不能报损!",
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
//this.txtBarCode.Text = "";
//this.txtBarCode.Focus();
//////判断条码是否有效
//Product = false;
}
//获取产品情况以及经过工序情况
DataTable dtInProduction = dsReturn.Tables[0];
//2015-05-26 begin modify by wangx
if (dtInProduction != null && dtInProduction.Rows.Count > 0)
{
if (dtInProduction.Rows[0]["endmode"].ToString() == "2")//代表已经产成品
{
return notes = "已经生产完成,无法报损!";
//MessageBox.Show("产品编码为" + item + " 已经生产完成,无法报损!",
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
//this.txtBarCode.Text = "";
//this.txtBarCode.Focus();
//Product = false;
}
if (dtInProduction.Rows[0]["IsReworkFlag"].ToString() == "1")//代表已经返工
{
return notes = "已经是返工状态,无法报损!";
//MessageBox.Show("产品编码为" + item + " 已经是返工状态,无法报损!",
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
//this.txtBarCode.Text = "";
//this.txtBarCode.Focus();
//Product = false;
}
}
//2015-05-26 end
//获取节点类型
//如果存在该类型的字段的话,判断一下
// string a = dtInProduction.Columns[dtInProduction.Columns.Count - 1].ColumnName;
foreach (DataColumn dcFor in dtInProduction.Columns)
{
if (dcFor.ColumnName.ToLower() == "proceduremodeltypeid")
{
int modelType = Convert.ToInt32(dtInProduction.Rows[0]["ProcedureModelTypeID"]);
// 装车,入窑,出窑,窑车补件不能报损
if (modelType == Constant.INT_IS_ONE || modelType == Constant.INT_IS_TWO || modelType == Constant.INT_IS_THREE || modelType == Constant.INT_IS_SIX)
{
return notes = "处于无法报损的特殊工序中!";
//某些特殊工序不可报损
//MessageBox.Show("产品编码为" + item + " 处于无法报损的特殊工序中!",
// this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
//this.txtBarCode.Text = "";
//this.txtBarCode.Focus();
//Product = false;
}
}
}
List inProductionList = DataConvert.TableConvertToObject(dtInProduction);
if (inProductionList.Count != Constant.INT_IS_ZERO)
{
this._isScrapProductEntity = inProductionList[0];
return notes;
}
else
{
if (this._updateEntity == null)
{
return null;
}
if (this._updateEntity.GoodsLevelTypeID != this._goodsLevelTypeID)
{
return null;
}
//失败,条码不存在数据或无法转换
MessageBox.Show(Messages.MSG_PM_W007,
this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
return null;
}
}
else
{
if (this._updateEntity == null)
{
return null;
}
if (this._updateEntity.GoodsLevelTypeID != this._goodsLevelTypeID)
{
return null;
}
//失败
MessageBox.Show(Messages.MSG_PM_W007,
this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
}
}
}
catch (Exception ex)
{
// 对异常进行共通处理
ExceptionManager.HandleEventException(this.ToString(),
System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
}
//return notes;
return "条码产品报损验证异常";
}
#region 私有方法
///
/// 加载数据
///
private void BindEntity()
{
try
{
//条码控件不可用
this.txtBarCode.Enabled = false;
this._updateEntity = new ScrapProductEntity();
this._updateEntity.BarCode = _barCode;
this._updateEntity.ScrapProductID = _editSPId;
//绑定生产工序集合
DataSet dsReturn = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetInProductionAndProductionData(_barCode);
}));
if (dsReturn != null)
{
if (dsReturn.Tables.Count == Constant.INT_IS_TWO)
{
//获取产品情况以及经过工序情况
DataTable dtInProduction = dsReturn.Tables[0];
DataTable dtProductionData = dsReturn.Tables[1];
//foreach (DataRow drFor in dtInProduction.Rows)
//{
// this.txtProductionLineName.Text = drFor["ProductionLineName"].ToString();
// this.txtGoodsCode.Text = drFor["GoodsCode"].ToString();
// this.txtGroutingLine.Text = drFor["GroutingLineCode"].ToString();
// this.txtMouldCode.Text = drFor["GroutingMouldCode"].ToString();
// this.txtGroutingUser.Text = drFor["GroutingUserCode"].ToString();
//}
//this.cbResponProcedure.DataSource = dtProductionData;
//this.cbResponProcedure.DisplayMember = "ProcedureName";
//this.cbResponProcedure.ValueMember = "ProcedureID";
this._productionDataList = DataTableToListByProductionData(dtProductionData);
if (this._productionDataList.Count != Constant.INT_IS_ZERO)
{
this._scrapProductResponProcedure = this._productionDataList[0];
}
}
}
//获取报废产品实体
DataSet dsScrap = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetScrapProduct(this._updateEntity);
}));
if (dsScrap != null)
{
if (dsScrap.Tables.Count != Constant.INT_IS_ZERO)
{
DataRow drScrap = dsScrap.Tables[0].Rows[0];
this._updateEntity.BarCode = drScrap["BarCode"].ToString();
if (drScrap["ProductionLineID"].ToString() != "")
{
this._updateEntity.ProductionLineID = Convert.ToInt32(drScrap["ProductionLineID"]);
this._updateEntity.ProductionLineCode = drScrap["ProductionLineCode"].ToString();
this._updateEntity.ProductionLineName = drScrap["ProductionLineName"].ToString();
//this.txtGoodsCode.Text = drScrap["GoodsCode"].ToString();
//this.txtGroutingLine.Text = drScrap["GroutingLineCode"].ToString();
//this.txtMouldCode.Text = drScrap["GroutingMouldCode"].ToString();
//this.txtGroutingUser.Text = drScrap["GroutingUserCode"].ToString();
this._CompleteProcdureID = Convert.ToInt32(drScrap["ProcedureID"]);
this._CompleteProcdureCode = drScrap["ProcedureCode"].ToString();
//this.txtCompleteProcdure.Text = drScrap["ProcedureName"].ToString();
}
//else //等于空时,取模具信息
//{
// this.txtGoodsCode.Text = drScrap["GoodsCode"].ToString();
// this.txtGroutingLine.Text = drScrap["GroutingLineCode"].ToString();
// this.txtMouldCode.Text = drScrap["GroutingMouldCode"].ToString();
// this.txtGroutingUser.Text = drScrap["GroutingUserCode"].ToString();
//}
if (drScrap["logoid"].ToString() != "")
{
this._LogoID = Convert.ToInt32(drScrap["logoid"]);
}
this._updateEntity.GoodsID = Convert.ToInt32(drScrap["GoodsID"]);
this._updateEntity.GoodsCode = drScrap["GoodsCode"].ToString();
this._updateEntity.GoodsName = drScrap["GoodsName"].ToString();
this._updateEntity.GroutingDailyID = Convert.ToInt32(drScrap["GroutingDailyID"]);
this._updateEntity.GroutingDailyDetailID = Convert.ToInt32(drScrap["GroutingDailyDetailID"]);
this._updateEntity.GroutingDate = Convert.ToDateTime(drScrap["GroutingDate"]);
this._updateEntity.GroutingLineID = Convert.ToInt32(drScrap["GroutingLineID"]);
this._updateEntity.GroutingLineCode = drScrap["GroutingLineCode"].ToString();
this._updateEntity.GroutingLineName = drScrap["GroutingLineName"].ToString();
this._updateEntity.GMouldTypeID = Convert.ToInt32(drScrap["GMouldTypeID"]);
this._updateEntity.GroutingLineDetailID = Convert.ToInt32(drScrap["GroutingLineDetailID"]);
this._updateEntity.GroutingMouldCode = drScrap["GroutingMouldCode"].ToString();
this._updateEntity.MouldCode = drScrap["MouldCode"].ToString();
this._updateEntity.GoodsLevelTypeID = Convert.ToInt32(drScrap["GoodsLevelTypeID"]);
this._updateEntity.GoodsLevelID = Convert.ToInt32(drScrap["GoodsLevelID"]);
this._updateEntity.ScrapDate = Convert.ToDateTime(drScrap["ScrapDate"]);
this._updateEntity.Rreason = drScrap["Rreason"].ToString();
this._updateEntity.Remarks = drScrap["Remarks"].ToString();
this._updateEntity.AuditStatus = Convert.ToInt32(drScrap["AuditStatus"]);
this._updateEntity.ResponType = Convert.ToInt32(drScrap["ResponType"]);
this._updateEntity.SpecialRepairflag = Convert.ToInt32(drScrap["SpecialRepairflag"]);
this.SpecialRepairFlag = Convert.ToInt32(drScrap["SpecialRepairflag"]);
if (drScrap["Auditor"] != DBNull.Value)
{
this._updateEntity.Auditor = Convert.ToInt32(drScrap["Auditor"]);
}
if (drScrap["AuditDate"] != DBNull.Value)
{
this._updateEntity.AuditlDate = Convert.ToDateTime(drScrap["AuditDate"]);
}
this._updateEntity.SettlementFlag = Convert.ToInt32(drScrap["SettlementFlag"]);
if (drScrap["ResponProcedureID"] != DBNull.Value) //ProcedureID--改到ResponProcedureID
{
this._updateEntity.ResponProcedureID = Convert.ToInt32(drScrap["ResponProcedureID"]);
}
if (drScrap["UserID"] != DBNull.Value)
{
this._updateEntity.ResponUserID = Convert.ToInt32(drScrap["UserID"]);
}
if (drScrap["UserCode"] != DBNull.Value)
{
this._updateEntity.ResponUserCode = drScrap["UserCode"].ToString();
}
if (drScrap["UserName"] != DBNull.Value)
{
this._updateEntity.ResponUserName = drScrap["UserName"].ToString();
}
if (drScrap["ScrapFine"] != DBNull.Value)
{
this._updateEntity.ScrapFine = Convert.ToDecimal(drScrap["ScrapFine"]);
}
this.cmbAuditStatus.SelectedValue = this._updateEntity.AuditStatus;
if (this._updateEntity.GoodsLevelTypeID != this._goodsLevelTypeID ||
(this._updateEntity.AuditStatus == Constant.INT_IS_ONE || this._updateEntity.AuditStatus == Constant.INT_IS_TWO)) //除关闭窗体外所有功能不可用
{
this.txtBarCode.Enabled = false;
//this.txtGoodsCode.Enabled = false;
//this.txtProductionLineName.Enabled = false;
//this.cbResponProcedure.Enabled = false;
// 报损日期不能修改
//this.txtScrapDate.Enabled = false;
this.cmbRreason.Enabled = false;
this.txtRemarks.Enabled = false;
//this.scbUser.Enabled = false;
this.dgvResponsible.Enabled = false;
this.btnSave.Enabled = false;
//this.btnViewApprover.Visible = false;
this.cmbAuditStatus.Enabled = false;
}
}
}
else
{
this.Close();
return;
}
//获取报废责任工序实体
if (Convert.ToInt32(_updateEntity.ResponType) == Constant.INT_IS_THREE)
{
DataSet dsResPro = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetResponProcedureBySPId(Convert.ToInt32(_updateEntity.ScrapProductID));
}));
this._updateProcedureEntity = new ResponProcedureEntity();
if (dsResPro != null && dsResPro.Tables[0].Rows.Count > 0) //如果原来存在责任工序实体
{
DataRow drResPro = dsResPro.Tables[0].Rows[0];
this._updateProcedureEntity.ResponProcedureID = Convert.ToInt32(drResPro["ResponProcedureID"]);
//this.scbUser.Enabled = false;
}
this._updateProcedureEntity.BarCode = _updateEntity.BarCode;
}
//获取报废责任人实体集合
if (Convert.ToInt32(_updateEntity.ResponType) != Constant.INT_IS_ONE)
{
this._updateScrapResponsibleList = new List();
DataSet dsResponsible = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetScrapResponsibleBySPId(Convert.ToInt32(_updateEntity.ScrapProductID));
}));
DataTableToListByScrapResponsible(dsResponsible);
}
//控件赋值
this.txtBarCode.Text = _updateEntity.BarCode;
//this.txtGoodsCode.Text = _updateEntity.GoodsCode;
//this.txtProductionLineName.Text = _updateEntity.ProductionLineName;
//this.cbResponProcedure.SelectedValue = _updateEntity.ResponProcedureID;
try
{
this.cmbRreason.Text = _updateEntity.Rreason;
}
catch
{
this.cmbRreason.Text = "";
}
this.txtRemarks.Text = _updateEntity.Remarks;
//this.txtScrapFine.Text = _updateEntity.ScrapFine.ToString();
//this._updateEntity.ScrapFine
if (this._updateEntity.ResponUserID != null)
{
// scbUser.SearchedPKMember = Convert.ToInt32(_updateEntity.ResponUserID);
// scbUser.InitValue(_updateEntity.ResponUserName, _updateEntity.ResponUserCode);
//this.dkUser.UserID = _updateEntity.ResponUserID;
// this.dkUser.UserCode = _updateEntity.ResponUserCode;
// this.dkUser.UserName = _updateEntity.ResponUserName;
}
else if (this._scrapResponsibleList.Count != Constant.INT_IS_ZERO)
{
//scbUser.SearchedPKMember = Convert.ToInt32(_scrapResponsibleList[0].UserID);
//scbUser.InitValue(_scrapResponsibleList[0].UserName, _scrapResponsibleList[0].UserCode);
//this.dkUser.UserID = _scrapResponsibleList[0].UserID;
// this.dkUser.UserCode = _scrapResponsibleList[0].UserCode;
// this.dkUser.UserName = _scrapResponsibleList[0].UserName;
}
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 数据表到实体转换
///
///
private void DataTableToListByScrapResponsible(DataSet dsScrapResponsible)
{
foreach (DataRow drFor in dsScrapResponsible.Tables[0].Rows)
{
ScrapResponsibleEntity srEntity = new ScrapResponsibleEntity();
srEntity.ResponsibleID = Convert.ToInt32(drFor["ResponsibleID"]);
srEntity.ScrapProductID = Convert.ToInt32(drFor["ScrapProductID"]);
srEntity.BarCode = drFor["BarCode"].ToString();
srEntity.ResponType = Convert.ToInt32(drFor["ResponType"]);
if (drFor["ResponProcedureID"] != DBNull.Value)
{
srEntity.ResponProcedureID = Convert.ToInt32(drFor["ResponProcedureID"]);
}
srEntity.StaffID = Convert.ToInt32(drFor["StaffID"]);
srEntity.UserID = Convert.ToInt32(drFor["UserID"]);
srEntity.UserCode = drFor["UserCode"].ToString();
srEntity.UJobsID = Convert.ToInt32(drFor["UJobsID"]);
srEntity.SJobsID = Convert.ToInt32(drFor["SJobsID"]);
srEntity.StaffStatus = Convert.ToInt32(drFor["StaffStatus"]);
srEntity.AccountID = Convert.ToInt32(drFor["AccountID"]);
srEntity.CreateTime = Convert.ToDateTime(drFor["CreateTime"]);
srEntity.CreateUserID = Convert.ToInt32(drFor["CreateUserID"]);
srEntity.UpdateTime = Convert.ToDateTime(drFor["UpdateTime"]);
srEntity.UpdateUserID = Convert.ToInt32(drFor["UpdateUserID"]);
srEntity.OPTimeStamp = Convert.ToDateTime(drFor["OPTimeStamp"]);
srEntity.UserName = drFor["userName"].ToString();
this._scrapResponsibleList.Add(srEntity);
}
}
///
/// 数据表到实体转换
///
///
///
private List DataTableToListByProductionData(DataTable dtProductionData)
{
List pdList = new List();
foreach (DataRow drFor in dtProductionData.Rows)
{
ProductionDataEntity pdEntity = new ProductionDataEntity();
pdEntity.ProductionDataID = Convert.ToInt32(drFor["ProductionDataID"]);
pdEntity.ProcedureID = Convert.ToInt32(drFor["ProcedureID"]);
pdEntity.ProcedureCode = drFor["ProcedureCode"].ToString();
pdEntity.ProcedureName = drFor["ProcedureName"].ToString();
pdList.Add(pdEntity);
}
return pdList;
}
#endregion
private void button1_Click(object sender, EventArgs e)
{
this.txtBarCode.Clear();
}
}
}