• 公用方法封装


     /// <summary>
        /// 公用方法
        /// </summary>
        public class DemPublic
        {
            private const string BEGIN = "Begin";
            private const string END = "End";
    
            /// <summary>
            /// 将一个DataGridView导入,默认导出Excel(YS)
            /// </summary>
            /// <param name="dgv"></param>
            /// <param name="typ">导出类型默认导出Excel</param>
            public static bool ExportDataToExcel(MzGridControl dgv, GridExportType typ = GridExportType.Excel)
            {
                //string fileName = "";
                string saveFileName = "";
                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.DefaultExt = "xls";
                saveDialog.Filter = "Excel文件|*.xls";
                //saveDialog.FileName = fileName;
                if (saveDialog.ShowDialog() == DialogResult.OK)
                {
                    saveFileName = saveDialog.FileName;
                    dgv.GridExport(saveFileName, typ);
                    return true;
                }
                return false;
            }
    
    
            /// <summary>
            /// ComBox输入非下拉数据源清空
            /// </summary>
            public static void SetCmbNonInclusiveEmptying(MzComboBox cmb)
            {
                if (cmb.Items.Count <= 0)
                {
                    cmb.Value = null;
                    return;
                }
                if (!cmb.IsItemInList())
                {
                    cmb.Value = null;
                }
            }
            /// <summary>
            /// 设置节点颜色及选中颜色(YS)
            /// </summary>
            /// <param name="rNode">节点</param>
            /// <param name="color">颜色</param>
            public static void SetNodesColour(UltraTreeNode rNode, Color color)
            {
                rNode.Override.NodeAppearance.ForeColor = color;
                rNode.Override.ActiveNodeAppearance.ForeColor = color;
            }
    
            /// <summary>
            /// 重置节点颜色及选中颜色(YS)
            /// </summary>
            /// <param name="rNode">节点</param>
            public static void ResetNodesColour(UltraTreeNode rNode)
            {
                rNode.Override.NodeAppearance.ResetForeColor();
                rNode.Override.ActiveNodeAppearance.ResetForeColor();
            }
            /// <summary>
            /// 自动初始化配置列
            /// </summary>
            /// <param name="frmName">窗口名称</param>
            /// <param name="tabName">列表名称(适用于同一窗口多个列表,如果只有一个列表可以为空)</param>
            /// <param name="funcId">功能ID</param>
            /// <param name="usrId">用户ID</param>
            /// <returns></returns>
            public static List<Ctrls.Grid.GridColumn> InitPubColumns(string frmName, string tabName, string funcId, string usrId)
            {
                List<GridCol> gridCols = ResourceBus.Current[ResourceBus.GRIDCOL_LIST] as List<GridCol>;
                if (gridCols != null)
                {
                    if (string.IsNullOrEmpty(tabName))
                    {
                        gridCols = gridCols.Where(m => m.GcForm == frmName && m.GcOwner == funcId).ToList();
                    }
                    else
                    {
                        gridCols = gridCols.Where(m => m.GcForm == frmName && m.GcOwner == funcId && m.GcGrid == tabName).ToList();
                    }
                }
                GridCol gridCol = new GridCol();
                //先从用户中取,否则取第一个
                if (gridCols != null && gridCols.Count > 0)
                {
                    gridCol = gridCols.FirstOrDefault(m => m.UsrId == usrId);
                    if (gridCol == null)
                    {
                        gridCol = gridCols[0];
                    }
                }
                List<Ctrls.Grid.GridColumn> columns = new List<Ctrls.Grid.GridColumn>();
                if (gridCol != null && !string.IsNullOrEmpty(gridCol.GcColSet))
                {
                    //列配置串
                    //columnCfg = gridCol.GcColSet;
                    columns = Common.Serializer.Deserialize<List<Ctrls.Grid.GridColumn>>(gridCol.GcColSet);
                }
                return columns;
            }
    
            /// <summary>  
            /// 得到本周第一天(以星期一为第一天)  
            /// </summary>  
            /// <param name="datetime"></param>  
            /// <returns></returns>  
            public static DateTime GetWeekFirstDayMon(DateTime datetime)
            {
                //星期一为第一天  
                int weeknow = Convert.ToInt32(datetime.DayOfWeek);
                //因为是以星期一为第一天,所以要判断weeknow等于0时,要向前推6天。  
                weeknow = (weeknow == 0 ? (7 - 1) : (weeknow - 1));
                int daydiff = (-1) * weeknow;
                //本周第一天  
                return datetime.AddDays(daydiff).Date;
            }
    
            /// <summary>  
            /// 得到本周最后一天(以星期天为最后一天)  
            /// </summary>  
            /// <param name="datetime"></param>  
            /// <returns></returns>  
            public static DateTime GetWeekLastDaySun(DateTime datetime)
            {
                //星期天为最后一天  
                int weeknow = Convert.ToInt32(datetime.DayOfWeek);
                weeknow = (weeknow == 0 ? 7 : weeknow);
                int daydiff = (7 - weeknow);
                //本周最后一天  
                return datetime.AddDays(daydiff).Date.AddDays(1).AddSeconds(-1);
            }
    
            /// <summary>
            /// 根据RelativeTimeType类型获取开始时间
            /// </summary>
            /// <param name="nowTime">当前时间</param>
            /// <param name="rtype">类型</param>
            /// <returns></returns>
            public static DateTime GetBeginTime(DateTime nowTime, string rtype)
            {
                if (rtype == "Month")
                {
                    return nowTime.AddDays(1 - nowTime.Day).Date;
                }
                else if (rtype == "Week")
                {
                    return GetWeekFirstDayMon(nowTime);
                }
                else if (rtype == "Today")
                {
                    return nowTime.Date;
                }
                else if (rtype == "Yesterday")
                {
                    return nowTime.AddDays(-1).Date;
                }
                else if (rtype == "BeforeYesterday")
                {
                    return nowTime.AddDays(-2).Date;
                }
                else if (rtype.Contains(","))
                {
                    string[] arr = rtype.Split(',');
                    return DateTime.Parse(arr[0]);
                }
                else
                {
                    return nowTime.AddDays(-Convert.ToDouble(rtype) + 1).Date;
                }
            }
            /// <summary>
            /// 根据RelativeTimeType类型获取截止时间
            /// </summary>
            /// <param name="nowTime">当前时间</param>
            /// <param name="rtype">类型</param>
            /// <returns></returns>
            public static DateTime GetEndTime(DateTime nowTime, string rtype)
            {
                if (rtype == "Month")
                {
                    return nowTime.AddDays(1 - nowTime.Day).Date.AddMonths(1).AddSeconds(-1);
                }
                else if (rtype == "Week")
                {
                    return GetWeekLastDaySun(nowTime);
                }
                else if (rtype == "Today")
                {
                    return nowTime.Date.AddDays(1).AddSeconds(-1);
                }
                else if (rtype == "Yesterday")
                {
                    return nowTime.AddDays(-1).Date.AddDays(1).AddSeconds(-1);
                }
                else if (rtype == "BeforeYesterday")
                {
                    return nowTime.AddDays(-2).Date.AddDays(1).AddSeconds(-1);
                }
                else if (rtype.Contains(","))
                {
                    string[] arr = rtype.Split(',');
                    if (string.IsNullOrEmpty(arr[1]))
                    {
                        return nowTime.Date.AddDays(10000).AddSeconds(-1);
                    }
                    return DateTime.Parse(arr[1]);
                }
                else
                {
                    return nowTime.Date.AddDays(1).AddSeconds(-1);
                }
            }
    
            /// <summary>
            /// 获取下拉控件选中项的ID
            /// </summary>
            /// <param name="cmb"></param>
            /// <returns></returns>
            private string GetSelectedValues(MzComboBox cmb)
            {
                string values = string.Empty;
                if (cmb.CheckedItems.Count > 0)
                {
                    foreach (var item in cmb.CheckedItems)
                    {
                        values += "'" + item.DataValue + "',";
                    }
                }
                var vals = values.Remove(values.Length - 1);
                return vals;
            }
    
            /// <summary>
            /// 获取下拉控件选中项的Name
            /// </summary>
            /// <param name="cmb"></param>
            /// <returns></returns>
            private string GetSelectedNames(MzComboBox cmb)
            {
                string names = string.Empty;
                if (cmb.CheckedItems.Count > 0)
                {
                    foreach (var item in cmb.CheckedItems)
                    {
                        names += "'" + item.DisplayText + "',";
                    }
                }
                var values = names.Remove(names.Length - 1);
                return values;
            }
    
            /// <summary>
            /// 对List进行随机排序 
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="ListT"></param>
            /// <returns></returns>
            public List<T> RandomSortList<T>(List<T> ListT)
            {
                Random random = new Random();
                List<T> newList = new List<T>();
                foreach (T item in ListT)
                {
                    newList.Insert(random.Next(newList.Count), item);
                }
                return newList;
            }
    
            /// <summary>
            /// 设置时间控件集合
            /// </summary>
            /// <param name="value"></param>
            /// <param name="tl"></param>
            public static void SetTimeList(string value, MzTimeList tl)
            {
                if (value == RelativeTimeType.Month.ToString())
                {
                    tl.InitTime(RelativeTimeType.Month);
                }
                else if (value == RelativeTimeType.Week.ToString())
                {
                    tl.InitTime(RelativeTimeType.Week);
                }
                else if (value == RelativeTimeType.Today.ToString())
                {
                    tl.InitTime(RelativeTimeType.Today);
                }
                else if (value == RelativeTimeType.Yesterday.ToString())
                {
                    tl.InitTime(RelativeTimeType.Yesterday);
                }
                else if (value == RelativeTimeType.BeforeYesterday.ToString())
                {
                    tl.InitTime(RelativeTimeType.BeforeYesterday);
                }
                else if (value.Contains(","))
                {
                    string[] arr = value.Split(',');
                    tl.InitTime(RelativeTimeType.AssignDate, DateTime.Parse(arr[0]), DateTime.Parse(arr[1]));
                }
                else
                {
                    tl.InitTime(RelativeTimeType.AssignDay, null, null, Convert.ToInt32(value));
                }
            }
    
            ///// <summary>
            /// 列表控件定位下一个光标地址
            /// </summary>
            /// <param name = "dgv" ></ param >
            /// < param name="index"></param>
            /// <param name = "cloName" ></ param >
            /// < param name="isNotNull"></param>
            public static void NextFocus(MzGridControl dgv, int index, string cloName, bool isNotNull)
            {
                if (isNotNull)
                {
                    string cellValue = dgv.Grid.ActiveCell?.Text;
                    if (!string.IsNullOrEmpty(cellValue))
                    {
                        dgv.Grid.ActiveRow = dgv.Grid.Rows[index];
                        dgv.Grid.ActiveCell = dgv.Grid.ActiveRow.Cells[cloName];
                        dgv.Grid.Focus();
                        dgv.Grid.PerformAction(UltraGridAction.EnterEditMode, false, false);
                    }
                }
                else
                {
                    dgv.Grid.ActiveRow = dgv.Grid.Rows[index];
                    dgv.Grid.ActiveCell = dgv.Grid.ActiveRow.Cells[cloName];
                    dgv.Grid.Focus();
                    dgv.Grid.PerformAction(UltraGridAction.EnterEditMode, false, false);
                }
            }
    
    
            /// <summary>
            /// 清空重复数据(只做清空用)ys
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="dgv">dgv控件名称</param>
            /// <param name="newList">根据条件筛选后无重复集合</param>
            /// <param name="data">T新实例化对象</param>
            public static void RemovalDuplicateData<T>(MzGridControl dgv, List<T> newList, T data)
            {
                var datas = dgv.DataSource as List<T>;
                if (newList != null && newList.Count > 0 && datas != null && datas.Count > 0)
                {
                    datas.Remove(newList.Last());
                }
                datas?.Add(data);
                dgv.DataSource = datas;
            }
    
            /// <summary>
            /// 定位Grid光标
            /// </summary>
            /// <param name="dgv">控件</param>
            /// <param name="index">索引</param>
            /// <param name="cloName">列名</param>
            /// <param name="isNotNull">“列名”是否允许为空</param>
            /// <param name="isUpdate">是否为update事件</param>
            public static void NextFocusNew(MzGridControl dgv, int index, string cloName, bool isNotNull, bool isUpdate)
            {
                if (isNotNull)
                {
                    string cellValue = dgv.Grid.ActiveCell?.Text;
                    if (!string.IsNullOrEmpty(cellValue))
                    {
                        NextFocusPublic(dgv, index, cloName, isUpdate);
                    }
                }
                else
                {
                    NextFocusPublic(dgv, index, cloName, isUpdate);
                }
            }
    
            /// <summary>
            /// 定义Grid光标
            /// </summary>
            /// <param name="dgv">控件</param>
            /// <param name="index">索引</param>
            /// <param name="cloName">列名</param>
            /// <param name="isUpdate">是否为update事件</param>
            private static void NextFocusPublic(MzGridControl dgv, int index, string cloName, bool isUpdate)
            {
                if (isUpdate)
                {
                    dgv.Grid.ActiveRow = dgv.Grid.Rows[index];
                    dgv.Tag = dgv.Grid.Rows.Last().Cells[cloName];
                    dgv.SetEditCell(dgv.Tag as UltraGridCell);
                }
                else
                {
                    if (index < dgv.Grid.Rows.Count && index >= 0)
                    {
                        dgv.Grid.ActiveRow = dgv.Grid.Rows[index];
                    }
                    if (dgv.Grid.ActiveRow?.Cells?.Count > 0)
                    {
                        dgv.Tag = dgv.Grid.ActiveRow.Cells[cloName];
                        dgv.Grid.PerformAction(UltraGridAction.ExitEditMode, false, false);
                        dgv.SetEditCell(dgv.Tag as UltraGridCell);
                    }
                }
            }
    
            /// <summary>
            /// 获取MzTimeList控件的值的集合
            /// </summary>
            /// <param name="conditionList"></param>
            /// <param name="tlDate"></param>
            /// <returns></returns>
            public static List<QueryCriteria> GetDateList(List<QueryCriteria> conditionList, MzTimeList tlDate, string property)
            {
                RelativeTimeType dateType = tlDate.RelativeTime;
                if (dateType == RelativeTimeType.AssignDay)
                {
                    int days = 0;
                    if (tlDate.EndTime != null && tlDate.BeginTime != null)
                    {
                        TimeSpan? ts = tlDate.EndTime - tlDate.BeginTime;
                        days = TimeSpan.Parse(ts.ToString()).Days + 1;
                    }
                    else
                    {
                        MsgBox.Show("请输入天数");
                        return conditionList;
                    }
                    conditionList.Add(new QueryCriteria() { Property = property, Value = days, Condition = QueryCriteria.QueryCondition.Equal });
                }
                else if (dateType == RelativeTimeType.AssignDate)
                {
                    if (tlDate.BeginTime == null)
                    {
                        MsgBox.Show("请输入起始日期");
                        tlDate.BeginTime = DateTime.Parse("2000-01-01");
                        return conditionList;
                    }
                    if (tlDate.EndTime == null)
                    {
                        MsgBox.Show("请输入截止日期");
                        tlDate.EndTime = DateTime.Parse("2000-01-01");
                        return conditionList;
                    }
                    conditionList.Add(new QueryCriteria() { Property = property, Value = tlDate.BeginTime.ToString() + "," + tlDate.EndTime.ToString(), Condition = QueryCriteria.QueryCondition.Equal });
                }
                else
                {
                    conditionList.Add(new QueryCriteria() { Property = property, Value = dateType.ToString() });
                }
                return conditionList;
            }
            /// <summary>
            /// 显示子列表数据
            /// </summary>
            /// <param name="dgvCurrent"></param>
            /// <param name="e"></param>
            public static void ShowDgv(MzGridControl dgvCurrent, CancelableRowEventArgs e)
            {
                if (dgvCurrent.Grid.ActiveRow == null)
                {
                    return;
                }
                if (e.Row != dgvCurrent.Grid.ActiveRow)
                {
                    //    不展开当前行
                    dgvCurrent.Grid.ActiveRow.Expanded = false;
                    //    激活传入的行
                    dgvCurrent.Grid.ActiveRow = e.Row;
                }
                //刷新子列表显示
                e.Row.ChildBands[0].Rows.Refresh(RefreshRow.RefreshDisplay);
            }
            /// <summary>
            /// 去除原弹出框
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public static void DgvCellDataError(object sender, CellDataErrorEventArgs e)
            {
                // 防止消息框显示
                e.RaiseErrorEvent = false;
                // 还原到上一个值
                e.RestoreOriginalValue = true;
                // 光标不跳转
                e.StayInEditMode = true;
            }
            /// <summary>
            /// 设置子列表字体颜色
            /// </summary>
            /// <param name="e"></param>
            /// <param name="color"></param>
            public static void SetDgvForeColor(CancelableRowEventArgs e, Color color)
            {
                RowsCollection childRows = e.Row.ChildBands[0].Rows;
                foreach (UltraGridRow childRow in childRows)
                {
                    childRow.Appearance.ForeColor = color;
                }
            }
    
    
            /// <summary>
            /// 药品模块通用打印方法2.0
            /// </summary>
            /// <param name="printArgs"></param>
            /// <param name="dcrApptypCodes">应用场合类型 Eg: PubEnum.ApplicationOccasion.UnLimit.GetHashCode().ToString()</param>
            /// <param name="dcrTltypCode">模板类型 Eg:PubEnum.PrintModelType.ArModel.GetHashCode().ToString()</param>
            /// <param name="hosInfo">医院信息实体名称</param>
            /// <param name="hosList">医院信息集合</param>
            /// <param name="dvcPrtLogVoList">设备资产编号(设备目录打印传)</param>
            public static void Print(PrintArgs printArgs, string dcrApptypCodes, string dcrTltypCode, string hosInfo, List<HosInfo> hosList, List<DvcPrtLogVo> dvcPrtLogVoList = null)
            {
    
                var result = Client.QueryListByObject<List<DicCircpVo>>(ApiKey.ADMIN_DICCIRCPHANDLER_GETOTHCICPBYSFNAMEANDDCRAPPTYPCODES,
                    new { tcDcrNo = printArgs.DcrNo, sfName = printArgs.SubFuncName, dcrApptypCodes = dcrApptypCodes, prwcWsIp = LocalMachine.GetInstance.IpAddress, prwcWsPhyaddr = LocalMachine.GetInstance.Mac });
                if (result.Flag == ResultFlag.SUCCESS)
                {
                    List<DicCircpVo> dicCircps = result.Value ?? new List<DicCircpVo>();
                    //过滤掉编辑器模板
                    printArgs.DicCircps = dicCircps.FindAll(p => p.DcrTltypCode == dcrTltypCode);
                    if (dicCircps.Any())
                    {
                        string erroMsg = "";
                        ReportEntity reportInEntity = new ReportEntity();
    
                        reportInEntity.Printed += (sender, e) =>
                        {
                            var resultList = e.PrintResultCollection.ToList();
                            if (resultList.Count > 0)
                            {
                                DateTime dtNow = Client.SystemDate;
                                foreach (var item in resultList)
                                {
                                    //从结果中转换而来
                                    DicCircpVo model = item.DataObj as DicCircpVo;
                                    if (item.Result == PrintResults.Success)
                                    {
                                        PfmPrtLog prtLog = new PfmPrtLog();
                                        prtLog = GeneralPrint.GetInstance.GetPrtLogFromCircp(dtNow, model);
                                        UpdatePrintInfo(model?.DcrNo, printArgs.MainId, dvcPrtLogVoList);
                                    }
                                    else
                                    {
                                        GeneralPrint.GetInstance.WritePrintDbLog(dicCircps, false);
                                    }
                                }
    
                            }
    
                        };
                        //本地配置转为datatable
                        if (hosList != null)
                        {
                            DataTable dtLocal = GeneralPrint.GetInstance.List2DataTable<HosInfo>(hosList);
                            if (dtLocal != null)
                            {
                                if (printArgs.LocalDataSource == null)
                                {
                                    printArgs.LocalDataSource = new Dictionary<string, DataTable>();
                                    printArgs.LocalDataSource.Add(hosInfo, dtLocal);
                                }
                                else
                                {
                                    if (!printArgs.LocalDataSource.ContainsKey(hosInfo))
                                    {
                                        printArgs.LocalDataSource.Add(hosInfo, dtLocal);
                                    }
                                }
                            }
                        }
                        //打印或预览
                        GeneralPrint.GetInstance.Print(printArgs, reportInEntity);
                    }
                    else
                    {
                        MsgBox.Show("您没有打印权限![ " + printArgs.DcrNo + " ] ");
                    }
                }
                else
                {
                    MsgBox.Show(result.Message);
                }
    
            }
    
            /// <summary>
            /// 更新打印次数
            /// </summary>
            /// <param name="templateCode">模板Code</param>
            /// <param name="pkId">单据主表主键</param>
            /// <param name="dvcPrtLogVoList">设备资产编号(设备目录打印传)</param>
            private static void UpdatePrintInfo(string templateCode, string pkId, List<DvcPrtLogVo> dvcPrtLogVoList = null)
            {
                Result<string> res = null;
                switch (templateCode)
                {
                    #region 药品
                    #region 药品入库,出库,盘点
                    //药品自制入库
                    case PrintTemplateCode.DrugSelfMadeStockInDoc:
                    //药品验收入库
                    case PrintTemplateCode.DrugAcceptanceSheet:
                    //药品其他入库
                    case PrintTemplateCode.DrugOtherWarehousingListOf:
                    //药品验收单
                    case PrintTemplateCode.DrugCheckAndAccept:
                    //药品盘盈入库单
                    case PrintTemplateCode.DrugInventoryGainReceipt:
                    //药品调拨单
                    case PrintTemplateCode.DrugAllocation:
                    //药品报损单
                    case PrintTemplateCode.DrugReportLoss:
                    //药品申领单
                    case PrintTemplateCode.DrugApplicationForm:
                    //药品退库单
                    case PrintTemplateCode.DrugRetreatFromStorage:
                    //药品其他出库单
                    case PrintTemplateCode.DrugOtherOutlets:
                    //药品盘点单
                    case PrintTemplateCode.DrugCheckList:
                        res = Client.DataWrite<string>(ApiKey.ADMIN_DRUGIOSUMHANDLER_UPDATEPRINTINFO, pkId);
                        break;
                    #endregion
    
                    //药品调价单
                    case PrintTemplateCode.DrugModify:
                        res = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pkId);
                        break;
                    ////药品计划单
                    //case PrintTemplateCode.DrugPlan:
                    //    var drugPlan = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                    //    break;
                    ////药品采购单
                    //case PrintTemplateCode.DrugPurchase:
                    //    var drugPurchase = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                    //    break;
                    ////药品合同单
                    //case PrintTemplateCode.DrugContract:
                    //    var drugContract = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                    //    break;
    
                    #endregion 药品
    
                    #region 卫材
                    #region 卫材入库
                    //自制入库
                    case PrintTemplateCode.EisaiSelfMadeStockInDoc:
                    //验收入库
                    case PrintTemplateCode.EisaiAcceptanceSheet:
                    //其他入库
                    case PrintTemplateCode.EisaiOtherWarehousingListOf:
                    //验收单
                    case PrintTemplateCode.EisaiCheckAndAccept:
                    //采购单
                    case PrintTemplateCode.EisaiPurchaseOrder:
                    //盘盈入库单
                    case PrintTemplateCode.EisaiInventoryGainReceipt:
                    //调拨单
                    case PrintTemplateCode.EisaiAllocation:
                    //报损单
                    case PrintTemplateCode.EisaiReportLoss:
                    //申领单
                    case PrintTemplateCode.EisaiApplicationForm:
                    //退库单
                    case PrintTemplateCode.EisaiRetreatFromStorage:
                    //其他出库单
                    case PrintTemplateCode.EisaiOtherOutlets:
                    //耗材使用出库单
                    case PrintTemplateCode.EisaiApplyForStockReturn:
                    //盘点单
                    case PrintTemplateCode.EisaiCheckList:
                        res = Client.DataWrite<string>(ApiKey.ADMIN_EISAIIOSUMHANDLER_UPDATEPRINTINFO, pkId);
                        break;
                    #endregion
    
                    //调价单
                    case PrintTemplateCode.EisaiModify:
                        res = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pkId);
                        break;
                    ////计划单
                    //case PrintTemplateCode.EisaiPlan:
                    //    var drugPlan = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                    //    break;
                    ////采购单
                    //case PrintTemplateCode.EisaiPurchase:
                    //    var drugPurchase = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                    //    break;
                    ////合同单
                    //case PrintTemplateCode.EisaiContract:
                    //    var drugContract = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                    //    break;
    
                    #endregion
    
                    #region 耗材
                    #region 耗材入库
                    //自制入库
                    case PrintTemplateCode.MatSelfMadeStockInDoc:
                    //验收入库
                    case PrintTemplateCode.MatAcceptanceSheet:
                    //其他入库
                    case PrintTemplateCode.MatOtherWarehousingListOf:
                    //验收单
                    case PrintTemplateCode.MatCheckAndAccept:
                    //盘盈入库单
                    case PrintTemplateCode.MatInventoryGainReceipt:
                        res = Client.DataWrite<string>(ApiKey.ADMIN_MATGODOWNENTRYHANDLER_UPDATEMATGODOWNPRINT, pkId);
                        break;
                    #endregion
                    #region 耗材出库
                    //调拨单
                    case PrintTemplateCode.MatAllocation:
                    //报损单
                    case PrintTemplateCode.MatReportLoss:
                    //申领单
                    case PrintTemplateCode.MatApplicationForm:
                    //退库单
                    case PrintTemplateCode.MatRetreatFromStorage:
                    //其他出库单
                    case PrintTemplateCode.MatOtherOutlets:
                        res = Client.DataWrite<string>(ApiKey.ADMIN_MATOUTSTGHANDLER_UPDATEPRTCNT, pkId);
                        break;
                    #endregion
                    //盘点单
                    case PrintTemplateCode.MatCheckList:
                        res = Client.DataWrite<string>(ApiKey.ADMIN_MATINVCHKRECHANDLER_UPDATEPRINTINFO, pkId);
                        break;
                    ////计划单
                    //case PrintTemplateCode.MatPlan:
                    //    var drugPlan = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                    //    break;
                    ////采购单
                    //case PrintTemplateCode.MatPurchase:
                    //    var drugPurchase = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                    //    break;
                    ////合同单
                    //case PrintTemplateCode.MatContract:
                    //    var drugContract = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                    //    break;
                    #endregion 
    
                    #region 器械
                    #region 器械入库
                    //自制入库
                    case PrintTemplateCode.AppSelfMadeStockInDoc:
                    //验收入库
                    case PrintTemplateCode.AppAcceptanceSheet:
                    //其他入库
                    case PrintTemplateCode.AppOtherWarehousingListOf:
                    //验收单
                    case PrintTemplateCode.AppCheckAndAccept:
                    //盘盈入库单
                    case PrintTemplateCode.AppInventoryGainReceipt:
                        res = Client.DataWrite<string>(ApiKey.ADMIN_PLATFORM_MAIOSUMHANDLER_UPDATEPRINTINGTIMESBYMAIOSID, pkId);
                        break;
                    #endregion
                    #region 器械出库
                    //调拨单
                    case PrintTemplateCode.AppAllocation:
                    //报损单
                    case PrintTemplateCode.AppReportLoss:
                    //申领单
                    case PrintTemplateCode.AppApplicationForm:
                    //退库单
                    case PrintTemplateCode.AppRetreatFromStorage:
                    //其他出库单
                    case PrintTemplateCode.AppOtherOutlets:
                        res = Client.DataWrite<string>(ApiKey.ADMIN_PLATFORM_MAIOSUMHANDLER_UPDATEPRINTINGTIMESBYMAIOSID, pkId);
                        break;
                    #endregion
                    //盘点单
                    case PrintTemplateCode.AppCheckList:
                        //res = Client.DataWrite<string>(ApiKey.ADMIN_APPINVCHKRECHANDLER_UPDATEPRINTINFO, pkId);
                        break;
                        ////计划单
                        //case PrintTemplateCode.AppPlan:
                        //    var drugPlan = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                        //    break;
                        ////采购单
                        //case PrintTemplateCode.AppPurchase:
                        //    var drugPurchase = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                        //    break;
                        ////合同单
                        //case PrintTemplateCode.AppContract:
                        //    var drugContract = Client.DataWrite<string>(ApiKey.ADMIN_PRADJMAINHANDLER_UPDATEPRINTINFO, pfmPrtLog);
                        //    break;
    
                        #endregion 器械
                }
    
                if (dvcPrtLogVoList != null)
                {
                    //设备入库单
                    if (templateCode == PrintTemplateCode.EqmentDirectoryGoDown)
                    {
                        string json = Serializer.SerializeCamelCase(dvcPrtLogVoList);
                        //string json = string.Join(",", dvcPrtLogVoData);
                        var result = Client.DataWrite<string>(ApiKey.ADMIN_PLATFORM_DVCCARDHANDLER_UPDATEDVCINNOBYDVCCNOS, json);
                        if (result.Flag != ResultFlag.SUCCESS)
                        {
                            MsgBox.Show($"更新入库单号接口失败!失败原因:{result.Message}", "提示");
                        }
                    }
                    else if (templateCode == PrintTemplateCode.EqmentDirectoryBCollect)
                    {
                        string json = Serializer.SerializeCamelCase(dvcPrtLogVoList);
                        //string json = string.Join(",", dvcPrtLogVoData);
                        var result = Client.DataWrite<string>(ApiKey.ADMIN_PLATFORM_DVCCHGRECHANDLER_UPDATEDVCOUTNOBYDVCCNOS, json);
                        if (result.Flag != ResultFlag.SUCCESS)
                        {
                            MsgBox.Show($"更新领用单号接口失败!失败原因:{result.Message}", "提示");
                        }
                    }
                }
                //if (res?.Flag == ResultFlag.SUCCESS)
                //{
                //    return true;
                //}
                //else
                //{
                //    return false;
                //}
            }
    
            /// <summary>
            /// 查询打印次数
            /// </summary>
            /// <param name="templateCode">模板Code</param>
            /// <param name="id">主表ID</param>
            public static int? GetPrintNumber(string templateCode, string id)
            {
                switch (templateCode)
                {
                    #region 药品
                    #region 药品入库
                    //药品自制入库
                    case PrintTemplateCode.DrugSelfMadeStockInDoc:
                    //药品验收入库
                    case PrintTemplateCode.DrugAcceptanceSheet:
                    //药品其他入库
                    case PrintTemplateCode.DrugOtherWarehousingListOf:
                    //药品验收单
                    case PrintTemplateCode.DrugCheckAndAccept:
                    //盘盈入库单
                    case PrintTemplateCode.DrugInventoryGainReceipt:
                    //药品调拨单
                    case PrintTemplateCode.DrugAllocation:
                    //药品报损单
                    case PrintTemplateCode.DrugReportLoss:
                    //药品申领单
                    case PrintTemplateCode.DrugApplicationForm:
                    //药品退库单
                    case PrintTemplateCode.DrugRetreatFromStorage:
                    //药品其他出库单
                    case PrintTemplateCode.DrugOtherOutlets:
                    //药品盘点单
                    case PrintTemplateCode.DrugCheckList:
                        var drugGodownEntrysResult = Client.QueryEntityByString<DrugIosum>(ApiKey.ADMIN_DRUGIOSUMHANDLER_GETBYPK, id);
                        if (drugGodownEntrysResult.Flag == ResultFlag.SUCCESS)
                        {
                            DrugIosum drugGodownEntrys = drugGodownEntrysResult.Value ?? new DrugIosum();
                            return drugGodownEntrys?.DiosPrtCnt;
                        }
                        else
                        {
                            Common.LocalLog.Write(Common.LogLevel.important, $"根据主键查询实体失败:{drugGodownEntrysResult.Flag.ToString()},{drugGodownEntrysResult.Message}");
                            return null;
                        }
                        break;
                    #endregion
    
                    //药品调价单
                    case PrintTemplateCode.DrugModify:
                        var drugPradjMainResult = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                        if (drugPradjMainResult.Flag == ResultFlag.SUCCESS)
                        {
                            PradjMain drugPradjMains = drugPradjMainResult.Value ?? new PradjMain();
                            return drugPradjMains?.PamPrintNum;
                        }
                        else
                        {
                            Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{drugPradjMainResult.Flag.ToString()},{drugPradjMainResult.Message}");
                            return null;
                        }
                        break;
                    ////计划单
                    //case PrintTemplateCode.DrugPlan:
                    //    var drugrugPlan = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                    //    if (drugrugPlan.Flag == ResultFlag.SUCCESS)
                    //    {
                    //        PradjMain drugPradjMains = drugrugPlan.Value ?? new PradjMain();
                    //        return drugPradjMains?.PamPrintNum;
                    //    }
                    //    else
                    //    {
                    //        Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{drugrugPlan.Flag.ToString()},{drugrugPlan.Message}");
                    //        return null;
                    //    }
                    //    break;
                    ////采购单
                    //case PrintTemplateCode.DrugPurchase:
                    //    var drugPurchase = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                    //    if (drugPurchase.Flag == ResultFlag.SUCCESS)
                    //    {
                    //        PradjMain drugPradjMains = drugPurchase.Value ?? new PradjMain();
                    //        return drugPradjMains?.PamPrintNum;
                    //    }
                    //    else
                    //    {
                    //        Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{drugPurchase.Flag.ToString()},{drugPurchase.Message}");
                    //        return null;
                    //    }
                    //    break;
                    ////合同单
                    //case PrintTemplateCode.DrugContract:
                    //    var drugContractResult = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                    //    if (drugContractResult.Flag == ResultFlag.SUCCESS)
                    //    {
                    //        PradjMain drugPradjMains = drugContractResult.Value ?? new PradjMain();
                    //        return drugPradjMains?.PamPrintNum;
                    //    }
                    //    else
                    //    {
                    //        Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{drugContractResult.Flag.ToString()},{drugContractResult.Message}");
                    //        return null;
                    //    }
                    //    break;
    
                    #endregion 药品
    
                    #region 卫材
                    #region 卫材入库
                    //自制入库
                    case PrintTemplateCode.EisaiSelfMadeStockInDoc:
                    //验收入库
                    case PrintTemplateCode.EisaiAcceptanceSheet:
                    //其他入库
                    case PrintTemplateCode.EisaiOtherWarehousingListOf:
                    //验收单
                    case PrintTemplateCode.EisaiCheckAndAccept:
                    //采购单
                    case PrintTemplateCode.EisaiPurchaseOrder:
                    //盘盈入库单
                    case PrintTemplateCode.EisaiInventoryGainReceipt:
                    //调拨入库单
                    case PrintTemplateCode.EisaiDBRK:
                    //调拨出库单
                    case PrintTemplateCode.EisaiAllocation:
                    //报损单
                    case PrintTemplateCode.EisaiReportLoss:
                    //申领单
                    case PrintTemplateCode.EisaiApplicationForm:
                    //退库单
                    case PrintTemplateCode.EisaiRetreatFromStorage:
                    //耗材使用出库单
                    case PrintTemplateCode.EisaiApplyForStockReturn:
                    //其他出库单
                    case PrintTemplateCode.EisaiOtherOutlets:
                    //盘点单
                    case PrintTemplateCode.EisaiCheckList:
                        var eisaiGodownEntryResult = Client.QueryEntityByString<EisaiIosum>(ApiKey.ADMIN_EISAIIOSUMHANDLER_GETBYPK, id);
                        if (eisaiGodownEntryResult.Flag == ResultFlag.SUCCESS)
                        {
                            EisaiIosum eisaiGodownEntrys = eisaiGodownEntryResult.Value ?? new EisaiIosum();
                            return eisaiGodownEntrys?.EiosPrtCnt;
                        }
                        else
                        {
                            Common.LocalLog.Write(Common.LogLevel.important, $"根据主键查询实体失败:{eisaiGodownEntryResult.Flag.ToString()},{eisaiGodownEntryResult.Message}");
                            return null;
                        }
                        break;
                    #endregion
    
                    //调价单
                    case PrintTemplateCode.EisaiModify:
                        var eisaiPradjMainResult = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                        if (eisaiPradjMainResult.Flag == ResultFlag.SUCCESS)
                        {
                            PradjMain eisaiPradjMains = eisaiPradjMainResult.Value ?? new PradjMain();
                            return eisaiPradjMains?.PamPrintNum;
                        }
                        else
                        {
                            Common.LocalLog.Write(Common.LogLevel.important, $"卫材调价根据主键查询实体失败:{eisaiPradjMainResult.Flag.ToString()},{eisaiPradjMainResult.Message}");
                            return null;
                        }
                        break;
                    ////计划单
                    //case PrintTemplateCode.EisaiPlan:
                    //    var eisaiPlanResult = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                    //    if (eisaiPlanResult.Flag == ResultFlag.SUCCESS)
                    //    {
                    //        PradjMain drugPradjMains = eisaiPlanResult.Value ?? new PradjMain();
                    //        return drugPradjMains?.PamPrintNum;
                    //    }
                    //    else
                    //    {
                    //        Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{eisaiPlanResult.Flag.ToString()},{eisaiPlanResult.Message}");
                    //        return null;
                    //    }
                    //    break;
                    ////采购单
                    //case PrintTemplateCode.EisaiPurchase:
                    //    var eisaiPurchaseResult = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                    //    if (eisaiPurchaseResult.Flag == ResultFlag.SUCCESS)
                    //    {
                    //        PradjMain drugPradjMains = eisaiPurchaseResult.Value ?? new PradjMain();
                    //        return drugPradjMains?.PamPrintNum;
                    //    }
                    //    else
                    //    {
                    //        Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{eisaiPurchaseResult.Flag.ToString()},{eisaiPurchaseResult.Message}");
                    //        return null;
                    //    }
                    //    break;
                    ////合同单
                    //case PrintTemplateCode.EisaiContract:
                    //    var eisaiContractResult = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                    //    if (eisaiContractResult.Flag == ResultFlag.SUCCESS)
                    //    {
                    //        PradjMain drugPradjMains = eisaiContractResult.Value ?? new PradjMain();
                    //        return drugPradjMains?.PamPrintNum;
                    //    }
                    //    else
                    //    {
                    //        Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{eisaiContractResult.Flag.ToString()},{eisaiContractResult.Message}");
                    //        return null;
                    //    }
                    //    break;
    
                    #endregion
    
                    #region 耗材
                    #region 耗材入库
                    //自制入库
                    case PrintTemplateCode.MatSelfMadeStockInDoc:
                    //验收入库
                    case PrintTemplateCode.MatAcceptanceSheet:
                    //其他入库
                    case PrintTemplateCode.MatOtherWarehousingListOf:
                    //验收单
                    case PrintTemplateCode.MatCheckAndAccept:
                    //盘盈入库单
                    case PrintTemplateCode.MatInventoryGainReceipt:
                        var matGodownEntryResult = Client.QueryEntityByString<MatGodownEntry>(ApiKey.ADMIN_MATGODOWNENTRYHANDLER_GETBYPK, id);
                        if (matGodownEntryResult.Flag == ResultFlag.SUCCESS)
                        {
                            MatGodownEntry matGodownEntrys = matGodownEntryResult.Value ?? new MatGodownEntry();
    
                            return matGodownEntrys?.MgePrtCnt;
    
                        }
                        else
                        {
                            Common.LocalLog.Write(Common.LogLevel.important, $"耗材入库根据主键查询实体失败:{matGodownEntryResult.Flag.ToString()},{matGodownEntryResult.Message}");
                            return null;
                        }
                        break;
                    #endregion
                    #region 耗材出库
                    //调拨单
                    case PrintTemplateCode.MatAllocation:
                    //报损单
                    case PrintTemplateCode.MatReportLoss:
                    //申领单
                    case PrintTemplateCode.MatApplicationForm:
                    //退库单
                    case PrintTemplateCode.MatRetreatFromStorage:
                    //其他出库单
                    case PrintTemplateCode.MatOtherOutlets:
                        var matOutstgResult = Client.QueryEntityByString<MatOutstg>(ApiKey.ADMIN_MATOUTSTGHANDLER_GETBYPK, id);
                        if (matOutstgResult.Flag == ResultFlag.SUCCESS)
                        {
                            MatOutstg matOutstgs = matOutstgResult.Value ?? new MatOutstg();
                            return matOutstgs?.MosPrtCnt;
                        }
                        else
                        {
                            Common.LocalLog.Write(Common.LogLevel.important, $"耗材出库根据主键查询实体失败:{matOutstgResult.Flag.ToString()},{matOutstgResult.Message}");
                            return null;
                        }
                        break;
                    #endregion
                    //盘点单
                    case PrintTemplateCode.MatCheckList:
                        var matInvchkRecResult = Client.QueryEntityByString<MatInvchkRec>(ApiKey.ADMIN_MATINVCHKRECHANDLER_GETBYPK, id);
                        if (matInvchkRecResult.Flag == ResultFlag.SUCCESS)
                        {
                            MatInvchkRec matInvchkRecs = matInvchkRecResult.Value ?? new MatInvchkRec();
                            return matInvchkRecs?.MicrPrintNum;
                        }
                        else
                        {
                            Common.LocalLog.Write(Common.LogLevel.important, $"耗材盘点根据主键查询实体失败:{matInvchkRecResult.Flag.ToString()},{matInvchkRecResult.Message}");
                            return null;
                        }
                        break;
                    //计划单
                    case PrintTemplateCode.MatPlan:
                        var matPlanResult = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                        if (matPlanResult.Flag == ResultFlag.SUCCESS)
                        {
                            PradjMain drugPradjMains = matPlanResult.Value ?? new PradjMain();
                            return drugPradjMains?.PamPrintNum;
                        }
                        else
                        {
                            Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{matPlanResult.Flag.ToString()},{matPlanResult.Message}");
                            return null;
                        }
                        break;
                    ////采购单
                    //case PrintTemplateCode.MatPurchase:
                    //    var matPurchaseResult = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                    //    if (matPurchaseResult.Flag == ResultFlag.SUCCESS)
                    //    {
                    //        PradjMain drugPradjMains = matPurchaseResult.Value ?? new PradjMain();
                    //        return drugPradjMains?.PamPrintNum;
                    //    }
                    //    else
                    //    {
                    //        Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{matPurchaseResult.Flag.ToString()},{matPurchaseResult.Message}");
                    //        return null;
                    //    }
                    //    break;
                    ////合同单
                    //case PrintTemplateCode.MatContract:
                    //    var matContractResult = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                    //    if (matContractResult.Flag == ResultFlag.SUCCESS)
                    //    {
                    //        PradjMain drugPradjMains = matContractResult.Value ?? new PradjMain();
                    //        return drugPradjMains?.PamPrintNum;
                    //    }
                    //    else
                    //    {
                    //        Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{matContractResult.Flag.ToString()},{matContractResult.Message}");
                    //        return null;
                    //    }
                    //    break;
                    #endregion 
    
                    #region 器械
                    #region 器械入库 器械出库
                    //自制入库
                    case PrintTemplateCode.AppSelfMadeStockInDoc:
                    //验收入库
                    case PrintTemplateCode.AppAcceptanceSheet:
                    //其他入库
                    case PrintTemplateCode.AppOtherWarehousingListOf:
                    //验收单
                    case PrintTemplateCode.AppCheckAndAccept:
                    //盘盈入库单
                    case PrintTemplateCode.AppInventoryGainReceipt:
                    //调拨单
                    case PrintTemplateCode.AppAllocation:
                    //报损单
                    case PrintTemplateCode.AppReportLoss:
                    //申领单
                    case PrintTemplateCode.AppApplicationForm:
                    //退库单
                    case PrintTemplateCode.AppRetreatFromStorage:
                    //其他出库单
                    case PrintTemplateCode.AppOtherOutlets:
                        var queries = new List<QueryCriteria>();
                        queries.Add(new QueryCriteria() { Property = nameof(MaIosumVo.MaiosId), Value = id, Condition = QueryCriteria.QueryCondition.Equal });
                        var appGodownEntryResult = Client.QueryList<List<MaIosumVo>>(ApiKey.ADMIN_PLATFORM_MAIOSUMHANDLER_GETALL, queries, null);
                        if (appGodownEntryResult.Flag == ResultFlag.SUCCESS)
                        {
                            if (appGodownEntryResult.Value.Count > 0)
                            {
                                MaIosumVo appGodownEntrys = appGodownEntryResult.Value[0] ?? new MaIosumVo();
                                return appGodownEntrys?.MaiosPrtCnt;
                            }
                            else
                            {
                                Common.LocalLog.Write(Common.LogLevel.important, $"器械出入库根据主键查询为空:{appGodownEntryResult.Flag.ToString()},{appGodownEntryResult.Message}");
                                return null;
                            }
                        }
                        else
                        {
                            Common.LocalLog.Write(Common.LogLevel.important, $"器械出入库根据主键查询实体失败:{appGodownEntryResult.Flag.ToString()},{appGodownEntryResult.Message}");
                            return null;
                        }
                        break;
                    #endregion
                    //盘点单
                    case PrintTemplateCode.AppCheckList:
                        var appInvchkRecResult = Client.QueryEntityByString<AppInvchkRec>(ApiKey.ADMIN_APPINVCHKRECHANDLER_GETBYPK, id);
                        if (appInvchkRecResult.Flag == ResultFlag.SUCCESS)
                        {
                            AppInvchkRec appInvchkRecs = appInvchkRecResult.Value ?? new AppInvchkRec();
                            return appInvchkRecs?.AicrPrintNum;
                        }
                        else
                        {
                            Common.LocalLog.Write(Common.LogLevel.important, $"器械盘点根据主键查询实体失败:{appInvchkRecResult.Flag.ToString()},{appInvchkRecResult.Message}");
                            return null;
                        }
                        break;
                        ////采购单
                        //case PrintTemplateCode.AppPurchase:
                        //    var appPurchaseResult = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                        //    if (appPurchaseResult.Flag == ResultFlag.SUCCESS)
                        //    {
                        //        PradjMain drugPradjMains = appPurchaseResult.Value ?? new PradjMain();
                        //        return drugPradjMains?.PamPrintNum;
                        //    }
                        //    else
                        //    {
                        //        Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{appPurchaseResult.Flag.ToString()},{appPurchaseResult.Message}");
                        //        return null;
                        //    }
                        //    break;
                        ////合同单
                        //case PrintTemplateCode.AppContract:
                        //    var appContractResult = Client.QueryEntityByString<PradjMain>(ApiKey.ADMIN_PRADJMAINHANDLER_GETBYPK, id);
                        //    if (appContractResult.Flag == ResultFlag.SUCCESS)
                        //    {
                        //        PradjMain drugPradjMains = appContractResult.Value ?? new PradjMain();
                        //        return drugPradjMains?.PamPrintNum;
                        //    }
                        //    else
                        //    {
                        //        Common.LocalLog.Write(Common.LogLevel.important, $"药品调价根据主键查询实体失败:{appContractResult.Flag.ToString()},{appContractResult.Message}");
                        //        return null;
                        //    }
                        //    break;
                        #endregion 器械
                }
                return null;
            }
    
            /// <summary>
            /// 设置
            /// </summary>
            public static void PrintSeeting(Func funcEntity)
            {
                FrmPrinterSetting frmPrinterSetting = new FrmPrinterSetting();
                frmPrinterSetting.FuncEntity = funcEntity;
                frmPrinterSetting.ShowDialog();
            }
    
            /// <summary>
            /// 设置行数据颜色及不可编辑
            /// </summary>
            /// <param name="currDgv">当前列表控件</param>
            /// <param name="amtCol">需要判断的数量字段名称</param> 
            public static void SetDgvForeColorAndNoEdit(MzGridControl currDgv, string amtCol)
            {
                foreach (var dr in currDgv.Grid.Rows)
                {
                    var amt = dr.Cells[amtCol].Value == null ? "" : dr.Cells[amtCol].Value.ToString();
                    if (amt == "0")
                    {
                        dr.Appearance.ForeColor = Color.FromName(CfgOperate.GetCfgValue(CfgCodeDefine.DOCUMENTNOEDITCOLOR));
                        dr.Activation = Infragistics.Win.UltraWinGrid.Activation.NoEdit;
                    }
                }
            }
    
            #region 计划,采购,合同,验收公用方法
            /// <summary>
            /// 查询条件
            /// </summary>
            /// <param name="list">高级查询条件集</param>
            /// <param name="workflowObject">流程对象</param>
            /// <param name="typCode">单号类型字段名称</param>
            /// <param name="fillDt">编制时间字段名称</param>
            /// <returns></returns>
            private static object GetPlanObject(List<QueryCriteria> list, string workflowObject, string typCode, string fillDt)
            {
                //创建属性,并赋值。
                dynamic obj = new System.Dynamic.ExpandoObject();
                (obj as ICollection<KeyValuePair<string, object>>).Add(new KeyValuePair<string, object>(typCode, workflowObject));
                var sysTime = Client.SystemDate;
                if (list.Count > 0)
                {
                    foreach (var item in list)
                    {
                        (obj as ICollection<KeyValuePair<string, object>>).Add(new KeyValuePair<string, object>(item.Property, item.Value));
                    }
                }
                else
                {
                    (obj as ICollection<KeyValuePair<string, object>>).Add(new KeyValuePair<string, object>(fillDt + BEGIN, string.Format("{0:" + ExtraCharacterStrDefine.DATETIME_START + "}", sysTime.AddDays(-7))));
                    (obj as ICollection<KeyValuePair<string, object>>).Add(new KeyValuePair<string, object>(fillDt + END, string.Format("{0:" + ExtraCharacterStrDefine.DATETIME_END + "}", sysTime)));
                }
                return obj;
            }
    
            /// <summary>
            /// 设置行数据颜色
            /// </summary>
            /// <param name="currDgv">当前列表控件</param>
            /// <param name="stat">状态字段名称</param>
            /// <param name="rfseCoz">驳回理由字段名称</param>
            private static void SetPlanForeColor(MzGridControl currDgv, string stat, string rfseCoz)
            {
                foreach (var dr in currDgv.Grid.Rows)
                {
                    var doStat = dr.Cells[stat].Value;
                    if (doStat != null)
                    {
                        if (doStat.ToString() == WorkflowState.Wtj.GetHashCode().ToString())
                        {
                            if (dr.Cells[rfseCoz].Value != null)
                            {
                                dr.Appearance.ForeColor = Color.FromName(CfgOperate.GetCfgValue(CfgCodeDefine.DOCUMENTREVOKECOLOR));
                            }
                            else
                            {
                                dr.Appearance.ForeColor = Color.FromName(CfgOperate.GetCfgValue(CfgCodeDefine.DOCUMENTPRESERVATIONCOLOR));
                            }
    
                        }
                        else if (doStat.ToString() == WorkflowState.Ytj.GetHashCode().ToString())
                        {
                            dr.Appearance.ForeColor = Color.FromName(CfgOperate.GetCfgValue(CfgCodeDefine.DOCUMENTSUBMISSIONCOLOR));
                        }
                        else
                        {
                            dr.Appearance.ForeColor = Color.FromName(CfgOperate.GetCfgValue(CfgCodeDefine.DOCUMENTAUDITCOLOR));
                        }
                    }
                }
            }
    
            /// <summary>
            /// 刷新数据
            /// </summary>
            /// <param name="list">高级查询条件集</param>
            /// <param name="workflowObject">流程对象</param>
            /// <param name="currDgv">当前列表控件</param>
            /// <param name="typCode">单号类型字段名称</param>
            /// <param name="fillDt">编制时间字段名称</param>
            ///  <param name="stat">状态字段名称</param>
            /// <param name="rfseCoz">驳回理由字段名称</param>
            public static void RefreshDrugLists(List<QueryCriteria> list, string workflowObject, MzGridControl currDgv, string typCode, string fillDt, string stat, string rfseCoz)
            {
                var obj = GetPlanObject(list, workflowObject, typCode, fillDt);
                //需要替换接口
                var result = Client.QueryListByObject<List<DrugOrd>>(ApiKey.ADMIN_DRUGORDHANDLER_GETDRUGORDINFO, obj);
                if (result.Flag == ResultFlag.SUCCESS)
                {
                    var drugPurOrdList = result.Value ?? new List<DrugOrd>();
                    if (drugPurOrdList.Count > 0)
                    {
                        drugPurOrdList = drugPurOrdList.OrderByDescending(m => m.DoFillDt).ToList();
                        currDgv.DataSource = drugPurOrdList;
                        SetPlanForeColor(currDgv, stat, rfseCoz);
                    }
                    else
                    {
                        currDgv.DataSource = new List<DrugOrd>();
                    }
                }
                else
                {
                    currDgv.DataSource = new List<DrugOrd>();
                    MsgBox.Show(result.Message, "查询失败");
                    Common.LocalLog.Write(Common.LogLevel.important, "{0}:{1},{2}", "查询失败", result.Flag.ToString(), result.Message);
                }
            }
    
            #region 耗材
    
            /// <summary>
            /// 刷新耗材
            /// </summary>
            /// <param name="list">高级查询条件集</param>
            /// <param name="workflowObject">流程对象</param>
            /// <param name="currDgv">当前列表控件</param>
            /// <param name="typCode">单号类型字段名称</param>
            /// <param name="fillDt">编制时间字段名称</param>
            ///  <param name="stat">状态字段名称</param>
            /// <param name="rfseCoz">驳回理由字段名称</param>
            public static void RefreshConsumablesLists(List<QueryCriteria> list, string workflowObject, MzGridControl currDgv, string typCode, string fillDt, string stat, string rfseCoz)
            {
                var obj = GetPlanObject(list, workflowObject, typCode, fillDt);
                //需要替换接口
                var result = Client.QueryListByObject<List<MatOrd>>(ApiKey.ADMIN_MATORDHANDLER_GETMATORDINFO, obj);
                if (result.Flag == ResultFlag.SUCCESS)
                {
                    var matPurOrdList = result.Value ?? new List<MatOrd>();
                    if (matPurOrdList.Count > 0)
                    {
                        matPurOrdList = matPurOrdList.OrderByDescending(m => m.MoFillDt).ToList();
                        currDgv.DataSource = matPurOrdList;
                        SetPlanForeColor(currDgv, stat, rfseCoz);
                    }
                    else
                    {
                        currDgv.DataSource = new List<MatOrd>();
                    }
                }
                else
                {
                    currDgv.DataSource = new List<MatOrd>();
                    MsgBox.Show(result.Message, "查询失败");
                    Common.LocalLog.Write(Common.LogLevel.important, "{0}:{1},{2}", "查询失败", result.Flag.ToString(), result.Message);
                }
            }
    
            #endregion 耗材
    
            /// <summary>
            /// 刷新数据
            /// </summary>
            /// <param name="list">高级查询条件集</param>
            /// <param name="workflowObject">流程对象</param>
            /// <param name="currDgv">当前列表控件</param>
            /// <param name="typCode">单号类型字段名称</param>
            /// <param name="fillDt">编制时间字段名称</param>
            ///  <param name="stat">状态字段名称</param>
            /// <param name="rfseCoz">驳回理由字段名称</param>
            public static void RefreshEisaiLists(List<QueryCriteria> list, string workflowObject, MzGridControl currDgv, string typCode, string fillDt, string stat, string rfseCoz)
            {
                var obj = GetPlanObject(list, workflowObject, typCode, fillDt);
                //需要替换接口
                var result = Client.QueryListByObject<List<EisaiOrd>>(ApiKey.ADMIN_EISAIORDHANDLER_GETEISAIORDINFO, obj);
                if (result.Flag == ResultFlag.SUCCESS)
                {
                    var eisaiPurOrdList = result.Value ?? new List<EisaiOrd>();
                    if (eisaiPurOrdList.Count > 0)
                    {
                        eisaiPurOrdList = eisaiPurOrdList.OrderByDescending(m => m.EoFillDt).ToList();
                        currDgv.DataSource = eisaiPurOrdList;
                        SetPlanForeColor(currDgv, stat, rfseCoz);
                    }
                    else
                    {
                        currDgv.DataSource = new List<EisaiOrd>();
                    }
                }
                else
                {
                    currDgv.DataSource = new List<EisaiOrd>();
                    MsgBox.Show(result.Message, "查询失败");
                    Common.LocalLog.Write(Common.LogLevel.important, "{0}:{1},{2}", "查询失败", result.Flag.ToString(), result.Message);
                }
            }
    
            /// <summary>
            /// 刷新数据
            /// </summary>
            /// <param name="list">高级查询条件集</param>
            /// <param name="workflowObject">流程对象</param>
            /// <param name="currDgv">当前列表控件</param>
            /// <param name="typCode">单号类型字段名称</param>
            /// <param name="fillDt">编制时间字段名称</param>
            ///  <param name="stat">状态字段名称</param>
            /// <param name="rfseCoz">驳回理由字段名称</param>
            public static void RefreshAppLists(List<QueryCriteria> list, string workflowObject, MzGridControl currDgv, string typCode, string fillDt, string stat, string rfseCoz)
            {
                var obj = GetPlanObject(list, workflowObject, typCode, fillDt);
                //需要替换接口
                var result = Client.QueryListByObject<List<AppOrd>>(ApiKey.ADMIN_APPORDHANDLER_GETAPPORDINFO, obj);
                if (result.Flag == ResultFlag.SUCCESS)
                {
                    var purOrdList = result.Value ?? new List<AppOrd>();
                    if (purOrdList.Count > 0)
                    {
                        purOrdList = purOrdList.OrderByDescending(m => m.AoFillDt).ToList();
                        currDgv.DataSource = purOrdList;
                        SetPlanForeColor(currDgv, stat, rfseCoz);
                    }
                    else
                    {
                        currDgv.DataSource = new List<AppOrd>();
                    }
                }
                else
                {
                    currDgv.DataSource = new List<EisaiOrd>();
                    MsgBox.Show(result.Message, "查询失败");
                    Common.LocalLog.Write(Common.LogLevel.important, "{0}:{1},{2}", "查询失败", result.Flag.ToString(), result.Message);
                }
            }
            #endregion
    
            public static DataTable ListToDataTable<T>(List<T> entitys)
            {
                //检查实体集合不能为空
                if (entitys == null || entitys.Count < 1)
                {
                    throw new Exception("需转换的集合为空");
                }
                //取出第一个实体的所有Propertie
                Type entityType = entitys[0].GetType();
                PropertyInfo[] entityProperties = entityType.GetProperties();
                //生成DataTable的structure
                //生产代码中,应将生成的DataTable结构Cache起来,此处略
                DataTable dt = new DataTable();
                for (int i = 0; i < entityProperties.Length; i++)
                {
                    //dt.Columns.Add(entityProperties[i].Name, entityProperties[i].PropertyType);
                    dt.Columns.Add(entityProperties[i].Name);
                }
                //将所有entity添加到DataTable中
                foreach (object entity in entitys)
                {
                    //检查所有的的实体都为同一类型
                    if (entity.GetType() != entityType)
                    {
                        throw new Exception("要转换的集合元素类型不一致");
                    }
                    object[] entityValues = new object[entityProperties.Length];
                    for (int i = 0; i < entityProperties.Length; i++)
                    {
                        entityValues[i] = entityProperties[i].GetValue(entity, null);
                    }
                    dt.Rows.Add(entityValues);
                }
                return dt;
            }
    
            /// <summary>
            /// 获取本机所有IPV4地址列表e799bee5baa6e4b893e5b19e31333330343831
            /// </summary>
            /// <returns>本机所有IPV4地址列表,以分号分隔</returns>
            public static string GetSelfIpv4List()
            {
                StringBuilder ips = new StringBuilder();
                try
                {
                    IPHostEntry IpEntry = Dns.GetHostEntry(Dns.GetHostName());
                    foreach (IPAddress ipa in IpEntry.AddressList)
                    {
                        if (ipa.AddressFamily == AddressFamily.InterNetwork)
                            ips.AppendFormat("{0};", ipa.ToString());
                    }
                }
                catch (Exception)
                {
                    // ignored
                }
                return ips.ToString();
            }
            /// <summary>
            /// 设置实体中各属性值为空
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="entity"></param>
            public static void SetEntityNull<T>(T entity)
            {
                PropertyInfo[] propertys = entity.GetType().GetProperties();
                foreach (PropertyInfo property in propertys)
                {
                    //if (property.PropertyType == typeof(string))
                    //{
                    //    property.SetValue(entity,  null);
                    //}
                    property.SetValue(entity, null);
                }
            }
    
            /// <summary>
            /// 计算方法
            /// </summary>
            /// <param name="decimalPoint">1:四舍五入,2:五舍六入</param>
            /// <param name="d">需要格式化参数</param>
            /// <param name="i">显示小数位后几位</param>
            /// <returns></returns>
            public static decimal? RoundMoney(string decimalPoint, double d, int i)
            {
                if (d == 0)
                {
                    switch (i)
                    {
                        case 1:
                            d = 0.0;
                            break;
                        case 2:
                            d = 0.00;
                            break;
                        case 3:
                            d = 0.000;
                            break;
                        case 4:
                            d = 0.0000;
                            break;
                    }
                }
                else
                {
                    if (d > 0)
                    {
                        if (decimalPoint == "2")
                        {
                            d += 4 * Math.Pow(10, -(i + 1));
                        }
                        else
                        {
                            d += 5 * Math.Pow(10, -(i + 1));
                        }
                    }
                    else
                    {
                        if (decimalPoint == "2")
                        {
                            d += -4 * Math.Pow(10, -(i + 1));
                        }
                        else
                        {
                            d += -5 * Math.Pow(10, -(i + 1));
                        }
                    }
                }
    
                string str = d.ToString();
                string[] strs = str.Split('.');
                int idot = str.IndexOf('.');
                string prestr = strs[0];
                if (strs.Length >= 2)
                {
                    string poststr = strs[1];
                    if (poststr.Length > i)
                    {
                        poststr = str.Substring(idot + 1, i);
                    }
                    string strd = prestr + "." + poststr;
                    d = Double.Parse(strd);
                }
                return d.ToDecimal();
            }
    
            /// <summary>
            /// 格式转换C4:0.0000;C3:0.000;C2:0.00
            /// </summary>
            /// <param name="value">C4,C3,C2</param>
            /// <returns></returns>
            public static string GetFormatConversion(string value)
            {
                if (value == "C4")
                {
                    return "0.0000";
                }
                else if (value == "C3")
                {
                    return "0.000";
                }
                else if (value == "C2")
                {
                    return "0.00";
                }
                return null;
            }
    
            /// <summary>
            /// 获取所有的资产组织结构
            /// </summary>
            /// <returns></returns>
            public static List<Dept> GetAssetsDept()
            {
                List<ObjectsRange> objectsRanges = new List<ObjectsRange>()
                {
                     ObjectsRange.Sb
                };
                var filter = ServiceData.GetSubDepts(new CustomQuery()
                {
                    IncludeAuthority = Extensions.NO,
                    SsuTypCode = new List<ServiceUnitType>() { ServiceUnitType.Cck },
                    SsuMatrngList = objectsRanges
                });
                if (filter == null)
                {
                    return new List<Dept>();
                }
                List<Dept> depts = ResourceBus.Current[ResourceBus.DEPT_LIST] as List<Dept>;
                return depts.Where(m => filter.Exists(n => n.DeptCode == m.DeptCode)).ToList() ?? new List<Dept>();
            }
            /// <summary>
            ///根据权限获取资产组织结构
            /// </summary>
            /// <param name="usrId"></param>
            /// <param name="funcId"></param>
            /// <returns></returns>
            public static List<Dept> GetPersonalAssetsDept(string usrId,string funcId)
            {
                List<ObjectsRange> objectsRanges = new List<ObjectsRange>()
                {
                     ObjectsRange.Sb
                };
                var filter = ServiceData.GetSubDepts(new CustomQuery()
                {
                    UserId = usrId,
                    FuncId = funcId,
                    IncludeAuthority = Extensions.YES,
                    SsuTypCode = new List<ServiceUnitType>() { ServiceUnitType.Cck },
                    SsuMatrngList = objectsRanges
                });
                if (filter == null)
                {
                    return new List<Dept>();
                }
                List<Dept> depts = ResourceBus.Current[ResourceBus.DEPT_LIST] as List<Dept>;
                return depts.Where(m => filter.Exists(n => n.DeptCode == m.DeptCode)).ToList() ?? new List<Dept>();
            }
    
            public static List<User> GetAssetsUser()
            {
                List<ObjectsRange> objectsRanges = new List<ObjectsRange>()
                {
                     ObjectsRange.Sb
                };
                var filter = ServiceData.GetDoctorsByRole(new CustomQuery()
                {
                    IncludeAuthority = Extensions.NO,
                    SsuTypCode = new List<ServiceUnitType>() { ServiceUnitType.Cck },
                    SsuMatrngList = objectsRanges
                });
                return filter;
            }
    
        }
  • 相关阅读:
    java中的设计模式
    stack
    最大堆排序
    Starship Troopers
    Tick and Tick
    Last non-zero Digit in N!
    G
    C
    B
    A
  • 原文地址:https://www.cnblogs.com/yuanshuo/p/14283080.html
Copyright © 2020-2023  润新知