zoukankan      html  css  js  c++  java
  • 定时执行sql

    USE [zc_pro]
    GO
    /****** Object:  StoredProcedure [dbo].[PROC_DEAL_DATE_ZC]    Script Date: 2017/8/25 9:34:35 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    
    ALTER PROCEDURE [dbo].[PROC_DEAL_DATE_ZC]
    AS
    BEGIN
        -- 定义当前时间
        DECLARE @CUR_DATE DATETIME;
        SET @CUR_DATE = GETDATE();
        -- 定义众采活动ID
        DECLARE @GBIID INT;
        -- 定义实际、额定、最低参团人数
        DECLARE @FACTNUM INT;
        DECLARE @RATENUM INT;
        DECLARE @MINNUM INT;
        /**********************************************************************
        ***************----------未处理的众采----------************************
        ***********************************************************************/
        -- 情况一:处理已达到定金支付截止日期的众采活动 
        --([dbo].[GroupBuy_Info].[Status] = 10 @CUR_DATE >= [dbo].[GroupBuy_Info].[DepositEndTime])
        -- 众采活动状态:定金阶段 并且 当前时间大于定金支付截止时间
        -- 定义游标
        DECLARE CURSOR_DEPOSIT CURSOR SCROLL FOR
        SELECT [GroupBuyInfoID],[RegulationsCount],[MinRegulationsCounts] FROM zc_pro.DBO.GroupBuy_Info WHERE [Status] = 10 AND [DepositEndTime] <= @CUR_DATE;
        -- 打开游标
        OPEN CURSOR_DEPOSIT;
        FETCH NEXT FROM CURSOR_DEPOSIT INTO @GBIID,@RATENUM,@MINNUM;
        WHILE @@FETCH_STATUS = 0
        BEGIN
            -----------------------------------------------------------------------------------------------------------------------
            -----------------------------------处理已达到定金截止日期的众采活动----------------------------------------------------
            -- 获得实际参与人数
            -- 实际参与人数为 【众采参与表】中,状态为已支付定金状态的数据;申请定金退款状态不在此列;
            SELECT @FACTNUM = COUNT([AddGroupBuyInfoID]) FROM zc_pro.dbo.Add_Group_Buy_Info WHERE [AddGroupStatus] = 10;
    
            IF @FACTNUM = 0
            BEGIN
                -- 没有一个人支付定金,则标记众采活动为失败
                UPDATE zc_pro.DBO.GroupBuy_Info SET [Status] = -10 WHERE [GroupBuyInfoID] = @GBIID;
            END
            ELSE IF @FACTNUM > 0 AND @FACTNUM < @MINNUM
            BEGIN
                -- 支付定金的人数大于0,并且小于最低成团人数时,则标记众采活动为失败
                UPDATE zc_pro.DBO.GroupBuy_Info SET [Status] = -10 WHERE [GroupBuyInfoID] = @GBIID;
                -- 同时标记已支付定金的状态为【团购失败需退定金】
                UPDATE zc_pro.dbo.Add_Group_Buy_Info SET AddGroupStatus = -30 WHERE [GroupBuyInfoID] = @GBIID;
                -- 涉及到的短信类型
                -- 众采活动失败通知(退定金提示)
                INSERT INTO zc_pro.dbo.NeedSendMsg    
                SELECT TB.UserInfoID, TB.Phone, @GBIID AS GBID,'失败需退定金' AS MSGTYPE, dbo.MSGDATE() AS AFTERDATE, 0 ISSEND, GETDATE() ADDDATE  
                FROM zc_pro.dbo.Add_Group_Buy_Info TA 
                LEFT JOIN zc_pro.dbo.User_Info TB ON TA.UserInfoID = TB.UserInfoID 
                WHERE TA.GroupBuyInfoID = @GBIID AND TB.IsFictitiousUser = 1 AND TA.AddGroupStatus = 10;
            END
            ELSE IF @FACTNUM >= @MINNUM AND @FACTNUM < @RATENUM
            BEGIN
                -- 支付定金的人数大于等于最低成团人数,并且小于额定成团人数时,则标记众采活动为尾款阶段
                UPDATE zc_pro.DBO.GroupBuy_Info SET [Status] = 20 WHERE [GroupBuyInfoID] = @GBIID;
                -- 增加虚拟参团人员,以达到指定人数
                DECLARE @NEED_USER_NUM INT;
                SET @NEED_USER_NUM = @RATENUM - @FACTNUM;
                INSERT INTO zc_pro.dbo.Add_Group_Buy_Info
                        ( GroupBuyInfoID ,
                          UserInfoID ,
                          AddTime ,
                          IsFictitiousUser ,
                          IsPayDeposit ,
                          PayDepositPrice ,
                          PayDepositTime ,
                          IsPayRetainage ,
                          PayRetainagePrice ,
                          PayRetainageTime ,
                          ApplyRefundTime ,
                          AddGroupStatus
                        )
                SELECT TOP (@NEED_USER_NUM) @GBIID,[UserInfoID],GETDATE() AS [AddTime], 0 AS [IsFictitiousUser], 
                1 AS [IsPayDeposit], 0 AS [PayDepositPrice], DATEADD(SECOND,-185,GETDATE()) AS [PayDepositTime], 
                0 AS [IsPayRetainage], 0 AS [PayRetainagePrice], NULL AS [PayRetainageTime], NULL AS [ApplyRefundTime], 
                10 AS [AddGroupStatus]
                FROM zc_pro.DBO.User_Info WHERE IsFictitiousUser = 0 ORDER BY NEWID();
                -- 涉及到的短信类型
                -- 众采活动成功通知(支付尾款提示)
                INSERT INTO zc_pro.dbo.NeedSendMsg    
                SELECT TB.UserInfoID, TB.Phone, @GBIID AS GBID,'成功需支付尾款' AS MSGTYPE, dbo.MSGDATE() AS AFTERDATE, 0 ISSEND, GETDATE() ADDDATE  
                FROM zc_pro.dbo.Add_Group_Buy_Info TA 
                LEFT JOIN zc_pro.dbo.User_Info TB ON TA.UserInfoID = TB.UserInfoID 
                WHERE TA.GroupBuyInfoID = @GBIID AND TB.IsFictitiousUser = 1 AND TA.AddGroupStatus = 10;
            END
            ELSE IF @FACTNUM = @RATENUM
            BEGIN
                -- 当实际参与人数等于额定人数时,标记众采活动状态为【尾款阶段】
                UPDATE zc_pro.DBO.GroupBuy_Info SET [Status] = 20 WHERE [GroupBuyInfoID] = @GBIID;
                -- 涉及到的短信类型
                -- 众采活动成功通知(支付尾款提示)
                INSERT INTO zc_pro.dbo.NeedSendMsg    
                SELECT TB.UserInfoID, TB.Phone, @GBIID AS GBID,'成功支付尾款' AS MSGTYPE, dbo.MSGDATE() AS AFTERDATE, 0 ISSEND, GETDATE() ADDDATE  
                FROM zc_pro.dbo.Add_Group_Buy_Info TA 
                LEFT JOIN zc_pro.dbo.User_Info TB ON TA.UserInfoID = TB.UserInfoID 
                WHERE TA.GroupBuyInfoID = @GBIID AND TB.IsFictitiousUser = 1 AND TA.AddGroupStatus = 10;
            END
            
            
    
            FETCH NEXT FROM CURSOR_DEPOSIT INTO @GBIID,@RATENUM,@MINNUM;
            -----------------------------------------------------------------------------------------------------------------------
        END
        -- 关闭并释放游标
        CLOSE CURSOR_DEPOSIT;
        DEALLOCATE CURSOR_DEPOSIT;
    
        -- 情况二:处理已达到尾款截止日期的众采活动 
        --([dbo].[GroupBuy_Info].[Status] = 20 @CUR_DATE >= [dbo].[GroupBuy_Info].[RetainageStartTime])
        -- 众采活动状态:尾款阶段 并且 当前时间大于尾款截止日期
        DECLARE CURSOR_TAIL CURSOR SCROLL FOR
        SELECT [GroupBuyInfoID] FROM zc_pro.DBO.GroupBuy_Info WHERE [Status] = 20 AND [RetainageStartTime] <= @CUR_DATE;
    
        OPEN CURSOR_TAIL;
        FETCH NEXT FROM CURSOR_TAIL INTO @GBIID;
        WHILE @@FETCH_STATUS = 0
        BEGIN
            -----------------------------------------------------------------------------------------------------------------------
            -----------------------------------处理已达到尾款截止日期的众采活动----------------------------------------------------
            -- 标记众采活动为尾款统筹阶段
            UPDATE zc_pro.DBO.GroupBuy_Info SET [Status] = 40 WHERE GroupBuyInfoID = @GBIID;
            FETCH NEXT FROM CURSOR_TAIL INTO @GBIID;
            -----------------------------------------------------------------------------------------------------------------------
        END
        CLOSE CURSOR_TAIL;
        DEALLOCATE CURSOR_TAIL;
    
        -- 情况三:处理已达到指标截止日期的众采活动
        --([dbo].[GroupBuy_Info].[Status] = 30 @CUR_DATE >= [dbo].[GroupBuy_Info].[RetainageEndTime])
        -- 众采活动状态:指标阶段 并且 当前时间大于指标截止日期
        DECLARE CURSOR_QUOTA CURSOR SCROLL FOR
        SELECT [GroupBuyInfoID] FROM zc_pro.DBO.GroupBuy_Info WHERE [Status] = 30 AND [RetainageEndTime] <= @CUR_DATE;
    
        OPEN CURSOR_QUOTA;
        FETCH NEXT FROM CURSOR_QUOTA INTO @GBIID;
        WHILE @@FETCH_STATUS = 0
        BEGIN
            -----------------------------------------------------------------------------------------------------------------------
            -----------------------------------处理已达到指标支付截止日期的众采活动------------------------------------------------
            -- 标记众采活动为指标统筹阶段;
            UPDATE zc_pro.DBO.GroupBuy_Info SET [Status] = 60 WHERE GroupBuyInfoID = @GBIID;
            FETCH NEXT FROM CURSOR_QUOTA INTO @GBIID;
            -----------------------------------------------------------------------------------------------------------------------
        END
        CLOSE CURSOR_QUOTA;
        DEALLOCATE CURSOR_QUOTA;
    
    END
  • 相关阅读:
    jvm性能监控(4)–JVM的监控工具Jconsole
    jvm性能监控(3)-jdk自带工具 jps jstack jmap
    jvm性能监控(2)–JVM的监控工具jstat
    jvm(1)性能监控-linux相关命令
    jvm学习(5) 对象的创建与结构
    jvm(4) 对象创建
    jvm学习(3)方法区、堆、对象存储位置
    jvm学习(2)JVM内存说明
    java泛型
    windows下部署spring boot 的jar
  • 原文地址:https://www.cnblogs.com/xhyang/p/7426507.html
Copyright © 2011-2022 走看看