Files
SamplePreSystem-CS/SamplePreSystem.UI/ViewModel/SopManager/SopMangerViewModel.cs
2026-04-30 11:34:41 +08:00

377 lines
11 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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");
}
/// <summary>
/// sop列表
/// </summary>
public List<DataGroup> StandardGroups { get; set; } = new List<DataGroup>();
/// <summary>
/// sop列表
/// </summary>
private List<sys_standard_action_ext> _sopList = new List<sys_standard_action_ext>();
public List<sys_standard_action_ext> SopList
{
get { return _sopList; }
set {
SetProperty(ref _sopList, value);
}
}
/// <summary>
/// 选择的动作
/// </summary>
private sys_standard_action_ext _selectItem;
public sys_standard_action_ext SelectItem
{
get { return _selectItem; }
set {
SetProperty(ref _selectItem, value);
OnSelectedActionChanged();
}
}
/// <summary>
/// 选择的参数
/// </summary>
private sys_standard_action_parm_ext _selectParamItem;
public sys_standard_action_parm_ext SelectParamItem
{
get { return _selectParamItem; }
set
{
SetProperty(ref _selectParamItem, value);
}
}
/// <summary>
/// 动作参数列表
/// </summary>
private List<sys_standard_action_parm_ext> _actionParamList = new List<sys_standard_action_parm_ext>();
public List<sys_standard_action_parm_ext> ActionParamList
{
get { return _actionParamList; }
set {
SetProperty(ref _actionParamList, value);
}
}
private void OnSelectedActionChanged()
{
if (SelectItem == null) return;
//获取动作下的参数
List<sys_standard_action_parm_ext> 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<TreeListItem> 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<DataGroup> ActionGroups { get; set; } = new List<DataGroup>();
/// <summary>
/// 初始化动作字典
/// </summary>
public void InitActionData()
{
//获取动作
List<sys_action_ext> 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);
}
/// <summary>
/// 拖拽新增动作
/// </summary>
/// <param name="dropItem"></param>
[RelayCommand]
public void AddDragSopAction(TreeListItem dropItem)
{
List<sys_standard_action_ext> 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);
}
}
/// <summary>
/// 移除动作
/// </summary>
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);
}
}
/// <summary>
/// 上移动作操作
/// </summary>
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();
}
/// <summary>
/// 下移动作操作
/// </summary>
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();
}
/// <summary>
/// 更新序号
/// </summary>
public void UpdateSeqno()
{
//List<sys_standard_action_ext> sopList = gridActions.DataSource as List<sys_standard_action_ext>;
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<sys_standard_action_parm> list = uCActionParam.GetEditVal();
//if (list == null) return;
foreach (var item in ActionParamList)
{
sopManagerBll.updateStandardActionParm(item);
}
MessageBox.Show("修改成功!");
OnSelectedActionChanged();
}
}
/// <summary>
/// 标准选择命令
/// </summary>
/// <param name="selectItem"></param>
[RelayCommand]
public void StandSelectedItemChanged(object obj)
{
TreeListItem selectItem = obj as TreeListItem;
if (selectItem == null) return;
GetSopData(selectItem.ID);
}
}
}