huanghongfa
2021-01-14 2b5b52e808c172d9b9fb86a1aed3ae022326e5bc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package com.panzhihua.service_dangjian.dao;
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.vos.partybuilding.PageActivityMembersVO;
import com.panzhihua.common.model.vos.partybuilding.PartyBuildingActivityVO;
import com.panzhihua.service_dangjian.model.dos.ComPbActivityDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
 
import java.util.List;
 
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 党员活动
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2020-11-30 17:59
 **/
@Mapper
public interface ComBpActivityDAO extends BaseMapper<ComPbActivityDO> {
    //    @Select("<script> " +
//            " <where>" +
//            "<if test='nameCn != null and nameCn.trim() != &quot;&quot;'>" +
//            " </if> " +
//            "<if test='nameCn != null and nameCn.trim() != &quot;&quot;'>" +
//            " </if> " +
//            "<if test='nameCn != null and nameCn.trim() != &quot;&quot;'>" +
//            " </if> " +
//            " </where>" +
//            "</script>")
    @Select("<script> " +
            "SELECT\n" +
            "a.id,\n" +
            "a.name,\n" +
            "a.address,\n" +
            "a.status,\n" +
            "a.create_at releaseTimeBegin,\n" +
            "a.activity_time_begin,\n" +
            "a.activity_time_end,\n" +
            "a.enroll_time_begin,\n" +
            "a.release_time,\n" +
            "a.enroll_time_end \n" +
            "FROM\n" +
            "com_pb_activity_member m\n" +
            "JOIN com_pb_activity a ON m.activity_id = a.id \n" +
            "WHERE\n" +
            "m.member_id = #{id} \n" +
            "<if test='name != null and name.trim() != &quot;&quot;'>" +
            "AND a.`name` = #{name} \n" +
            " </if> " +
            "<if test='releaseTimeBegin != null '>" +
            "AND a.create_at BETWEEN #{releaseTimeBegin} \n" +
            "AND #{releaseTimeEnd} \n" +
            " </if> " +
            "<if test='activityTimeBegin != null '>" +
            "AND a.activity_time_begin BETWEEN #{activityTimeBegin} \n" +
            "AND #{activityTimeEnd}" +
            " </if> " +
            "</script>")
    List<PartyBuildingActivityVO> listPartyMemberActivities(PartyBuildingActivityVO partyBuildingActivityVO);
 
 
    @Select("<script> " +
            "SELECT\n" +
            "id,\n" +
            "name,\n" +
            "address,\n" +
            "status,\n" +
            "release_time,\n" +
            "activity_time_begin,\n" +
            "activity_time_end,\n" +
            "enroll_time_begin,\n" +
            "cover,\n" +
            "enroll_time_end \n" +
            "FROM\n" +
            "com_pb_activity \n" +
            "where community_id=#{partyBuildingActivityVO.communityId}\n" +
            "<if test='partyBuildingActivityVO.name != null and partyBuildingActivityVO.name.trim() != &quot;&quot;'>" +
            "and name = #{partyBuildingActivityVO.name} \n" +
            " </if> " +
            "<if test='partyBuildingActivityVO.status != null and partyBuildingActivityVO.status != 0'>" +
            "AND `status` = #{partyBuildingActivityVO.status} \n" +
            " </if> " +
            "<if test='partyBuildingActivityVO.releaseTimeBegin != null '>" +
            "AND release_time BETWEEN #{partyBuildingActivityVO.releaseTimeBegin} \n" +
            "AND #{partyBuildingActivityVO.releaseTimeEnd} \n" +
            " </if> " +
            "<if test='partyBuildingActivityVO.activityTimeBegin != null '>" +
            "AND activity_time_begin BETWEEN #{partyBuildingActivityVO.activityTimeBegin} \n" +
            "AND #{partyBuildingActivityVO.activityTimeEnd}" +
            " </if> " +
            "order by create_at desc " +
            "</script>")
    IPage<PartyBuildingActivityVO> pageActivity(Page page, @Param("partyBuildingActivityVO") PartyBuildingActivityVO partyBuildingActivityVO);
 
    @Select("select t.id from (\n" +
            "SELECT \n" +
            "a.participation_lowest_num,\n" +
            "a.name,\n" +
            "a.id,\n" +
            "COUNT(m.id)num\n" +
            "FROM\n" +
            "com_pb_activity a\n" +
            "LEFT JOIN com_pb_activity_member m ON a.id = m.activity_id\n" +
            "WHERE a.`status` in (3,4) and TIMESTAMPDIFF(HOUR,SYSDATE(),a.enroll_time_end)<=0\n" +
            "GROUP BY a.id)t where t.num<t.participation_lowest_num")
    List<Long> selectTimedTaskPartyBuildingActivity();
 
    @Select("SELECT \n" +
            "u.user_id\n" +
            "FROM\n" +
            "com_pb_activity_member m\n" +
            "JOIN com_pb_member r on m.member_id=r.id\n" +
            "join sys_user u on r.id_card=u.id_card and u.type=1 \n" +
            "where m.activity_id=#{activityId}")
    List<Long> selectTimedTaskPartyBuildingActivityUserids(Long activityId);
 
    @Update("<script> " +
            "update com_pb_activity set `status`=6 WHERE id in \n" +
            "<foreach item=\"item\" collection=\"ids\" separator=\",\" open=\"(\" close=\")\" index=\"\"> \n" +
            "#{item}\n" +
            "</foreach>\n" +
            "</script>")
    int updateBatchIds(@Param("ids") List<Long> ids);
 
    @Update("update com_pb_activity set status=2 where `status`=1 and TIMESTAMPDIFF(HOUR,SYSDATE(),release_time)<=0")
    int updateStatusToNotBegin();
 
    @Update("update com_pb_activity set status=3 where `status`=2 and TIMESTAMPDIFF(HOUR,SYSDATE(),enroll_time_begin)<=0")
    int updateStatusToSign();
 
    @Update("update com_pb_activity set status=(if(TIMESTAMPDIFF(HOUR,SYSDATE(),activity_time_end)<=0,5,4)) where `status`=3 and TIMESTAMPDIFF(HOUR,SYSDATE(),activity_time_begin)<=0")
    int updateStatusToActiveOrEnd();
}