📄 frmbrcf.java
字号:
lblDisplay.setText("操作状态 ................");
lblDisplay.setBounds(10,390,300,20);
///初始化确定
btnSure=new Button(group,SWT.None);
btnSure.setText("确定");
btnSure.setBounds(440,90,50,20);
//初始化删除
btnDel=new Button(group,SWT.None);
btnDel.setText("删除");
btnDel.setBounds(490,90,50,20);
//初始化保存
btnSave=new Button(shell,SWT.None);
btnSave.setText("保存");
btnSave.setBounds(400,390,50,20);
//初始化放弃
btnCancel=new Button(shell,SWT.None);
btnCancel.setText("放弃");
btnCancel.setBounds(450,390,50,20);
//初始化返回
btnReturn=new Button(shell,SWT.None);
btnReturn.setText("返回");
btnReturn.setBounds(500,390,50,20);
//对"删除"按钮设置监听
btnDel.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent eDel)
{
removeTable(); //清除表格中所选的行
delTextMX(); //清除文本框中的内容
}
});
//对"保存"按钮增加监听
btnSave.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e)
{
switch(userType) //根据用户类型来判断操作方向
{
case 1: //1为保存处方,0为发药
if(table.getItemCount()==0|txtBRXM.getText().length()==0)
{
showMessage("错误","此处方单号信息不完整!",SWT.ICON_ERROR);
}
else
{
int retChoise=showMessage("提示!","确定要保存此处方吗?",SWT.CANCEL|SWT.OK|SWT.ICON_INFORMATION);
if(retChoise==32) //如果是回车
{
insertBRCF(); //保存新增加的处方单号
saveTable(); //在CFMX中插入Tabl项
lblDisplay.setText("新增的处方单号为:"+cmbCFDH.getText()+"及药品明细提交成功!");
showMessage("成功","此处方单号"+cmbCFDH.getText()+"保存成功!",SWT.OK|SWT.ICON_INFORMATION);
delTextCF(); //删除文本框中上次内容!
table.removeAll(); //删除表格中上次内容!
cmbCFDH.setText(createCFDH());//自动生成下一个单号
countNO=1; //设置表格的行数为1
txtHJJE.setText("0");//设置默认值为0
txtBRXM.setFocus();
}
}
break;
case 0: //此为发药状态
int retChoise=showMessage("提示!","确定要保存此次发药吗?",SWT.CANCEL|SWT.OK|SWT.ICON_INFORMATION);
if(retChoise==32) //如果是回车
{
//根据相应的处方单号更新CFD表,插入发药时间,发药人等信息
DB.updateBRCF(cmbCFDH.getText(),txtFYR.getText());
cmbCFDH.removeAll(); //清空处方单号组合框
table.removeAll(); //清空表格中的内容
getNotFY(); //得到还没有发药的处方单号
lblDisplay.setText("处方单号为:"+cmbCFDH.getText()+"成功发药!");
//如果没有没有发药的单号"保存"不可用
if(cmbCFDH.getText().length()==0)
btnSave.setEnabled(false);
}
break;
}
}
});
//对"确定"按钮增加监听
btnSure.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e)
{
calculateAll(); //计算处方的总金额
addTableItem(); //向表格中加内容
cmbYM.setFocus();
btnSave.setVisible(true);
btnSave.setEnabled(true);
}
});
//为"返回"按钮增加监听
btnReturn.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e)
{
}
});
//为"药名"组合框增加回车监听!
cmbYM.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent eve)
{
switch (eve.keyCode)
{
case SWT.CR: //如果是回车,调用函数得到相应药品的详细信息
getYPXX(cmbYM.getText());
break;
}
}
});
//为"数量"增加按下键的监听
txtSL.addModifyListener(new ModifyListener(){
public void modifyText(ModifyEvent eve)
{
String lstSL=txtSL.getText();
if(lstSL.equals(""))//数量为空就返回
return;
try
{
calculateTable();//计算单个药品的价格
}
catch(Exception ex) //验证数量输入的合法性
{
showMessage("错误!","请输入0-9之间的数字!",SWT.OK|SWT.ICON_ERROR);
txtSL.setText("");
return;
}
}
});
//为"数量"增加监听
txtSL.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent eveSL)
{
if(eveSL.keyCode==13) //当按下回车键
{
try
{
calculateTable();//计算单个药品的价格
btnSure.setFocus();
}
catch(Exception ex)
{
showMessage("错误!","请输入0-9之间的数字!",SWT.OK|SWT.ICON_ERROR);
txtSL.setText("");
return;
}
}
}
});
}
/**
* 函数名:nitData
* 编写者:郭军,田文涛
* 功 能:初始化页面相关所需要的信息!!
* 输入参数:
* 输出参数:
* 备 注:
*/
public void initData()
{
//定义I来接收当前用户返回值!1:表示用户登录成功;-1:数据库查询失败;0:当前没有用户登录
int i= DB.getCurentUser();
if(i==1)
{
loadData();
System.out.println("现在调用了 getCurentUser()方法,成功得到当前用户!");
}
else if(i==-1)
showMessage("错误","数据库查询失败!",SWT.ICON_ERROR);
if(i==0)
showMessage("错误","当前没有用户登录!",SWT.ICON_ERROR);
}
/**
* 函数名:getBRCF
* 编写者:郭军,田文涛
* 功 能:得到对应的病人处方信息
* 输入参数:
* 输出参数:
* 备 注:
*/
public void getBRCF(String strCFDH)
{
try
{
int rtnCF=DB.getBRCF(strCFDH);
if(rtnCF>0)
{
txtBRXM.setText(DB.rstCF.getString("BRXM"));//将病人姓名加入
txtBRXB.setText(DB.rstCF.getString("BRXB"));//将病人改名加入
txtBRNL.setText(DB.rstCF.getString("BRNL"));//将病人年龄加入
txtKDKS.setText(DB.rstCF.getString("KDKS"));//将医生开单科室加入
txtCFRQ.setText(DB.rstCF.getString("CFRQ"));//处方日期加入
txtCFYS.setText(DB.rstCF.getString("CFYS"));//处方医师加入
txtFYRQ.setText(DB.rstCF.getString("FYSJ"));//处方时间加入
cmbFYYF.setText(DB.rstCF.getString("FYYF"));//发药药房加入
txtFYR.setText(DB.rstCF.getString("FYR")); //发药人加入
//txtHJJE.setText(DB.rstCF.getString("ZZSJ"));
}
else
{
disEnable(); //设置相应控件不可用
delTextCF(); //清空文本框中的内容
showMessage("错误","数据库没有此处方单号!",SWT.ICON_ERROR);
btnSave.setEnabled(false);
btnCancel.setEnabled(false);
}
}
catch(Exception ex2)
{
System.err.println(ex2.getMessage());
}
}
/**
* 函数名:creatMenu
* 编写者:郭军,田文涛
* 功 能:创建快捷的右键菜单
* 输入参数:
* 输出参数:
* 备 注:
*/
private Menu creatMenu()
{
Menu rigthMenu=new Menu(shell); //创建一个菜单
rigthMenu.addMenuListener(new MenuAdapter(){
public void menuShown(MenuEvent eMenu)
{
Menu menu=(Menu)eMenu.widget;
MenuItem[] items=menu.getItems();
//得到表格数据的条数!
int count=table.getSelectionCount();
//如果是医生就可用(新建)
items[0].setEnabled(userType==1&&table.getItemCount()>=0);
//如果是医生且所选表格行数不为0可用(编辑)
items[2].setEnabled(userType==1&&count!=0);
//如果是医生且所选表格行数不为0可用(删除)
items[3].setEnabled(userType==1&&count!=0);
}
});
//加入"增加"
MenuItem addItem=new MenuItem(rigthMenu,SWT.CASCADE);
addItem.setText("增加");
//增加"增加"的动作
addItem.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent eAdd)
{
cmbYM.setEnabled(true); //药名组合框可用
txtSL.setEnabled(true); //数量文本框可用
btnSure.setEnabled(true); //"保存"按钮可用
cmbYM.setFocus();
}
});
//建立分隔线
new MenuItem(rigthMenu,SWT.SEPARATOR);
//加入"编辑"
MenuItem itemEdit=new MenuItem(rigthMenu,SWT.CASCADE);
itemEdit.setText("编辑");
//增加"编辑"的动作
itemEdit.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent eEdit)
{
//编辑所选的行的内容
TableItem itemSelect=table.getSelection()[0];
editEntry(itemSelect);
System.out.println("查看的列数为: "+itemSelect);
}
});
//加入"删除"
MenuItem itemDel=new MenuItem(rigthMenu,SWT.CASCADE);
itemDel.setText("删除");
//增加"删除"的动作
itemDel.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent eDel)
{
removeTable(); //删除所选的行
delTextMX(); //清空文本框中的内容
}
});
return rigthMenu;
}
/**
* 函数名:createCFDH
* 编写者:郭军,田文涛
* 功 能:得到还没有发药的处方号!
* 输入参数:
* 输出参数:
* 备 注:
*/
public String createCFDH()
{
//申明返回变量
String retDH=null;
//申明返回中间变量
long ret=0;
//得到系统日期
String strDate=DB.getNowDate();
//生成处方单号日期的部分
String string=strDate.substring(0,4); //取出年
string=string+strDate.substring(5,7); //取出月
string=string+strDate.substring(8,10); //取出日
string=string+DB.getUserInfo("UserID").trim(); //年月日+ID号
String strDH=DB.getDH(string); //得到返回的单号
if(strDH.equals("Error"))
{
showMessage("错误","处方单号创建失败!",SWT.ICON_ERROR);
retDH="Error";
}
if(strDH.equals("none"))
{
ret =Long.parseLong(string+"001"); //转换为Long型
retDH=Long.toString(ret);
}
else
{
ret=Long.parseLong(strDH)+1; //相应最大的编号+1
retDH=Long.toString(ret);
System.out.println("返回的结果是: " + retDH);
}
return retDH;
}
/**
* 函数名:getNotFY
* 编写者:郭军,田文涛
* 功 能:得到还没有发药的处方号!
* 输入参数:
* 输出参数:
* 备 注:
*/
public void getNotFY()
{
//得到还没有发药的处方单号的条数
int countDisFY=DB.disFY();
try
{
//读出第一条记录!
cmbCFDH.add(DB.rstCF.getString("CFDH"));
//因为有next()语句,所以先打印出第一条记录
System.out.println(DB.rstCF.getString("CFDH"));
//读出其它项的记录!
while(DB.rstCF.next())
{
//查询出未发处方单号并加入到处方单号中
cmbCFDH.add(DB.rstCF.getString("CFDH"));
System.out.println(DB.rstCF.getString("CFDH"));
}
//将第0条加入
cmbCFDH.select(0);
}
catch(Exception eFY)
{
System.err.println(eFY.getMessage());
}
}
/**
* 函数名:insertBRCF
* 编写者:郭军,田文涛
* 功 能:插入病人的详细处方
* 输入参数:
* 输出参数:
* 备 注:
*/
public void insertBRCF()
{
String[] lstBRCF=new String[8];
lstBRCF[0]=cmbCFDH.getText();
lstBRCF[1]=txtBRXM.getText();
lstBRCF[2]=txtBRXB.getText();
lstBRCF[3]=txtBRNL.getText();
lstBRCF[4]=txtKDKS.getText();
lstBRCF[5]=txtCFYS.getText();
lstBRCF[6]=txtCFRQ.getText();
lstBRCF[7]=cmbFYYF.getText();
DB.insertBRCF(lstBRCF); //调用函数插入处方单号
}
/**
* 函数名:getYPXX(得到药品信息)
* 编写者:郭军,田文涛
* 功 能:得到还没有发药的处方号!
* 输入参数:
* 输出参数:
* 备 注:
*/
public void getYPXX(String YPNM)
{
float fCharge = 0; //设置一种药一定数量后的返回价格
float fDJ=0; //中间变量
int iSL=0;
String strDJ=null; //中间转换变量
String strSL=null;
String[] lstMX=new String[9];
int iYP=DB.getYPXX(YPNM); //通过药品内码查询出相对应的药品信息
if(iYP == -1) //返回值-1:SQL连接出错;0:没有所查询的药品
{
showMessage("查询错误","SQL连接出错!",SWT.ICON_ERROR);
}
if(iYP==0)
{
showMessage("查询错误","不能得到相应的药品信息,请重新输入!",SWT.ICON_ERROR);
}
else //查询成功则取出相应的值
{
try
{
cmbYM.setText(DB.rstCF.getString("YM")); //取出药名
txtDJ.setText(DB.rstCF.getString("YPDJ")); //取出药品单价
cmbJJDW.setText(DB.rstCF.getString("JJDW")); //取出计价单位
//txtYFKC.setText(DB.rstCF.getString(""));
txtJX.setText(DB.rstCF.getString("JX")); //取出剂型
txtGG.setText(DB.rstCF.getString("GG")); //取出规格
txtCD.setText(DB.rstCF.getString("CD")); //取出产地
txtCJ.setText(DB.rstCF.getString("CJ")); //取出厂家
txtBZ.setText(DB.rstCF.getString("BZ")); //取出厂家
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -