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

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+"因此不能办理出院呢!";
                    }








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
未来社区的建设背景和需求分析指出,随着智能经济、大数据、人工智能、物联网、区块链、云计算等技术的发展,社区服务正朝着数字化、智能化转型。社区服务渠道由分散向统一融合转变,服务内容由通用庞杂向个性化、服务导向转变。未来社区将构建数字化生态,实现数据在线、组织在线、服务在线、产品智能和决策智能,赋能企业创新,同时注重人才培养和科研平台建设。 规划设计方面,未来社区将基于居民需求,打造以服务为心的社区管理模式。通过统一的服务平台和应用,实现服务内容的整合和优化,提供灵活多样的服务方式,如推送式、订阅式、热点式等。社区将构建数据与应用的良性循环,提高服务效率,同时注重生态优美、绿色低碳、社会和谐,以实现幸福民生和产业发展。 建设运营上,未来社区强调科学规划、以人为本,创新引领、重点突破,统筹推进、整体提升。通过实施院落+社团自治工程,转变政府职能,深化社区自治法制化、信息化,解决社区治理的重点问题。目标是培养有活力的社会组织,提高社区居民参与度和满意度,实现社区治理服务的制度机制创新。 未来社区的数字化解决方案包括信息发布系统、服务系统和管理系统。信息发布系统涵盖公共服务类和社会化服务类信息,提供政策宣传、家政服务、健康医疗咨询等功能。服务系统功能需求包括办事指南、公共服务、社区工作参与互动等,旨在提高社区服务能力。管理系统功能需求则涉及院落管理、社团管理、社工队伍管理等,以实现社区治理的现代化。 最后,未来社区建设注重整合政府、社会组织、企业等多方资源,以提高社区服务的效率和质量。通过建立社区管理服务综合信息平台,提供社区公共服务、社区社会组织管理服务和社区便民服务,实现管理精简、高效、透明,服务快速、便捷。同时,通过培育和发展社区协会、社团等组织,激发社会化组织活力,为居民提供综合性的咨询和服务,促进社区的和谐发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值