diff --git a/APP/QMAPP.Web/Web.config b/APP/QMAPP.Web/Web.config
index d47ae3c..cfda042 100644
--- a/APP/QMAPP.Web/Web.config
+++ b/APP/QMAPP.Web/Web.config
@@ -47,8 +47,10 @@
-
+
+
+
diff --git a/APPQ5/QMAPP.FJC.BLL/Operation/ProductBLL.cs b/APPQ5/QMAPP.FJC.BLL/Operation/ProductBLL.cs
index 07f5a77..8c248d2 100644
--- a/APPQ5/QMAPP.FJC.BLL/Operation/ProductBLL.cs
+++ b/APPQ5/QMAPP.FJC.BLL/Operation/ProductBLL.cs
@@ -1759,11 +1759,13 @@ namespace QMAPP.FJC.BLL.Operation
}
}
- public int DeleteProduct(string ProductCode, string machineCode)
+ public DataResult DeleteProduct(string ProductCode, string machineCode)
{
try
{
- return new ProductDAL().DeleteProduct(ProductCode, machineCode);
+ DataResult result = new DataResult();
+ result.Result = new ProductDAL().DeleteProduct(ProductCode, machineCode);
+ return result;
}
catch (Exception ex)
{
diff --git a/APPQ5/QMAPP.FJC.BLL/Operation/SignInfoBLL.cs b/APPQ5/QMAPP.FJC.BLL/Operation/SignInfoBLL.cs
new file mode 100644
index 0000000..14f76da
--- /dev/null
+++ b/APPQ5/QMAPP.FJC.BLL/Operation/SignInfoBLL.cs
@@ -0,0 +1,205 @@
+using System;
+using System.Collections.Generic;
+using QMAPP.BLL;
+using QMAPP.Entity;
+using QMAPP.FJC.BLL.Dict;
+using QMAPP.FJC.DAL.ProduceManage;
+using QMAPP.FJC.Entity.ProduceManage;
+using QMFrameWork.Data;
+using QMFrameWork.Log;
+using QMAPP.FJC.Entity;
+using QMAPP.FJC.DAL.Operation;
+using QMAPP.FJC.Entity.Operation;
+
+namespace QMAPP.FJC.BLL.Operation
+{
+ ///
+ /// 模块名称:标记信息--佛山VW276
+ /// 作 者:张松男
+ /// 编写日期:2022年05月23日
+ ///
+ public class SignInfoBLL : BaseBLL
+ {
+ #region 获取信息
+ ///
+ /// 获取信息
+ ///
+ /// 条件
+ /// 信息
+ public DataResult Get(SignInfo model)
+ {
+ DataResult result = new DataResult();
+ try
+ {
+ result.Result = new SignInfoDAL().Get(model);
+ result.IsSuccess = true;
+ }
+ catch (Exception ex)
+ {
+ LogManager.LogHelper.Error(new LogInfo()
+ {
+ ErrorInfo = ex,
+ Tag = ex.StackTrace,
+ Info = "获取异常!"
+ });
+ result.IsSuccess = false;
+ result.Ex = ex;
+ result.Msg = "获取异常";
+ }
+
+ return result;
+ }
+ #endregion
+
+ #region 获取列表
+ ///
+ /// 获取列表
+ ///
+ /// 条件
+ /// 数据页
+ /// 数据页
+ public DataResult GetList(SignInfo condition, DataPage page)
+ {
+ DataResult result = new DataResult();
+ try
+ {
+ DataPage dataPage = new SignInfoDAL().GetList(condition, page);
+
+ result.IsSuccess = true;
+ result.Result = dataPage;
+ }
+ catch (Exception ex)
+ {
+ LogManager.LogHelper.Error(new LogInfo()
+ {
+ ErrorInfo = ex,
+ Tag = ex.StackTrace,
+ Info = "获取列表异常!"
+ });
+ result.IsSuccess = false;
+ result.Ex = ex;
+ result.Msg = "获取列表异常!";
+ }
+
+ return result;
+ }
+
+
+ ///
+ /// 获取列表
+ ///
+ /// 条件
+ /// 全部集合
+ public List GetAllList()
+ {
+ try
+ {
+ //获取信息列表
+ return new SignInfoDAL().GetALL();
+ }
+ catch (Exception ex)
+ {
+ LogManager.LogHelper.Error(new LogInfo()
+ {
+ ErrorInfo = ex,
+ Tag = ex.StackTrace,
+ Info = "获取列表异常!"
+ });
+ throw ex;
+ }
+ }
+
+
+ #endregion
+
+ #region 插入信息
+ ///
+ /// 插入信息(单表)
+ ///
+ /// 信息
+ /// 插入行数
+ public DataResult Insert(SignInfo info)
+ {
+ DataResult result = new DataResult();
+ try
+ {
+ //基本信息
+ info.PID = Guid.NewGuid().ToString();
+ info.CREATEUSER = this.LoginUser.UserID;
+ info.CREATEDATE = DateTime.Now.ToString();
+ SignInfoDAL cmdDAL = new SignInfoDAL();
+ result.Result = cmdDAL.Insert(info);
+ result.IsSuccess = true;
+ return result;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+ #endregion
+
+ #region 更新信息
+ ///
+ /// 更新信息
+ ///
+ ///
+ /// 更新行数
+ public DataResult Update(SignInfo model)
+ {
+ DataResult result = new DataResult();
+ result.IsSuccess = true;
+ try
+ {
+ SignInfo info = new SignInfoDAL().Get(model);
+
+ //基本信息
+ int temp = new SignInfoDAL().Update(info);
+
+ if (temp == 0)
+ {
+ result.IsSuccess = false;
+ result.Msg = "更新失败!";
+ return result;
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.LogHelper.Error(new LogInfo()
+ {
+ ErrorInfo = ex,
+ Tag = ex.StackTrace,
+ Info = "更新异常!"
+ });
+ result.IsSuccess = false;
+ result.Ex = ex;
+ result.Msg = "更新异常";
+ }
+ return result;
+ }
+ #endregion
+
+ #region 删除
+
+ ///
+ /// 删除信息
+ ///
+ /// 信息
+ /// 删除个数
+ public int Delete(string model)
+ {
+ int count = 0;
+ try
+ {
+ count = new SignInfoDAL().Delete(model);
+ return count;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+ #endregion
+
+ }
+}
diff --git a/APPQ5/QMAPP.FJC.BLL/QMAPP.FJC.BLL.csproj b/APPQ5/QMAPP.FJC.BLL/QMAPP.FJC.BLL.csproj
index e5da0f1..64cf804 100644
--- a/APPQ5/QMAPP.FJC.BLL/QMAPP.FJC.BLL.csproj
+++ b/APPQ5/QMAPP.FJC.BLL/QMAPP.FJC.BLL.csproj
@@ -157,6 +157,7 @@
+
diff --git a/APPQ5/QMAPP.FJC.DAL/Operation/SignInfoDAL.cs b/APPQ5/QMAPP.FJC.DAL/Operation/SignInfoDAL.cs
new file mode 100644
index 0000000..e2c53d8
--- /dev/null
+++ b/APPQ5/QMAPP.FJC.DAL/Operation/SignInfoDAL.cs
@@ -0,0 +1,310 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using QMAPP.FJC.Entity.MD;
+using QMFrameWork.Data;
+using System.Data;
+using QMAPP.Entity;
+using QMAPP.MD.Entity.Bucket;
+using QMAPP.FJC.Entity.Operation;
+
+namespace QMAPP.FJC.DAL.Operation
+{
+ ///
+ /// 模块名称:标记信息--佛山VW276
+ /// 作 者:张松男
+ /// 编写日期:2022年05月23日
+ ///
+ public class SignInfoDAL
+ {
+
+ #region 获取信息
+ ///
+ /// 获取信息
+ ///
+ /// 条件
+ /// *信息
+ public SignInfo Get(SignInfo info)
+ {
+ try
+ {
+ using (IDataSession session = AppDataFactory.CreateMainSession())
+ {
+ //获取信息
+ info = session.Get(info);
+ }
+ return info;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+
+ ///
+ /// 获取信息
+ ///
+ /// 条件
+ /// *信息
+ public SignInfo Get(string materialcode)
+ {
+ try
+ {
+ string sql = "SELECT * FROM [T_AW_SignInfo] WHERE [MATERIAL_CODE]=@materialcode";
+ List parameters = new List();
+ parameters.Add(new DataParameter("materialcode", materialcode));
+ using (IDataSession session = AppDataFactory.CreateMainSession())
+ {
+ //获取信息
+ var info = session.Get(sql, parameters.ToArray());
+ return info;
+ }
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+
+ #endregion
+
+ #region 获取列表
+ ///
+ /// 获取列表
+ ///
+ /// 条件
+ /// 数据页
+ /// 数据页
+ public DataPage GetList(SignInfo condition, DataPage page)
+ {
+ string sql = null;
+ List parameters = new List();
+ try
+ {
+ sql = this.GetQuerySql(condition, ref parameters);
+ //分页关键字段及排序
+ page.KeyName = "PID";
+ if (string.IsNullOrEmpty(page.SortExpression))
+ page.SortExpression = "UPDATEDATE DESC";
+ using (IDataSession session = AppDataFactory.CreateMainSession())
+ {
+ page = session.GetDataPage(sql, parameters.ToArray(), page);
+ }
+ return page;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+
+ ///
+ /// 获取列表
+ ///
+ /// 条件
+ /// 数据页
+ /// 数据页
+ public List GetALL()
+ {
+ string sql = null;
+ List parameters = new List();
+ try
+ {
+ sql = "SELECT * FROM T_AW_SignInfo WHERE IsCheck<> '1'";
+ //分页关键字段及排序
+ var LIST = new List();
+ using (IDataSession session = AppDataFactory.CreateMainSession())
+ {
+ LIST = session.GetList(sql, parameters.ToArray()).ToList();
+ }
+ return LIST;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+ #endregion
+
+ #region 获取查询语句
+ ///
+ /// 获取查询语句
+ ///
+ /// 查询条件
+ /// 参数
+ /// 查询语句
+ private string GetQuerySql(SignInfo condition, ref List parameters)
+ {
+ StringBuilder sqlBuilder = new StringBuilder();
+ StringBuilder whereBuilder = new StringBuilder();
+ try
+ {
+
+ //构成查询语句
+ sqlBuilder.Append("SELECT PID,ProductCode,Type,WorkLoc,CREATEUSER,CREATEDATE ");
+ sqlBuilder.Append("FROM T_AW_SignInfo ");
+
+ if (string.IsNullOrEmpty(condition.ProductCode) == false)
+ {
+ whereBuilder.Append(" AND ProductCode = @ProductCode");
+ parameters.Add(new DataParameter { ParameterName = "ProductCode", DataType = DbType.String, Value = condition.ProductCode });
+ }
+ if (string.IsNullOrEmpty(condition.Type) == false)
+ {
+ whereBuilder.Append(" AND Type = @Type");
+ parameters.Add(new DataParameter { ParameterName = "Type", DataType = DbType.String, Value = condition.Type });
+ }
+ if (condition.BeginTime != DateTime.MinValue.ToString())
+ {
+ whereBuilder.Append(" AND CREATEDATE >= @BeginTime");
+ parameters.Add(new DataParameter { ParameterName = "BeginTime", DataType = DbType.String, Value = condition.BeginTime });
+ }
+ if (condition.EndTime != DateTime.MinValue.ToString())
+ {
+ whereBuilder.Append(" AND CREATEDATE <= @EndTime");
+ parameters.Add(new DataParameter { ParameterName = "EndTime", DataType = DbType.String, Value = condition.EndTime });
+ }
+
+ //查询条件
+ if (whereBuilder.Length > 0)
+ {
+ sqlBuilder.Append(" WHERE " + whereBuilder.ToString().Substring(4));
+ }
+ return sqlBuilder.ToString();
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+ #endregion
+
+
+
+ #region 信息是否重复
+ ///
+ /// 判断名称是否存在
+ ///
+ ///
+ /// true:已存在;fasel:不存在。
+ public bool Exists(SignInfo info)
+ {
+ StringBuilder sqlBuilder = new StringBuilder();
+ StringBuilder whereBuilder = new StringBuilder();
+ List parameters = new List();
+ int count = 0;
+ try
+ {
+ sqlBuilder.Append("SELECT COUNT(0) FROM T_AW_SignInfo");
+ if (info.PID == null)
+ {
+ info.PID = "";
+ }
+ whereBuilder.Append(" AND PID <> @PID ");
+ parameters.Add(new DataParameter { ParameterName = "PID", DataType = DbType.String, Value = info.PID });
+
+ //添加进行无重复字段判断代码
+
+ if (whereBuilder.Length > 0)
+ {
+ sqlBuilder.Append(" WHERE " + whereBuilder.ToString().Substring(4));
+ }
+ using (IDataSession session = AppDataFactory.CreateMainSession())
+ {
+ count = Convert.ToInt32(session.ExecuteSqlScalar(sqlBuilder.ToString(), parameters.ToArray()));
+ }
+ return count > 0;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+ #endregion
+
+ #region 插入信息
+ ///
+ /// 插入信息(单表)
+ ///
+ /// 信息
+ /// 插入行数
+ public int Insert(SignInfo info)
+ {
+ int count = 0;
+ try
+ {
+ using (IDataSession session = AppDataFactory.CreateMainSession())
+ {
+ //插入基本信息
+ count = session.Insert(info);
+ }
+ return count;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+ #endregion
+
+ #region 更新信息
+ ///
+ /// 更新信息
+ ///
+ ///
+ /// 更新行数
+ public int Update(SignInfo info)
+ {
+ int count = 0;
+ try
+ {
+ using (IDataSession session = AppDataFactory.CreateMainSession())
+ {
+ //更新基本信息
+ count = session.Update(info);
+ }
+ return count;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+ #endregion
+
+ #region 逻辑删除
+ ///
+ /// 逻辑删除信息
+ ///
+ ///
+ /// 删除个数
+ public int Delete(string info)
+ {
+ StringBuilder sqlBuilder = new StringBuilder();
+ List parameters = new List();
+ int count = 0;
+ try
+ {
+ using (IDataSession session = AppDataFactory.CreateMainSession())
+ {
+ //删除基本信息
+ sqlBuilder.Append("UPDATE T_AW_SignInfo ");
+ sqlBuilder.Append("SET IsCheck = '1' ");
+ sqlBuilder.Append("WHERE PID = @PID ");
+ parameters.Add(new DataParameter { ParameterName = "PID", DataType = DbType.String, Value = info });
+ count = session.ExecuteSql(sqlBuilder.ToString(), parameters.ToArray());
+ }
+ return count;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+ #endregion
+
+
+
+ }
+}
diff --git a/APPQ5/QMAPP.FJC.DAL/QMAPP.FJC.DAL.csproj b/APPQ5/QMAPP.FJC.DAL/QMAPP.FJC.DAL.csproj
index 5cf245c..e9d58fb 100644
--- a/APPQ5/QMAPP.FJC.DAL/QMAPP.FJC.DAL.csproj
+++ b/APPQ5/QMAPP.FJC.DAL/QMAPP.FJC.DAL.csproj
@@ -140,6 +140,7 @@
+
diff --git a/APPQ5/QMAPP.FJC.Entity/Operation/SignInfo.cs b/APPQ5/QMAPP.FJC.Entity/Operation/SignInfo.cs
new file mode 100644
index 0000000..399d9f2
--- /dev/null
+++ b/APPQ5/QMAPP.FJC.Entity/Operation/SignInfo.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using QMFrameWork.Data.Attributes;
+using System.Data;
+
+namespace QMAPP.FJC.Entity.Operation
+{
+ ///
+ /// 模块名称:标记信息--佛山VW276
+ /// 作 者:张松男
+ /// 编写日期:2022年05月23日
+ ///
+ [DBTable(TableName = "T_AW_SignInfo", TimeStampColumn = "CREATEDATE")]
+ public class SignInfo
+ {
+ ///
+ ///主键
+ ///
+ [DBColumn(ColumnName = "PID", DataType = DbType.String, IsKey = true)]
+ public string PID { get; set; }
+
+ ///
+ ///标记条码
+ ///
+ [DBColumn(ColumnName = "ProductCode", DataType = DbType.String)]
+ public string ProductCode { get; set; }
+
+ ///
+ ///标记类型
+ ///
+ [DBColumn(ColumnName = "Type", DataType = DbType.String)]
+ public string Type { get; set; }
+
+ ///
+ ///标记工位
+ ///
+ [DBColumn(ColumnName = "WorkLoc", DataType = DbType.String)]
+ public string WorkLoc { get; set; }
+
+ ///
+ ///标记用户
+ ///
+ [DBColumn(ColumnName = "CREATEUSER", DataType = DbType.String)]
+ public string CREATEUSER { get; set; }
+
+ ///
+ ///标记时间
+ ///
+ [DBColumn(ColumnName = "CREATEDATE", DataType = DbType.DateTime2)]
+ public string CREATEDATE { get; set; }
+ public string BeginTime { get; set; }
+ public string EndTime { get; set; }
+
+ }
+}
diff --git a/APPQ5/QMAPP.FJC.Entity/QMAPP.FJC.Entity.csproj b/APPQ5/QMAPP.FJC.Entity/QMAPP.FJC.Entity.csproj
index 3e5d97b..475c9fc 100644
--- a/APPQ5/QMAPP.FJC.Entity/QMAPP.FJC.Entity.csproj
+++ b/APPQ5/QMAPP.FJC.Entity/QMAPP.FJC.Entity.csproj
@@ -172,6 +172,7 @@
+
diff --git a/APPQ5/QMAPP.FJC.Web/Web.config b/APPQ5/QMAPP.FJC.Web/Web.config
index 1038834..fc74490 100644
--- a/APPQ5/QMAPP.FJC.Web/Web.config
+++ b/APPQ5/QMAPP.FJC.Web/Web.config
@@ -38,8 +38,10 @@
-
+
+
+
diff --git a/APPQ5/QMAPP.WinForm/App.config b/APPQ5/QMAPP.WinForm/App.config
index f1df362..ddb7ff1 100644
--- a/APPQ5/QMAPP.WinForm/App.config
+++ b/APPQ5/QMAPP.WinForm/App.config
@@ -203,8 +203,10 @@
-
-
+
+
+
+
diff --git a/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.Designer.cs b/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.Designer.cs
index acfd605..a9ce91f 100644
--- a/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.Designer.cs
+++ b/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.Designer.cs
@@ -162,6 +162,7 @@
this.PType = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.OPERATESTATE = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.timer1 = new System.Windows.Forms.Timer(this.components);
+ this.btnSignInfo = new System.Windows.Forms.ToolStripButton();
this.panel2.SuspendLayout();
this.panelSearch.SuspendLayout();
this.plDAI.SuspendLayout();
@@ -583,6 +584,7 @@
this.tsbOrderOperation,
this.tsbAndon,
this.tsbSearch,
+ this.btnSignInfo,
this.btnEditProduct,
this.btnRefresh,
this.toolStripButton1,
@@ -1459,6 +1461,18 @@
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
+ // btnSignInfo
+ //
+ this.btnSignInfo.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.btnSignInfo.Image = global::QMAPP.WinForm.Resource1.edit;
+ this.btnSignInfo.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.btnSignInfo.ImageTransparentColor = System.Drawing.Color.White;
+ this.btnSignInfo.Name = "btnSignInfo";
+ this.btnSignInfo.Size = new System.Drawing.Size(126, 67);
+ this.btnSignInfo.Text = "标记信息";
+ this.btnSignInfo.Visible = false;
+ this.btnSignInfo.Click += new System.EventHandler(this.btnSignInfo_Click);
+ //
// OperationForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -1605,5 +1619,6 @@
private System.Windows.Forms.ToolStripButton toolStripButton3;
private System.Windows.Forms.CheckBox cBoxVAN;
private System.Windows.Forms.TextBox tBMat;
+ private System.Windows.Forms.ToolStripButton btnSignInfo;
}
}
\ No newline at end of file
diff --git a/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.cs b/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.cs
index 0b88ed9..dd6f0ac 100644
--- a/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.cs
+++ b/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.cs
@@ -3607,6 +3607,18 @@ namespace QMAPP.WinForm.Forms.Operation
#endregion
-
+
+ #region 标记信息
+ ///
+ /// 标记信息
+ ///
+ ///
+ ///
+ private void btnSignInfo_Click(object sender, EventArgs e)
+ {
+ SignInfoForm frm = new SignInfoForm(this);
+ frm.ShowDialog();
+ }
+ #endregion
}
}
\ No newline at end of file
diff --git a/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.resx b/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.resx
index 128244a..34c7216 100644
--- a/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.resx
+++ b/APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm.resx
@@ -505,89 +505,89 @@
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
- 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
- Z4iDswAAAABJRU5ErkJggg==
+ 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
+ Jdm5yHQAAAAASUVORK5CYII=
diff --git a/APPQ5/QMAPP.WinForm/Forms/Operation/SignInfoForm.cs b/APPQ5/QMAPP.WinForm/Forms/Operation/SignInfoForm.cs
new file mode 100644
index 0000000..baec989
--- /dev/null
+++ b/APPQ5/QMAPP.WinForm/Forms/Operation/SignInfoForm.cs
@@ -0,0 +1,201 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Drawing;
+using System.Windows.Forms;
+using QMAPP.FJC.Entity.Operation;
+using QMAPP.ServicesAgent;
+using QMAPP.FJC.Entity.BZD;
+using QMAPP.Entity;
+
+namespace QMAPP.WinForm.Forms.Operation
+{
+ public partial class SignInfoForm : Form
+ {
+ //获取服务代理
+ QMAPP.ServicesAgent.ServiceAgent _agent = ClientContext.GetServiceAgent();
+
+ List _bzdConfig = null;
+
+ Product _CurrentProduct = null;
+ private OperationForm _parentForm;
+ private OperationForm_316 operationForm_316;
+
+ public SignInfoForm(OperationForm parentForm)
+ {
+ InitializeComponent();
+ infolabel.Text = "";
+ infolabel.ForeColor = Color.Red;
+ _parentForm = parentForm;
+ }
+
+ public SignInfoForm(OperationForm_316 operationForm_316)
+ {
+ this.operationForm_316 = operationForm_316;
+ }
+
+ #region 打印按钮
+
+ ///
+ /// 打印按钮
+ ///
+ ///
+ ///
+ private void button1_Click(object sender, EventArgs e)
+ {
+ try
+ {
+
+ if (string.IsNullOrWhiteSpace(cbMaterial.Text))
+ {
+ infolabel.Text = "请选择总成零件号!";
+ cbMaterial.Focus();
+ return;
+ }
+
+ if (string.IsNullOrEmpty(txtMainCode.Text))
+ {
+ infolabel.Text = "请扫描或填写装配码!";
+
+ txtMainCode.Focus();
+ return;
+ }
+ //*****************************
+ var _Product = _agent.InvokeServiceFunction(B9IPCService.BZDRecorderBLL_GetRecord.ToString(), new BZDRecorder2() { PRODUCTCODE = txtMainCode.Text });
+
+ if (_Product == null)
+ {
+ string BZDRule = "";
+ DataTable dataTable = _agent.InvokeServiceFunction(B9IPCService.BZDConfigBLL_GetAppConfigValue.ToString(), "BZDRule");
+ if (dataTable.Rows.Count > 0)
+ {
+ BZDRule = dataTable.Rows[0]["Value"].ToString();
+ }
+ if (string.IsNullOrEmpty(BZDRule))
+ {
+ MessageBox.Show("未配置总成规则!");
+ return;
+ }
+ string MATERIAL_CODE = cbMaterial.Text.Split('|')[0];
+
+ if (System.Text.RegularExpressions.Regex.IsMatch(txtMainCode.Text, BZDRule))
+ {
+ //添加补打记录
+ _agent.InvokeServiceFunction(B9IPCService.BarCodeReplacementBLL_Insert.ToString(), new BarCodeReplacement() { ProductCode = txtMainCode.Text, Type = "BZD条码补打" });
+
+ _parentForm.planMATERIAL_CODE = MATERIAL_CODE;
+ _parentForm.processMainCode = txtMainCode.Text;
+ //_parentForm.cBoxVAN = false;
+
+
+
+ //添加T_AW_PRODUCT
+ var ProductList = SelectProduct(txtMainCode.Text);
+ var PID = Guid.NewGuid().ToString();
+ var ProductNew = new Product()
+ {
+ PRODUCTCODE = txtMainCode.Text,
+ PID = PID,
+ //MACHINECODDE = _operationServiceParam.machineInfo.MACHINECODDE,
+ //MACHINENAME = _operationServiceParam.machineInfo.MACHINENAME,
+ PRODUCTSOURCE = "0",
+ MATERIAL_CODE = MATERIAL_CODE,
+ STATUS = "0",
+ OUTFLAG = "0",
+ USINGSTATE = "0",
+ CAPACITY = 1,
+ USINGCOUNT = 0,
+ //WORKCELL_CODE = ProductList.WORKCELL_CODE,
+ //WORKLOC_CODE = ProductList.WORKLOC_CODE,
+ //WORKCENTER_CODE = ProductList.WORKCENTER_CODE,
+ WORKCENTER_CODE = "ASSLINE",
+ MATERIAL_TYPE = "IP_FINASSY"
+ };
+ //_agent.InvokeServiceFunction>(B9BasicService.ProductBLL_Insert.ToString(), ProductNew);
+ DataResult result;//判断是否成功
+ //result = _agent.InvokeServiceFunction>(B9BasicService.ProductBLL_Insert.ToString(), ProductNew);
+ result = _agent.InvokeServiceFunction>(B9BasicService.ProductBLL_InsertForBundle.ToString(), ProductNew);
+ if (!result.IsSuccess)
+ {
+ MessageBox.Show(result.Msg);
+ return;
+ }
+
+ _parentForm.Print052QRCODE(false,txtMainCode.Text);
+
+ }
+ else
+ {
+ MessageBox.Show("条码规则不符合!");
+ }
+
+ }
+ else
+ MessageBox.Show("条码已存在!");
+ }
+ catch (Exception exception)
+ {
+ MessageBox.Show("打印失败!");
+ throw;
+ }
+ }
+
+ #endregion
+
+ #region 查找Product
+ ///
+ /// 查找Product
+ ///
+ ///
+ public Product SelectProduct(string Products)
+ {
+ var list = new List();
+ var ProductList = _agent.InvokeServiceFunction(B9IPCService.ProductBLL_Get.ToString(), new Product() { PRODUCTCODE = Products });
+ return ProductList;
+ }
+ #endregion
+
+ #region 初始界面
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ private void PrintForm_Load(object sender, EventArgs e)
+ {
+ _bzdConfig =
+ _agent.InvokeServiceFunction>(B9IPCService.BZDConfigBLL_GetAllList.ToString(),"");
+ foreach (var t in _bzdConfig)
+ {
+ t.MATERIALCODDE = t.MATERIALCODDE + "|" + t.ColorDetail;
+ }
+ LoadAssyMaterial();
+ }
+
+ #endregion
+
+ #region 加载总成物料
+
+ ///
+ /// 加载总成物料
+ ///
+ private void LoadAssyMaterial()
+ {
+
+ //模腔号
+ this.cbMaterial.DataSource = _bzdConfig;
+ this.cbMaterial.DisplayMember = "MATERIALCODDE";
+ this.cbMaterial.ValueMember = "PID";
+ }
+
+
+
+ #endregion
+
+ private void label2_Click(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/APPQ5/QMAPP.WinForm/Forms/Operation/SignInfoForm.designer.cs b/APPQ5/QMAPP.WinForm/Forms/Operation/SignInfoForm.designer.cs
new file mode 100644
index 0000000..1085ee0
--- /dev/null
+++ b/APPQ5/QMAPP.WinForm/Forms/Operation/SignInfoForm.designer.cs
@@ -0,0 +1,143 @@
+using System.Drawing;
+
+namespace QMAPP.WinForm.Forms.Operation
+{
+ partial class SignInfoForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.label1 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.txtMainCode = new System.Windows.Forms.TextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.infolabel = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.cbMaterial = new System.Windows.Forms.ComboBox();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Font = new System.Drawing.Font("宋体", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label1.Location = new System.Drawing.Point(204, 30);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(245, 37);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "标记信息登记";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label3.Location = new System.Drawing.Point(27, 198);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(106, 24);
+ this.label3.TabIndex = 2;
+ this.label3.Text = "标记条码";
+ //
+ // txtMainCode
+ //
+ this.txtMainCode.BackColor = System.Drawing.SystemColors.Window;
+ this.txtMainCode.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.txtMainCode.Location = new System.Drawing.Point(172, 187);
+ this.txtMainCode.Name = "txtMainCode";
+ this.txtMainCode.Size = new System.Drawing.Size(416, 35);
+ this.txtMainCode.TabIndex = 4;
+ //
+ // button1
+ //
+ this.button1.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button1.Location = new System.Drawing.Point(262, 254);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(206, 60);
+ this.button1.TabIndex = 5;
+ this.button1.Text = "提交";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // infolabel
+ //
+ this.infolabel.AutoSize = true;
+ this.infolabel.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.infolabel.ForeColor = System.Drawing.Color.Red;
+ this.infolabel.Location = new System.Drawing.Point(50, 334);
+ this.infolabel.Name = "infolabel";
+ this.infolabel.Size = new System.Drawing.Size(0, 31);
+ this.infolabel.TabIndex = 6;
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label5.Location = new System.Drawing.Point(27, 110);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(106, 24);
+ this.label5.TabIndex = 2;
+ this.label5.Text = "标记类型";
+ //
+ // cbMaterial
+ //
+ this.cbMaterial.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cbMaterial.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.cbMaterial.FormattingEnabled = true;
+ this.cbMaterial.Location = new System.Drawing.Point(173, 98);
+ this.cbMaterial.Name = "cbMaterial";
+ this.cbMaterial.Size = new System.Drawing.Size(415, 36);
+ this.cbMaterial.TabIndex = 7;
+ //
+ // SignInfoForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(665, 399);
+ this.Controls.Add(this.cbMaterial);
+ this.Controls.Add(this.infolabel);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.txtMainCode);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label1);
+ this.Name = "SignInfoForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "标记信息登记";
+ this.Load += new System.EventHandler(this.PrintForm_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.TextBox txtMainCode;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Label infolabel;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.ComboBox cbMaterial;
+ }
+}
\ No newline at end of file
diff --git a/APPQ5/QMAPP.WinForm/Forms/Operation/SignInfoForm.resx b/APPQ5/QMAPP.WinForm/Forms/Operation/SignInfoForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/APPQ5/QMAPP.WinForm/Forms/Operation/SignInfoForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/APPQ5/QMAPP.WinForm/Properties/AssemblyInfo.cs b/APPQ5/QMAPP.WinForm/Properties/AssemblyInfo.cs
index bf8ed5d..c260add 100644
--- a/APPQ5/QMAPP.WinForm/Properties/AssemblyInfo.cs
+++ b/APPQ5/QMAPP.WinForm/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2022.04.09.01")]
-[assembly: AssemblyFileVersion("2022.04.09.01")]
+[assembly: AssemblyVersion("2022.05.23.01")]
+[assembly: AssemblyFileVersion("2022.05.23.01")]
diff --git a/APPQ5/QMAPP.WinForm/QMAPP.WinForm.csproj b/APPQ5/QMAPP.WinForm/QMAPP.WinForm.csproj
index 3c52588..2904d64 100644
--- a/APPQ5/QMAPP.WinForm/QMAPP.WinForm.csproj
+++ b/APPQ5/QMAPP.WinForm/QMAPP.WinForm.csproj
@@ -428,6 +428,12 @@
BZDPasswordForm.cs
+
+ Form
+
+
+ SignInfoForm.cs
+
Form
@@ -1137,6 +1143,9 @@
BZDPasswordForm.cs
+
+ SignInfoForm.cs
+
BZDRePrintForm.cs
diff --git a/ServicesCenter/WCF/QMFrameWork.WebServiceHost/Web.config b/ServicesCenter/WCF/QMFrameWork.WebServiceHost/Web.config
index fced174..0b3e916 100644
--- a/ServicesCenter/WCF/QMFrameWork.WebServiceHost/Web.config
+++ b/ServicesCenter/WCF/QMFrameWork.WebServiceHost/Web.config
@@ -66,10 +66,10 @@
-
+
-
+
+