frmBeltMatPmInfo.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using Common.vo.pb;
  4. using Infragistics.Win;
  5. using Infragistics.Win.UltraWinEditors;
  6. using Infragistics.Win.UltraWinGrid;
  7. using JC_MeasuringSystem;
  8. using MeterModuleLibrary;
  9. using MeterPlugInLibrary;
  10. using Microsoft.VisualBasic;
  11. using System;
  12. using System.Collections;
  13. using System.Collections.Generic;
  14. using System.Data;
  15. using System.Drawing;
  16. using System.Linq;
  17. using System.Net;
  18. using System.Threading;
  19. using System.Windows.Forms;
  20. namespace BeltScaleSystem
  21. {
  22. public partial class frmBeltMatPmInfo : Form
  23. {
  24. public frmBeltMatPmInfo()
  25. {
  26. InitializeComponent();
  27. }
  28. //菜单栏事件
  29. private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  30. {
  31. switch (e.Tool.Key)
  32. {
  33. case "查询":
  34. Query();
  35. break;
  36. case "新增":
  37. Add();
  38. break;
  39. case "修改":
  40. Update();
  41. break;
  42. case "导出":
  43. Exporter();
  44. break;
  45. case "删除":
  46. Delete();
  47. break;
  48. case "还原":
  49. Recover();
  50. break;
  51. case "物料分配":
  52. UpdateMatType();
  53. break;
  54. }
  55. }
  56. #region 自定义变量
  57. private ComBaseInfoService comBaseInfoService = new ComBaseInfoService(); //基础数服务
  58. private MeterBaseBeltMaterialpmService materialpmService = new MeterBaseBeltMaterialpmService();//物料系数服务
  59. MeterBaseMatterInfoService matterInfoService = new MeterBaseMatterInfoService();//物料服务
  60. private string userId = "", userName = ""; //用户ID用户名
  61. private DataTable dtPoint;//计量点数据源
  62. MeterBaseOperationLogService LogService = new MeterBaseOperationLogService();//日志服务
  63. MeterBasemeterMaterialpm nowPm = new MeterBasemeterMaterialpm();
  64. #endregion
  65. #region 菜单栏方法
  66. //物料系数查询
  67. private void Query() {
  68. try
  69. {
  70. MeterBasemeterMaterialpm materialpm = new MeterBasemeterMaterialpm();
  71. if (ultraCombo1.Text!="") {
  72. materialpm.materialType = ultraCombo1.Text.ToString();
  73. }
  74. if (cbSpotName.Text != "")
  75. {
  76. materialpm.baseSpotName = cbSpotName.Text.ToString();
  77. }
  78. DataTable dtScaleTable = dataTable1.Clone();
  79. RESTfulResult<List<MeterBasemeterMaterialpm>> rms = materialpmService.doQueryWf(materialpm);
  80. if (rms.Succeed)
  81. {
  82. if (rms.Data != null && rms.Data.Count > 0)
  83. {
  84. dtScaleTable = rms.Data.ListToDataTable<MeterBasemeterMaterialpm>();
  85. ClsControlPack.CopyDataToDatatable(ref dtScaleTable, ref dataTable1, true);
  86. ClsControlPack.RefreshAndAutoSize(ultraGridBeltMat);
  87. foreach (UltraGridRow ugr in ultraGridBeltMat.Rows)
  88. {
  89. if (ugr.Cells["validFlag"].Value.ToString() == "0")
  90. {
  91. ugr.Appearance.BackColor = Color.Red;
  92. }
  93. else
  94. {
  95. ugr.Appearance.BackColor = Color.White;
  96. }
  97. }
  98. }
  99. else
  100. {
  101. dtScaleTable.Clear();
  102. ClsControlPack.CopyDataToDatatable(ref dtScaleTable, ref dataTable1, true);
  103. ClsControlPack.RefreshAndAutoSize(ultraGridBeltMat);
  104. }
  105. }
  106. MeterBaseMatterInfoService meterBaseMatterInfo = new MeterBaseMatterInfoService();//物料服务
  107. MeterBaseMatterInfo MatterInfo1 = new MeterBaseMatterInfo();
  108. if (textWgtName.Text.ToString().Trim()!="") {
  109. MatterInfo1.matterName = textWgtName.Text.ToString().Trim();
  110. }
  111. MatterInfo1.validFlag = "1";
  112. MatterInfo1.pageNum = 1;
  113. MatterInfo1.pageSize = 9999;
  114. if (!checkBox1.Checked) {
  115. MatterInfo1.beltTypeName = "1";
  116. }
  117. DataTable dtMatTable = dataTable2.Clone();
  118. RESTfulResult<List<MeterBaseMatterInfo>> rmx = meterBaseMatterInfo.doQueryListLike(MatterInfo1);
  119. if (rmx.Succeed)
  120. {
  121. if (rmx.Data != null && rmx.Data.Count > 0)
  122. {
  123. dtMatTable = rmx.Data.ListToDataTable<MeterBaseMatterInfo>();
  124. ClsControlPack.CopyDataToDatatable(ref dtMatTable, ref dataTable2, true);
  125. ClsControlPack.RefreshAndAutoSize(ultraGrid1);
  126. foreach (UltraGridRow ugr in ultraGrid1.Rows)
  127. {
  128. if (ugr.Cells["beltTypeName"].Value.ToString() == "")
  129. {
  130. ugr.Appearance.BackColor = Color.Red;
  131. }
  132. else
  133. {
  134. ugr.Appearance.BackColor = Color.White;
  135. }
  136. }
  137. }
  138. else
  139. {
  140. dtMatTable.Clear();
  141. ClsControlPack.CopyDataToDatatable(ref dtMatTable, ref dataTable2, true);
  142. ClsControlPack.RefreshAndAutoSize(ultraGrid1);
  143. }
  144. }
  145. }
  146. catch (Exception ex)
  147. {
  148. MessageBox.Show("物料系数查询失败,请联系技术中心!" + ex.Message);
  149. return;
  150. }
  151. }
  152. //物料系数新增
  153. private void Add() {
  154. MeterBasemeterMaterialpm pm = findFromInfo(1);
  155. if (pm==null) {
  156. return;
  157. }
  158. RESTfulResult<string> rm = materialpmService.doAddBeltScalePrediction(pm);
  159. if (rm.Succeed)
  160. {
  161. Addlog(pm, nowPm, "修改");
  162. MessageBox.Show("新增物料系数成功");
  163. Query();
  164. return;
  165. }
  166. else
  167. {
  168. MessageBox.Show("新增物料系数失败,请联系技术中心!" + rm.Message);
  169. return;
  170. }
  171. }
  172. //物料系数修改
  173. private void Update()
  174. {
  175. try
  176. {
  177. MeterBasemeterMaterialpm pm = findFromInfo(2);
  178. if (pm == null)
  179. {
  180. return;
  181. }
  182. RESTfulResult<string> rm = materialpmService.doUpdateWf(pm);
  183. if (rm.Succeed)
  184. {
  185. Addlog(pm, nowPm,"新增");
  186. MessageBox.Show("物料系数修改成功");
  187. Query();
  188. return;
  189. }
  190. else
  191. {
  192. MessageBox.Show("物料系数修改失败,请联系技术中心!" + rm.Message);
  193. return;
  194. }
  195. }
  196. catch (Exception ex)
  197. {
  198. MessageBox.Show("物料系数修改异常!" + ex.Message);
  199. return;
  200. }
  201. }
  202. private void Addlog(MeterBasemeterMaterialpm newPm, MeterBasemeterMaterialpm oldPm,string Function) {
  203. MeterBaseOperationLog log = new MeterBaseOperationLog();
  204. log.operationId = newPm.materialPmCode;
  205. log.operationPage = "物料系数维护";
  206. log.operationFunction = Function;
  207. log.operationBeforeFix = "-卸货码头:"+oldPm.baseSpotName+"-秤台:"+oldPm.scaleName+"-物料类型:"+oldPm.materialType + "-国内:" + oldPm.materialParameter + "-进口:" + oldPm.materialParameterImport+"";
  208. log.operationAfterFix = "-卸货码头:"+ newPm.baseSpotName+"-秤台:"+ newPm.scaleName+"-物料类型;"+ newPm.materialType + "-国内:" + newPm.materialParameter + "-进口:" + newPm.materialParameterImport+"";
  209. log.logType = "皮带秤";
  210. log.logTypeCode = "001002005";
  211. log.createManNo = userId;
  212. log.createManName = userName;
  213. RESTfulResult<string> rESTfulResult = LogService.AddLog(log);
  214. if (!rESTfulResult.Succeed) {
  215. MessageBox.Show("新增日志错误" + rESTfulResult.Message);
  216. return;
  217. }
  218. }
  219. //修改物料分类
  220. private void UpdateMatType() {
  221. try
  222. {
  223. List<MeterBaseMatterInfo> list = new List<MeterBaseMatterInfo>();//物料系数实体
  224. string flag = "";
  225. //获取已选择的列
  226. List<UltraGridRow> uGrid = GridHelper.UltraGridGetChooseRows(ultraGrid1, "UNCK");
  227. if (uGrid.Count <= 0)
  228. {
  229. MessageBox.Show("请选择需要分配的物料系数!");
  230. return;
  231. }
  232. foreach (UltraGridRow ugr in uGrid)
  233. {
  234. flag = ugr.Cells["beltTypeName"].Value.ToString();
  235. //if (flag != "")
  236. //{
  237. // MessageBox.Show("存在物料已分配系数类型,不允许批量操作!");
  238. // return;
  239. //}
  240. list.Add(new MeterBaseMatterInfo { validFlag = "1",
  241. matterNo = ugr.Cells["matterNo"].Value.ToString(),
  242. beltTypeCode=cbMatType2.Value.ToString(),
  243. beltTypeName=cbMatType2.Text.ToString() });
  244. }
  245. RESTfulResult<int> rm = matterInfoService.doUpdateType(list);
  246. if (rm.Succeed)
  247. {
  248. MessageBox.Show("物料分类成功!");
  249. Query();
  250. return;
  251. }
  252. else
  253. {
  254. MessageBox.Show("物料分类失败,请联系技术中心!" + rm.Message);
  255. return;
  256. }
  257. }
  258. catch (Exception ex)
  259. {
  260. MessageBox.Show("物料分类异常!" + ex.Message);
  261. return;
  262. }
  263. }
  264. //导出物料系数数据
  265. private void Exporter() {
  266. string str = Interaction.InputBox("请输入要导出的文件名", "提示", "", 100, 100);
  267. string pqath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
  268. this.ultraGridExcelExporter1.Export(this.ultraGridBeltMat, pqath + "\\" + str + ".xls");
  269. MessageBox.Show("导出成功,请查看桌面!是否有[" + str + ".xls]表格");
  270. }
  271. //删除物料系数
  272. private void Delete() {
  273. try
  274. {
  275. List<MeterBasemeterMaterialpm> list = new List<MeterBasemeterMaterialpm>();//物料系数实体
  276. string flag = "";
  277. //获取已选择的列
  278. List<UltraGridRow> uGrid = GridHelper.UltraGridGetChooseRows(ultraGridBeltMat, "UNCK");
  279. if (uGrid.Count <= 0)
  280. {
  281. MessageBox.Show("请选择需要删除的物料系数!");
  282. return;
  283. }
  284. foreach (UltraGridRow ugr in uGrid)
  285. {
  286. flag = ugr.Cells["validFlag"].Value.ToString();
  287. if (flag == "0")
  288. {
  289. MessageBox.Show("该物料系数已是无效,不允许删除!");
  290. return;
  291. }
  292. list.Add(new MeterBasemeterMaterialpm { validFlag = "0", materialPmCode = ugr.Cells["materialPmCode"].Value.ToString() });
  293. }
  294. RESTfulResult<int> rm = materialpmService.doUpdateFlags(list);
  295. if (rm.Succeed)
  296. {
  297. MessageBox.Show("物料系数删除成功");
  298. Query();
  299. return;
  300. }
  301. else
  302. {
  303. MessageBox.Show("物料系数删除失败,请联系技术中心!" + rm.Message);
  304. return;
  305. }
  306. }
  307. catch (Exception ex)
  308. {
  309. MessageBox.Show("物料系数删除异常!" + ex.Message);
  310. return;
  311. }
  312. }
  313. //物料系数还原
  314. private void Recover()
  315. {
  316. try
  317. {
  318. List<MeterBasemeterMaterialpm> list = new List<MeterBasemeterMaterialpm>();//物料系数实体
  319. string flag = "";
  320. //获取已选择的列
  321. List<UltraGridRow> uGrid = GridHelper.UltraGridGetChooseRows(ultraGridBeltMat, "UNCK");
  322. if (uGrid.Count <= 0)
  323. {
  324. MessageBox.Show("请选择需要还原的物料系数!");
  325. return;
  326. }
  327. foreach (UltraGridRow ugr in uGrid)
  328. {
  329. flag = ugr.Cells["validFlag"].Value.ToString();
  330. if (flag != "0")
  331. {
  332. MessageBox.Show("不是无效的物料系数不允许恢复!");
  333. return;
  334. }
  335. list.Add(new MeterBasemeterMaterialpm { validFlag = "1", materialPmCode = ugr.Cells["materialPmCode"].Value.ToString() });
  336. }
  337. RESTfulResult<int> rm = materialpmService.doUpdateFlags(list);
  338. if (rm.Succeed)
  339. {
  340. MessageBox.Show("物料系数还原成功");
  341. Query();
  342. return;
  343. }
  344. else
  345. {
  346. MessageBox.Show("物料系数还原失败,请联系技术中心!" + rm.Message);
  347. return;
  348. }
  349. }
  350. catch (Exception ex)
  351. {
  352. MessageBox.Show("物料系数还原异常!" + ex.Message);
  353. return;
  354. }
  355. }
  356. private void frmBeltMatPmInfo_Load(object sender, EventArgs e)
  357. {
  358. cb2.SelectedIndex = -1;
  359. RESTfulResult<List<ComBaseInfo>> rrComGradeName = comBaseInfoService.doQueryBaseList(new ComBaseInfo { validFlag = "1", pBaseCode = "001046" });
  360. if (rrComGradeName.Succeed && rrComGradeName.Data != null && rrComGradeName.Data.Count > 0)
  361. {
  362. rrComGradeName.Data.Sort((a, b) => a.baseName.CompareTo(b.baseName));
  363. ClsControlPack.SetUltraComboDataSource(cbMatType, rrComGradeName.Data.ListToDataTable<ComBaseInfo>(), "baseCode", "baseName");
  364. ClsControlPack.SetUltraComboDataSource(ultraCombo1, rrComGradeName.Data.ListToDataTable<ComBaseInfo>(), "baseCode", "baseName");
  365. ClsControlPack.SetUltraComboDataSource(cbMatType2, rrComGradeName.Data.ListToDataTable<ComBaseInfo>(), "baseCode", "baseName");
  366. }
  367. else
  368. {
  369. MessageBox.Show("物料系数信息载入失败!");
  370. return;
  371. }
  372. MeterBaseSpotInfoService meterBaseSpotInfoService = new MeterBaseSpotInfoService();//计量点信息
  373. RESTfulResult<List<MeterBaseSpotInfo>> spo = meterBaseSpotInfoService.doQueryWf(new MeterBaseSpotInfo { validFlag = "1", spotTypeNo = "001002005" });
  374. if (spo.Succeed && spo.Data != null && spo.Data.Count > 0)
  375. {
  376. dtPoint = spo.Data.ListToDataTable<MeterBaseSpotInfo>();
  377. }
  378. if (dtPoint != null)
  379. {
  380. cb1.DataSource = dtPoint;
  381. cb1.DisplayMember = "baseSpotName";
  382. cb1.ValueMember = "baseSpotNo";
  383. DataTable data1 = new DataTable();
  384. data1 = dtPoint.Copy();
  385. cbSpotName.DataSource = data1;
  386. cbSpotName.DisplayMember = "baseSpotName";
  387. cbSpotName.ValueMember = "baseSpotNo";
  388. }
  389. cbSpotName.SelectedIndex = -1;
  390. cb1.SelectedIndex = -1;
  391. //RESTfulResult<List<MeterBaseScalePoint>> rmx3 = monitorService.doQueryWf(new MeterBaseScalePoint { spotTypeNo = "001002005", validFlag = "1" });
  392. //if (rmx3.Succeed && rmx3.Data != null && rmx3.Data.Count > 0)
  393. //{
  394. // dtPoint = rmx3.Data.ListToDataTable<MeterBaseScalePoint>();
  395. //}
  396. //if (dtPoint != null)
  397. //{
  398. // cb1.DataSource = dtPoint;
  399. // cb1.DisplayMember = "baseSpotName";
  400. // cb1.ValueMember = "baseSpotNo";
  401. //}
  402. ValueList vlistFlag4 = new ValueList();
  403. vlistFlag4.ValueListItems.Add("0", "无效");
  404. vlistFlag4.ValueListItems.Add("1", "有效");
  405. this.ultraGridBeltMat.DisplayLayout.Bands[0].Columns["validFlag"].ValueList = vlistFlag4;
  406. //设置grid除了选择列 其余不可编辑
  407. GridHelper.SetExcludeColumnsActive(ultraGridBeltMat.DisplayLayout.Bands[0], "UNCK");
  408. userId = ((ST_MainForm)(this.MdiParent)).UserID;
  409. userName = ((ST_MainForm)(this.MdiParent)).UserName;
  410. }
  411. private void ultraGridBeltMat_CellChange(object sender, CellEventArgs e)
  412. {
  413. if (e.Cell.Column.Key == "UNCK")
  414. {
  415. checkGridCell(ultraGridBeltMat);
  416. }
  417. }
  418. #endregion
  419. private void cleanFromInfo(){
  420. text1.Text = "";
  421. cb1.Text = "";
  422. cb2.Text = "";
  423. text2.Text = "";
  424. cbMatType.Text = "";
  425. }
  426. private void checkGridCell(UltraGrid grid) {
  427. try
  428. {
  429. grid.UpdateData();
  430. List<UltraGridRow> row = GridHelper.SetAllColumnsCheckByCode(grid, "materialPmCode", "UNCK");
  431. if (row.Count == 0) {
  432. cleanFromInfo();
  433. return;
  434. }
  435. MeterBasemeterMaterialpm model = new MeterBasemeterMaterialpm();//实绩实体
  436. //界面赋值
  437. UltraGridRow ugr = row[0];
  438. if (ugr != null)
  439. {
  440. model.materialPmCode = ugr.Cells["materialPmCode"].Text.Trim();//系数编号
  441. model.materialTypeCode = ugr.Cells["materialTypeCode"].Text.Trim();//系数类型编号
  442. model.materialType = ugr.Cells["materialType"].Text.Trim();//系数类型名称
  443. model.scaleName = ugr.Cells["scaleName"].Text.Trim();//ab秤
  444. model.baseSpotNo = ugr.Cells["baseSpotNo"].Text.Trim();//计量点编号
  445. model.baseSpotName = ugr.Cells["baseSpotName"].Text.Trim();//计量点名称
  446. model.materialParameter = ugr.Cells["materialParameter"].Text.ToString() == "" ? 0:Convert.ToDouble(ugr.Cells["materialParameter"].Text.ToString()) ;//国内系数
  447. model.materialParameterImport = ugr.Cells["materialParameterImport"].Text.ToString() == "" ? 0 : Convert.ToDouble(ugr.Cells["materialParameterImport"].Text.ToString()); //进口系数
  448. model.materialPmCode = ugr.Cells["materialPmCode"].Text.Trim();;//该条数据编码
  449. nowPm = model;
  450. autoAutoFill(model);
  451. }
  452. }
  453. catch (Exception ex)
  454. {
  455. MessageBox.Show("处理异常:" + ex);
  456. }
  457. }
  458. //填充窗口表单
  459. private void autoAutoFill(MeterBasemeterMaterialpm model)
  460. {
  461. if (model == null || string.IsNullOrEmpty(model.materialPmCode))
  462. {
  463. return;
  464. }
  465. text1.Text = model.materialParameter.ToString();
  466. text2.Text = model.materialParameterImport.ToString();
  467. cb1.Text = model.baseSpotName.ToString();
  468. cb2.Text = model.scaleName.ToString();
  469. cbMatType.Text = model.materialType.ToString();
  470. test.Text = model.materialPmCode.ToString();
  471. }
  472. #region 公共方法区
  473. //获取表单数据
  474. private MeterBasemeterMaterialpm findFromInfo(int no)
  475. {
  476. MeterBasemeterMaterialpm materialpm = new MeterBasemeterMaterialpm();
  477. materialpm.baseSpotNo = cb1.SelectedValue.ToString();//计量点编码
  478. materialpm.materialTypeCode = cbMatType.Value.ToString();//物料类型编码
  479. materialpm.scaleName = cb2.Text.ToString();//AB
  480. RESTfulResult<List<MeterBasemeterMaterialpm>> Result = materialpmService.doQueryWf(materialpm);
  481. if (Result.Succeed) {
  482. materialpm.baseSpotName = cb1.Text.ToString();//计量点
  483. materialpm.materialType = cbMatType.Text.ToString();//物料类型
  484. materialpm.materialParameter = text1.Text.ToString().Trim() == "" ? 0 : Convert.ToDouble(text1.Text.ToString().Trim());
  485. materialpm.materialParameterImport = text2.Text.ToString().Trim() == "" ? 0 : Convert.ToDouble(text2.Text.ToString().Trim());
  486. if (no == 1)
  487. {
  488. materialpm.createManNo = userId;
  489. materialpm.createManName = userName;
  490. }
  491. else
  492. {
  493. materialpm.updateManNo = userId;
  494. materialpm.updateManName = userName;
  495. materialpm.materialPmCode = this.test.Text.ToString();
  496. }
  497. if (Result.Data.Count == 1)
  498. {
  499. if (no == 1)
  500. {
  501. MessageBox.Show("该计量点-物料类型-秤台已存在!,不能新增");
  502. return null;
  503. }
  504. else if (no == 2)
  505. {
  506. if (Result.Data[0].materialPmCode != test.Text.ToString())
  507. {
  508. MessageBox.Show("该计量点-物料类型-秤台已存在!,不能修改");
  509. return null;
  510. }
  511. else {
  512. return materialpm;
  513. }
  514. }
  515. }
  516. else if (Result.Data.Count == 0)
  517. {
  518. return materialpm;
  519. }
  520. else {
  521. MessageBox.Show("该计量点-物料类型-秤台存在的数量大于1条,请管理员检查!");
  522. return null;
  523. }
  524. }
  525. return null;
  526. }
  527. #endregion
  528. }
  529. }