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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 - 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 @@ - + - + +