frmBalanceDetailSearch.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. using ComponentFactory.Krypton.Toolkit;
  2. using NXWMS.Client.Code.Converter;
  3. using NXWMS.Client.Code.Extends;
  4. using NXWMS.Client.Model.AppModels.Condition.Balance;
  5. using NXWMS.Client.Model.AppModels.Condition.Base;
  6. using NXWMS.Client.Model.AppModels.Result;
  7. using NXWMS.Client.Model.AppModels.Result.Balance;
  8. using NXWMS.Client.Model.AppModels.Result.Base;
  9. using NXWMS.Client.Model.CoreModels;
  10. using NXWMS.Client.String.Enums;
  11. using NXWMS.Commons;
  12. using NXWMS.Services;
  13. using System;
  14. using System.Collections.Generic;
  15. using System.ComponentModel;
  16. using System.Data;
  17. using System.Drawing;
  18. using System.Linq;
  19. using System.Text;
  20. using System.Windows.Forms;
  21. using static NXWMS.Client.FrmCustom.ColumnControl;
  22. namespace NXWMS.Forms.Balance
  23. {
  24. public partial class frmBalanceDetailSearch : KryptonForm
  25. {
  26. /// <summary>
  27. /// 客户端字段排序列表
  28. /// </summary>
  29. private List<ClientFieldOrderResult> _clientFieldOrderList;
  30. /// <summary>
  31. /// 库区
  32. /// </summary>
  33. private List<RegionResult> regionList;
  34. /// <summary>
  35. /// 物料类型列表
  36. /// </summary>
  37. private List<MaterielTypeResult> materielTypeList;
  38. /// <summary>
  39. /// 供应商列表
  40. /// </summary>
  41. private List<SupplierResult> supplierList;
  42. /// <summary>
  43. /// 调用窗体类型
  44. /// </summary>
  45. public ExecFormType _execFormType;
  46. /// <summary>
  47. /// 正在新增库存记录
  48. /// </summary>
  49. public static List<string> _alreadyAddIdList;
  50. /// <summary>
  51. /// 限制库存状态
  52. /// </summary>
  53. public int? _limitBalanceStatus;
  54. public frmBalanceDetailSearch()
  55. {
  56. InitializeComponent();
  57. }
  58. private void frmBalanceDetailSearch_Shown(object sender, EventArgs e)
  59. {
  60. InitData();
  61. InitControl();
  62. _pageIndex = 1;
  63. _pageSize = 20;
  64. }
  65. /// <summary>
  66. /// 控件初始化
  67. /// </summary>
  68. private void InitControl()
  69. {
  70. CheckForIllegalCrossThreadCalls = false;
  71. dataGridView.CellClick += new DataGridViewCellEventHandler(dataGridView_CellClick);
  72. dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), false);
  73. cmbSearchRegionCode.DataSource = regionList;
  74. cmbSearchRegionCode.DisplayMember = "REGION_NAME";
  75. cmbSearchRegionCode.ValueMember = "REGION_CODE";
  76. cmbSearchRegionCode.SelectedIndex = -1;
  77. cmbSearchMaterielType.DataSource = materielTypeList;
  78. cmbSearchMaterielType.DisplayMember = "MATERIEL_TYPE_NAME";
  79. cmbSearchMaterielType.ValueMember = "MATERIEL_TYPE_CODE";
  80. cmbSearchMaterielType.SelectedIndex = -1;
  81. var fieldList = new List<FieldValue>().Add<FieldValue>(new FieldValue { Id = "", Name = "全部" });
  82. cmbSearchQualityStatus.DataSource = fieldList.GetFieldValueIdList<QualityStatus>();
  83. cmbSearchQualityStatus.DisplayMember = "Name";
  84. cmbSearchQualityStatus.ValueMember = "Id";
  85. cmbSearchQualityStatus.SelectedIndex = -1;
  86. fieldList = new List<FieldValue>().Add<FieldValue>(new FieldValue { Id = "", Name = "全部" });
  87. cmbSearchBalanceStatus.DataSource = fieldList.GetFieldValueIdList<BalanceStatus>();
  88. cmbSearchBalanceStatus.DisplayMember = "Name";
  89. cmbSearchBalanceStatus.ValueMember = "Id";
  90. cmbSearchBalanceStatus.SelectedIndex = -1;
  91. fieldList = new List<FieldValue>().Add<FieldValue>(new FieldValue { Id = "", Name = "全部" });
  92. cmbSearchSupplier.DataSource = fieldList.GetFieldValueIdList(supplierList, "SUPPLIER_CODE", "SUPPLIER_NAME");
  93. cmbSearchSupplier.DisplayMember = "Name";
  94. cmbSearchSupplier.ValueMember = "Code";
  95. cmbSearchSupplier.SelectedIndex = -1;
  96. _pageIndex = 1;
  97. _pageSize = 20;
  98. switch (_execFormType)
  99. {
  100. case ExecFormType.Default:
  101. kryptonButtonUnbund.Visible = true;
  102. kryptonButtonConfirm.Visible = false;
  103. panelBase.Visible = true;
  104. btnSearchExtend.Visible = false;
  105. break;
  106. case ExecFormType.Select:
  107. kryptonButtonConfirm.Visible = true;
  108. kryptonButtonUnbund.Visible = false;
  109. panelBase.Visible = false;
  110. panelExtend.Visible = true;
  111. cmbSearchBalanceStatus.Text = BalanceStatus.InStock.Description();
  112. cmbSearchBalanceStatus.Enabled = false;
  113. _limitBalanceStatus = (int)BalanceStatus.InStock;
  114. break;
  115. }
  116. }
  117. /// <summary>
  118. /// 数据初始化
  119. /// </summary>
  120. private void InitData()
  121. {
  122. var regionResult = BaseServices.regionService.GetList(new RegionSearchCondition { IsUsed = true, ItemSQL = "REGION_CODE,REGION_NAME" });
  123. if (regionResult.Status == OperateStatus.Success)
  124. {
  125. regionList = regionResult.Data.RowData.ToList();
  126. }
  127. var materielTypeResult = BaseServices.materielTypeService.GetList(new MaterielTypeSearchCondition { IsUsed = true, ItemSQL = "MATERIEL_TYPE_CODE,MATERIEL_TYPE_NAME" });
  128. if (materielTypeResult.Status == OperateStatus.Success)
  129. {
  130. materielTypeList = materielTypeResult.Data.RowData.ToList();
  131. }
  132. var supplierResult = BaseServices.supplierService.GetList(new SupplierSearchCondition { IsUsed = true, ItemSQL = "SUPPLIER_CODE,SUPPLIER_NAME" });
  133. if (supplierResult.Status == OperateStatus.Success)
  134. {
  135. supplierList = supplierResult.Data.RowData.ToList();
  136. }
  137. _clientFieldOrderList = new List<ClientFieldOrderResult>();
  138. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "MaterielTypeCode", FieldDesc = "物料类型编码" });
  139. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "MaterielTypeName", FieldDesc = "物料类型名称" });
  140. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "MaterielCode", FieldDesc = "物料编码" });
  141. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "MaterielName", FieldDesc = "物料名称" });
  142. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "UnitName", FieldDesc = "单位" });
  143. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "QTY", FieldDesc = "数量" });
  144. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "BatchNo", FieldDesc = "批次号" });
  145. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "WAREHOUSE_NAME", FieldDesc = "所在仓库" });
  146. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "REGION_NAME", FieldDesc = "所在库区" });
  147. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "BinName", FieldDesc = "所在库位" });
  148. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "TrayCode", FieldDesc = "所在组盘码" });
  149. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "PalletCode", FieldDesc = "所在托盘" });
  150. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "ProductDate", FieldDesc = "生产日期" });
  151. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "ExpDate", FieldDesc = "失效日期" });
  152. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "QualityStatusName", FieldDesc = "库品状态" });
  153. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "BalanceStatusName", FieldDesc = "库存状态" });
  154. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "CreateName", FieldDesc = "创建人" });
  155. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "CREATE_TIME", FieldDesc = "创建时间" });
  156. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "UpdateName", FieldDesc = "更新人" });
  157. _clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "UPDATE_TIME", FieldDesc = "更新时间" });
  158. }
  159. private void btnSearch_Click(object sender, EventArgs e)
  160. {
  161. _pageIndex = 1;
  162. var loadfrm = new frmLoading();
  163. loadfrm.Show();
  164. //pageTool.Initialize(LoadSearch, 0, _pageSize);
  165. var message = loadfrm.EventCalExec(LoadSearch, this.pageTool.PageIndex, this.pageTool.PageSize);
  166. pageTool.DataCount = _totalCount;
  167. if (!string.IsNullOrWhiteSpace(message))
  168. {
  169. KryptonMessageBox.Show($"查询失败!\r\n{message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  170. }
  171. }
  172. private int _pageSize;
  173. private int _pageIndex;
  174. private int _totalCount;
  175. private string LoadSearch(int pageIndex, int pageSize)
  176. {
  177. var result = BalanceServices.balanceSearchService.GetDetailList(new BalanceDetailSearchCondition
  178. {
  179. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  180. ExpBeginDate = dtpSearchExpBeginDate.GetDateTimeValue(),
  181. ExpEndDate = dtpSearchExpEndDate.GetDateTimeValue(),
  182. ProductBeginDate = dtpSearchProductBeginDate.GetDateTimeValue(),
  183. ProductEndDate = dtpSearchProductEndDate.GetDateTimeValue(),
  184. BalanceStatus = _limitBalanceStatus == null ?
  185. cmbSearchBalanceStatus.SelectedValue.GetObjectToInt() : _limitBalanceStatus,
  186. BatchNo = txtSearchBatchNo.Text,
  187. BinInfo = txtSearchBinInfo.Text,
  188. MaterielInfo = txtSearchMaterielInfo.Text,
  189. MaterielType = cmbSearchMaterielType.SelectedValue.GetObjectToString(),
  190. PalletInfo = txtSearchPalletInfo.Text,
  191. QualityStatus = cmbSearchQualityStatus.SelectedValue.GetObjectToString(),
  192. RegionCode = cmbSearchRegionCode.SelectedValue.GetObjectToString(),
  193. SpecsModel = txtSearchSpecsModel.Text,
  194. WarehouseInfo = txtSearchWarehouseInfo.Text,
  195. PageIndex = pageIndex,
  196. PageSize = pageSize,
  197. SupplierCode = cmbSearchSupplier.SelectedValue.GetObjectToString(),
  198. });
  199. if (result.Status == OperateStatus.Success)
  200. {
  201. _totalCount = result.Data.TotalCount;
  202. _pageIndex = pageIndex;
  203. _pageSize = pageSize;
  204. if (result.Data.RowData.Any())
  205. {
  206. dataGridView.Columns.Clear();
  207. dataGridView.DataSource = result.Data.RowData.ToList();
  208. dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList));
  209. }
  210. else
  211. {
  212. if (dataGridView.DataSource != null)
  213. {
  214. dataGridView.DataSource = new List<BalanceDetailSearchResult>();
  215. }
  216. dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), false);
  217. }
  218. return string.Empty;
  219. }
  220. else
  221. {
  222. return result.Message;
  223. }
  224. }
  225. private void btnSearchExport_Click(object sender, EventArgs e)
  226. {
  227. this.dataGridView.DataGridViewExport($"{AppConfig.CurrentMenu.FirstOrDefault().MenuName}列表" + DateTime.Now.ToString("yyyyMMddHH"));
  228. }
  229. private void kryptonButtonUnbund_Click(object sender, EventArgs e)
  230. {
  231. if (!_CheckRowIdList.Any())
  232. {
  233. KryptonMessageBox.Show($"请选择数据进行操作!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  234. return;
  235. }
  236. foreach (DataGridViewRow row in dataGridView.Rows)
  237. {
  238. if (row.Cells["BALANCE_STATUS"].Value.ToString() == ((int)BalanceStatus.Relieve).ToString())
  239. {
  240. KryptonMessageBox.Show($"选中记录已存在状态等于解绑数据,请去除选择重新解绑!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  241. return;
  242. }
  243. }
  244. var selectIndex = dataGridView.CurrentRow.Index;
  245. if (selectIndex >= 0)
  246. {
  247. var data = dataGridView.Rows[selectIndex];
  248. if (KryptonMessageBox.Show($"确认解绑选中的数据吗?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
  249. {
  250. var editResult = BalanceServices.balanceOperateService.BalanceStatusChange(new BalanceStatusChangeCondition
  251. {
  252. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  253. BalanceIds = string.Join(",", _CheckRowIdList),
  254. BalanceStatus = BalanceStatus.Relieve,
  255. });
  256. if (editResult.Status == OperateStatus.Success)
  257. {
  258. KryptonMessageBox.Show($"操作成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  259. btnSearch_Click(null, null);
  260. }
  261. }
  262. }
  263. }
  264. /// <summary>
  265. /// 选择行主键列表
  266. /// </summary>
  267. public List<string> _CheckRowIdList = new List<string>();
  268. /// <summary>
  269. /// 当前页面操作的主键
  270. /// </summary>
  271. private string _PrimaryKey = "BALANCE_ID";
  272. private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
  273. {
  274. if (e.RowIndex >= 0 && e.ColumnIndex == 0)
  275. {
  276. if (this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null)
  277. {
  278. if (!_CheckRowIdList.Where(s => s == dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString()).Any())
  279. {
  280. _CheckRowIdList.Add(dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString());
  281. }
  282. this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
  283. }
  284. else if (dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "1")
  285. {
  286. if (_CheckRowIdList.Where(s => s == dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString()).Any())
  287. {
  288. _CheckRowIdList.Remove(dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString());
  289. }
  290. this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 0;
  291. }
  292. else
  293. {
  294. if (!_CheckRowIdList.Where(s => s == dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString()).Any())
  295. {
  296. _CheckRowIdList.Add(dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString());
  297. }
  298. this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
  299. }
  300. }
  301. }
  302. private void kryptonButtonConfirm_Click(object sender, EventArgs e)
  303. {
  304. if (KryptonMessageBox.Show($"确认提交选中的记录至盘库明细中?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
  305. {
  306. _alreadyAddIdList = _alreadyAddIdList.Union(_CheckRowIdList).ToList();
  307. DialogResult = DialogResult.Yes;
  308. }
  309. }
  310. private void btnSearchExtend_Click(object sender, EventArgs e)
  311. {
  312. btnSearch_Click(null, null);
  313. }
  314. private void frmBalanceDetailSearch_Load(object sender, EventArgs e)
  315. {
  316. }
  317. }
  318. }