using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Models.Const; using Models.Models; using SamplePre.Models; using SamplePre.Models.Ext; using SamplePre.ProcessBll.BLL; using SamplePre.UIWpf.ParamManager.chirld; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; namespace SamplePreSystem.UI.ViewModel.SopManager { public partial class SopMangerViewModel : ObservableObject { SOPManagerBll sopManagerBll = new SOPManagerBll(); SystemBll systemBll = new SystemBll(); public SopMangerViewModel() { //初始化标准 InitStandardData(); //初始化动作 InitActionData(); //sop GetSopData("111"); } /// /// sop列表 /// public List StandardGroups { get; set; } = new List(); /// /// sop列表 /// private List _sopList = new List(); public List SopList { get { return _sopList; } set { SetProperty(ref _sopList, value); } } /// /// 选择的动作 /// private sys_standard_action_ext _selectItem; public sys_standard_action_ext SelectItem { get { return _selectItem; } set { SetProperty(ref _selectItem, value); OnSelectedActionChanged(); } } /// /// 选择的参数 /// private sys_standard_action_parm_ext _selectParamItem; public sys_standard_action_parm_ext SelectParamItem { get { return _selectParamItem; } set { SetProperty(ref _selectParamItem, value); } } /// /// 动作参数列表 /// private List _actionParamList = new List(); public List ActionParamList { get { return _actionParamList; } set { SetProperty(ref _actionParamList, value); } } private void OnSelectedActionChanged() { if (SelectItem == null) return; //获取动作下的参数 List paramList = sopManagerBll.GetStrandActionParamByStrandId(SelectItem.standard_id); ActionParamList = paramList.Where(p => p.action_id == SelectItem.process_id && p.action_seqno == SelectItem.process_no).ToList(); } public void InitStandardData() { SystemConst.dictDatas = systemBll.QueryDictData(); List treeListItems = sopManagerBll.GetStandardData(); var group = treeListItems.Where(p=>p.ParentID == "0").ToList(); foreach (TreeListItem item in group) { DataGroup sopGroup = new DataGroup(); sopGroup.Id = item.ID; sopGroup.SopName = item.DisplayText; sopGroup.ListItems = treeListItems.Where(p => p.ParentID == item.ID).ToList(); StandardGroups.Add(sopGroup); } } public List ActionGroups { get; set; } = new List(); /// /// 初始化动作字典 /// public void InitActionData() { //获取动作 List actions = sopManagerBll.QuerySysAction(); //拼装组 var groups = actions.GroupBy(p => new { p.action_unitname, p.action_unit }).ToList(); foreach (var item in groups) { DataGroup sopGroup = new DataGroup(); sopGroup.Id = item.Key.action_unit; sopGroup.SopName = item.Key.action_unitname; var itemList = actions.Where(p => p.action_unit == item.Key.action_unit).ToList(); foreach(var it in itemList) { sopGroup.ListItems.Add(new TreeListItem() { ID = it.id, DisplayText = it.action_name, ParentID = item.Key.action_unit }); } ActionGroups.Add(sopGroup); } } public string m_standradId; public void GetSopData(string standradId) { m_standradId = standradId; SopList = sopManagerBll.QueryStandardProcessByStandardId(standradId); } /// /// 拖拽新增动作 /// /// [RelayCommand] public void AddDragSopAction(TreeListItem dropItem) { List actionList = SopList; if (string.IsNullOrEmpty(m_standradId)) return; if (dropItem != null && actionList != null) { int maxSeqno = 0; //取最后的动作序号+1; if (actionList.Count > 0) { maxSeqno = actionList[actionList.Count - 1].process_no + 1; } sys_standard_action procemodel = new sys_standard_action() { id = Guid.NewGuid().ToString(), process_id = dropItem.ID, //process_name = process.process_name, process_no = maxSeqno,//actionList.Count + 1, standard_id = m_standradId }; //保存标准动作表、动作参数表 sopManagerBll.SaveStandardAction_param(procemodel); //======================================================= //查询标准下的SOP GetSopData(m_standradId); } } /// /// 移除动作 /// public void RemoveAction() { sys_standard_action_ext pro = SelectItem; //this.gridView1.GetRow(rows[0]) as sys_standard_action_ext; if (pro == null) return; if (MessageBox.Show($"确定移除:{pro.action_name}", "提示", MessageBoxButton.OKCancel) == MessageBoxResult.OK) { //移除标准下的动作 sopManagerBll.removeStandAction(pro); //查询标准下的SOP GetSopData(pro.standard_id); } } /// /// 上移动作操作 /// public void UpMove() { sys_standard_action_ext[] temp_list = new sys_standard_action_ext[SopList.Count]; SopList.CopyTo(temp_list); for (int i = 0;i < temp_list.Length;i++) { if (i != 0 && temp_list[i] == SelectItem) { var item = temp_list[i - 1]; temp_list[i - 1] = SelectItem; temp_list[i] = item; break; } } SopList = temp_list.ToList(); } /// /// 下移动作操作 /// public void DownMove() { sys_standard_action_ext[] temp_list = new sys_standard_action_ext[SopList.Count]; SopList.CopyTo(temp_list); for (int i = 0; i < temp_list.Length; i++) { if (i < temp_list.Length - 1 && temp_list[i] == SelectItem) { var item = temp_list[i + 1]; temp_list[i + 1] = SelectItem; temp_list[i] = item; break; } } SopList = temp_list.ToList(); } /// /// 更新序号 /// public void UpdateSeqno() { //List sopList = gridActions.DataSource as List; int seqno = 1; string standradId = ""; foreach (var action in SopList) { //sys_standard_action_ext action = tree_Actions.GetDataRecordByNode(node) as sys_standard_action_ext; standradId = action.standard_id; action.new_action_seqno = seqno; sopManagerBll.UpdateActionSeqno(action); seqno++; } GetSopData(standradId); } public void AddParamShow() { if (SelectItem != null) { SelectParmListWindow frm = new SelectParmListWindow(SelectItem); if(frm.ShowDialog() == true) { OnSelectedActionChanged(); } } } public void RemoveParam() { if (SelectItem != null && SelectParamItem != null) { if (MessageBox.Show($"是否移除【{SelectParamItem.title}】参数?", "提示", MessageBoxButton.OKCancel) == MessageBoxResult.OK) { sopManagerBll.removeActionParmByParamId(SelectItem.standard_id, SelectItem.process_id, SelectItem.process_no, SelectParamItem.parm_id); OnSelectedActionChanged(); } } } internal void AddEidtParam() { if(ActionParamList.Count > 0) { //List list = uCActionParam.GetEditVal(); //if (list == null) return; foreach (var item in ActionParamList) { sopManagerBll.updateStandardActionParm(item); } MessageBox.Show("修改成功!"); OnSelectedActionChanged(); } } /// /// 标准选择命令 /// /// [RelayCommand] public void StandSelectedItemChanged(object obj) { TreeListItem selectItem = obj as TreeListItem; if (selectItem == null) return; GetSopData(selectItem.ID); } } }