function printSffp(sfsb) {
    var parm = "sfsb=" + sfsb + "&fplx=1";
    $.ajax({
        type: "POST",   //必须要用POST
        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
        url: "../mzsf/fpcx.aspx/printSfXP?" + parm,
        success: function (result) {
            if (result != false) { }
            else { $.messager.alert('打印提醒', '收费记录不存在'); }
        }
    });
}

public bool printSfXP(string fplx, string sfsb)
        {
            bool result = true;
            decimal decTotal = 0;

StringBuilder sb = new StringBuilder();
            ResultObject mzsf1 = new BPL.mzsf.MzsfManager().GetMzsfk1(long.Parse(sfsb));

DataTable ksxxdt = DBVisitor.ExecuteTable(SqlLoad.GetFormat("ZJXP_GetKSZGxx_CF", sfsb));
            if (ksxxdt.Rows.Count < 1)
            {
                ksxxdt = DBVisitor.ExecuteTable(SqlLoad.GetFormat("ZJXP_GetKSZGxx_YJ", sfsb));
            }
            DataTable dtmzsf1 = null;

ResultObject ObjBrxx = new ResultObject();
            if (mzsf1.RTable.Rows.Count > 0)//收费记录存在 mz_mzsfk1
            {
                sb.Append("        " + Yljgmc + "\n");
                sb.Append("         结算电子凭证\n\n\n");
                dtmzsf1 = mzsf1.RTable;
                ObjBrxx = new BPL.Gy.GyManager().GetComplexBrxxByJzkh(dtmzsf1.Rows[0]["JZKH"].ToString());
                sb.Append("就诊卡号:" + dtmzsf1.Rows[0]["JZKH"].ToString() + "\n");
                sb.Append("就诊科室:" + ksxxdt.Rows[0]["KSMC"] + "\n");
                sb.Append("姓名:" + dtmzsf1.Rows[0]["BRXM"].ToString() + "        性质:" + ObjBrxx.RTable.Rows[0]["XZMC"].ToString() + "\n");
                sb.Append("交易日期:" + dtmzsf1.Rows[0]["SFRQ"].ToString() + "\n\n");
            }
            else
            {
                result = false;
                return result;
            }
            //费用类型汇总
            ResultObject mzsf2 = new BPL.mzsf.MzsfManager().GetMZ_MZSFK2Print(long.Parse(sfsb));
            ResultObject mxro = new BPL.mzsf.MzsfManager().GetCFandYJ(long.Parse(sfsb));
            StringBuilder sbmx = new StringBuilder();
            if (mzsf2.RTable.Rows.Count > 0)
            {
                DataTable mzsf2dt = mzsf2.RTable;
                int i = 0;
                foreach (DataRow drsf in mzsf2dt.Rows)
                {
                    DataRow[] dataR = mxro.RTable.Select(" FYGB='" + drsf["SFXM"].ToString() + "'");
                    decimal free = decimal.Parse(drsf["FYHJ"].ToString());
                    decTotal = decTotal + free;
                    i = i + 1;
                    sb.Append(drsf["YLMC"].ToString() + "\n");
                    if (dataR.Length > 0)
                    {
                        foreach (DataRow dr in dataR)
                        {
                            if (i > 14)
                                break;
                            float bl = 1.0f;
                            if (!string.IsNullOrEmpty(dr["zfbl"].ToString()))
                                bl = float.Parse(dr["zfbl"].ToString());
                            string strtype = string.Empty;
                            if (bl == 0)
                                strtype = "[甲]";
                            else if (bl == 1.0)
                                strtype = "[丙]";
                            else if (bl < 1.0 && bl > 0)
                                strtype = "[乙]";
                            bl = bl * 100;
                            float total = float.Parse(dr["dj"].ToString()) * float.Parse(dr["sl"].ToString());
                            i++;
                            sb.Append(SetColunms(1, dr["xmmc"].ToString()) + "  " + dr["sl"].ToString() + "  " + total.ToString("F2") + "\n");
                        }
                    }
                }
            }
            sb.Append("\n");
            sb.Append("==========结算信息==========\n");
            sb.Append(GetArr(20, dtmzsf1.Rows[0]["DYXX"].ToString()));
            sb.Append(GetArr(20, "【打印发票】如需发票请到门诊楼一层收费窗口打印"));
            sb.Append("==========导诊信息==========\n");
            sb.Append("医生:" + ksxxdt.Rows[0]["XM"] + "  电脑号:" + sfsb + "\n");
            result = Print(sb.ToString());
            return result;
        }
        public bool Print(string str)
        {
            bool result = true;
            if (str == "")
            {
                result = false;
                return result;
            }
            try
            {

sr = new StringReader(str);

PrintDocument pd = new PrintDocument();
                pd.PrintController = new System.Drawing.Printing.StandardPrintController();
                pd.PrinterSettings.PrinterName = "SF";
                pd.DefaultPageSettings.Margins.Top = 2;
                pd.DefaultPageSettings.Margins.Left = 0;
                PaperSize p = new PaperSize();
                int count = Regex.Matches(str, @"\n").Count;
                foreach (PaperSize ps in pd.PrinterSettings.PaperSizes)
                {
                    int wid = ps.Width;
                    p.Width = ps.Width;
                    p.Height = 35 * count + 100;
                }
                pd.DefaultPageSettings.PaperSize = p;
                pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
                pd.Print();

}
            catch (Exception ex)
            {
                result = false;
            }
            finally
            {
                if (sr != null)
                    sr.Close();
            }
            return result;
        }

private void pd_PrintPage(object sender, PrintPageEventArgs ev)
        {
            Font printFont = new Font("Arial", 9);//打印字体

float linesPerPage = 0;
            float yPos = 0;
            int count = 0;
            float leftMargin = ev.MarginBounds.Left;
            float topMargin = ev.MarginBounds.Top;
            String line = "";

linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);
            while (count < linesPerPage && ((line = sr.ReadLine()) != null))
            {
                yPos = topMargin + (count * printFont.GetHeight(ev.Graphics));
                ev.Graphics.DrawString(line, printFont, Brushes.Black,
                   leftMargin, yPos, new StringFormat());
                count++;
            }
            if (line != null)
                ev.HasMorePages = true;
            else
                ev.HasMorePages = false;
        }

/// <summary>
        /// 根据内容进行分行
        /// </summary>
        /// <param name="linelen">每行字数</param>
        /// <param name="text">原文字行(段落)文字</param>
        /// <returns></returns>
        private string GetArr(int linelen, string text)
        {
            string list = string.Empty;
            int listcount = text.Length % linelen == 0 ? text.Length / linelen : (text.Length / linelen) + 1;
            for (int j = 0; j < listcount; j++)
            {
                try
                {
                    list += text.Substring(j * linelen, linelen) + "\n";
                }
                catch (Exception)
                {
                    list += text.Substring(j * linelen) + "\n";
                }
            }
            return list;
        }
        private string SetColunms(int linelen, string text)
        {
            string list = string.Empty;
            string bzzd = " ";
            int listcount = 0;
            byte[] byte1 = Encoding.Default.GetBytes(text);
            byte[] byte2 = Encoding.Default.GetBytes(bzzd);
            if (linelen == 1)
            {
                byte[] byte3 = Encoding.Default.GetBytes("一般诊疗费(社区服务中心和乡");
                listcount = byte3.Length <= byte1.Length ? 0 : byte3.Length - byte1.Length;
                if (listcount != 0)
                {
                    for (int i = 0; i < listcount; i++)
                    {
                        text += bzzd;
                    }
                }
                list = text;
            }
            else if (linelen == 2)
            {
                byte[] byte3 = Encoding.Default.GetBytes("123");
                listcount = byte3.Length <= byte1.Length ? 0 : byte3.Length - byte1.Length;
                if (listcount != 0)
                {
                    for (int i = 0; i < listcount; i++)
                    {
                        text += bzzd;
                    }
                }
                list = text;
            }
            else
            {
                list = text;
            }
            return list;
        }

效果图如下:

医院收费小票打印简易版相关推荐

  1. JAVA打印简易版日历

    编写一个应用程序,输出某年某月的日历. package cn.edu.nefu.zhihu;import java.util.Calendar; import java.util.Scanner;pu ...

  2. 基于web的小票打印

    早上搞了半天想做个小票打印,因为系统是基于web的,一直找控件找到一个scriptx,调好了之后发现很多功能视乎不能用,后来一查才发现收费版才有那些功能,坑爹啊 后来发现pazu这个打印控件,测试了一 ...

  3. oracle医务室管理系统代码,三甲医院管理系统HIS(C#版源代码) 源码大小28M

    三甲医院管理系统HIS(C#版源代码) 源码大小28M 源码下载地址: (精品源码有详细软件界面截图) 本站提供几百套大型商业源码,平均一元一套,火爆下载中...... QQ:283072.28367 ...

  4. python车辆管理系统_Python简易版停车管理系统

    本文实例为大家分享了Python简易版停车管理系统的具体代码,供大家参考,具体内容如下 import time # 最大停车数 max_car = 100 # 当前停车数,初始为0 cur_car = ...

  5. python实现简易版成绩管理系统_Python 实现简易版成绩管理系统!

    上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统. 这次的简易版成绩管理系统,主要有六大功能:增加学生信息.删除学生信息.修改学 ...

  6. python成绩管理系统界面-python实现简易版学生成绩管理系统

    300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下 使用链表来实现 class Node(object): def __init__(self, data, pointer ...

  7. pyqt5 listview 不默认选中_pyqt5 商店小票打印的实现模板

    说明 最近在用pyqt5做商店小票打印,用的是得力DL-581PW(NEW)热敏小票打印机. 商店小票打印,属于escpos打印. 在网上找了很多实现方法,看了很多相关文章,经历了很多困难,最后终于实 ...

  8. 学生成绩管理系统设计报告python_python实现简易版学生成绩管理系统

    300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下 使用链表来实现 class Node(object): def __init__(self, data, pointer ...

  9. python简易版成绩管理系统_Python 实现简易版成绩管理系统

    上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统. 这次的简易版成绩管理系统,主要有六大功能:增加学生信息.删除学生信息.修改学 ...

最新文章

  1. element elcolumn 使用本地图片_年末了,教你如何使用Python实现上班摸鱼
  2. RichText设置高亮 (未完)
  3. 开源推荐:.Net Core3.1 + EF Core + LayUI 封装的MVC版后台管理系统
  4. junit 静态方法_预期异常规则和模拟静态方法– JUnit
  5. java hashMap缓存简单实现
  6. ffmpeg 下载网上m3u8的视频文件
  7. 自动控制原理9.4---李雅普诺夫稳定性分析
  8. Mac怎么读写NTFS格式?Mac电脑重新安装NTFS卷
  9. 【论文阅读】Generalization in Reinforcement Learning
  10. 手机网页通过js打开app
  11. 斯坦福自然语言处理(1)——三元组的使用
  12. Linux---挂载和卸载移动硬盘、开机自启动机械硬盘
  13. js 判断是否为 Android IOS IPAD IPHONE 等移动设备访问
  14. web学习-html(2)
  15. Sanity Check: SRM, AA test
  16. 软件测试周刊(第39期):我们必须全力以赴,同时又不抱持任何希望。
  17. R安装包失败解决办法
  18. 安装oracle有没有18030,10g 安装没有gb18030字符集
  19. ubuntu系统中将U盘格式化为exFAT格式
  20. 监狱人脸识别解决方案

热门文章

  1. firefox浏览器批处理插件imacros
  2. 也谈今日IBM(IBM china/IGSC/ISSC/ETC)
  3. C++编译器符号表有哪些内容?
  4. Windows 成“弃子”,Linux 终上位?
  5. 趣谈java工厂模式
  6. CC2541 软件I2C
  7. WebRTC中的SDP
  8. 数仓 DW层中主题表之页面交互事件概况主题(分享,点赞,收藏)
  9. 项目系统涉及行政区划(区划和城乡划分代码)更新最新数据问题
  10. HTML5学习,常用常记(浏览器,更新)