锐腾搅拌上料功能
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

415 lines
13 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.Linq;
  6. using System.Linq;
  7. using System.Drawing;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using DevExpress.XtraEditors;
  11. using DevExpress.XtraGrid.Views.BandedGrid;
  12. using DevExpress.XtraGrid.Columns;
  13. using DevExpress.XtraGrid;
  14. using System.IO;
  15. using System.Threading;
  16. using ICSSoft.Base.Language.Tool;
  17. using ICSSoft.Base.Config.AppConfig;
  18. using ICSSoft.Base.UserControl.MessageControl;
  19. using ICSSoft.Base.Config.DBHelper;
  20. using ICSSoft.Base.Report.Filter;
  21. using ICSSoft.Base.UserControl.FormControl;
  22. using ICSSoft.Base.Report.GridReport;
  23. using ICSSoft.Base.ReferForm.AppReferForm;
  24. using ICSSoft.Frame.Data.BLL;
  25. namespace ICSSoft.Frame.APP
  26. {
  27. public partial class FormICSInvTransferDetail : DevExpress.XtraEditors.XtraForm
  28. {
  29. private string sqltxt = "";
  30. private string sqlconn = "";
  31. String guid = AppConfig.GetGuid();
  32. private DataTable dataSource = null;
  33. string invtransferid;
  34. string invtrasferno;
  35. string invtransferstatus;
  36. string invfromstorgecode;
  37. string invtostoragecode;
  38. public FormICSInvTransferDetail()
  39. {
  40. InitializeComponent();
  41. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  42. this.WindowState = FormWindowState.Maximized;
  43. }
  44. #region 构造函数
  45. public FormICSInvTransferDetail(string transferid, string trasferno, string transferstatus, string fromstorgecode, string tostoragecode)
  46. {
  47. InitializeComponent();
  48. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  49. this.WindowState = FormWindowState.Maximized;
  50. invtransferid = transferid;
  51. invtrasferno = trasferno;
  52. invtransferstatus = transferstatus;
  53. invfromstorgecode = fromstorgecode;
  54. invtostoragecode = tostoragecode;
  55. }
  56. #endregion
  57. #region 操作权限
  58. public DataTable RightOfExute()
  59. {
  60. DataTable rData = new DataTable();
  61. rData.Columns.Add("BtnName");
  62. rData.Columns.Add("ActionName");
  63. //查看权限(必须有)
  64. DataRow seeRow = rData.NewRow();
  65. seeRow["BtnName"] = "see";
  66. seeRow["ActionName"] = "查看";
  67. rData.Rows.Add(seeRow);
  68. List<Control> ControlList = new List<Control>();
  69. ControlList.Add(btnCreate);
  70. ControlList.Add(btnModify);
  71. ControlList.Add(btnDel);
  72. //ControlList.Add(btnOutPut);
  73. foreach (Control ctr in ControlList)
  74. {
  75. if (ctr.GetType() == typeof(SimpleButton))
  76. {
  77. DataRow dr = rData.NewRow();
  78. dr["BtnName"] = ctr.Name;
  79. dr["ActionName"] = ctr.Text;
  80. rData.Rows.Add(dr);
  81. }
  82. }
  83. rData.AcceptChanges();
  84. return rData;
  85. }
  86. public DataTable RightOfData()// 数据权限
  87. {
  88. DataTable rData = new DataTable();
  89. rData.Columns.Add("BodyName");
  90. rData.Columns.Add("ControlName");
  91. rData.Columns.Add("ControlCaption");
  92. rData.AcceptChanges();
  93. return rData;
  94. }
  95. #endregion
  96. #region 退出
  97. private void btnClose_Click(object sender, EventArgs e)
  98. {
  99. AppConfig.CloseFormShow(this.Text);
  100. this.Close();
  101. }
  102. private void btnExit_Click(object sender, EventArgs e)
  103. {
  104. AppConfig.CloseFormShow(this.Text);
  105. this.Close();
  106. }
  107. #endregion
  108. #region 移动窗体
  109. private const int WM_NCHITTEST = 0x84;
  110. private const int HTCLIENT = 0x1;
  111. private const int HTCAPTION = 0x2;
  112. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  113. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  114. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  115. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  116. //重写窗体,使窗体可以不通过自带标题栏实现移动
  117. protected override void WndProc(ref Message m)
  118. {
  119. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  120. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  121. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  122. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  123. switch (m.Msg)
  124. {
  125. case WM_NCHITTEST:
  126. base.WndProc(ref m);
  127. if ((int)m.Result == HTCLIENT)
  128. m.Result = (IntPtr)HTCAPTION;
  129. return;
  130. }
  131. //拦截双击标题栏、移动窗体的系统消息
  132. if (m.Msg != 0xA3)
  133. {
  134. base.WndProc(ref m);
  135. }
  136. }
  137. #endregion
  138. #region 列表
  139. private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  140. {
  141. if (e.Info.IsRowIndicator && e.RowHandle >= 0)
  142. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  143. }
  144. #endregion
  145. #region 分页
  146. private void rptPage_PageIndexChanged(object Sender, EventArgs e)
  147. {
  148. DataTable data = AppConfig.GetPageData(dataSource, rptPage.PageIndex, rptPage.PageSize).Copy();
  149. //DataTable data = AppConfig.GetPageDataByDb(tempTableName, "pagerowindex", rptPage.PageSize, rptPage.PageIndex, dataSource.Rows.Count);
  150. grdDetail.DataSource = data;
  151. }
  152. #endregion
  153. #region 全选
  154. private void btnSelectAll_Click(object sender, EventArgs e)
  155. {
  156. grvDetail.PostEditor();
  157. this.Validate();
  158. for (int i = 0; i < grvDetail.RowCount; i++)
  159. {
  160. grvDetail.SetRowCellValue(i, colisSelect, "Y");
  161. }
  162. }
  163. #endregion
  164. #region 全消
  165. private void btnCancelAll_Click(object sender, EventArgs e)
  166. {
  167. grvDetail.PostEditor();
  168. this.Validate();
  169. for (int i = 0; i < grvDetail.RowCount; i++)
  170. {
  171. grvDetail.SetRowCellValue(i, colisSelect, "");
  172. }
  173. }
  174. #endregion
  175. #region 双击
  176. private void grvDetail_DoubleClick(object sender, EventArgs e)
  177. {
  178. if (grvDetail.FocusedRowHandle < 0)
  179. {
  180. return;
  181. }
  182. if (grvDetail.FocusedColumn == colisSelect)
  183. {
  184. if (grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colisSelect).ToString() == "")
  185. {
  186. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "Y");
  187. }
  188. else
  189. {
  190. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "");
  191. }
  192. }
  193. }
  194. #endregion
  195. #region 删除
  196. private void btnDel_Click(object sender, EventArgs e)
  197. {
  198. List<string> guidList = new List<string>();
  199. for (int i = 0; i < grvDetail.RowCount; i++)
  200. {
  201. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  202. {
  203. guidList.Add(grvDetail.GetRowCellValue(i, colID).ToString());
  204. }
  205. }
  206. if (guidList.Count == 0 || guidList == null)
  207. {
  208. ICSBaseSimpleCode.AppshowMessageBox("请选择数据");
  209. return;
  210. }
  211. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除该转移单明细吗?删除后无法恢复") != DialogResult.OK)
  212. {
  213. for (int i = 0; i < grvDetail.RowCount; i++)
  214. {
  215. grvDetail.SetRowCellValue(i, colisSelect, "");
  216. }
  217. return;
  218. }
  219. ICSInvTransferDetailBLL.delete(guidList);
  220. ICSBaseSimpleCode.AppshowMessageBox("删除成功");
  221. FormICSInvTransferDetail_Load(null, null);
  222. }
  223. #endregion
  224. #region 导出
  225. private void btnOutPut_Click(object sender, EventArgs e)
  226. {
  227. FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail);
  228. foe.ShowDialog();
  229. }
  230. #endregion
  231. #region 新增
  232. private void btnCreate_Click(object sender, EventArgs e)
  233. {
  234. FormICSInvTransferDetailAdd add = new FormICSInvTransferDetailAdd(invtransferid, invtrasferno, invtransferstatus, invfromstorgecode, invtostoragecode);
  235. add.ShowDialog();
  236. FormICSInvTransferDetail_Load(null, null);
  237. }
  238. #endregion
  239. #region 修改
  240. private void btnModify_Click(object sender, EventArgs e)
  241. {
  242. int count = 0;
  243. for (int i = 0; i < grvDetail.RowCount; i++)
  244. {
  245. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  246. {
  247. count++;
  248. }
  249. }
  250. if (count != 1)
  251. {
  252. ICSBaseSimpleCode.AppshowMessageBox("请选择数据,且只能选择一条进行编辑!!!");
  253. return;
  254. }
  255. try
  256. {
  257. string invtransferid;
  258. //string invtrasferno;
  259. //string invtransferstatus;
  260. //string invfromstorgecode;
  261. //string invtostoragecode;
  262. for (int i = 0; i < grvDetail.RowCount; i++)
  263. {
  264. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  265. {
  266. invtransferid = grvDetail.GetRowCellValue(i, colID).ToString();
  267. //invtrasferno = grvDetail.GetRowCellValue(i, colTransferID).ToString();
  268. //invtransferstatus = grvDetail.GetRowCellValue(i, colTransferSTATUS).ToString();
  269. //invfromstorgecode = grvDetail.GetRowCellValue(i, colFROMStorageCode).ToString();
  270. //invtostoragecode = grvDetail.GetRowCellValue(i, colTOStorageCode).ToString();
  271. FormICSInvTransferDetailAdd add = new FormICSInvTransferDetailAdd(invtransferid);
  272. add.ShowDialog();
  273. }
  274. }
  275. FormICSInvTransferDetail_Load(null, null);
  276. }
  277. catch (Exception ex)
  278. {
  279. //throw ex;
  280. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  281. }
  282. }
  283. #endregion
  284. private void FormICSInvTransferDetail_Load(object sender, EventArgs e)
  285. {
  286. string sql = @"select '' as [isSelect],
  287. a.ID as ID,
  288. b.ID as TransferID,
  289. b.TransferNO as TransferNO,
  290. a.TransferLine as TransferLine,
  291. a.ORDERNO as ORDERNO,
  292. a.ORDERLINE as ORDERLINE,
  293. b.TransferSTATUS as TransferSTATUS,
  294. a.MEMO as MEMO,
  295. c.INVCODE as ITEMCODE,
  296. c.INVNAME as ITEMName,
  297. d.MOCODE as MOCODE,
  298. a.PLANQTY as PLANQTY,
  299. a.ACTQTY as ACTQTY,
  300. a.CustomerCode as CustomerCode,
  301. a.CUSTOMERNAME as CUSTOMERNAME,
  302. e.StorageCode as FROMStorageCode,
  303. e.StorageName as FROMStorageName,
  304. f.StackCode as FROMStackCode,
  305. f.StackName as FROMStackName,
  306. g.StorageCode as TOStorageCode,
  307. g.StorageName as TOStorageName,
  308. h.StackCode as TOStackCode,
  309. h.StackName as TOStackName,
  310. a.RECEIVE as RECEIVE,
  311. a.RECEIVELINE as RECEIVELINE,
  312. a.TransferTIME as TransferTIME,
  313. a.TransferUSER as TransferUSER,
  314. a.MUSERName as MUSERName,
  315. a.MTIME as MTIME
  316. from dbo.ICSInvTransferDetail a
  317. left join ICSInvTransfer b on a.TransferID=b.ID
  318. left join ICSINVENTORY c on a.ITEMCODE=c.INVCODE
  319. left join ICSMO d on a.MOCODE=d.MOCODE
  320. left join ICSStorage e on a.FROMStorageCode=e.StorageCode
  321. left join ICSStack f on a.FROMStackCode=f.StackCode
  322. left join ICSStorage g on a.TOStorageCode=g.StorageCode
  323. left join ICSStack h on a.TOStackCode=h.StackCode
  324. where b.ID='{0}'";
  325. sql = string.Format(sql, invtransferid);
  326. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  327. grdDetail.DataSource = dt;
  328. }
  329. private void grvDetail_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
  330. {
  331. if (e.RowHandle >= 0 && e.Column.FieldName == "DCTCODE")
  332. {
  333. //e.DisplayText = FormatHelper.
  334. e.CellValue = "cccc";
  335. }
  336. }
  337. }
  338. }