锐腾搅拌上料功能
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.

497 lines
18 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using DevExpress.XtraEditors;
  9. using ICSSoft.Base.Config.AppConfig;
  10. using System.Data.Linq;
  11. using System.Linq;
  12. using ICSSoft.Base.Language.Tool;
  13. using System.Reflection;
  14. using ICSSoft.Base.Config.DBHelper;
  15. using ICSSoft.Base.ReferForm;
  16. using ICSSoft.Base.Report;
  17. using ICSSoft.Base.ReferForm.AppReferForm;
  18. using ICSSoft.Frame.Data.Entity;
  19. using ICSSoft.Frame.Data.BLL;
  20. using System.Text.RegularExpressions;
  21. namespace ICSSoft.Frame.APP
  22. {
  23. public partial class FormICSUserInfoAdd1 : DevExpress.XtraEditors.XtraForm
  24. {
  25. DataTable dtDetail = new DataTable();
  26. bool modify = true;
  27. #region 构造函数
  28. public FormICSUserInfoAdd1()
  29. {
  30. modify = false;
  31. InitializeComponent();
  32. init();
  33. QueryUserInfo("");
  34. }
  35. public FormICSUserInfoAdd1(string userCode)
  36. {
  37. modify = true;
  38. InitializeComponent();
  39. init();
  40. QueryUserInfo(userCode);
  41. }
  42. private void QueryUserInfo(string userCode)
  43. {
  44. dtDetail = ICSUserInfoBLL.Select(userCode);
  45. grdDetail.DataSource = dtDetail;
  46. if (dtDetail.Rows.Count > 0)
  47. {
  48. txtPhone.Text = dtDetail.Rows[0]["Phone"].ToString();
  49. txtMail.Text = dtDetail.Rows[0]["Mail"].ToString();
  50. chkFrontLine.Checked = Convert.ToBoolean(dtDetail.Rows[0]["FrontLine"]);
  51. }
  52. if (modify)
  53. {
  54. txtUserCode.Text = userCode;
  55. txtUserCode.Properties.ReadOnly = true;
  56. }
  57. }
  58. #endregion
  59. #region 关闭 退出
  60. private void btnClose_Click(object sender, EventArgs e)
  61. {
  62. this.Close();
  63. }
  64. #endregion
  65. #region 移动窗体
  66. private const int WM_NCHITTEST = 0x84;
  67. private const int HTCLIENT = 0x1;
  68. private const int HTCAPTION = 0x2;
  69. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  70. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  71. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  72. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  73. //重写窗体,使窗体可以不通过自带标题栏实现移动
  74. protected override void WndProc(ref Message m)
  75. {
  76. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  77. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  78. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  79. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  80. switch (m.Msg)
  81. {
  82. case WM_NCHITTEST:
  83. base.WndProc(ref m);
  84. if ((int)m.Result == HTCLIENT)
  85. m.Result = (IntPtr)HTCAPTION;
  86. return;
  87. }
  88. //拦截双击标题栏、移动窗体的系统消息
  89. if (m.Msg != 0xA3)
  90. {
  91. base.WndProc(ref m);
  92. }
  93. }
  94. #endregion
  95. #region 新增 修改
  96. private void save_Click(object sender, EventArgs e)
  97. {
  98. if (dtDetail.Rows.Count == 0)
  99. {
  100. ICSBaseSimpleCode.AppshowMessageBox("请添加一条数据");
  101. return;
  102. }
  103. string seg = "";
  104. string userCode = txtUserCode.Text;
  105. if (string.IsNullOrEmpty(userCode))
  106. {
  107. ICSBaseSimpleCode.AppshowMessageBox("员工不能为空");
  108. return;
  109. }
  110. List<ICSUserInfo> list = new List<ICSUserInfo>();
  111. foreach (DataRow dr in dtDetail.Rows)
  112. {
  113. string id = dr["ID"].ToString();
  114. string segcode = dr["SEGCODE"].ToString();
  115. string group = dr["SGroup"].ToString();
  116. bool add = Convert.ToBoolean(dr["ADD"]);
  117. if (string.IsNullOrEmpty(segcode))
  118. {
  119. ICSBaseSimpleCode.AppshowMessageBox("车间不能为空");
  120. return;
  121. }
  122. if (chkFrontLine.Checked)
  123. {
  124. //一线员工必须有组
  125. if (string.IsNullOrEmpty(group))
  126. {
  127. ICSBaseSimpleCode.AppshowMessageBox("组不能为空,一线员工必须有组");
  128. return;
  129. }
  130. }
  131. if (seg == "")
  132. {
  133. seg = segcode;
  134. }
  135. else
  136. {
  137. if (seg == segcode)
  138. {
  139. ICSBaseSimpleCode.AppshowMessageBox("同一人同一车间不能有多个小组");
  140. return;
  141. }
  142. }
  143. ICSUserInfo usr = new ICSUserInfo();
  144. usr.ID = id;
  145. usr.UserCode = userCode;
  146. usr.FrontLine = chkFrontLine.Checked;
  147. usr.Mail = txtMail.Text;
  148. usr.Phone = txtPhone.Text;
  149. usr.SEGCode = segcode;
  150. usr.SGroup = group;
  151. usr.ModifyDate = DateTime.Now;
  152. usr.ModifyUserCode = AppConfig.UserCode;
  153. usr.WorkPoint = AppConfig.WorkPointCode;
  154. if (add)
  155. {
  156. usr.CreateDate = usr.ModifyDate;
  157. usr.CreateUserCode = usr.ModifyUserCode;
  158. }
  159. else
  160. {
  161. usr.CreateDate = Convert.ToDateTime(dr["CreateDate"]);
  162. usr.CreateUserCode = dr["CreateUserCode"].ToString();
  163. }
  164. list.Add(usr);
  165. }
  166. ICSUserInfoBLL.DeleteThenInsert(list);
  167. dtDetail.Rows.Clear();
  168. ICSBaseSimpleCode.AppshowMessageBox("成功");
  169. if (modify)
  170. {
  171. this.Close();
  172. }
  173. else
  174. {
  175. #region 人员信息
  176. string sql1 = @"
  177. SELECT
  178. A.UserCode ,A.UserName
  179. FROM dbo.Sys_User A with(nolock)
  180. LEFT JOIN ICSUserInfo B with(nolock) ON B.UserCode=A.UserCode AND B.WorkPoint=A.WorkPointCode
  181. WHERE
  182. A.WorkPointCode='{0}' AND A.StartFlag='1' AND B.UserCode IS NULL
  183. ORDER BY A.UserCode
  184. ";
  185. sql1 = string.Format(sql1, AppConfig.WorkPointCode);
  186. DataTable dt1 = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql1).Tables[0];
  187. txtUserCode.Properties.ValueMember = "工号";
  188. txtUserCode.Properties.DisplayMember = "工号";
  189. txtUserCode.Properties.DataSource = dt1;
  190. txtUserCode.Properties.NullText = "";//空时的值
  191. txtUserCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  192. txtUserCode.Properties.ValidateOnEnterKey = true;//回车确认
  193. txtUserCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  194. txtUserCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  195. //自适应宽度
  196. txtUserCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  197. #endregion
  198. }
  199. //if (this.UserCode == "")
  200. //{
  201. // ICSBaseSimpleCode.AppshowMessageBox("员工不能为空!");
  202. // return;
  203. //}
  204. //if (this.SEGCode == "")
  205. //{
  206. // ICSBaseSimpleCode.AppshowMessageBox("车间不能为空!");
  207. // return;
  208. //}
  209. //if (chkFrontLine.Checked && txtSGroup.Text.Trim() == "")
  210. //{
  211. // ICSBaseSimpleCode.AppshowMessageBox("勾选一线人员后,班组不能为空!");
  212. // return;
  213. //}
  214. //user.UserCode = this.UserCode;
  215. //user.SEGCode = this.SEGCode;
  216. //user.FrontLine = chkFrontLine.Checked;
  217. //user.Mail = txtMail.Text.Trim();
  218. //user.Phone = txtPhone.Text.Trim();
  219. //user.SGroup = user.FrontLine ? txtSGroup.Text.Trim() : "";
  220. //user.ModifyUserCode = AppConfig.UserCode;
  221. //user.ModifyDate = DateTime.Now;
  222. //user.WorkPoint = AppConfig.WorkPointCode;
  223. //bool exist = ICSUserInfoBLL.ExistUserCode(user.UserCode);
  224. //if (!exist)
  225. //{
  226. // ICSBaseSimpleCode.AppshowMessageBox(user.UserCode + "不存在");
  227. // return;
  228. //}
  229. //bool isNew = ICSUserInfoBLL.AllowAdd(user.UserCode);
  230. //try
  231. //{
  232. // if (Add)
  233. // {
  234. // if (!isNew)
  235. // {
  236. // ICSBaseSimpleCode.AppshowMessageBox(user.UserCode + "已存在");
  237. // return;
  238. // }
  239. // user.CreateUserCode = user.ModifyUserCode;
  240. // user.CreateDate = user.ModifyDate;
  241. // }
  242. // else
  243. // {
  244. // if (isNew)
  245. // {
  246. // ICSBaseSimpleCode.AppshowMessageBox(user.UserCode + "不存在");
  247. // return;
  248. // }
  249. // }
  250. // int[] iou= ICSUserInfoBLL.AddAndEdit(new List<ICSUserInfo> { user });
  251. // this.Close();
  252. // ICSBaseSimpleCode.AppshowMessageBox("成功 新增" + iou[0].ToString()+ "修改"+ iou[1].ToString());
  253. //}
  254. //catch (Exception ex)
  255. //{
  256. // ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  257. //}
  258. }
  259. #endregion
  260. #region 取消
  261. private void can_Click(object sender, EventArgs e)
  262. {
  263. this.Close();
  264. }
  265. #endregion
  266. #region 初始化查询条件
  267. private void init()
  268. {
  269. #region 人员信息
  270. string sql1 = @"
  271. SELECT
  272. A.UserCode ,A.UserName
  273. FROM dbo.Sys_User A with(nolock)
  274. LEFT JOIN ICSUserInfo B with(nolock) ON B.UserCode=A.UserCode AND B.WorkPoint=A.WorkPointCode
  275. WHERE
  276. A.WorkPointCode='{0}' AND A.StartFlag='1' {1}
  277. ORDER BY A.UserCode
  278. ";
  279. if (modify)
  280. {
  281. sql1 = string.Format(sql1, AppConfig.WorkPointCode, " AND B.UserCode IS NOT NULL");
  282. }
  283. else
  284. {
  285. sql1 = string.Format(sql1, AppConfig.WorkPointCode, " AND B.UserCode IS NULL");
  286. }
  287. DataTable dt1 = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql1).Tables[0];
  288. txtUserCode.Properties.ValueMember = "工号";
  289. txtUserCode.Properties.DisplayMember = "工号";
  290. txtUserCode.Properties.DataSource = dt1;
  291. txtUserCode.Properties.NullText = "";//空时的值
  292. txtUserCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  293. txtUserCode.Properties.ValidateOnEnterKey = true;//回车确认
  294. txtUserCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  295. txtUserCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  296. //自适应宽度
  297. txtUserCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  298. #endregion
  299. #region 车间
  300. string sql2 = @"SELECT SEGCODE 车间代码,SEGDESC 车间描述 FROM dbo.ICSSEG WHERE WorkPoint='{0}' ORDER BY SEGCODE ";
  301. sql2 = string.Format(sql2, AppConfig.WorkPointCode);
  302. DataTable dt2 = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql2).Tables[0];
  303. txtSEGCode.ValueMember = "车间代码";
  304. txtSEGCode.DisplayMember = "车间代码";
  305. txtSEGCode.DataSource = dt2;
  306. txtSEGCode.NullText = "";//空时的值
  307. txtSEGCode.ImmediatePopup = true;//输入值是否马上弹出窗体
  308. txtSEGCode.ValidateOnEnterKey = true;//回车确认
  309. txtSEGCode.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  310. txtSEGCode.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  311. //自适应宽度
  312. txtSEGCode.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  313. #endregion
  314. #region 班组
  315. DataTable dt3 = ICSTeamGroupBLL.SelectAll();
  316. txtSGroup.ValueMember = "班组代码";
  317. txtSGroup.DisplayMember = "班组代码";
  318. txtSGroup.DataSource = dt3;
  319. txtSGroup.NullText = "";//空时的值
  320. txtSGroup.ImmediatePopup = true;//输入值是否马上弹出窗体
  321. txtSGroup.ValidateOnEnterKey = true;//回车确认
  322. txtSGroup.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  323. txtSGroup.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  324. //自适应宽度
  325. txtSGroup.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  326. #endregion
  327. }
  328. #endregion
  329. int hq = 0;
  330. /// <summary>
  331. /// 选择人员
  332. /// </summary>
  333. /// <param name="sender"></param>
  334. /// <param name="e"></param>
  335. private void txtUserCode_EditValueChanged(object sender, EventArgs e)
  336. {
  337. try
  338. {
  339. GridLookUpEdit lookUP = sender as GridLookUpEdit;
  340. if (!string.IsNullOrWhiteSpace(lookUP.EditValue.ToString()))
  341. {
  342. var o = lookUP.Properties.GetRowByKeyValue(lookUP.EditValue);
  343. if (o is DataRowView)
  344. {
  345. //hq++;
  346. //label4.Text = hq.ToString();
  347. DataRowView view = o as DataRowView;
  348. txtUserName.Text = view.Row["姓名"].ToString();
  349. QueryUserInfo(txtUserCode.Text);
  350. }
  351. else
  352. {
  353. txtUserName.Text = "";
  354. }
  355. }
  356. else
  357. {
  358. txtUserName.Text = "";
  359. }
  360. }
  361. catch (Exception ex)
  362. {
  363. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  364. }
  365. }
  366. /// <summary>
  367. /// 选择车间
  368. /// </summary>
  369. /// <param name="sender"></param>
  370. /// <param name="e"></param>
  371. private void txtSEG_EditValueChanged(object sender, EventArgs e)
  372. {
  373. try
  374. {
  375. //GridLookUpEdit lookUP = sender as GridLookUpEdit;
  376. //if (!string.IsNullOrWhiteSpace(lookUP.EditValue.ToString()))
  377. //{
  378. // var o = lookUP.Properties.GetRowByKeyValue(lookUP.EditValue);
  379. // if (o is DataRowView)
  380. // {
  381. // DataRowView view = o as DataRowView;
  382. // txtSEGDesc.Text = view.Row["车间描述"].ToString();
  383. // SEGCode = view.Row["车间代码"].ToString();
  384. // }
  385. // else
  386. // {
  387. // txtSEGDesc.Text = "";
  388. // SEGCode = "";
  389. // }
  390. //}
  391. }
  392. catch (Exception ex)
  393. {
  394. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  395. }
  396. }
  397. /// <summary>
  398. /// 是否是一线员工
  399. /// </summary>
  400. /// <param name="sender"></param>
  401. /// <param name="e"></param>
  402. private void chkFrontLine_CheckedChanged(object sender, EventArgs e)
  403. {
  404. //if (chkFrontLine.Checked)
  405. //{
  406. // txtSGroup.Properties.ReadOnly = false;
  407. // txtSGroup.Focus();
  408. //}
  409. //else
  410. //{
  411. // txtSGroup.Text = "";
  412. // txtSGroup.Properties.ReadOnly = true;
  413. // txtPhone.SelectAll();
  414. // txtPhone.Focus();
  415. //}
  416. }
  417. private void btnAddRow_Click(object sender, EventArgs e)
  418. {
  419. DataRow dr = dtDetail.NewRow();
  420. dr["isSelect"] = true;
  421. dr["ID"] = AppConfig.GetGuid();
  422. dr["SEGCODE"] = "";
  423. dr["SGroup"] = "";
  424. dr["ADD"] = true;
  425. dtDetail.Rows.Add(dr);
  426. grdDetail.DataSource = dtDetail;
  427. }
  428. private void txtUserCode_KeyDown(object sender, KeyEventArgs e)
  429. {
  430. if (e.KeyCode != Keys.Enter)
  431. {
  432. return;
  433. }
  434. QueryUserInfo(txtUserCode.Text);
  435. }
  436. private void btnRemoveRow_Click(object sender, EventArgs e)
  437. {
  438. List<string> list = new List<string>();
  439. for (int i = 0; i < grvDetail.RowCount; i++)
  440. {
  441. if (Convert.ToBoolean(grvDetail.GetRowCellValue(i, colisSelect)))
  442. {
  443. list.Add(grvDetail.GetRowCellValue(i, colID).ToString());
  444. }
  445. }
  446. if (list.Count == 0)
  447. {
  448. ICSBaseSimpleCode.AppshowMessageBox("请至少选择一行");
  449. return;
  450. }
  451. DataRow[] drs = dtDetail.Select("ID IN ('" + string.Join("','", list) + "')");
  452. foreach (DataRow dr in drs)
  453. {
  454. dtDetail.Rows.Remove(dr);
  455. }
  456. }
  457. }
  458. }