private void BtnAdd_Click(object sender, RoutedEventArgs e) { //新增 #region //TODO: 校验,空的类绑定到界面的DataContent FmsActionControl actionControl = new FmsActionControl { PKNO = "", ASSET_CODE = "", START_CONDITION_TAG_PKNO = "", START_CONDITION_VALUE = "", EXECUTE_TAG_PKNO = "", EXECUTE_WRITE_VALUE = "", EXECUTE_PARAM1_TAG_PKNO = "", EXECUTE_PARAM2_TAG_PKNO = "", FINISH_CONDITION_TAG_PKNO = "", FINISH_CONDITION_VALUE = "", }; gbItem.DataContext = actionControl; #endregion dictBasic.Header = $"{HeaderName} 【新增】"; gbItem.IsCollapsed = false; gbItem.Visibility = Visibility.Visible; }
public FmsActionControl GetFmsActionControlById(string Id) { using (IFmsActionControlBLL FmsActionControlBLL = BLLContainer.Resolve <IFmsActionControlBLL>()) { FmsActionControl model = FmsActionControlBLL.GetFirstOrDefault(Id); return(model); } }
public bool AddFmsActionControl(FmsActionControl mFmsActionControl) { if (mFmsActionControl == null) { return(false); } using (IFmsActionControlBLL FmsActionControlBLL = BLLContainer.Resolve <IFmsActionControlBLL>()) { return(FmsActionControlBLL.Add(mFmsActionControl)); } }
public bool DelFmsActionControl(string Id) { using (IFmsActionControlBLL FmsActionControlBLL = BLLContainer.Resolve <IFmsActionControlBLL>()) { try { FmsActionControl item = FmsActionControlBLL.GetFirstOrDefault(Id); return(FmsActionControlBLL.Delete(item)); } catch { return(false); } } }
private void BtnItemCopy_Click(object sender, RoutedEventArgs e) { FmsActionFormulaMain m_MainInfo = tvMain.SelectedItem as FmsActionFormulaMain; if ((m_MainInfo == null) || (string.IsNullOrEmpty(m_MainInfo.PKNO))) { return; } List <FmsActionFormulaDetail> details = ws.UseService(s => s.GetFmsActionFormulaDetails("FORMULA_CODE = " + m_MainInfo.FORMULA_CODE + "")); List <FmsActionFormulaDetail> newFormulaDetails = new List <FmsActionFormulaDetail>(); List <FmsActionControl> newFmsActionControls = new List <FmsActionControl>(); FmsActionFormulaMain newFormulaMain = m_MainInfo; newFormulaMain.PKNO = Guid.NewGuid().ToString("N"); newFormulaMain.FORMULA_NAME = "轮毂生产5(只下料,中间件检测)"; newFormulaMain.FORMULA_CODE = "轮毂生产5 new"; foreach (FmsActionFormulaDetail item in details) { FmsActionControl action = ws.UseService(s => s.GetFmsActionControlById(item.PROCESS_ACTION_PKNO)); FmsActionControl newActionControlaction = action; #region 处理actionControl newActionControlaction.PKNO = Guid.NewGuid().ToString("N"); newActionControlaction.START_CONDITION_TAG_PKNO = GetTagPkno(newActionControlaction.START_CONDITION_TAG_PKNO); newActionControlaction.EXECUTE_PARAM1_TAG_PKNO = GetTagPkno(newActionControlaction.EXECUTE_PARAM1_TAG_PKNO); newActionControlaction.EXECUTE_PARAM2_TAG_PKNO = GetTagPkno(newActionControlaction.EXECUTE_PARAM2_TAG_PKNO); newActionControlaction.EXECUTE_TAG_PKNO = GetTagPkno(newActionControlaction.EXECUTE_TAG_PKNO); newActionControlaction.FINISH_CONDITION_TAG_PKNO = GetTagPkno(newActionControlaction.FINISH_CONDITION_TAG_PKNO); #endregion FmsActionFormulaDetail newActionFormulaDetail = item; newActionFormulaDetail.PKNO = Guid.NewGuid().ToString("N"); newActionFormulaDetail.FORMULA_CODE = newFormulaMain.FORMULA_CODE; newActionFormulaDetail.PROCESS_ACTION_PKNO = newActionControlaction.PKNO; newFormulaDetails.Add(newActionFormulaDetail); newFmsActionControls.Add(newActionControlaction); } foreach (var variable2 in newFormulaDetails) { ws.UseService(s => s.AddFmsActionFormulaDetail(variable2)); } ws.UseService(s => s.AddFmsActionFormulaMain(newFormulaMain)); foreach (var variable1 in newFmsActionControls) { ws.UseService(s => s.AddFmsActionControl(variable1)); } }
/// <summary> /// 检验当前工序状态 /// </summary> /// <returns></returns> public bool CheckState() { firstProcess = theJobProcessCtrols.OrderBy(c => c.PROCESS_INDEX).ThenBy(c => c.CREATION_DATE).FirstOrDefault(c => c.USE_FLAG == 1); //第一道工序可用工序 curProcess = usefulProcessCtrols.OrderBy(c => c.PROCESS_INDEX).ThenBy(c => c.CREATION_DATE).FirstOrDefault(c => c.PROCESS_STATE >= 0); //当前执行的工序 if (curProcess == null) { string sErrorInfo = $"没有可用的未执行工序控制信息"; if (mesJobOrder.PROCESS_INFO != sErrorInfo) { mesJobOrder.PROCESS_INFO = sErrorInfo; //生产执行信息 PServiceEvent?.Invoke(d => d.UpdateMesJobOrder(mesJobOrder)); } return(false); } if (curProcess.PROCESS_STATE == 0) { string sErrorInfo = $"当前工序尚未准备好,请准备好该工序."; if (mesJobOrder.PROCESS_INFO != sErrorInfo) { mesJobOrder.PROCESS_INFO = sErrorInfo; //生产执行信息 PServiceEvent?.Invoke(d => d.UpdateMesJobOrder(mesJobOrder)); } return(false); } bFirstProcess = (curProcess.PROCESS_INDEX == firstProcess.PROCESS_INDEX); //是否为第一道工序 bLastProcess = (curProcess.PROCESS_INDEX == usefulProcessCtrols.LastOrDefault().PROCESS_INDEX); //是否为最后一个工序 ctrolName = curProcess.PROCESS_CTROL_NAME ?? curProcess.PROCESS_INDEX.ToString(); //过程控制名称 curAction = actionControls.FirstOrDefault(c => c.PKNO == curProcess.PROCESS_ACTION_PKNO); //当前动作 if (curAction == null) //空动作的工序,手动完成 { string sErrorInfo = $"当前生产过程[{ctrolName}]没有动作控制指令,须手动完成."; if (mesJobOrder.PROCESS_INFO != sErrorInfo) { mesJobOrder.PROCESS_INFO = sErrorInfo; //生产执行信息 PServiceEvent?.Invoke(d => d.UpdateMesJobOrder(mesJobOrder)); } Console.WriteLine(sErrorInfo); return(false); } return(true); }
public bool DelFmsActionControls(string[] Ids) { using (IFmsActionControlBLL FmsActionControlBLL = BLLContainer.Resolve <IFmsActionControlBLL>()) { try { List <FmsActionControl> entitys = new List <FmsActionControl>(); foreach (string id in Ids) { FmsActionControl item = FmsActionControlBLL.GetFirstOrDefault(id); entitys.Add(item); } return(FmsActionControlBLL.Delete(entitys)); } catch { return(false); } } }
private void CmbActionControl_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (gbItem.Visibility != Visibility.Visible) { return; } FmsActionFormulaDetail detail = gbItem.DataContext as FmsActionFormulaDetail; if ((detail == null) || (!string.IsNullOrEmpty(detail.PROCESS_DEVICE_PKNO))) { return; } FmsActionControl action = cmbActionControl.SelectedItem as FmsActionControl; detail.PROCESS_DEVICE_PKNO = action?.ASSET_CODE; }
private void BtnSave_Click(object sender, RoutedEventArgs e) { //保存 AmAssetMasterN asset = cmbAssetInfo.SelectedItem as AmAssetMasterN; FmsActionControl actionControl = gbItem.DataContext as FmsActionControl; if (actionControl == null) { return; } #region //TODO: 校验;保存 if (asset == null) { WPFMessageBox.ShowError("请选择设备!", "保存"); return; } if (string.IsNullOrEmpty(actionControl.ACTION_NAME)) { WPFMessageBox.ShowError("请输入指令动作名称!", "保存"); return; } if (actionControl.PKNO == "") { actionControl.PKNO = CBaseData.NewGuid(); _fmsClient.UseService(s => s.AddFmsActionControl(actionControl)); } else { _fmsClient.UseService(s => s.UpdateFmsActionControl(actionControl)); } WPFMessageBox.ShowTips("指令动作配置信息已保存。", "保存"); #endregion GetPage(); //重新刷新数据,根据需求是否进行刷新数据 //保存成功 gbItem.IsCollapsed = true; gbItem.Visibility = Visibility.Collapsed; BindHelper.SetDictDataBindingGridItem(gbItem, gridItem); }
private void GridItem_SelectionChanged(object sender, GridSelectionChangedEventArgs e) { FmsActionFormulaMain main = tvMain.SelectedItem as FmsActionFormulaMain; if ((main == null) || (string.IsNullOrEmpty(main.PKNO))) { return; } FmsActionFormulaDetail detail = gridItem.SelectedItem as FmsActionFormulaDetail; if (detail == null) { return; } BtnItemUse.Content = (detail.USE_FLAG == 1) ? "禁用" : "启用"; FmsActionControl action = ws.UseService(s => s.GetFmsActionControlById(detail.PROCESS_ACTION_PKNO)); if (action == null) { cmbCondition.SelectedValue = null; tbConditionValue.Text = ""; cmbExecute.SelectedValue = null; tbExecuteValue.Text = ""; cmbParam1.SelectedValue = null; cmbParam2.SelectedValue = null; cmbFinish.SelectedValue = null; tbFinishValue.Text = ""; } else { cmbCondition.SelectedValue = action.START_CONDITION_TAG_PKNO; tbConditionValue.Text = action.START_CONDITION_VALUE; cmbExecute.SelectedValue = action.EXECUTE_TAG_PKNO; tbExecuteValue.Text = action.EXECUTE_WRITE_VALUE; cmbParam1.SelectedValue = action.EXECUTE_PARAM1_TAG_PKNO; cmbParam2.SelectedValue = action.EXECUTE_PARAM2_TAG_PKNO; cmbFinish.SelectedValue = action.FINISH_CONDITION_TAG_PKNO; tbFinishValue.Text = action.FINISH_CONDITION_VALUE; } }
private void BtnDel_Click(object sender, RoutedEventArgs e) { //删除 FmsActionControl actionControl = gridItem.SelectedItem as FmsActionControl; if (actionControl == null) { return; } if ( WPFMessageBox.ShowConfirm($"确定要删除 指令动作【{actionControl.ACTION_NAME}】的配置信息吗?", "删除") != WPFMessageBoxResult.OK) { return; } _fmsClient.UseService(s => s.DelFmsActionControl(actionControl.PKNO)); WPFMessageBox.ShowTips("指令动作配置已删除!", "删除提示"); GetPage(); //重新刷新数据,根据需求是否进行刷新数据 }
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 BtnItemSave_Click(object sender, RoutedEventArgs e) { FmsActionFormulaMain main = tvMain.SelectedItem as FmsActionFormulaMain; if ((main == null) || (string.IsNullOrEmpty(main.PKNO))) { return; } FmsActionFormulaDetail detail = gbItem.DataContext as FmsActionFormulaDetail; if (detail == null) { return; } #region 校验 if (string.IsNullOrEmpty(detail.FORMULA_CODE)) { WPFMessageBox.ShowWarring("请选择配方主信息。", "保存"); return; } if (string.IsNullOrEmpty(detail.FORMULA_DETAIL_NAME)) { WPFMessageBox.ShowWarring("请输入配方明细名称。", "保存"); return; } #endregion if (string.IsNullOrEmpty(detail.PKNO)) //新增 { detail.PKNO = CBaseData.NewGuid(); FmsActionControl action = new FmsActionControl() { PKNO = CBaseData.NewGuid(), ACTION_NAME = detail.FORMULA_DETAIL_NAME, ACTION_TYPE = detail.PROCESS_ACTION_TYPE.ToString(), START_CONDITION_TAG_PKNO = string.IsNullOrEmpty(cmbCondition.Text)? "": cmbCondition.SelectedValue.ToString(), START_CONDITION_VALUE = tbConditionValue.Text, EXECUTE_TAG_PKNO = string.IsNullOrEmpty(cmbExecute.Text) ? "" : cmbExecute.SelectedValue.ToString(), EXECUTE_WRITE_VALUE = tbExecuteValue.Text, EXECUTE_PARAM1_TAG_PKNO = string.IsNullOrEmpty(cmbParam1.Text) ? "" : cmbParam1.SelectedValue.ToString(), EXECUTE_PARAM2_TAG_PKNO = string.IsNullOrEmpty(cmbParam2.Text) ? "" : cmbParam2.SelectedValue.ToString(), FINISH_CONDITION_TAG_PKNO = string.IsNullOrEmpty(cmbFinish.Text) ? "" : cmbFinish.SelectedValue.ToString(), FINISH_CONDITION_VALUE = tbFinishValue.Text, }; detail.PROCESS_ACTION_PKNO = action.PKNO; ws.UseService(s => s.AddFmsActionControl(action)); ws.UseService(s => s.AddFmsActionFormulaDetail(detail)); //重新刷新数据 List <FmsActionFormulaDetail> details = ws.UseService(s => s.GetFmsActionFormulaDetails($"FORMULA_CODE = {main.FORMULA_CODE} AND USE_FLAG >= 0")) .OrderBy(c => c.PROCESS_INDEX) .ToList(); gridItem.ItemsSource = details; } else //修改 { FmsActionControl action = ws.UseService(s => s.GetFmsActionControlById(detail.PROCESS_ACTION_PKNO)); if (action == null) { action = new FmsActionControl() { PKNO = CBaseData.NewGuid(), ACTION_NAME = detail.FORMULA_DETAIL_NAME, ACTION_TYPE = detail.PROCESS_ACTION_TYPE.ToString(), START_CONDITION_TAG_PKNO = string.IsNullOrEmpty(cmbCondition.Text) ? "" : cmbCondition.SelectedValue.ToString(), START_CONDITION_VALUE = tbConditionValue.Text, EXECUTE_TAG_PKNO = string.IsNullOrEmpty(cmbExecute.Text) ? "" : cmbExecute.SelectedValue.ToString(), EXECUTE_WRITE_VALUE = tbExecuteValue.Text, EXECUTE_PARAM1_TAG_PKNO = string.IsNullOrEmpty(cmbParam1.Text) ? "" : cmbParam1.SelectedValue.ToString(), EXECUTE_PARAM2_TAG_PKNO = string.IsNullOrEmpty(cmbParam2.Text) ? "" : cmbParam2.SelectedValue.ToString(), FINISH_CONDITION_TAG_PKNO = string.IsNullOrEmpty(cmbFinish.Text) ? "" : cmbFinish.SelectedValue.ToString(), FINISH_CONDITION_VALUE = tbFinishValue.Text, }; detail.PROCESS_ACTION_PKNO = action.PKNO; ws.UseService(s => s.AddFmsActionControl(action)); } else //修改控制 { action.ACTION_NAME = detail.FORMULA_DETAIL_NAME; action.ACTION_TYPE = detail.PROCESS_ACTION_TYPE.ToString(); action.START_CONDITION_TAG_PKNO = string.IsNullOrEmpty(cmbCondition.Text) ? "" : cmbCondition.SelectedValue.ToString(); action.START_CONDITION_VALUE = tbConditionValue.Text; action.EXECUTE_TAG_PKNO = string.IsNullOrEmpty(cmbExecute.Text) ? "" : cmbExecute.SelectedValue.ToString(); action.EXECUTE_WRITE_VALUE = tbExecuteValue.Text; action.EXECUTE_PARAM1_TAG_PKNO = string.IsNullOrEmpty(cmbParam1.Text) ? "" : cmbParam1.SelectedValue.ToString(); action.EXECUTE_PARAM2_TAG_PKNO = string.IsNullOrEmpty(cmbParam2.Text) ? "" : cmbParam2.SelectedValue.ToString(); action.FINISH_CONDITION_TAG_PKNO = string.IsNullOrEmpty(cmbFinish.Text) ? "" : cmbFinish.SelectedValue.ToString(); action.FINISH_CONDITION_VALUE = tbFinishValue.Text; ws.UseService(s => s.UpdateFmsActionControl(action)); } ws.UseService(s => s.UpdateFmsActionFormulaDetail(detail)); } //保存成功 gbItem.IsCollapsed = true; gbItem.Visibility = Visibility.Collapsed; BindHelper.SetDictDataBindingGridItem(gbItem, gridItem); }