public static void FinishProcessPrepare(PmTaskLine taskLine, List <MesProcessCtrol> processCtrols) { WcfClient <IPLMService> wsPLM = new WcfClient <IPLMService>(); //计划 #region 更新任务状态 if (taskLine.RUN_STATE == 0) { taskLine.RUN_STATE = 1; taskLine.UPDATED_BY = CBaseData.LoginName; taskLine.LAST_UPDATE_DATE = DateTime.Now; wsPLM.UseService(s => s.UpdatePmTaskLine(taskLine)); } #endregion foreach (MesProcessCtrol process in processCtrols) { process.PKNO = CBaseData.NewGuid(); process.COMPANY_CODE = ""; process.CREATED_BY = CBaseData.LoginName; process.CREATION_DATE = DateTime.Now; process.USE_FLAG = 1; wsPLM.UseService(s => s.AddMesProcessCtrol(process)); } }
private void cmbTask_SelectionChanged(object sender, SelectionChangedEventArgs e) { cmbProduct.SelectedIndex = -1; cmbRoutingMain.SelectedIndex = -1; cmbProduct.ItemsSource = null; cmbRoutingMain.ItemsSource = null; //选择生产线 => 获取产品 PmTaskLine taskLine = cmbTask.SelectedItem as PmTaskLine; if (taskLine == null) { return; } tbLiftQty.Text = (taskLine.TASK_QTY - taskLine.PREPARED_QTY).ToString(); //任务剩余数量 tbTaskQty.Text = tbLiftQty.Text; cmbProduct.ItemsSource = wsPLM.UseService(s => s.GetPmTaskLines($"USE_FLAG = 1 AND TASK_PKNO = '{taskLine.TASK_PKNO}'")) .Join(wsRSM.UseService(s => s.GetRsItemMasters("USE_FLAG = 1")), c => c.ITEM_PKNO, d => d.PKNO, (c, d) => new { d.PKNO, d.ITEM_NAME }).Distinct().ToList(); if (cmbProduct.Items.Count > 0) { cmbProduct.SelectedIndex = 0; //选择第一个 } if (cmbAssetInfo.Items.Count == 1) { cmbAssetInfo.SelectedIndex = 0; //PLC } }
public PmTaskLine GetPmTaskLineById(string Id) { using (IPmTaskLineBLL PmTaskLineBLL = BLLContainer.Resolve <IPmTaskLineBLL>()) { PmTaskLine model = PmTaskLineBLL.GetFirstOrDefault(Id); return(model); } }
public bool AddPmTaskLine(PmTaskLine mPmTaskLine) { if (mPmTaskLine == null) { return(false); } using (IPmTaskLineBLL PmTaskLineBLL = BLLContainer.Resolve <IPmTaskLineBLL>()) { return(PmTaskLineBLL.Add(mPmTaskLine)); } }
public bool DelPmTaskLine(string Id) { using (IPmTaskLineBLL PmTaskLineBLL = BLLContainer.Resolve <IPmTaskLineBLL>()) { try { PmTaskLine item = PmTaskLineBLL.GetFirstOrDefault(Id); return(PmTaskLineBLL.Delete(item)); } catch { return(false); } } }
private void cmbProduct_SelectionChanged(object sender, SelectionChangedEventArgs e) { //选择产品 => 获取工艺路线 if (cmbProduct.SelectedValue == null) { return; } string itemPKNO = cmbProduct.SelectedValue.ToString(); //产品 if (string.IsNullOrEmpty(itemPKNO)) { return; } PmTaskLine taskLine = cmbTask.SelectedItem as PmTaskLine; if (taskLine == null) { return; } cmbRoutingMain.ItemsSource = wsRSM.UseService(s => s.GetRsRoutingItems($"USE_FLAG = 1 AND ITEM_PKNO = '{itemPKNO}'")) .Join(wsRSM.UseService(s => s.GetRsRoutingHeads("USE_FLAG = 1")), c => c.ROUTING_PKNO, d => d.PKNO, (c, d) => new { d.PKNO, d.ROUTING_NAME }); //需增加状态表,已经完成准备的工序不再显示 if (cmbRoutingMain.Items.Count > 0) { cmbRoutingMain.SelectedIndex = 0; //选择第一个 } MesJobOrder jobOrder = wsPLM.UseService(s => s.GetMesJobOrders( $"LINE_TASK_PKNO = '{taskLine.PKNO}' AND USE_FLAG = 1 AND LINE_PKNO = '{CBaseData.CurLinePKNO}'")) .OrderByDescending(c => c.BATCH_NO) //按照批次排序 .FirstOrDefault(); int batchIndex = 1; if (jobOrder != null) { int.TryParse(jobOrder.BATCH_NO, out batchIndex); batchIndex++; } lbBatchIndex.Content = batchIndex.ToString(); //批次 }
public bool DelPmTaskLines(string[] Ids) { using (IPmTaskLineBLL PmTaskLineBLL = BLLContainer.Resolve <IPmTaskLineBLL>()) { try { List <PmTaskLine> entitys = new List <PmTaskLine>(); foreach (string id in Ids) { PmTaskLine item = PmTaskLineBLL.GetFirstOrDefault(id); entitys.Add(item); } return(PmTaskLineBLL.Delete(entitys)); } catch { return(false); } } }
private void GetPage() { gridProcessInfo.ItemsSource = null; PmTaskLine taskLine = cmbTask.SelectedItem as PmTaskLine; if (taskLine == null) { return; } string itemPKNO = cmbProduct.SelectedValue.ToString(); if (string.IsNullOrEmpty(itemPKNO)) { return; //产品 } }
private void BtnAdd_Click(object sender, RoutedEventArgs e) { PmTaskMaster taskMaster = gridItem.SelectedItem as PmTaskMaster; if (taskMaster == null) { return; } #region //TODO: 校验 #endregion PmTaskLine planLine = new PmTaskLine() { COMPANY_CODE = "", TASK_PKNO = taskMaster.PKNO, ITEM_PKNO = taskMaster.ITEM_PKNO, TASK_NO = TableNOHelper.GetNewNO("PmTaskLine.TASK_NO", "N"), TASK_START_TIME = taskMaster.TASK_START_TIME, TASK_FINISH_TIME = taskMaster.TASK_FINISH_TIME, TASK_QTY = taskMaster.TASK_QTY - taskMaster.LINE_QTY, PREPARED_QTY = 0, //准备完成数量 COMPLETE_QTY = 0, ONLINE_QTY = 0, ONCE_QTY = 0, RUN_STATE = 0, USE_FLAG = 1, //启用 }; gbItem.DataContext = planLine; dictBasic.Header = $"{HeaderName} 【分配产线】"; gbItem.IsCollapsed = false; gbItem.Visibility = Visibility.Visible; }
public static bool AutoFinishProcessPrepare(PmTaskLine taskLine, out string error) { error = ""; return(true); }
private void bSave_Click(object sender, System.Windows.RoutedEventArgs e) { if (cmbRoutingMain.SelectedValue == null) { return; } #region 创建生产过程 //生产线数据 PmTaskLine taskLine = cmbTask.SelectedItem as PmTaskLine; //产品数据 string itemPKNO = cmbProduct.SelectedValue.ToString(); RsItemMaster product = wsRSM.UseService(s => s.GetRsItemMasterById(itemPKNO)); if (product == null) { MessageBox.Show("产品信息不存在,请核实.", "完成生产准备", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //准备完成 List <MesProcessCtrol> processCtrols = new List <MesProcessCtrol>(); List <RsRoutingDetail> rsRoutingDetails = gridProcessInfo.ItemsSource as List <RsRoutingDetail>; //已创建加工数量 int qty = CheckPlanQTY(taskLine.TASK_NO); decimal preparedQty = 0; decimal.TryParse(tbTaskQty.Text.ToString(), out preparedQty); if (preparedQty <= 0) { MessageBox.Show("请输入正确的任务数量.", "完成生产准备", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } #region 判断加工数量 if (tbTaskQty.Text.ToString() == "") { MessageBox.Show($"请输入数量", "未输入数量", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (int.Parse(tbTaskQty.Text.ToString()) + qty > taskLine.TASK_QTY) { MessageBox.Show($"输入数量超出订单加工数量", "数量超限", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } #endregion AmAssetMasterN mainDevice = cmbAssetInfo.SelectedItem as AmAssetMasterN; if (mainDevice == null) { MessageBox.Show("请选择主控PLC", "完成生产准备", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } #region 创建工单表 MesJobOrder jobOrder = new MesJobOrder() { PKNO = Guid.NewGuid().ToString("N"), COMPANY_CODE = "", LINE_PKNO = taskLine.LINE_PKNO, //产线信息 LINE_TASK_PKNO = taskLine.PKNO, ITEM_PKNO = itemPKNO, JOB_ORDER_NO = taskLine.TASK_NO + lbBatchIndex.Content.ToString(), BATCH_NO = lbBatchIndex.Content.ToString(), ROUTING_DETAIL_PKNO = cmbRoutingMain.SelectedValue.ToString(), TASK_QTY = preparedQty, COMPLETE_QTY = 0, ONLINE_QTY = 0, ONCE_QTY = 0, RUN_STATE = 1, //准备完成 CREATION_DATE = DateTime.Now, CREATED_BY = CBaseData.LoginName, USE_FLAG = 1, REMARK = "", }; #endregion List <MesProcessCtrol> newMesProcessCtrols = new List <MesProcessCtrol>(); int iProcessIndex = 0; string DeviceInfos = ""; string Programs = ""; #region 获取加工设备、程序号 foreach (RsRoutingDetail item in rsRoutingDetails) { if (string.IsNullOrEmpty(item.WC_ABV)) { MessageBox.Show($"工序【{item.OP_NAME}】加工设备不能为空,请选择加工设备!", "完成生产准备", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } AmAssetMasterN device = wsEAM.UseService(s => s.GetAmAssetMasterNById(item.WC_ABV)); if (device == null) { MessageBox.Show($"工序【{item.OP_NAME}】加工设备,请选择加工设备!", "完成生产准备", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } DeviceInfos += device.ASSET_LABEL; //设备 Programs += item.NC_PRO_NAME; //程序号 } #endregion wsPLM.UseService(s => s.AddMesJobOrder(jobOrder)); //添加工单 #region 添加加工工序,共5步 FmsActionControl ctrl1 = wsFMS.UseService(s => s.GetFmsActionControls($"ASSET_CODE = '{mainDevice.ASSET_CODE}' AND ACTION_NAME = '发送产品信息'")) .FirstOrDefault(); // FmsActionControl ctrl2 = wsFMS.UseService(s => s.GetFmsActionControls($"ASSET_CODE = '{mainDevice.ASSET_CODE}' AND ACTION_NAME = '发送数量'")) .FirstOrDefault(); // FmsActionControl ctrl3 = wsFMS.UseService(s => s.GetFmsActionControls($"ASSET_CODE = '{mainDevice.ASSET_CODE}' AND ACTION_NAME = '发送设备及程序号'")) .FirstOrDefault(); // FmsActionControl ctrl4 = wsFMS.UseService(s => s.GetFmsActionControls($"ASSET_CODE = '{mainDevice.ASSET_CODE}' AND ACTION_NAME = '订单确认'")) .FirstOrDefault(); // FmsActionControl ctrl5 = wsFMS.UseService(s => s.GetFmsActionControls($"ASSET_CODE = '{mainDevice.ASSET_CODE}' AND ACTION_NAME = '订单完成'")) .FirstOrDefault(); // #region 1.第一步发送产品信息 MesProcessCtrol step1 = new MesProcessCtrol() { PKNO = CBaseData.NewGuid(), COMPANY_CODE = "", JOB_ORDER_PKNO = jobOrder.PKNO, JOB_ORDER = cmbTask.Text + lbBatchIndex.Content, //工单编号 ITEM_PKNO = jobOrder.ITEM_PKNO, //产品PKNO SUB_JOB_ORDER_NO = "", ROUTING_DETAIL_PKNO = "", //工序编号(工艺路线明细)为空,不按照工艺进行控制 PROCESS_DEVICE_PKNO = mainDevice.PKNO, //加工设备为 主控PLC PROCESS_INDEX = 0, PROCESS_ACTION_TYPE = 0, PROCESS_ACTION_PKNO = (ctrl1 == null) ? "" : ctrl1.PKNO, PROCESS_ACTION_PARAM1_VALUE = product.ITEM_ABV, //产品简称 PROCESS_ACTION_PARAM2_VALUE = "", CUR_PRODUCT_CODE_PKNO = "", PROCESS_QTY = preparedQty, COMPLETE_QTY = 0, QUALIFIED_QTY = 0, PROCESS_STATE = 1, CREATION_DATE = DateTime.Now, CREATED_BY = CBaseData.LoginName, USE_FLAG = 1, REMARK = "系统自动形成", }; #endregion end 1 #region 2.第二步发送数量 MesProcessCtrol step2 = new MesProcessCtrol() { PKNO = CBaseData.NewGuid(), COMPANY_CODE = "", JOB_ORDER_PKNO = jobOrder.PKNO, JOB_ORDER = cmbTask.Text + lbBatchIndex.Content, //工单编号 ITEM_PKNO = jobOrder.ITEM_PKNO, //产品PKNO SUB_JOB_ORDER_NO = "", ROUTING_DETAIL_PKNO = "", //工序编号(工艺路线明细)为空,不按照工艺进行控制 PROCESS_DEVICE_PKNO = mainDevice.PKNO, //加工设备为 主控PLC PROCESS_INDEX = 1, PROCESS_ACTION_TYPE = 0, PROCESS_ACTION_PKNO = (ctrl2 == null) ? "" : ctrl2.PKNO, PROCESS_ACTION_PARAM1_VALUE = preparedQty.ToString(), //数量 PROCESS_ACTION_PARAM2_VALUE = "", CUR_PRODUCT_CODE_PKNO = "", PROCESS_QTY = preparedQty, COMPLETE_QTY = 0, QUALIFIED_QTY = 0, PROCESS_STATE = 1, CREATION_DATE = DateTime.Now, CREATED_BY = CBaseData.LoginName, USE_FLAG = 1, REMARK = "系统自动形成", }; #endregion end 2 #region 3.第三步发送设备及程序号 MesProcessCtrol step3 = new MesProcessCtrol() { PKNO = CBaseData.NewGuid(), COMPANY_CODE = "", JOB_ORDER_PKNO = jobOrder.PKNO, JOB_ORDER = cmbTask.Text + lbBatchIndex.Content, //工单编号 ITEM_PKNO = jobOrder.ITEM_PKNO, //产品PKNO SUB_JOB_ORDER_NO = "", ROUTING_DETAIL_PKNO = "", //工序编号(工艺路线明细)为空,不按照工艺进行控制 PROCESS_DEVICE_PKNO = mainDevice.PKNO, //加工设备为 主控PLC PROCESS_INDEX = 2, PROCESS_ACTION_TYPE = 0, PROCESS_ACTION_PKNO = (ctrl3 == null) ? "" : ctrl3.PKNO, PROCESS_ACTION_PARAM1_VALUE = DeviceInfos, //设备ID PROCESS_ACTION_PARAM2_VALUE = Programs, //程序号 CUR_PRODUCT_CODE_PKNO = "", PROCESS_QTY = preparedQty, COMPLETE_QTY = 0, QUALIFIED_QTY = 0, PROCESS_STATE = 1, CREATION_DATE = DateTime.Now, CREATED_BY = CBaseData.LoginName, USE_FLAG = 1, REMARK = "系统自动形成", }; #endregion end 3 #region 4.第四步发送订单确认 MesProcessCtrol step4 = new MesProcessCtrol() { PKNO = CBaseData.NewGuid(), COMPANY_CODE = "", JOB_ORDER_PKNO = jobOrder.PKNO, JOB_ORDER = cmbTask.Text + lbBatchIndex.Content, //工单编号 ITEM_PKNO = jobOrder.ITEM_PKNO, //产品PKNO SUB_JOB_ORDER_NO = "", ROUTING_DETAIL_PKNO = "", //工序编号(工艺路线明细)为空,不按照工艺进行控制 PROCESS_DEVICE_PKNO = mainDevice.PKNO, //加工设备为 主控PLC PROCESS_INDEX = 3, PROCESS_ACTION_TYPE = 0, PROCESS_ACTION_PKNO = (ctrl4 == null) ? "" : ctrl4.PKNO, PROCESS_ACTION_PARAM1_VALUE = cmbTask.Text + lbBatchIndex.Content, //订单ID PROCESS_ACTION_PARAM2_VALUE = "", // CUR_PRODUCT_CODE_PKNO = "", PROCESS_QTY = preparedQty, COMPLETE_QTY = 0, QUALIFIED_QTY = 0, PROCESS_STATE = 1, CREATION_DATE = DateTime.Now, CREATED_BY = CBaseData.LoginName, USE_FLAG = 1, REMARK = "系统自动形成", }; #endregion end 4 #region 5.第五步订单完成 MesProcessCtrol step5 = new MesProcessCtrol() { PKNO = CBaseData.NewGuid(), COMPANY_CODE = "", JOB_ORDER_PKNO = jobOrder.PKNO, JOB_ORDER = cmbTask.Text + lbBatchIndex.Content, //工单编号 ITEM_PKNO = jobOrder.ITEM_PKNO, //产品PKNO SUB_JOB_ORDER_NO = "", ROUTING_DETAIL_PKNO = "", //工序编号(工艺路线明细)为空,不按照工艺进行控制 PROCESS_DEVICE_PKNO = mainDevice.PKNO, //加工设备为 主控PLC PROCESS_INDEX = 4, PROCESS_ACTION_TYPE = 0, PROCESS_ACTION_PKNO = (ctrl5 == null) ? "" : ctrl5.PKNO, PROCESS_ACTION_PARAM1_VALUE = "", // PROCESS_ACTION_PARAM2_VALUE = "", // CUR_PRODUCT_CODE_PKNO = "", PROCESS_QTY = preparedQty, COMPLETE_QTY = 0, QUALIFIED_QTY = 0, PROCESS_STATE = 1, CREATION_DATE = DateTime.Now, CREATED_BY = CBaseData.LoginName, USE_FLAG = 1, REMARK = "系统自动形成", }; #endregion end 5 wsPLM.UseService(s => s.AddMesProcessCtrol(step1)); wsPLM.UseService(s => s.AddMesProcessCtrol(step2)); wsPLM.UseService(s => s.AddMesProcessCtrol(step3)); wsPLM.UseService(s => s.AddMesProcessCtrol(step4)); wsPLM.UseService(s => s.AddMesProcessCtrol(step5)); #endregion #endregion //修改产线任务的完成数量 taskLine.PREPARED_QTY += preparedQty; if (taskLine.RUN_STATE == 0) { taskLine.RUN_STATE = 1; } wsPLM.UseService(s => s.UpdatePmTaskLine(taskLine)); cmbTask.ItemsSource = wsPLM.UseService(s => s.GetPmTaskLines("USE_FLAG = 1 AND RUN_STATE < 10 ")) //未完成的 .Where(c => c.TASK_QTY > c.PREPARED_QTY) .OrderBy(c => c.CREATION_DATE) .ToList(); //生产线任务 cmbTask.SelectedIndex = -1; gridProcessInfo.ItemsSource = null; }
private void BtnSave_Click(object sender, RoutedEventArgs e) { //保存 PmTaskLine taskLine = gbItem.DataContext as PmTaskLine; if (taskLine == null) { return; } PmTaskMaster taskMaster = gridItem.SelectedItem as PmTaskMaster; if (taskMaster == null) { return; } #region TODO: 校验 if (string.IsNullOrEmpty(taskLine.LINE_PKNO)) { System.Windows.Forms.MessageBox.Show("请选择产线", "保存", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (string.IsNullOrEmpty(taskLine.TASK_NO)) { System.Windows.Forms.MessageBox.Show("请输入相应的任务编号", "保存", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (taskMaster.TASK_QTY - taskMaster.LINE_QTY < taskLine.TASK_QTY) { System.Windows.Forms.MessageBox.Show("分配的数量大于剩余数量,请重新选择", "保存", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } #endregion taskMaster.LINE_QTY += taskLine.TASK_QTY; if (taskMaster.TASK_QTY <= taskMaster.LINE_QTY) { taskMaster.RUN_STATE = 2; } else { taskMaster.RUN_STATE = 1; } ws.UseService(s => s.UpdatePmTaskMaster(taskMaster)); if (string.IsNullOrEmpty(taskLine.PKNO)) //新增 { taskLine.PKNO = Guid.NewGuid().ToString("N"); taskLine.CREATED_BY = CBaseData.LoginName; taskLine.CREATION_DATE = DateTime.Now; taskLine.LAST_UPDATE_DATE = DateTime.Now; //最后修改日期 ws.UseService(s => s.AddPmTaskLine(taskLine)); } else //修改 { taskLine.UPDATED_BY = CBaseData.LoginName; taskLine.LAST_UPDATE_DATE = DateTime.Now; ws.UseService(s => s.UpdatePmTaskLine(taskLine)); } GetPage(); //重新刷新数据,根据需求是否进行刷新数据 //保存成功 gbItem.IsCollapsed = true; gbItem.Visibility = Visibility.Collapsed; }
private void bSave_Click(object sender, System.Windows.RoutedEventArgs e) { if (cmbRoutingMain.SelectedValue == null) { return; } #region 创建生产过程 //生产线数据 PmTaskLine taskLine = cmbTask.SelectedItem as PmTaskLine; //产品数据 string itemPKNO = cmbProduct.SelectedValue.ToString(); //准备完成 List <MesProcessCtrol> processCtrols = new List <MesProcessCtrol>(); List <RsRoutingDetail> rsRoutingDetails = gridProcessInfo.ItemsSource as List <RsRoutingDetail>; //已创建加工数量 int qty = CheckPlanQTY(taskLine.TASK_NO); decimal preparedQty = 0; decimal.TryParse(tbTaskQty.Text.ToString(), out preparedQty); if (preparedQty <= 0) { MessageBox.Show("请输入正确的任务数量.", "完成生产准备", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } #region 判断加工数量 if (tbTaskQty.Text.ToString() == "") { MessageBox.Show($"请输入数量", "未输入数量", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (int.Parse(tbTaskQty.Text.ToString()) + qty > taskLine.TASK_QTY) { MessageBox.Show($"输入数量超出订单加工数量", "数量超限", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } #endregion MesJobOrder jobOrder = new MesJobOrder() { PKNO = Guid.NewGuid().ToString("N"), COMPANY_CODE = "", LINE_PKNO = taskLine.LINE_PKNO, //产线信息 LINE_TASK_PKNO = taskLine.PKNO, ITEM_PKNO = itemPKNO, JOB_ORDER_NO = taskLine.TASK_NO + lbBatchIndex.Content.ToString(), BATCH_NO = lbBatchIndex.Content.ToString(), ROUTING_DETAIL_PKNO = cmbRoutingMain.SelectedValue.ToString(), TASK_QTY = preparedQty, COMPLETE_QTY = 0, ONLINE_QTY = 0, ONCE_QTY = 0, RUN_STATE = 1, //准备完成 CREATION_DATE = DateTime.Now, CREATED_BY = CBaseData.LoginName, LAST_UPDATE_DATE = DateTime.Now, //最后修改日期 USE_FLAG = 1, REMARK = "", }; List <MesProcessCtrol> newMesProcessCtrols = new List <MesProcessCtrol>(); int iProcessIndex = 0; foreach (RsRoutingDetail item in rsRoutingDetails) { if (string.IsNullOrEmpty(item.WC_ABV)) { MessageBox.Show($"工序【{item.OP_NAME}】加工设备不能为空,请选择加工设备!", "完成生产准备", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } //if (string.IsNullOrEmpty(item.PROCESS_ACTION_PKNO)) //{ // MessageBox.Show($"工序【{item.OP_NAME}】指令动作不能为空,请选择指令动作!", // "完成生产准备", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); // return; //} MesProcessCtrol mesProcess = new MesProcessCtrol(); mesProcess.PKNO = Guid.NewGuid().ToString("N"); mesProcess.COMPANY_CODE = ""; mesProcess.ITEM_PKNO = jobOrder.ITEM_PKNO; mesProcess.JOB_ORDER_PKNO = jobOrder.PKNO; mesProcess.SUB_JOB_ORDER_NO = jobOrder.JOB_ORDER_NO + "-" + iProcessIndex; mesProcess.ROUTING_DETAIL_PKNO = item.PKNO; //工序PKNO mesProcess.PROCESS_DEVICE_PKNO = item.WC_ABV; //设备信息 mesProcess.PROCESS_INDEX = iProcessIndex; mesProcess.PROCESS_ACTION_TYPE = item.PROCESS_ACTION_TYPE; mesProcess.PROCESS_ACTION_PKNO = item.PROCESS_ACTION_PKNO; mesProcess.PROCESS_ACTION_PARAM1_VALUE = item.PROCESS_ACTION_PARAM1_VALUE; //控制参数1 mesProcess.PROCESS_ACTION_PARAM2_VALUE = item.PROCESS_ACTION_PARAM2_VALUE; //控制参数2 mesProcess.PROCESS_QTY = 0; mesProcess.COMPLETE_QTY = 0; mesProcess.QUALIFIED_QTY = 0; mesProcess.PROCESS_STATE = 1; //准备完成 mesProcess.CREATED_BY = CBaseData.LoginName; mesProcess.CREATION_DATE = DateTime.Now; mesProcess.LAST_UPDATE_DATE = DateTime.Now; //最后修改日期 mesProcess.USE_FLAG = 1; iProcessIndex++; newMesProcessCtrols.Add(mesProcess); } wsPLM.UseService(s => s.AddMesJobOrder(jobOrder)); //添加工单 foreach (MesProcessCtrol mesProcessCtrol in newMesProcessCtrols) { wsPLM.UseService(s => s.AddMesProcessCtrol(mesProcessCtrol)); //添加具体工序 } #endregion //修改产线任务的完成数量 taskLine.PREPARED_QTY += preparedQty; if (taskLine.RUN_STATE == 0) { taskLine.RUN_STATE = 1; } wsPLM.UseService(s => s.UpdatePmTaskLine(taskLine)); tbLiftQty.Text = ""; cmbTask.SelectedIndex = -1; gridProcessInfo.ItemsSource = null; tbTaskQty.Text = ""; lbBatchIndex.Content = ""; if (System.Windows.Forms.MessageBox.Show($"确定生成质检计划吗?", @"生成质检信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { QmsCheckParam qmsCheckParam = wsQMS.UseService(s => s.GetQmsCheckParams(" USE_FLAG = 1 AND ITEM_PKNO = " + taskLine.ITEM_PKNO + "")).FirstOrDefault(); if (qmsCheckParam == null) { return; } List <QmsRoutingCheck> qmsRoutingChecks = wsQMS.UseService(s => s.GetQmsRoutingChecks(" USE_FLAG = 1 AND CHECK_PARAM_PKNO = " + qmsCheckParam.PKNO + "")); if (qmsRoutingChecks.Count <= 0) { return; } foreach (var itemRoutingCheck in qmsRoutingChecks) { //创建质检主表内容 if (itemRoutingCheck.CHK_MODE == "首检" || itemRoutingCheck.CHK_MODE == "尾检")//首尾检 { QmsCheckMaster qmsCheckMaster = new QmsCheckMaster(); qmsCheckMaster.PKNO = Guid.NewGuid().ToString("N"); if (itemRoutingCheck.CHK_MODE == "首检") { qmsCheckMaster.CHECK_NO = "ZJ" + jobOrder.JOB_ORDER_NO + (1 * 1000).ToString("0000"); } else { qmsCheckMaster.CHECK_NO = "ZJ" + jobOrder.JOB_ORDER_NO + (2 * 1000).ToString("0000"); } qmsCheckMaster.CHECK_PARAM_PKNO = itemRoutingCheck.CHECK_PARAM_PKNO; qmsCheckMaster.ROUTING_CHECK_PKNO = itemRoutingCheck.PKNO; qmsCheckMaster.CREATION_DATE = DateTime.Now; qmsCheckMaster.LAST_UPDATE_DATE = DateTime.Now; //最后修改日期 qmsCheckMaster.USE_FLAG = 1; qmsCheckMaster.CHECK_STATUS = "1"; qmsCheckMaster.TASKLINE_PKNO = jobOrder.JOB_ORDER_NO;//以工单编号应用为关联 qmsCheckMaster.PROCESS_PKNO = itemRoutingCheck.PROCESS_PKNO; qmsCheckMaster.CHK_MODE = itemRoutingCheck.CHK_MODE; wsQMS.UseService(s => s.AddQmsCheckMaster(qmsCheckMaster)); } else { //todo:未判断首尾检对批次检测影响 if (itemRoutingCheck.CHK_FREQ_VALUE == String.Empty) { return; } int count = int.Parse(jobOrder.TASK_QTY.ToString()) / int.Parse(itemRoutingCheck.CHK_FREQ_VALUE); for (int i = 1; i <= count; i++) { QmsCheckMaster qmsCheckMaster = new QmsCheckMaster(); qmsCheckMaster.PKNO = Guid.NewGuid().ToString("N"); qmsCheckMaster.CHECK_PARAM_PKNO = itemRoutingCheck.CHECK_PARAM_PKNO; qmsCheckMaster.ROUTING_CHECK_PKNO = itemRoutingCheck.PKNO; qmsCheckMaster.CHECK_NO = "ZJ" + jobOrder.JOB_ORDER_NO + ((3 * 1000) + i).ToString("0000"); //3为批次检测,抽检需要另外规则定制生成 qmsCheckMaster.CREATION_DATE = DateTime.Now; qmsCheckMaster.LAST_UPDATE_DATE = DateTime.Now; //最后修改日期 qmsCheckMaster.USE_FLAG = 1; qmsCheckMaster.CHECK_STATUS = "1"; qmsCheckMaster.TASKLINE_PKNO = jobOrder.JOB_ORDER_NO;//以工单编号应用为关联 qmsCheckMaster.PROCESS_PKNO = itemRoutingCheck.PROCESS_PKNO; qmsCheckMaster.CHK_MODE = itemRoutingCheck.CHK_MODE; wsQMS.UseService(s => s.AddQmsCheckMaster(qmsCheckMaster)); } } } } GetPage(); }