FrmMscPlineChange.cs 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using Core.Mes.Client.Comm.Control;
  10. using Core.Mes.Client.Comm.Server;
  11. using Core.Mes.Client.Comm.Tool;
  12. using Core.StlMes.Client.PlnSaleOrd.BaseMethod;
  13. using Core.StlMes.Client.PlnSaleOrd.Entity;
  14. using CoreFS.CA06;
  15. using Infragistics.Win.UltraWinGrid;
  16. using Core.Mes.Client.Comm.Format;
  17. using com.steering.pss.plnsaleord.processOrder.entity;
  18. namespace Core.StlMes.Client.PlnSaleOrd
  19. {
  20. /// <summary>
  21. /// 制程变更
  22. /// </summary>
  23. public partial class FrmMscPlineChange : FrmBase
  24. {
  25. public FrmMscPlineChange()
  26. {
  27. this.IsLoadUserView = true;
  28. InitializeComponent();
  29. System.Threading.Thread t = new System.Threading.Thread(setGridColunmName);
  30. t.Start();
  31. }
  32. private void setGridColunmName()
  33. {
  34. System.Threading.Thread.Sleep(3000);
  35. if (!this.IsDisposed)
  36. {
  37. EntityHelper.ShowGridCaption<PlnSaleordProcEntity>(ultraGridProc.DisplayLayout.Bands[0]);
  38. EntityHelper.ShowGridCaption<SlmOrdDesignBomEntity>(ultraGridBom.DisplayLayout.Bands[0]);
  39. EntityHelper.ShowGridCaption<CraftOrdDesignMscPlEntity>(ultraGridPline.DisplayLayout.Bands[0]);
  40. EntityHelper.ShowGridCaption<CraftOrdDesignMscPlGzEntity>(ultraGridGrade.DisplayLayout.Bands[0]);
  41. EntityHelper.ShowGridCaption<CraftOrdDesignMscPlPrcEntity>(ultraGridProcess.DisplayLayout.Bands[0]);
  42. }
  43. }
  44. /// <summary>
  45. /// 待分配排产总量
  46. /// </summary>
  47. private double _finishSumWgt = 0;
  48. /// <summary>
  49. /// 交货行主键
  50. /// </summary>
  51. private string _ordLnDlyPk = "";
  52. /// <summary>
  53. /// 排产流水号
  54. /// </summary>
  55. private string _plnDivideId = "";
  56. /// <summary>
  57. /// 成品完成量
  58. /// </summary>
  59. private double _finishWgt = 0;
  60. /// <summary>
  61. /// 变更的工序
  62. /// </summary>
  63. private string _processCode = "";
  64. /// <summary>
  65. /// 排产联动组号
  66. /// </summary>
  67. private string _planGroupId = "";
  68. /// <summary>
  69. /// 工艺序号
  70. /// </summary>
  71. private string _craftSeq = "";
  72. /// <summary>
  73. /// 制程号
  74. /// </summary>
  75. private string _mscPline = "";
  76. /// <summary>
  77. /// BOM
  78. /// </summary>
  79. private string _bom = "";
  80. /// <summary>
  81. /// 轧制机组
  82. /// </summary>
  83. private string _dPine = "";
  84. /// <summary>
  85. /// 合同行
  86. /// </summary>
  87. private string _orderNoSeq = "";
  88. /// <summary>
  89. /// 合同来源
  90. /// </summary>
  91. private string _orderSource = "";
  92. private double _initProcessWgt = 0;
  93. /// <summary>
  94. /// 排产实体类集合
  95. /// </summary>
  96. private Dictionary<string, PlnSaleordProcEntity> _dicProcs = new Dictionary<string, PlnSaleordProcEntity>();
  97. /// <summary>
  98. /// 制程变更传递数据类集合
  99. /// </summary>
  100. private Dictionary<string, MscPlineChangeEntity> _dicChanges = new Dictionary<string, MscPlineChangeEntity>();
  101. public FrmMscPlineChange(string ordLnDlyPk, string processCode, string plnDivideId, string planGroupId,double initProcessWgt, double finishWgt, OpeBase ob,string orderNoSeq,string orderSource)
  102. {
  103. this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
  104. this._ordLnDlyPk = ordLnDlyPk;
  105. this._plnDivideId = plnDivideId;
  106. this._finishWgt = finishWgt;
  107. this._processCode = processCode;
  108. this._planGroupId = planGroupId;
  109. this._initProcessWgt = initProcessWgt;
  110. this._orderNoSeq = orderNoSeq;
  111. this._orderSource = orderSource;
  112. this.ob = ob;
  113. this.IsLoadUserView = true;
  114. InitializeComponent();
  115. System.Threading.Thread t = new System.Threading.Thread(setGridColunmName);
  116. t.Start();
  117. }
  118. /// <summary>
  119. /// 初始化界面
  120. /// </summary>
  121. /// <param name="sender"></param>
  122. /// <param name="e"></param>
  123. private void FrmMscPlineChange_Load(object sender, EventArgs e)
  124. {
  125. EntityHelper.ShowGridCaption<PlnSaleordProcEntity>(ultraGridProc.DisplayLayout.Bands[0]);
  126. EntityHelper.ShowGridCaption<SlmOrdDesignBomEntity>(ultraGridBom.DisplayLayout.Bands[0]);
  127. EntityHelper.ShowGridCaption<CraftOrdDesignMscPlEntity>(ultraGridPline.DisplayLayout.Bands[0]);
  128. EntityHelper.ShowGridCaption<CraftOrdDesignMscPlGzEntity>(ultraGridGrade.DisplayLayout.Bands[0]);
  129. EntityHelper.ShowGridCaption<CraftOrdDesignMscPlPrcEntity>(ultraGridProcess.DisplayLayout.Bands[0]);
  130. BaseHelper.setOtherColumnReadOnly(ultraGridProc, new string[] { "PlanWtD", "PlanNumD" });
  131. BaseHelper.setOtherColumnReadOnly(ultraGridPline, new string[] { "CHC" });
  132. BaseHelper.setOtherColumnReadOnly(ultraGridGrade, new string[] { "" });
  133. BaseHelper.setOtherColumnReadOnly(ultraGridProcess, new string[] { "" });
  134. QuerySaleOrdProc(_ordLnDlyPk);
  135. InitPlanWgt();
  136. userControlSaleordProc1.UltraGridSaleordProc1.AfterRowActivate += UltraGridSaleordProc1_AfterRowActivate;
  137. }
  138. /// <summary>
  139. /// 初始化排产量
  140. /// </summary>
  141. private void InitPlanWgt()
  142. {
  143. UltraGridRow ugrProduc = userControlSaleordProc1.getUltraGridRow(_plnDivideId);
  144. if (ugrProduc != null)
  145. {
  146. string planWtD = ugrProduc.Cells["PlanWtD"].Text.Equals("") ? "0" : ugrProduc.Cells["PlanWtD"].Text;
  147. _finishSumWgt = double.Parse(planWtD);
  148. ugrProduc.Cells["PlanWtD"].Value = _finishWgt.ToString();
  149. NumPlanWgt.Value = _finishSumWgt - _finishWgt;
  150. }
  151. }
  152. /// <summary>
  153. /// 激活排产记录查询制程
  154. /// </summary>
  155. /// <param name="sender"></param>
  156. /// <param name="e"></param>
  157. void UltraGridSaleordProc1_AfterRowActivate(object sender, EventArgs e)
  158. {
  159. QueryPline(_ordLnDlyPk);
  160. }
  161. /// <summary>
  162. /// 查询排产行工艺制程物料产线
  163. /// </summary>
  164. private void DoQueryProc(string r_ordLnDlyPk, string r_plnDivideId)
  165. {
  166. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.CoreMscPlineChange.queryProcCraftIndex",
  167. new object[] { r_ordLnDlyPk, r_plnDivideId }, this.ob);
  168. if (dt != null && dt.Rows.Count > 0)
  169. {
  170. _craftSeq = dt.Rows[0]["CRAFT_SEQ"].ToString();
  171. _mscPline = dt.Rows[0]["INDEX_SEQ"].ToString();
  172. _bom = dt.Rows[0]["BOM"].ToString();
  173. _dPine = dt.Rows[0]["GROUP_ROLL"].ToString();
  174. }
  175. }
  176. /// <summary>
  177. /// 查询合同排产
  178. /// </summary>
  179. /// <param name="ordLnDlyPk"></param>
  180. private void QuerySaleOrdProc(string ordLnDlyPk)
  181. {
  182. DoQueryProc(ordLnDlyPk, _plnDivideId);
  183. userControlSaleordProc1.Query(ordLnDlyPk, _plnDivideId, this.ob);
  184. }
  185. /// <summary>
  186. /// 查询制程
  187. /// </summary>
  188. /// <param name="ordLnDlyPk"></param>
  189. private void QueryPline(string ordLnDlyPk)
  190. {
  191. List<CraftOrdDesignMscPlEntity> listPline = EntityHelper.GetData<CraftOrdDesignMscPlEntity>
  192. ("com.steering.pss.plnsaleord.processOrder.CoreMscPlineChange.queryPline", new object[] { ordLnDlyPk }, this.ob);
  193. craftOrdDesignMscPlEntityBindingSource.DataSource = listPline;
  194. if (listPline.Count > 0)
  195. {
  196. UltraGridRow uRow = userControlSaleordProc1.UltraGridSaleordProc1.ActiveRow;
  197. foreach (UltraGridRow ugr in ultraGridPline.Rows)
  198. {
  199. if (ugr.Cells["CraftSeq"].Text.Equals(_craftSeq)
  200. && ugr.Cells["MscPline"].Text.Equals(_mscPline))
  201. {
  202. ugr.Appearance.BackColor = Color.GreenYellow;
  203. }
  204. if (ugr.Cells["CraftSeq"].Text.Equals(uRow.Cells["CraftSeq"].Value.ToString())
  205. && ugr.Cells["MscPline"].Text.Equals(uRow.Cells["IndexSeq"].Value.ToString()))
  206. {
  207. ultraGridPline.ActiveRow = ugr;
  208. }
  209. }
  210. }
  211. }
  212. /// <summary>
  213. /// 查询钢种
  214. /// </summary>
  215. /// <param name="ordLnDlyPk"></param>
  216. private void QueryGrade(string designKey, string mscPline)
  217. {
  218. List<CraftOrdDesignMscPlGzEntity> listGrade = EntityHelper.GetData<CraftOrdDesignMscPlGzEntity>
  219. ("com.steering.pss.plnsaleord.processOrder.CoreMscPlineChange.queryGrade", new object[] { designKey, mscPline }, this.ob);
  220. craftOrdDesignMscPlGzEntityBindingSource.DataSource = listGrade;
  221. }
  222. /// <summary>
  223. /// 查询工序
  224. /// </summary>
  225. /// <param name="ordLnDlyPk"></param>
  226. private void QueryOperation(string designKey, string mscPline)
  227. {
  228. List<CraftOrdDesignMscPlPrcEntity> listPrc = EntityHelper.GetData<CraftOrdDesignMscPlPrcEntity>
  229. ("com.steering.pss.plnsaleord.processOrder.CoreMscPlineChange.queryOperation", new object[] { designKey, mscPline }, this.ob);
  230. craftOrdDesignMscPlPrcEntityBindingSource.DataSource = listPrc;
  231. }
  232. /// <summary>
  233. /// 查询工序点
  234. /// </summary>
  235. private void QueryOperationPoint(string designKey, string mscPline)
  236. {
  237. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.CoreMscPlineChange.queryOperationPoint", new object[] { designKey, mscPline }, this.ob);
  238. if (dt != null && dt.Rows.Count > 0)
  239. {
  240. string points = dt.Rows[0][0].ToString();
  241. pointTxt.Text = points.Substring(0, points.LastIndexOf("->"));
  242. }
  243. else
  244. {
  245. pointTxt.Text = "";
  246. }
  247. }
  248. /// <summary>
  249. /// 查询BOM
  250. /// </summary>
  251. /// <param name="materialNo">物料编码</param>
  252. /// <param name="msc">冶金规范码</param>
  253. /// <param name="mscPline">制程号</param>
  254. /// <param name="wholeBacklog">全程途径码</param>
  255. private void QueryBom(string materialNo, string msc, string mscPline, string wholeBacklog)
  256. {
  257. List<SlmOrdDesignBomEntity> listBom = EntityHelper.GetData<SlmOrdDesignBomEntity>
  258. ("com.steering.pss.plnsaleord.processOrder.CoreMscPlineChange.queryBom",
  259. new object[] { materialNo, msc, mscPline, wholeBacklog }, this.ob);
  260. slmOrdDesignBomEntityBindingSource.DataSource = listBom;
  261. if (listBom.Count > 0)
  262. {
  263. UltraGridRow uRow = userControlSaleordProc1.UltraGridSaleordProc1.ActiveRow;
  264. foreach (UltraGridRow ugr in ultraGridBom.Rows)
  265. {
  266. if (ugr.Cells["Bom"].Text.Equals(_bom))
  267. {
  268. ugr.Appearance.BackColor = Color.GreenYellow;
  269. }
  270. if (ugr.Cells["Bom"].Text.Equals(uRow.Cells["Bom"].Value.ToString()))
  271. {
  272. ultraGridBom.ActiveRow = ugr;
  273. }
  274. }
  275. }
  276. }
  277. /// <summary>
  278. /// 查询产线
  279. /// </summary>
  280. /// <param name="designKey"></param>
  281. /// <param name="dInMaterialNo"></param>
  282. /// <param name="dOutMaterialNo"></param>
  283. private void QueryLine(string designKey, string mscPline, string dInMaterialNo, string dOutMaterialNo)
  284. {
  285. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.CoreMscPlineChange.queryLine",
  286. new object[] { designKey, mscPline, dInMaterialNo, dOutMaterialNo }, this.ob);
  287. GridHelper.CopyDataToDatatable(ref dt, ref dataTable1, true);
  288. if (dt!=null && dt.Rows.Count > 0)
  289. {
  290. UltraGridRow uRow = userControlSaleordProc1.UltraGridSaleordProc1.ActiveRow;
  291. foreach (UltraGridRow ugr in ultraGridLine.Rows)
  292. {
  293. if (ugr.Cells["PLINE_CODE"].Text.Equals(_dPine))
  294. {
  295. ugr.Appearance.BackColor = Color.GreenYellow;
  296. }
  297. if (ugr.Cells["PLINE_CODE"].Text.Equals(uRow.Cells["GroupRoll"].Value.ToString()))
  298. {
  299. ultraGridLine.ActiveRow = ugr;
  300. }
  301. }
  302. }
  303. }
  304. /// <summary>
  305. /// 激活制程行
  306. /// </summary>
  307. /// <param name="sender"></param>
  308. /// <param name="e"></param>
  309. private void ultraGridPline_AfterRowActivate(object sender, EventArgs e)
  310. {
  311. UltraGridRow ugrActive = ultraGridPline.ActiveRow;
  312. if (ugrActive == null)
  313. {
  314. return;
  315. }
  316. string designKey = ugrActive.Cells["DesginKey"].Text;
  317. string mscPline = ugrActive.Cells["MscPline"].Text;
  318. //查询数据
  319. QueryGrade(designKey, mscPline);
  320. QueryOperation(designKey, mscPline);
  321. QueryOperationPoint(designKey, mscPline);
  322. //获取变更的行
  323. UltraGridRow ugrChange = userControlSaleordProc1.getUltraGridRow(_plnDivideId);
  324. string msc = ugrChange.Cells["Msc"].Text;
  325. string materialNo = ugrChange.Cells["MaterialNo"].Text;
  326. string wholeBacklog = ugrActive.Cells["WholeBacklog"].Text;
  327. //查询BOM
  328. QueryBom(materialNo, msc, mscPline, wholeBacklog);
  329. }
  330. /// <summary>
  331. /// BOM激活行(查询产线)
  332. /// </summary>
  333. /// <param name="sender"></param>
  334. /// <param name="e"></param>
  335. private void ultraGridBom_AfterRowActivate(object sender, EventArgs e)
  336. {
  337. UltraGridRow ugrBom = ultraGridBom.ActiveRow;
  338. if (ugrBom == null)
  339. {
  340. return;
  341. }
  342. UltraGridRow ugrPline = ultraGridPline.ActiveRow;
  343. if (ugrPline == null)
  344. {
  345. return;
  346. }
  347. string designKey = ugrPline.Cells["DesginKey"].Text;
  348. string mscPline = ugrPline.Cells["MscPline"].Text;
  349. string inMaterialNo = ugrBom.Cells["DInMaterialNo"].Text;
  350. string outMaterialNo = ugrBom.Cells["DOutMaterialNo"].Text;
  351. QueryLine(designKey, mscPline, inMaterialNo, outMaterialNo);
  352. }
  353. private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  354. {
  355. switch (e.Tool.Key)
  356. {
  357. case "新增":
  358. AddMscPline();
  359. break;
  360. case "修改":
  361. ModifyMscPine();
  362. break;
  363. case "删除":
  364. deleteMscPline();
  365. break;
  366. case "下发":
  367. downMscPline();
  368. break;
  369. case "关闭":
  370. this.Close();
  371. break;
  372. case "刷新":
  373. DoRefresDate();
  374. break;
  375. default:
  376. break;
  377. }
  378. }
  379. /// <summary>
  380. /// 刷新
  381. /// </summary>
  382. private void DoRefresDate()
  383. {
  384. foreach (UltraGridRow uRow in userControlSaleordProc1.UltraGridSaleordProc1.Rows)
  385. {
  386. if (uRow != null && uRow.Cells["Planstatus"].Text.Equals("维护"))
  387. {
  388. PlnSaleordProcEntity proEntity = EntityHelper.CopyEntity<PlnSaleordProcEntity>(uRow.ListObject);
  389. //删除排产实体类
  390. _dicProcs.Remove(proEntity.PlnDivideId);
  391. //删除制程变更传递数据类
  392. _dicChanges.Remove(proEntity.PlnDivideId);
  393. }
  394. }
  395. QuerySaleOrdProc(_ordLnDlyPk);
  396. InitPlanWgt();
  397. }
  398. /// <summary>
  399. /// 新增排产记录
  400. /// </summary>
  401. private void AddMscPline()
  402. {
  403. ultraGridPline.UpdateData();
  404. ultraGridBom.UpdateData();
  405. ultraGridLine.UpdateData();
  406. double waitPlanWtD = double.Parse(NumPlanWgt.Value.ToString());
  407. if (waitPlanWtD <= 0)
  408. {
  409. MessageUtil.ShowWarning("待分配排产量为0,不能新增排产记录!");
  410. return;
  411. }
  412. IQueryable<UltraGridRow> ugrPlines = ultraGridPline.Rows.AsQueryable().Where(" CHC = 'True' ");
  413. if (ugrPlines == null || ugrPlines.Count() != 1)
  414. {
  415. MessageUtil.ShowWarning("请选择一个制程!");
  416. return;
  417. }
  418. //制程
  419. CraftOrdDesignMscPlEntity plEntity = (CraftOrdDesignMscPlEntity)ugrPlines.First().ListObject;
  420. IQueryable<UltraGridRow> ugrBoms = ultraGridBom.Rows.AsQueryable().Where(" CHC = 'True' ");
  421. if (ugrBoms == null || ugrBoms.Count() != 1)
  422. {
  423. MessageUtil.ShowWarning("请选择一条Bom!");
  424. return;
  425. }
  426. //bom
  427. SlmOrdDesignBomEntity bomEntity = (SlmOrdDesignBomEntity)ugrBoms.First().ListObject;
  428. IQueryable<UltraGridRow> ugrLines = ultraGridLine.Rows.AsQueryable().Where(" CHC = 'True' ");
  429. if (ugrLines == null || ugrLines.Count() != 1)
  430. {
  431. MessageUtil.ShowWarning("请选择一条轧管产线!");
  432. return;
  433. }
  434. //产线
  435. UltraGridRow ugrLine = ugrLines.First();
  436. if (plEntity.CraftSeq.Equals(_craftSeq) && plEntity.MscPline.Equals(_mscPline)
  437. && bomEntity.Bom.Equals(_bom)
  438. && ugrLine.Cells["PLINE_CODE"].Value.ToString().Equals(_dPine))
  439. {
  440. MessageUtil.ShowWarning("您所选取的工艺、制程、物料、产线与原记录完全相同!");
  441. return;
  442. }
  443. //排产原始行
  444. UltraGridRow ugrProduc = userControlSaleordProc1.getUltraGridRow(_plnDivideId);
  445. //获取排产分配量
  446. FrmPlanWgtIn frmPlanWgtIn = new FrmPlanWgtIn(waitPlanWtD);
  447. frmPlanWgtIn.ShowDialog();
  448. Boolean wgtFlag = frmPlanWgtIn.Flag;
  449. if (!wgtFlag)
  450. {
  451. return;
  452. }
  453. double planWgt = frmPlanWgtIn.PlanWgt;
  454. PlnSaleordProcEntity plnProcEntity = EntityHelper.CopyEntity<PlnSaleordProcEntity>(ugrProduc.ListObject);
  455. string plnDivideId = userControlSaleordProc1.getMaxPlnDivideId();
  456. plnProcEntity.PlnDivideId = plnDivideId;
  457. plnProcEntity.PlanWtD = (decimal?)planWgt;
  458. plnProcEntity.CraftFileNo = plEntity.CraftNo;
  459. plnProcEntity.ProcessSeq = plEntity.WholeBacklog;
  460. plnProcEntity.Bom = bomEntity.Bom;
  461. plnProcEntity.Gradecode = bomEntity.Gradecode;
  462. plnProcEntity.Planstatus = "维护";
  463. //界面增加一条记录
  464. userControlSaleordProc1.AddLine(plnProcEntity);
  465. //修改待分配排产量
  466. NumPlanWgt.Value = double.Parse(NumPlanWgt.Value.ToString()) - planWgt;
  467. //保存排产实体类
  468. _dicProcs.Add(plnDivideId, plnProcEntity);
  469. //保存制程变更传递数据类
  470. MscPlineChangeEntity changeEntity = new MscPlineChangeEntity();
  471. changeEntity.CreatName = UserInfo.GetUserName();
  472. changeEntity.OrdLnDlyPk = plnProcEntity.OrdLnDlyPk;
  473. changeEntity.PlnDivideId = _plnDivideId;
  474. changeEntity.PlanWeightD = planWgt;
  475. changeEntity.CraftSeq = plEntity.CraftSeq;
  476. changeEntity.MscPline = plEntity.MscPline;
  477. changeEntity.Bom = bomEntity.Bom;
  478. changeEntity.DPline = ugrLine.Cells["PLINE_CODE"].Text;
  479. _dicChanges.Add(plnDivideId, changeEntity);
  480. }
  481. /// <summary>
  482. /// 删除排产记录
  483. /// </summary>
  484. private void deleteMscPline()
  485. {
  486. UltraGridRow ugr = userControlSaleordProc1.getActiveRow();
  487. if (ugr == null || !ugr.Cells["Planstatus"].Text.Equals("维护"))
  488. {
  489. MessageUtil.ShowWarning("请选择一条维护的排产记录");
  490. return;
  491. }
  492. if (MessageUtil.ShowYesNoAndQuestion("是否删除此排产记录!") == DialogResult.No)
  493. {
  494. return;
  495. }
  496. //转化为实体类
  497. PlnSaleordProcEntity proEntity = EntityHelper.CopyEntity<PlnSaleordProcEntity>(ugr.ListObject);
  498. double planWtD = double.Parse(proEntity.PlanWtD.ToString());
  499. userControlSaleordProc1.RemoveLine((PlnSaleordProcEntity)ugr.ListObject);
  500. //刷新待分配排产量
  501. NumPlanWgt.Value = double.Parse(NumPlanWgt.Value.ToString()) + planWtD;
  502. //删除排产实体类
  503. _dicProcs.Remove(proEntity.PlnDivideId);
  504. //删除制程变更传递数据类
  505. _dicChanges.Remove(proEntity.PlnDivideId);
  506. }
  507. /// <summary>
  508. /// 修改原排产记录
  509. /// </summary>
  510. private void ModifyMscPine()
  511. {
  512. ultraGridPline.UpdateData();
  513. ultraGridBom.UpdateData();
  514. ultraGridLine.UpdateData();
  515. IQueryable<UltraGridRow> ugrPlines = ultraGridPline.Rows.AsQueryable().Where(" CHC = 'True' ");
  516. if (ugrPlines == null || ugrPlines.Count() != 1)
  517. {
  518. MessageUtil.ShowWarning("请选择一个制程!");
  519. return;
  520. }
  521. //制程
  522. CraftOrdDesignMscPlEntity plEntity = (CraftOrdDesignMscPlEntity)ugrPlines.First().ListObject;
  523. IQueryable<UltraGridRow> ugrBoms = ultraGridBom.Rows.AsQueryable().Where(" CHC = 'True' ");
  524. if (ugrBoms == null || ugrBoms.Count() != 1)
  525. {
  526. MessageUtil.ShowWarning("请选择一条Bom!");
  527. return;
  528. }
  529. //bom
  530. SlmOrdDesignBomEntity bomEntity = (SlmOrdDesignBomEntity)ugrBoms.First().ListObject;
  531. IQueryable<UltraGridRow> ugrLines = ultraGridLine.Rows.AsQueryable().Where(" CHC = 'True' ");
  532. if (ugrLines == null || ugrLines.Count() != 1)
  533. {
  534. MessageUtil.ShowWarning("请选择一条轧管产线!");
  535. return;
  536. }
  537. //产线
  538. UltraGridRow ugrLine = ugrLines.First();
  539. if (plEntity.CraftSeq.Equals(_craftSeq) && plEntity.MscPline.Equals(_mscPline)
  540. && bomEntity.Bom.Equals(_bom)
  541. && ugrLine.Cells["PLINE_CODE"].Value.ToString().Equals(_dPine))
  542. {
  543. MessageUtil.ShowWarning("您所选取的工艺、制程、物料、产线与原记录完全相同!");
  544. return;
  545. }
  546. //排产原始行
  547. UltraGridRow ugrProduc = userControlSaleordProc1.getUltraGridRow(_plnDivideId);
  548. PlnSaleordProcEntity plnProcEntity = EntityHelper.CopyEntity<PlnSaleordProcEntity>(ugrProduc.ListObject);
  549. string plnDivideId = userControlSaleordProc1.getMaxPlnDivideId();
  550. MscPlineChangeEntity changeEntity = new MscPlineChangeEntity();
  551. changeEntity.CreatName = UserInfo.GetUserName();
  552. changeEntity.OrdLnDlyPk = plnProcEntity.OrdLnDlyPk;
  553. changeEntity.PlnDivideId = _plnDivideId;
  554. changeEntity.CraftSeq = plEntity.CraftSeq;
  555. changeEntity.MscPline = plEntity.MscPline;
  556. changeEntity.Bom = bomEntity.Bom;
  557. changeEntity.DPline = ugrLine.Cells["PLINE_CODE"].Text;
  558. CoreClientParam ccp = new CoreClientParam();
  559. ccp.ServerName = "com.steering.pss.plnsaleord.processOrder.CoreProcessOrder";
  560. ccp.MethodName = "modifyChangeProc";
  561. ccp.ServerParams = new object[] { changeEntity,_orderNoSeq,_orderSource };
  562. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  563. if (ccp.ReturnCode != -1)
  564. {
  565. MessageUtil.ShowTips("修改成功!");
  566. DoRefresDate();
  567. }
  568. else
  569. {
  570. MessageUtil.ShowError("修改失败:" + ccp.ReturnInfo);
  571. return;
  572. }
  573. }
  574. /// <summary>
  575. /// 下发
  576. /// </summary>
  577. private void downMscPline()
  578. {
  579. double waitPlanWtD = double.Parse(NumPlanWgt.Value.ToString());
  580. if (waitPlanWtD > 0)
  581. {
  582. MessageUtil.ShowWarning("待分配排产量未分配完全,不能下发!");
  583. return;
  584. }
  585. List<PlnSaleordProcEntity> addProcEntitys = new List<PlnSaleordProcEntity>();
  586. //新增的排产集合
  587. foreach (string key in _dicProcs.Keys)
  588. {
  589. addProcEntitys.Add(_dicProcs[key]);
  590. }
  591. //制程变更传递数据类集合
  592. List<MscPlineChangeEntity> addChangeEntitys = new List<MscPlineChangeEntity>();
  593. foreach (string key in _dicChanges.Keys)
  594. {
  595. addChangeEntitys.Add(_dicChanges[key]);
  596. }
  597. if (addProcEntitys.Count != addChangeEntitys.Count)
  598. {
  599. MessageUtil.ShowWarning("数据异常,请重新新增数据!");
  600. return;
  601. }
  602. //原始排产记录
  603. UltraGridRow ugrProc = userControlSaleordProc1.getUltraGridRow(_plnDivideId);
  604. PlnSaleordProcEntity beginProcEntity = (PlnSaleordProcEntity)ugrProc.ListObject;
  605. if (MessageUtil.ShowYesNoAndQuestion("是否下发维护中的排产记录?") == DialogResult.No)
  606. {
  607. return;
  608. }
  609. bool isUseNewCraft = false;
  610. CoreClientParam ccp = new CoreClientParam();
  611. ccp.ServerName = "com.steering.pss.plnsaleord.processOrder.CoreMscPlineChange";
  612. ccp.MethodName = "getIsUseNewCraft";
  613. ccp.ServerParams = new object[] { _planGroupId, _processCode, addChangeEntitys[0] };
  614. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  615. if (ccp.ReturnCode != -1)
  616. {
  617. bool isAllow = (Boolean)ccp.ReturnObject;
  618. if (isAllow)
  619. {
  620. if (MessageUtil.ShowYesNoAndQuestion("原记录" + processCodeToDesc(_processCode)
  621. + "之后的工序是否使用新的工艺?") == DialogResult.Yes)
  622. {
  623. isUseNewCraft = true;
  624. }
  625. }
  626. }
  627. else
  628. {
  629. MessageUtil.ShowError(ccp.ReturnInfo);
  630. return;
  631. }
  632. //CoreClientParam ccp = new CoreClientParam();
  633. //ccp.ServerName = "com.steering.pss.plnsaleord.processOrder.CoreProcessOrder";
  634. //ccp.MethodName = "getGetRate";
  635. //ccp.ServerParams = new object[] { _processCode, _planGroupId, _initProcessWgt.ToString(),
  636. //_finishSumWgt.ToString(), beginProcEntity, addProcEntitys, addChangeEntitys };
  637. //ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  638. //if (ccp.ReturnCode != -1)
  639. //{
  640. ccp.ServerName = "com.steering.pss.plnsaleord.processOrder.CoreProcessOrder";
  641. ccp.MethodName = "saveChangeProc";
  642. ccp.ServerParams = new object[] { JSONFormat.Format(beginProcEntity), addChangeEntitys, _processCode, isUseNewCraft, _orderNoSeq, _orderSource };
  643. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  644. if (ccp.ReturnCode != -1)
  645. {
  646. MessageUtil.ShowTips("下发成功!");
  647. DoRefresDate();
  648. }
  649. else
  650. {
  651. MessageUtil.ShowError("下发失败:" + ccp.ReturnInfo);
  652. return;
  653. }
  654. }
  655. /// <summary>
  656. /// 工序点代码转描述
  657. /// </summary>
  658. /// <param name="processCode"></param>
  659. /// <returns></returns>
  660. public static string processCodeToDesc(string processCode)
  661. {
  662. string processDesc = "";
  663. switch (processCode)
  664. {
  665. case "A":
  666. processDesc = "炼钢";
  667. break;
  668. case "B":
  669. processDesc = "铸造";
  670. break;
  671. case "C":
  672. processDesc = "锻造";
  673. break;
  674. case "D":
  675. processDesc = "轧制";
  676. break;
  677. case "E":
  678. processDesc = "镦拔扩";
  679. break;
  680. case "F":
  681. processDesc = "热处理";
  682. break;
  683. case "G":
  684. processDesc = "加工";
  685. break;
  686. case "H":
  687. processDesc = "接箍加工";
  688. break;
  689. }
  690. return processDesc;
  691. }
  692. }
  693. }