您的位置:首页 > 其它

养老院的出院的存储过程包括历史记录备份和原记录删除,并调用其他存储过程

2013-02-04 13:06 363 查看
set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[usp_DelOlderBaseInfo]

@Id INT,--老人Id

@LeaveTime DateTime,

@leavereason varchar(50),

@userid int,

@remark VARCHAR(150),

@resthomeid int,

@msg varchar(max) output,

@isleave bit output

AS

BEGIN TRANSACTION

--
总床位数 床位状态 床位号 房间号 阶段性费用变量过节费的id空调费的id暖气费id 几条数量

DECLARE @Error INT,@SumBed INT,@BedState INT,@BedId INT,@roomid int,@phasepaytypeid int,@phasepaytypeid1 int,@phasepaytypeid2 int,@phasepaytypeid3 int,@count int,

--过节开始时间
过节结束时间 外出时间
返回时间

@starttime datetime,@endtime datetime,@outtime datetime,@backtime datetime,@phasepaysetid int,

--出院Id
出院月份的一号 月固定费用交纳结束日期

@outid int,@date varchar(50) ,@expenseendtime datetime

SET @Error=0

set @msg=''

set @date=convert(varchar,year(@leavetime))+'-'+convert(varchar,month(@leavetime))+'-'+'01'

select @phasepaytypeid1=phasepaytypeid from phasepaytypeset where phasepaytypename='过节费'

select @phasepaytypeid2=phasepaytypeid from phasepaytypeset where phasepaytypename='空调费'

select @phasepaytypeid3=phasepaytypeid from phasepaytypeset where phasepaytypename='暖气费'

--判断本月过节费是否交清

--找最近的一次过节开始时间

--select top 1 @phasepaysetid1=phasepaysetid,@starttime=starttime from phasepayset where phasepaytypeid=@phasepaytypeid order by endtime desc--2013-01-06

--过节结束时间

select @endtime=endtime from phasepayset where phasepaysetid=@phasepaysetid--2013-01-12

--找最近外出的时间段

select @outid=outid,@outtime=outtime from outinfo where olderid=@Id order by backtime desc --8 2013-1-6

--外出返回时间

select @backtime=backtime from outinfo where outid=@outid--2013-01-16

--如果老人在过节期间没有全部外出,,,则可能收过节费

-- if not (@outtime<@starttime and @backtime>@endtime)--过节期间全部外出

--如果在过节开始时间在本月初到出院时间范围内或者结束时间在本月初到出院时间范围内

-- if(@endtime between @date and @LeaveTime or @starttime between @date and @LeaveTime)

-- set @msg=' 需要交纳本月的过节费'

-- select * from phasepayset

--判断阶段性费用是否交完(除了本月过节费)

select * from phasepayinfo

select @count=count(*),@phasepaytypeid=phasepaytypeid from phasepayinfo where state='未交' or endtime<@LeaveTime and olderid=@Id group by phasepaytypeid

if @count>0 and @phasepaytypeid=@phasepaytypeid1

begin

set @msg=@msg+' 需要交清过节费'

exec usp_LeaveF @Id

end

else if @count>0 and @phasepaytypeid=@phasepaytypeid2

begin

set @msg=@msg+' 需要交清空调费'

--调用空调费存储过程

exec usp_LeaveA @Id

end

else if @count>0 and @phasepaytypeid=@phasepaytypeid3

begin

set @msg=@msg+' 需要交清暖气费'

exec usp_LeaveH @Id

end

--判断医疗费用是否交清

select @count=count(*) from medicalpayinfo where olderid=@Id and expensestate='未交'

if @count>0

set @msg=@msg+ ' 需要交清医疗费用'

--判断月固定费用是否交清

select @count=count(*) from monthpayinfo where expensestate='未交' or expenseendtime<@LeaveTime and olderid=@Id

if @count>0

begin

set @msg=@msg+' 需要交清月固定费用'

exec usp_Leave @Id

end

--如果老人交了几个月的月固定费用,看看是否要退还

select @expenseendtime=expenseendtime from monthpayinfo where olderid=@Id

if @expenseendtime>@LeaveTime

set @msg=@msg+' 月固定费用还未退还'

--判断押金是否退还

select @count=count(*) from depositinfo where isback=0 and olderid=@Id

if @count>0

set @msg=@msg+' 老人押金还未退还'

--判断医疗押金是否退换

select @count=count(*) from MDepositInfo where isback=0 and olderid=@Id

if @count>0

set @msg=@msg+' 医疗押金还未退还'

--备份历史记录

--1备份老人基本信息

insert into basicinfohistory select * from basicinfo where olderid=@Id

SET @Error=@Error+@@ERROR

--2备份老人未缴费信息------------

insert into NotPayCueHistory SELECT * FROM notpaycue WHERE olderid=@Id

SET @Error=@Error+@@ERROR

--3备份阶段费用表-----

insert into phasepayinfohistory select * from phasepayinfo where olderid=@Id

SET @Error=@Error+@@ERROR

--4备份月固定费用缴纳表中老人的信息--------------

insert into MonthPayInfohistory SELECT * FROM MonthPayInfo WHERE olderid=@Id

SET @Error=@Error+@@ERROR

--5备份外出信息表中老人的信息

insert into outinfohistory SELECT * FROM OutInfo WHERE olderid=@Id

SET @Error=@Error+@@ERROR

--6备份老人健康档案表中的老人信息

insert into healthrecordhistory SELECT * FROM healthrecord WHERE olderid=@Id

SET @Error=@Error+@@ERROR

--备份医疗押金的信息

insert into MDepositInfoHistory SELECT * FROM MDepositInfo WHERE olderid=@Id

SET @Error=@Error+@@ERROR

--insert into MedicalPayInfoHistory select * from MedicalPayInfo where olderid=@Id

--select * from mediitemtype

--select * from MedicalPayInfo

set @Error=@Error+@@error

--7备份医疗费用记录表中老人的信息----------------

--insert into medicalpayinfo values(61,'打针',1,'22','2012-12-12','已交','2012-12-12',1,'')

insert into MedicalpayInfohistory SELECT * FROM MedicalpayInfo WHERE olderid=@Id--将其他表中信息向已建表中插入相关信息

--select * into medicalpayinfohistory1 from medicalpayinfo where olderid=@Id --将其他表中信息向新表中插入信息(自动创建新表medicalpayinfohistory1,两个表的结构一样)

SET @Error=@Error+@@ERROR

--8备份入住押金中的老人信息

insert into DepositInfohistory SELECT * FROM DepositInfo WHERE olderId=@IdS

SET @Error=@Error+@@ERROR

--9备份入住表中老人的信息

insert into liveinfohistory SELECT * FROM liveinfo WHERE olderId=@Id

SET @Error=@Error+@@ERROR

--10备份家属信息表中老人家属的信息

insert into RelationInfohistory SELECT * FROM RelationInfo WHERE olderId=@id

SET @Error=@Error+@@ERROR

--修改床位状态为空闲

UPDATE BedInfo SET state='使用' WHERE BedId=@BedId

SET @Error=@Error+@@ERROR

--获得房间总床位数

select @SumBed=bedcount from roomtypeinfo where roomtypeid=(select roomtypeid from roominfo where roomid=@roomid)

--获得房间空闲和维修的总床位数

select @BedState=count(*) from bedinfo where roomid=@roomid and state='空闲'

--如果总床位数等于空闲床位数,那么修改房间类型为空闲

IF @SumBed=@BedState

UPDATE RoomInfo SET roomstyle='空闲' WHERE roomid=@roomid

--插入出院信息

insert into leaveinfo values(@Id,@LeaveTime,@leavereason,@userid,@remark)

SET @Error=@Error+@@Error

--1删除家属信息表中老人家属的信息

IF EXISTS(SELECT * FROM RelationInfo WHERE olderId=@id)

BEGIN

DELETE FROM RelationInfo WHERE olderId=@Id

SET @Error=@Error+@@ERROR

END

--2删除入住表中老人的信息

IF EXISTS(SELECT * FROM liveinfo WHERE olderId=@Id)

BEGIN

DELETE FROM liveinfo WHERE olderId=@Id

SET @Error=@Error+@@ERROR

END

--3删除入住押金中的老人信息

IF EXISTS(SELECT * FROM DepositInfo WHERE olderId=@Id)

BEGIN

delete from depositinfo where olderId=@Id

SET @Error=@Error+@@ERROR

END

--4删除医疗费用记录表中老人的信息

IF EXISTS(SELECT * FROM MedicalpayInfo WHERE olderid=@Id)

BEGIN

DELETE FROM MedicalpayInfo WHERE olderid=@Id

SET @Error=@Error+@@ERROR

END

--删除医疗押金的表

IF EXISTS(SELECT * FROM MDepositInfo WHERE olderid=@Id)

BEGIN

DELETE FROM MDepositInfo WHERE olderid=@Id

SET @Error=@Error+@@ERROR

END

--5删除老人健康档案表中的老人信息

IF EXISTS(SELECT * FROM healthrecord WHERE olderid=@Id)

BEGIN

DELETE FROM healthrecord WHERE olderid=@Id

SET @Error=@Error+@@ERROR

END

--6删除外出信息表中老人的信息

IF EXISTS(SELECT * FROM OutInfo WHERE olderid=@Id)

BEGIN

DELETE FROM OutInfo WHERE olderid=@Id

SET @Error=@Error+@@ERROR

END

--7删除月固定费用缴纳表中老人的信息

IF EXISTS(SELECT * FROM MonthPayInfo WHERE olderid=@Id)

BEGIN

DELETE FROM monthpayinfo WHERE olderid=@Id

SET @Error=@Error+@@ERROR

ENd

--8删除阶段费用表

if exists (select * from phasepayinfo where olderid=@Id)

begin

delete from phasepayinfo where olderid=@id

set @Error=@Error+@@error

end

--9删除未缴费提醒表中老人的信息

IF EXISTS(SELECT * FROM notpaycue WHERE olderid=@Id)

BEGIN

DELETE FROM notpaycue WHERE olderid=@Id

SET @Error=@Error+@@ERROR

END

--10删除老人基本表中的老人信息

DELETE FROM basicinfo WHERE olderid=@Id

SET @Error=@Error+@@ERROR

IF @Error>0 or len(@msg)>0

begin

--如果是false

set @isleave=0--0是false,net中调用输出的参数

ROLLBACK TRANSACTION

end

ELSE if (len(@msg)>0)

begin

set @isleave=1

COMMIT TRANSACTION

end

DBHelper中的

/// <summary>

/// 调用存储过程的方法

/// </summary>

/// <param name="name"></param>

/// <param name="values"></param>

/// <returns></returns>

public static Object GetScalarByStoredProcedure(string name, params SqlParameter[] values)

{

try

{

SqlCommand com = new SqlCommand();

com.Connection = Con;

com.CommandText = name;

com.CommandType = CommandType.StoredProcedure;

com.Parameters.AddRange(values);

return com.ExecuteNonQuery();

}

catch (SqlException ex)

{

string info = null;

if (ex.ErrorCode < 0)

{

info = ex.ErrorCode + ex.Message;

}

else

{

info = "";

}

return info;

}

finally

{

con.Close();

}

}

service中的

/// <summary>

/// 2013-01-16

/// 调用出院存储过程

/// </summary>

/// <param name="leave"></param>

/// <param name="resthomeId"></param>

/// <param name="olderid"></param>

/// <returns></returns>

public static List<object> GetProc(LeaveInfo leave, int resthomeId, int olderid)

{

SqlParameter para1 = new SqlParameter("@isleave", SqlDbType.Bit);

para1.Direction = ParameterDirection.Output;

SqlParameter para2 = new SqlParameter("@msg", SqlDbType.VarChar, 100);

para2.Direction = ParameterDirection.Output;

SqlParameter[] para = new SqlParameter[]

{

new SqlParameter("@RestHomeId",resthomeId),

new SqlParameter("@LeaveTime",leave.LeaveTime),

new SqlParameter("@LeaveReason",leave.LeaveReason),

new SqlParameter("@UserId",leave.User.UserId),

new SqlParameter("@Remark",leave.Remark),

new SqlParameter("@Id",olderid),

para1,para2

};

DBHelper.GetScalarByStoredProcedure("usp_DelOlderBaseInfo", para);

List<object> list = new List<object>();

list.Add(para1.Value);

list.Add(para2.Value);

return list;

}

表层

RestHomeInfo restHome = Session["restHome"] as RestHomeInfo;

int restHomeId = StringHander.GetRestHomeId(user, restHome);

List<object> list = LeaveInfoManager.GetProc(leaveInfo, restHomeId, olderId);

bool b = Convert.ToBoolean(list[0]);

string message = Convert.ToString(list[1]);

if (b)

{

lblError.Text = "";

//Button btn = (Button)FindControl("btnUpdate");

//ScriptManager.RegisterStartupScript(btn, this.GetType(), "", "alert('添加成功!');location.href='ViewLeaveInfo.aspx';", true);

//ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('添加成功!');location.href='ElderLeaveInfo.aspx';</script>");

lblMsg.Text = "出院成功!";

Response.Redirect("ViewLeaveInfo.aspx");

}

else

{

lblMsg.Text = Older.OlderName+"的:" + message+"因此不能办理出院呢!";

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐