123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493 |
- using ComponentFactory.Krypton.Toolkit;
- using NXWMS.Client.FrmCustom;
- using NXWMS.Client.Model.AppModels.Condition.Common;
- using NXWMS.Client.Model.AppModels.Result.Common;
- using NXWMS.Client.Model.AppModels.Result.Inspection;
- using NXWMS.Client.Model.AppModels.Result.Instock;
- using NXWMS.Client.Model.CoreModels;
- using NXWMS.Commons;
- using NXWMS.Services;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Web.UI.WebControls;
- using System.Windows.Forms;
- namespace NXWMS.Forms.Inspection.frmInspectionChild
- {
- /// <summary>
- /// 质检审核窗体类
- /// </summary>
- public partial class frmChildInspectionCheck : KryptonForm
- {
- /// <summary>
- /// 窗体构造函数
- /// </summary>
- public frmChildInspectionCheck()
- {
- InitializeComponent();
- }
- #region 全局变量
- /// <summary>
- /// 质检单主键ID
- /// </summary>
- public string InspectionId { get; set; }
- /// <summary>
- /// 数据库中的质检单所有数据(包括主、明细表)。
- /// 未进行编辑过。
- /// </summary>
- private WmsQaInspectionResult InspectionDataNotEdit = new WmsQaInspectionResult();
- #endregion
- #region 初始化数据
- /// <summary>
- /// 窗体加载函数
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void frmChildInspectionCheck_Load(object sender, EventArgs e)
- {
- InitComboBoxItemData();
- InitDataGridViewColumn();
- kdtp_InspectionTime.Checked = false;
- LoadWmsQaInspectionDtlData();
- }
- /// <summary>
- /// 初始化下拉列表数据
- /// </summary>
- private void InitComboBoxItemData()
- {
- /*
- ToDo:后续把下拉列表转为 后台获取数据,目前是写死的。
- */
- List<BasDictionaryResult> results = new List<BasDictionaryResult>();
- #region 质检单类型
- results = BasDictionaryUtil.basDictionaryResultLst.FindAll(x => x.DICTIONARY_CODE == "InspectionTypeDesc");
- if (results.Count > 0)
- {
- kcmb_InspectionType.Items.Clear();
- foreach (var item in results)
- {
- kcmb_InspectionType.Items.Add(new ListItem
- {
- Value = item.DICTIONARY_ITEM_CODE,
- Text = item.DICTIONARY_ITEM_NAME,
- });
- }
- kcmb_InspectionType.SelectedIndex = 0;
- }
- else
- {
- KryptonMessageBox.Show("未找到质检单类型的字典项数据!");
- }
- #endregion
- #region 质检方式
- results = BasDictionaryUtil.basDictionaryResultLst.FindAll(x => x.DICTIONARY_CODE == "InspectionWayDesc");
- if (results.Count > 0)
- {
- kcmb_InspectionWay.Items.Clear();
- foreach (var item in results)
- {
- kcmb_InspectionWay.Items.Add(new ListItem
- {
- Value = item.DICTIONARY_ITEM_CODE,
- Text = item.DICTIONARY_ITEM_NAME,
- });
- }
- kcmb_InspectionWay.SelectedIndex = 0;
- }
- else
- {
- KryptonMessageBox.Show("未找到质检方式的字典项数据!");
- }
- #endregion
- }
- /// <summary>
- /// 初始化DataGridView列信息
- /// </summary>
- private void InitDataGridViewColumn()
- {
- DataGridViewColumn column1 = new KryptonDataGridViewTextBoxColumn();
- column1.HeaderText = "序号";
- column1.Width = 50;
- column1.ReadOnly = true;
- //column1.
- kdgv_InspectionDtlData.Columns.Add(column1);
- column1 = new KryptonDataGridViewTextBoxColumn();
- column1.HeaderText = "到货通知单号";
- column1.Width = 150;
- column1.ReadOnly = true;
- kdgv_InspectionDtlData.Columns.Add(column1);
- column1 = new KryptonDataGridViewTextBoxColumn();
- column1.HeaderText = "物料编码";
- column1.Width = 150;
- column1.ReadOnly = true;
- kdgv_InspectionDtlData.Columns.Add(column1);
- column1 = new KryptonDataGridViewTextBoxColumn();
- column1.HeaderText = "物料名称";
- column1.Width = 200;
- column1.ReadOnly = true;
- kdgv_InspectionDtlData.Columns.Add(column1);
- column1 = new KryptonDataGridViewTextBoxColumn();
- column1.HeaderText = "物料条码";
- column1.Width = 150;
- column1.ReadOnly = true;
- kdgv_InspectionDtlData.Columns.Add(column1);
- DataGridViewComboBoxColumn cmb_Unit = new DataGridViewComboBoxColumn();
- cmb_Unit.HeaderText = "质检结果";
- cmb_Unit.Width = 90;
- //目前写死下拉列表的数据项,后续改为后台获取
- cmb_Unit.Items.AddRange(new ListItem[]
- {
- new ListItem{ Value = "Wait",Text = "待检"},
- new ListItem{ Value = "OK",Text = "合格"},
- new ListItem{ Value = "NG",Text = "不合格"}
- });
- cmb_Unit.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
- kdgv_InspectionDtlData.Columns.Add(cmb_Unit);
- column1 = new KryptonDataGridViewTextBoxColumn();
- column1.HeaderText = "批次号";
- column1.Width = 120;
- column1.ReadOnly = true;
- kdgv_InspectionDtlData.Columns.Add(column1);
- column1 = new KryptonDataGridViewTextBoxColumn();
- column1.HeaderText = "单位";
- column1.Width = 70;
- column1.ReadOnly = true;
- kdgv_InspectionDtlData.Columns.Add(column1);
- column1 = new KryptonDataGridViewTextBoxColumn();
- column1.HeaderText = "供应商";
- column1.Width = 120;
- column1.ReadOnly = true;
- kdgv_InspectionDtlData.Columns.Add(column1);
- column1 = new KryptonDataGridViewTextBoxColumn();
- column1.HeaderText = "包装";
- column1.Width = 80;
- column1.ReadOnly = true;
- kdgv_InspectionDtlData.Columns.Add(column1);
- KryptonDataGridViewDateTimePickerColumn column_ProductTime = new KryptonDataGridViewDateTimePickerColumn();
- column_ProductTime.HeaderText = "生产日期";
- column_ProductTime.Width = 160;
- column_ProductTime.Format = DateTimePickerFormat.Custom;
- column_ProductTime.CustomFormat = "yyyy-MM-dd HH:mm:ss";
- column_ProductTime.ReadOnly = true;
- kdgv_InspectionDtlData.Columns.Add(column_ProductTime);
- KryptonDataGridViewDateTimePickerColumn column_ExpTime = new KryptonDataGridViewDateTimePickerColumn();
- column_ExpTime.HeaderText = "失效日期";
- column_ExpTime.Width = 160;
- column_ExpTime.Format = DateTimePickerFormat.Custom;
- column_ExpTime.CustomFormat = "yyyy-MM-dd HH:mm:ss";
- column_ExpTime.ReadOnly = true;
- kdgv_InspectionDtlData.Columns.Add(column_ExpTime);
- column1 = new KryptonDataGridViewTextBoxColumn();
- column1.HeaderText = "到货通知单明细ID";
- column1.Width = 30;
- column1.Visible = false;
- column1.ReadOnly = true;
- kdgv_InspectionDtlData.Columns.Add(column1);
- }
- /// <summary>
- /// 调用服务端接口,请求质检单明细表数据
- /// </summary>
- /// <returns></returns>
- private string LoadWmsQaInspectionDtlData()
- {
- var result = WmsInspectionService.wmsQaInspectionService.GetWmsQaInspectionDtlListForId(new WmsQaInspectionResult { INSPECTION_ID = Convert.ToInt32(this.InspectionId) });
- if (result.Status == OperateStatus.Success)
- {
- ktb_InspectionNo.Text = result.Data.INSPECTION_NO;
- ktb_InspectionNo.Enabled = false;
- ktb_InspectionUser.Text = result.Data.INSPECTION_USER;
- ktb_InspectionUser.Enabled = false;
- kcmb_InspectionType.Text = result.Data.INSPECTION_TYPE_NAME;
- kcmb_InspectionType.Enabled = false;
- kcmb_InspectionWay.Text = result.Data.INSPECTION_WAY_NAME;
- kcmb_InspectionWay.Enabled = false;
- ktb_Describe.Text = result.Data.DESCRIBE;
- if (result.Data.INSPECTION_TIME != new DateTime())
- {
- kdtp_InspectionTime.Value = result.Data.INSPECTION_TIME;
- }
- InspectionDataNotEdit = result.Data;
- kdgv_InspectionDtlData.Rows.Clear();
- foreach (WmsQaInspectionDtlResult item in result.Data.WmsQaInspectionDtlList)
- {
- int index = kdgv_InspectionDtlData.Rows.Add();
- kdgv_InspectionDtlData.Rows[index].Cells[0].Value = index + 1;
- kdgv_InspectionDtlData.Rows[index].Cells[1].Value = item.BILL_NO;
- kdgv_InspectionDtlData.Rows[index].Cells[2].Value = item.MATERIEL_CODE;
- kdgv_InspectionDtlData.Rows[index].Cells[3].Value = item.MATERIEL_NAME;
- kdgv_InspectionDtlData.Rows[index].Cells[4].Value = item.MATERIEL_BARCODE;
- ListItem inspectionResultLstItm = GetComboBoxItem((DataGridViewComboBoxCell)kdgv_InspectionDtlData.Rows[index].Cells[5], item.INSPECTION_RESULT);
- kdgv_InspectionDtlData.Rows[index].Cells[5].Value = inspectionResultLstItm;
- kdgv_InspectionDtlData.Rows[index].Cells[6].Value = item.BATCH_NO;
- kdgv_InspectionDtlData.Rows[index].Cells[7].Value = item.UNIT_CODE;
- kdgv_InspectionDtlData.Rows[index].Cells[8].Value = item.SUPPLIER_NAME;
- kdgv_InspectionDtlData.Rows[index].Cells[9].Value = item.PACKAGE_CODE;
- kdgv_InspectionDtlData.Rows[index].Cells[10].Value = item.PRODUCT_DATE;
- kdgv_InspectionDtlData.Rows[index].Cells[11].Value = item.EXP_DATE;
- kdgv_InspectionDtlData.Rows[index].Cells[12].Value = item.BILL_DTL_ID;
- }
- return string.Empty;
- }
- else
- {
- return result.Message;
- }
- }
- #endregion
- #region 按钮事件
- /// <summary>
- /// 确认按钮事件
- /// 提交编辑完成的质检单数据
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnConfirm_Click(object sender, EventArgs e)
- {
- WmsQaInspectionResult mdInspection = new WmsQaInspectionResult();
- mdInspection.INSPECTION_ID = InspectionDataNotEdit.INSPECTION_ID;
- mdInspection.INSPECTION_NO = InspectionDataNotEdit.INSPECTION_NO;
- mdInspection.INSPECTION_TYPE = Convert.ToInt32(((ListItem)kcmb_InspectionType.SelectedItem).Value);
- mdInspection.INSPECTION_USER = ktb_InspectionUser.Text;
- mdInspection.INSPECTION_WAY = Convert.ToInt32(((ListItem)kcmb_InspectionType.SelectedItem).Value);
- if (kdtp_InspectionTime.Checked)
- {
- mdInspection.INSPECTION_TIME = kdtp_InspectionTime.Value;
- }
- else
- {
- mdInspection.INSPECTION_TIME = new DateTime();
- }
- mdInspection.INSPECTION_STATUS = (int)InspectionStatus.结果确认完成;
- mdInspection.DESCRIBE = ktb_Describe.Text.Trim();
- mdInspection.CREATE_BY = AppConfig.UserLoginResult.UserInfo.UserId;
- mdInspection.UPDATE_BY = AppConfig.UserLoginResult.UserInfo.UserId;
- List<WmsQaInspectionDtlResult> mdInspectionDtlList = new List<WmsQaInspectionDtlResult>();
- if (kdgv_InspectionDtlData.Rows.Count > 0 && !kdgv_InspectionDtlData.Rows[0].IsNewRow)
- {
- foreach (DataGridViewRow dvr in kdgv_InspectionDtlData.Rows)
- {
- if (!dvr.IsNewRow)
- {
- #region 校验每一行数据的完整性
- string RowCheckMsg = string.Empty;
- if (!CheckDataGridViewRowFormat(dvr, ref RowCheckMsg))
- {
- KryptonMessageBox.Show(RowCheckMsg);
- return;
- }
- #endregion
- string receiptNo = dvr.Cells[1].Value.ToString();
- string materielCode = dvr.Cells[2].Value.ToString();
- string materielName = dvr.Cells[3].Value.ToString();
- string materielBarcode = dvr.Cells[4].Value == null ? null : dvr.Cells[4].Value.ToString();
- string inspectionResult = GetComboBoxItem((DataGridViewComboBoxCell)dvr.Cells[5]).Value;
- string batchNo = dvr.Cells[6].Value == null ? null : dvr.Cells[6].Value.ToString();
- string unitCode = dvr.Cells[7].Value == null ? null : dvr.Cells[7].Value.ToString();
- string supplierCode = dvr.Cells[8].Value == null ? null : dvr.Cells[8].Value.ToString();
- string packageCode = dvr.Cells[9].Value == null ? null : dvr.Cells[9].Value.ToString();
- DateTime productTime = Convert.ToDateTime(dvr.Cells[10].Value);
- DateTime expTime = Convert.ToDateTime(dvr.Cells[11].Value);
- int billDtlId = dvr.Cells[12].Value == null ? 0 : Convert.ToInt32(dvr.Cells[12].Value);
- WmsQaInspectionDtlResult mdQaResult = InspectionDataNotEdit.WmsQaInspectionDtlList.Find(y => y.BILL_DTL_ID == billDtlId);
- mdInspectionDtlList.Add(new WmsQaInspectionDtlResult
- {
- INSPECTION_DTL_ID = mdQaResult.INSPECTION_DTL_ID,
- INSPECTION_ID = mdQaResult.INSPECTION_ID,
- BILL_NO = mdQaResult.BILL_NO,
- BILL_DTL_ID = billDtlId,
- MATERIEL_CODE = materielCode,
- MATERIEL_NAME = materielName,
- MATERIEL_BARCODE = materielBarcode,
- BATCH_NO = batchNo,
- UNIT_CODE = unitCode,
- SUPPLIER_CODE = mdQaResult.SUPPLIER_CODE,
- SUPPLIER_NAME = mdQaResult.SUPPLIER_NAME,
- PACKAGE_CODE = packageCode,
- PRODUCT_DATE = productTime,
- EXP_DATE = expTime,
- INSPECTION_RESULT = inspectionResult,
- ITEM_STATUS = mdQaResult.ITEM_STATUS,
- INSPECTION_DTL_STATUS = (int)InspectionStatus.结果确认完成,
- CREATE_BY = AppConfig.UserLoginResult.UserInfo.UserId,
- UPDATE_BY = AppConfig.UserLoginResult.UserInfo.UserId,
- DESCRIBE = null
- });
- }
- }
- mdInspection.WmsQaInspectionDtlList = mdInspectionDtlList;
- var result = WmsInspectionService.wmsQaInspectionService.QaInspectionExamine(mdInspection);
- if (result.Status == OperateStatus.Success)
- {
- KryptonMessageBox.Show(result.Message);
- frmWmsQaInspection.RefreshFrmHost();
- this.Close();
- }
- else
- {
- KryptonMessageBox.Show(result.Message);
- }
- }
- else
- {
- KryptonMessageBox.Show("请添加数据行!");
- }
- }
- /// <summary>
- /// 校验DataGridView输入行数据的正确性
- /// </summary>
- /// <param name="dvr">DataGridView输入行</param>
- /// <param name="OutMssg">校验结果信息</param>
- /// <returns></returns>
- private bool CheckDataGridViewRowFormat(DataGridViewRow dvr, ref string OutMssg)
- {
- if (dvr.Cells[1].Value == null)
- {
- OutMssg = $"第【{dvr.Index + 1}】行未输入物料编码!";
- return false;
- }
- if (dvr.Cells[2].Value == null)
- {
- OutMssg = $"第【{dvr.Index + 1}】行未输入物料编码!";
- return false;
- }
- if (dvr.Cells[3].Value == null)
- {
- OutMssg = $"第【{dvr.Index + 1}】行未输入物料名称!";
- return false;
- }
- if (dvr.Cells[5].Value == null)
- {
- OutMssg = $"第【{dvr.Index + 1}】行未选择质检结果!";
- return false;
- }
- if (dvr.Cells[7].Value == null)
- {
- OutMssg = $"第【{dvr.Index + 1}】行未选择单位信息!";
- return false;
- }
- if (dvr.Cells[8].Value == null)
- {
- OutMssg = $"第【{dvr.Index + 1}】行未选择供应商信息!";
- return false;
- }
- if (dvr.Cells[10].Value == null)
- {
- OutMssg = $"第【{dvr.Index + 1}】行未输入生产日期!";
- return false;
- }
- if (dvr.Cells[11].Value == null)
- {
- OutMssg = $"第【{dvr.Index + 1}】行未输入失效日期!";
- return false;
- }
- if (DateTime.Compare(Convert.ToDateTime(dvr.Cells[10].Value), Convert.ToDateTime(dvr.Cells[11].Value)) >= 0)
- {
- OutMssg = $"第【{dvr.Index + 1}】行未输入的生产日期大于失效日期,不符合实际情况,请重新输入!";
- return false;
- }
- OutMssg = "校验成功!";
- return true;
- }
- /// <summary>
- /// 取消按钮事件
- /// 退出编辑页面
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnCancel_Click(object sender, EventArgs e)
- {
- this.Close();
- }
- private ListItem GetComboBoxItem(DataGridViewComboBoxCell dataGridViewComboBoxCell)
- {
- foreach (var item in dataGridViewComboBoxCell.Items)
- {
- if (((ListItem)item).Text == dataGridViewComboBoxCell.Value.ToString())
- {
- return (ListItem)item;
- }
- }
- return new ListItem();
- }
- private ListItem GetComboBoxItem(DataGridViewComboBoxCell dataGridViewComboBoxCell, string value)
- {
- foreach (var item in dataGridViewComboBoxCell.Items)
- {
- if (((ListItem)item).Value == value)
- {
- return (ListItem)item;
- }
- }
- return new ListItem();
- }
- #endregion
- #region DataGridView相关事件
- /// <summary>
- /// 针对ComboBox下拉列表的DataGridView数据列单元格。
- /// 由于DataGridView的ComboBox列的Item至使用的是KeyValue形式的ListItem,
- /// 所以单元格结束编辑的时候。需要给单元格设定一个类型为ListItem的值。
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void kdgv_InspectionDtlData_CellEndEdit(object sender, DataGridViewCellEventArgs e)
- {
- int rowIndex = e.RowIndex;
- int columnIndex = e.ColumnIndex;
- if (kdgv_InspectionDtlData.Rows[rowIndex].Cells[columnIndex] is DataGridViewComboBoxCell)
- {
- ListItem tstlst = GetComboBoxItem((DataGridViewComboBoxCell)kdgv_InspectionDtlData.Rows[rowIndex].Cells[columnIndex]);
- kdgv_InspectionDtlData.Rows[rowIndex].Cells[columnIndex].Value = tstlst;
- }
- }
- private void kdgv_InspectionDtlData_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
- {
- int index = kdgv_InspectionDtlData.Rows.Count;
- kdgv_InspectionDtlData.Rows[index - 1].Cells[0].Value = index;
- }
- #endregion
- #region 鼠标右键单击事件
- /// <summary>
- /// 重新加载正在编辑的质检单明细数据
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void 重新加载ToolStripMenuItem_Click(object sender, EventArgs e)
- {
- var loadfrm = new frmLoading();
- loadfrm.Show();
- var message = loadfrm.EventCalExec(LoadWmsQaInspectionDtlData);
- if (!string.IsNullOrWhiteSpace(message))
- {
- KryptonMessageBox.Show($"查询失败!\r\n{message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- #endregion
- }
- }
|