/*===================================================================
* 程序说明: MES_Order的数据管理窗体
* 作者资料: 孙中吕
* 创建日期: 2024/05/21 03:13:43
* 最后修改: 2024/05/21 03:13:43
*
* 注: 本文件由代码生成器(Code Generator)自动生成。
* 版权所有 Copyright 2006~2024, C/S框架网(www.cscode.net)
*===================================================================*/
using CSFramework.DB;
using CSFrameworkV5.Business;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using CSFrameworkV5.Interfaces;
using CSFrameworkV5.Library;
using CSFrameworkV5.Library.CommonClass;
using CSFrameworkV5.Models;
using CSFrameworkV5.Order;
using CSFrameworkV5.WorkOrder.workOrder;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;
using System;
using System.Data;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace CSFrameworkV5.WorkOrder
{
///
/// MES_Order的资料管理窗体,由代码生成器(Code Generator)自动生成
///
public partial class frmWorkOrder : frmBaseBusinessForm
{
private bllWorkOrder _BLLInstance; //业务逻辑层对象引用
private DataTable tbWL = new DataTable(); //
private FrmPictViwe_DELETE frmPictViwe;
public frmWorkOrder()
{
InitializeComponent();
_BLLInstance = new bllWorkOrder();
var sqlstr =
"select DAA001 工单号,DAA014 产品编码,DAA015 产品名称,DAA016 规格,DAA027 数量 from WOMDAA where DAA022 in (N'新建',N'下达')";
tbWL = _BLLInstance.GETDAT(sqlstr);
txtdaa001.Properties.ValueMember = "工单号";
txtdaa001.Properties.DisplayMember = "工单号";
txtdaa001.Properties.ShowClearButton = false;
txtdaa001.Properties.DataSource = tbWL;
}
private void frmWorkOrder_Load(object sender, EventArgs e)
{
InitializeForm(); //自定义初始化操作
Init();
//筛选框
gvSummary.OptionsView.ShowGroupPanel = false;
gvSummary.OptionsView.ShowAutoFilterRow = true;
if (splitContainerEditorAndDetailGrid != null &&
layoutGroup.OptionsTableLayoutGroup.RowDefinitions.Count != 0)
splitContainerEditorAndDetailGrid.SplitterPosition =
Convert.ToInt32(Math.Round(
layoutGroup.OptionsTableLayoutGroup.RowDefinitions
.Count *
layoutGroup.OptionsTableLayoutGroup.RowDefinitions[0]
.Height, 0)) + 30;
if (splitContainerSearchAndSummary != null && layoutGroupSearch
.OptionsTableLayoutGroup.RowDefinitions.Count != 0)
splitContainerSearchAndSummary.SplitterPosition =
Convert.ToInt32(Math.Round(
(layoutGroupSearch.OptionsTableLayoutGroup
.RowDefinitions.Count - 1) *
layoutGroupSearch.OptionsTableLayoutGroup
.RowDefinitions[0].Height, 0)) + 60;
}
private void Init()
{
var sql =
"select * from MES_Order order by ID desc offset 0 rows fetch next 100 rows only";
var dt = _BLLInstance.GETDAT(sql);
DoBindingSummaryGrid(dt); //绑定主表的Grid
ShowSummaryPage(true); //显示Summary页面.
}
protected override void InitializeForm()
{
_BLL = new bllWorkOrder(); //实例化基类的业务逻辑层
_BLLInstance = _BLL as bllWorkOrder; //当前窗体的业务层逻辑层对象引用
_SummaryView =
new DevGridView(
gvSummary); //实例化数据视图,此接口可支持不同的视图,比如表格GridControl,树视图TreeList.
//_ActiveEditor = txtid;//进入修改状态,显示第一个焦点的输入框,可以不设置
//_KeyEditor = txtid;//主键字段输入框,可以不设置
_DetailGroupControl = pcDetailEditor; //【资料编辑】页面所有文本输入框的容器
base.InitializeForm();
frmGridCustomize.RegisterGrid(gvSummary); //注册表格组件,自动添加样式管理、弹出菜单
DevStyle.SetGridControlLayout(gcSummary, false); //主表表格样式设置
DevStyle.SetSummaryGridViewLayout(gvSummary); //主表表格样式设置
BindingSummaryNavigator(controlNavigatorSummary,
gcSummary); //绑定表格导航按钮的数据源.
gvSummary.DoubleClick +=
new EventHandler(OnGridViewDoubleClick); //绑定主表的DoubleClick事件
DevStyle.SetGridControlLayout(gcDetail0, true); //明细表表格样式设置
DevStyle.SetDetailGridViewLayout(gvDetail0); //明细表表格样式设置
gcDetail0.EmbeddedNavigator.ButtonClick +=
new NavigatorButtonClickEventHandler(
OnEmbeddedNavigatorButtonClick); //绑定明细表格的按钮事件
gvDetail0.CellValueChanged +=
new CellValueChangedEventHandler(
OnCellValueChanged); //绑定明细表格单元格数据修改时触发的事件
ShowSummaryPage(true); //初始化完成后显示表格页
}
//修改单元格数据时触发的事件
private void OnCellValueChanged(object sender,
CellValueChangedEventArgs e)
{
//开发实例:修改单元格关联更新其它列的值
//参考(frmPO/frmSO).OnCellValueChanged方法}
}
///
/// 明细表格按钮事件
///
///
///
private void OnEmbeddedNavigatorButtonClick(object sender,
NavigatorButtonClickEventArgs e)
{
try
{
var gc = (GridControl)((GridControlNavigator)sender).Parent;
var gridView =
(GridView)gc.Views[0]; //每个GridControl默认有一个GridView.
if (e.Button.ImageIndex == DetailButtons.Add ||
e.Button.ImageIndex == DetailButtons.Insert)
CreateOneDetail(gridView, e.Button.ImageIndex);
else if (e.Button ==
gc.EmbeddedNavigator.Buttons.CustomButtons[
DetailButtons.Delete])
if (Msg.AskQuestion("确定要删除这条记录?"))
gridView.DeleteRow(gridView.FocusedRowHandle);
e.Handled = true;
}
catch (Exception ex)
{
LogUserOperate.Write(ex);
Msg.ShowException(ex);
}
}
///
/// 重要!!当按钮状态改变时触发的事件,
///
///
protected override void ButtonStateChanged(UpdateType currentState)
{
var isEditMode = currentState == UpdateType.Add ||
currentState == UpdateType.Modify;
//设置编辑页面的文本框控件只读和可编辑状态
SetDetailEditorsAccessable(pcDetailEditor, isEditMode);
//设置明细表格的按钮禁用和可用状态
SetGridCustomButtonAccessable(gcDetail0, isEditMode);
//设置明细表格的可修改状态
gvDetail0.OptionsBehavior.Editable = isEditMode;
}
//有明细表:绑定单据明细表的数据源.
protected override void DoBindingDetailGrid(DataSet dataSource)
{
gcDetail0.DataSource = null;
gcDetail0.DataSource = dataSource.Tables[DA01IMAGE.__TableName];
}
///
/// 绑定【编辑页面】所有文本输入框的数据源
///
/// 数据源
protected override void DoBindingSummaryEditor(DataTable summary)
{
DoBindingEditorPanel(pcDetailEditor, summary);
//在此绑定其它自定义组件的数据源,参考frmCustomer的DoBindingSummaryEditor方法
}
public override void DoAdd(IButtonInfo sender)
{
base.DoAdd(sender);
if (_UpdateType == UpdateType.Add)
{
//创建人
CreatedByTxt.Properties.ReadOnly = true;
CreatedByTxt.Enabled = false;
var user = Loginer.CurrentUser.Account;
SetEditorBindingValue(CreatedByTxt, user, true);
//创建时间
var time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
CreateDateTxt.Properties.ReadOnly = true;
CreateDateTxt.Enabled = false;
SetEditorBindingValue(CreateDateTxt, time, true);
}
}
// public override void DoEdit(IButtonInfo sender)
// {
// base.DoEdit(sender);
// if (_UpdateType == UpdateType.Modify)
// {
//
// }
// }
//创建一条明细记录
private void CreateOneDetail(GridView gridView, int buttonIndex)
{
var gridControl = gridView.GridControl;
var detailTableName = (string)gridView.Tag;
//若要取排序序号,要将光标移到最后一行
if (buttonIndex == DetailButtons.Add) gridView.MoveLast();
//若表格无记录,转换为新增状态
if (gridView.RowCount == 0) buttonIndex = DetailButtons.Add;
var row = _BLL.CurrentBusiness.Tables[detailTableName].NewRow();
row["ID"] = Guid.NewGuid();
row["PID"] = _BLL.DataBindRow["ID"];
//增加一条明细记录
if (buttonIndex == DetailButtons.Add)
{
_BLL.CurrentBusiness.Tables[detailTableName].Rows.Add(row);
gridControl.RefreshDataSource(); //立即刷新数据源
gridView.FocusedRowHandle = gridView.RowCount - 1; //光标移到到最后一条记录
}
else if (buttonIndex == DetailButtons.Insert) //插入一条明细记录
{
_BLL.CurrentBusiness.Tables[detailTableName].Rows
.InsertAt(row, gridView.FocusedRowHandle);
gridView.FocusedRowHandle = gridView.FocusedRowHandle - 1;
}
gridView.FocusedColumn = gridView.VisibleColumns[0];
}
public override void DoSave(IButtonInfo sender) // 保存数据
{
UpdateLastControl(); //更新最后一个文本输入框的数据
try
{
frmWaitingEx.ShowMe(this);
var dsTemplate =
_BLL.CreateSaveData(_BLL.CurrentBusiness); //创建用于保存的临时数据
var result = _BLL.Update(dsTemplate); //调用业务逻辑层Update()方法保存数据
if (result.Success) //保存成功, 不需要重新加载数据,更新缓存数据即可.
{
if (_UpdateType == UpdateType.Add)
_BLL.DataBindRow[MES_Order.__KeyName] =
result.DocNo; //更新单据号码
if (_UpdateType == UpdateType.Modify)
_BLL.NotifyUser(); //发送短信或Email通知制单人
UpdateSummaryCurrentRow(_BLL.DataBindRow); //刷新表格当前记录的缓存数据.
DoBindingSummaryEditor(_BLL.DataBinder); //重新绑定文本框的数据源,刷新数据
if (_UpdateType == UpdateType.Add)
gvSummary.MoveLast(); //若是新增操作,要移动到取后一条记录.
base.DoSave(sender); //调用基类的方法. 此行代码应放较后位置.
frmWaitingEx.HideMe(this);
Msg.ShowInformation("保存成功!");
}
else
{
Msg.Warning("保存失败!");
}
}
finally
{
frmWaitingEx.HideMe(this);
}
}
///
/// 保存数据后,更新表格中当前记录的数据(更新缓存资料)
///
/// 当前修改的记录
/// 当前单据号码
protected void UpdateSummaryCurrentRow(DataRow currentRow)
{
//若表格没有数据源,要下载当前单据的数据
if (gcSummary.DataSource == null || gvSummary.RowCount == 0)
{
//实例化查询参数
var P = new QueryMES_Order
{
daa001 = "",
create_by = ""
};
var dt = _BLLInstance.Query(P); //获取数据
DoBindingSummaryGrid(dt); //绑定主表表格的数据源
}
else
{
//调用基类方法更新表格中当前记录的缓存数据
base.UpdateSummaryRow(currentRow);
}
}
private void btnEmpty_Click(object sender, EventArgs e)
{
ClearContainerEditorText(pnlSearch);
}
private void btnQuery_Click(object sender, EventArgs e)
{
//查询数据
try
{
frmWaitingEx.ShowMe(this);
var dt = _BLLInstance.Query(new QueryMES_Order());
DoBindingSummaryGrid(dt); //绑定主表的Grid
ShowSummaryPage(true); //显示Summary页面.
if (gvSummary.RowCount == 0) Msg.Warning("没有找到数据!");
}
finally
{
frmWaitingEx.HideMe(this);
}
}
//给明细表绑定KeyDown事件,控制按回车事件
private void gvDetail_KeyDown(object sender, KeyEventArgs e)
{
var gridView = (GridView)sender;
//表格按回车键自动跳转到下一个可编辑列, 若是最后一列,自动新增一条记录
GridMovetor.OnGridViewKeyDown(gridView, e);
}
private void txtdaa001_Properties_EditValueChanged(object sender,
EventArgs e)
{
}
private void simpleButton1_Click(object sender, EventArgs e)
{
try
{
if (buttonEdit1.Text == "")
{
buttonEdit1.Focus();
Msg.Warning("请先选择图片!!!");
return;
}
try
{
if (buttonEdit1.Text == "")
{
buttonEdit1.Focus();
Msg.Warning("该物料没有正式图纸,请上传!!!");
return;
}
var db = SqlSugarHelper.GetInstance();
var entity = new SqlD01Image();
entity.Id = Guid.NewGuid().ToString();
//创建时间
entity.CreateDate =
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
entity.CreateBy = Loginer.CurrentUser.Account;
var mesOrder = db.Queryable()
.Single(s => s.Daa001 == txtdaa001.EditValue);
if (mesOrder != null)
{
entity.Pid = mesOrder.id;
}
else
{
Msg.Warning("请先保存然后再进行图纸上传");
return;
}
using (var msReader = new MemoryStream())
{
using (var fs = new FileStream(
buttonEdit1.Text,
FileMode.Open))
{
var buffer = new byte[1024];
var readLen = 0;
while ((readLen = fs.Read(buffer, 0,
buffer.Length)) >
0)
msReader.Write(buffer, 0, readLen);
}
entity.Image = Convert.ToBase64String(
msReader.ToArray());
}
var command = SqlSugarHelper.UseTransactionWithOracle(s =>
s.Insertable(entity).ExecuteCommand());
//TOD 图片插入后回显到表格中
if (command > 0)
{
var dt = _BLLInstance.GETDAT(
"select * from DA01IMAGE where pid = '" +
entity.Pid + "'");
gcDetail0.DataSource = dt;
}
else
{
Msg.Warning("上传失败");
return;
}
}
catch (Exception EE)
{
Msg.Warning(EE.Message.ToString());
return;
}
// TestUpload();
Msg.Warning("上传成功!!!");
buttonEdit1.Text = "";
}
catch (Exception ex)
{
Msg.Warning(ex.ToString());
throw;
}
}
private void buttonEdit1_Click(object sender, EventArgs e)
{
var dlg = new OpenFileDialog();
dlg.Filter = "所有图像文件|*.jpg;*.gif";
dlg.FileName = "图像文件";
if (DialogResult.OK == dlg.ShowDialog())
buttonEdit1.Text = dlg.FileName;
}
private void CreateDateTxt_EditValueChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(CreateDateTxt.EditValue.ToString()))
{
var formattedDate = DateTime
.Parse(CreateDateTxt.EditValue.ToString())
.ToString("yyyy-MM-dd");
SetEditorBindingValue(CreateDateTxt, formattedDate.ToString(),
true);
}
}
private void gvSummary_RowClick(object sender, RowClickEventArgs e)
{
}
private void FrmPictViwe_FormClosedEvent(object sender, EventArgs e)
{
frmWaitingEx.ShowMe(this);
var db = SqlSugarHelper.GetInstance();
var sqlMesOrder = db.Queryable()
.Where(s => s.Daa001 == txtdaa001.Text).Single();
var sq = "select * from DA01IMAGE where pid = '" + sqlMesOrder.id +
"'";
var tb = _BLLInstance.GETDAT(sq);
gcDetail0.DataSource = tb;
frmWaitingEx.HideMe(this);
frmPictViwe.FormClosedEvent -= FrmPictViwe_FormClosedEvent;
}
private void gvDetail0_RowClick(object sender, RowClickEventArgs e)
{
if (e.RowHandle >= 0)
{
var hInfo = gvDetail0.CalcHitInfo(new Point(e.X, e.Y));
try
{
// gvDetail0.DataSource
//根据下标获取行数据
var dataRow = gvDetail0.GetDataRow(e.RowHandle);
//取出id列
var id = dataRow.ItemArray[0].ToString();
var db = SqlSugarHelper.GetInstance();
var sqlD01Image = db.Queryable()
.Where(s => s.Id == id).Single();
if (sqlD01Image == null) return;
var ms = new MemoryStream(
Convert.FromBase64String(sqlD01Image.Image));
var img = Image.FromStream(ms);
frmPictViwe =
new FrmPictViwe_DELETE(img, txtdaa001.Text, id);
frmPictViwe.FormClosedEvent +=
FrmPictViwe_FormClosedEvent;
frmPictViwe.Show();
}
catch (Exception ex)
{
Msg.Warning(ex.Message);
}
}
}
}
}