公用方法封装

 /// <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;
        }

    }
原文地址:https://www.cnblogs.com/yuanshuo/p/14283080.html