從兩個表中按照條件篩選數據,然後執行定時任務插入第三張表中,無則插入,有則不插入

實現類

@Resource
    private SubscribeMapper subscribeMapper;

    /**
     * @param
     * @return
     * @description 循環遍歷兩個表的數據
     * @author 宮崎不駿
     * @date 2020/4/27 10:07
     */
    @Override
    @Scheduled(cron = "0 */1 * * * ?")
    public OutputObject getAllSubscribe() {
        List<OneVo> lista = subscribeMapper.getAllSubscribe();
        ThreeDto threeDto = new ThreeDto();
        for (OneVo oneVo : lista) {
            List<TwoVo> listb = subscribeMapper.getAllNoticeInfoNb(oneVo.getProvinceName(), oneVo.getCityName(), oneVo.getBeginTimel(), oneVo.getEndTime());
            for (TwoVo twoVo : listb) {
                threeDto.setNoticeCreateTime(twoVo.getNoticeCreateTime());
                threeDto.setNoticeName(twoVo.getNoticeName());
                threeDto.setNoticeType(twoVo.getNoticeType());
                threeDto.setNoticeUrl(twoVo.getNoticeUrl());
                threeDto.setQx(twoVo.getQx());
                threeDto.setSiteName(twoVo.getSiteName());
                threeDto.setSiteSheng(twoVo.getSiteSheng());
                threeDto.setSiteShi(twoVo.getSiteShi());
                threeDto.setUserId(oneVo.getUserId());
                threeDto.setProvinceName(oneVo.getProvinceName());
                threeDto.setCityName(oneVo.getCityName());
                threeDto.setBeginTimel(oneVo.getBeginTimel());
                threeDto.setEndTime(oneVo.getEndTime());
                int b = subscribeMapper.selectCount(twoVo.getNoticeUrl(),oneVo.getUserId());
                if (b>0){
                    continue;
                }
                int a = subscribeMapper.insertInto(threeDto);

            }

        }
        return new OutputObject(ReturnCode.SUCCESS, "插入成功", "插入成功");
    }

Service接口

/**
     * @description 循環遍歷兩個表的數據
     * @author 宮崎不駿
     * @date 2020/4/27 10:07
     * @param
     * @return
     */
    OutputObject getAllSubscribe();

Mapper

/**
     * @description 查詢出訂閱表信息
     * @author 宮崎不駿
     * @date 2020/4/27 9:55
     * @param
     * @return
     */
    List<OneVo> getAllSubscribe();
    List<TwoVo> getAllNoticeInfoNb(String provinceName, String cityName, Date beginTimel,Date endTime);
    /**
     * @description 插入第三張表
     * @author 宮崎不駿
     * @date 2020/4/27 11:09
     * @param
     * @return
     */
    int insertInto(ThreeDto threeDto);
    /**
     * @description 判斷數據庫中是否有此數據
     * @author 宮崎不駿
     * @date 2020/4/27 17:31
     * @param
     * @return
     */
    int selectCount(String noticeUrl,String userId);

Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.subscribe.mapper.SubscribeMapper">


    <select id="getAllSubscribe" resultType="org.jeecg.modules.subscribe.entity.vo.OneVo">
        SELECT
        	user_id as userId,
        	province_name as provinceName,
        	city_name as cityName,
			begin_time as beginTimel,
			end_time as endTime
        FROM
        	gk_subscribe
        WHERE
        	subscribe_state = 1
    </select>
	<insert id="insertInto">
		INSERT INTO gk_subscribe_notice (
			notice_create_time,
			notice_name,
			site_sheng,
			site_shi,
			site_qx,
			site_name,
			notice_url,
			notice_type,
			user_id
		)
		VALUES
			(#{noticeCreateTime},
			#{noticeName},
			#{siteSheng},
			#{siteShi},
			#{qx},
			#{siteName},
			#{noticeUrl},
			#{noticeType},
			#{userId}
			)
	</insert>

	<select id="getAllNoticeInfoNb" resultType="org.jeecg.modules.subscribe.entity.vo.TwoVo">
		SELECT
        	notice_url AS noticeUrl,
        	site_sheng AS siteSheng,
        	site_shi AS siteShi,
        	site_qx AS qx,
        	site_name AS siteName,
        	notice_name AS noticeName,
        	notice_create_time AS noticeCreateTime,
        	notice_type as noticeType
        FROM
        	cj_notice_info
        	<where>
				<if test="provinceName !=null and provinceName !=''">
					AND site_sheng=#{provinceName}
				</if>
				<if test="cityName !=null and cityName !=''">
					AND site_shi=#{cityName}
				</if>
				<if test = "beginTimel != null and endTime != null">
					and notice_create_time between #{beginTimel} and #{endTime}
				</if>
			</where>

	</select>
	<select id="selectCount" resultType="int">
		SELECT
			COUNT(1)
		FROM
			gk_subscribe_notice
		WHERE
			notice_url = #{noticeUrl}
		AND user_id = #{userId}
	</select>
</mapper>

Vo

@Data
public class OneVo {
    private String userId;
    private String provinceName;
    private String cityName;
    /** 開始時間*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date beginTimel;
    /** 結束時間*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date endTime;
    private List<TwoVo> twoVo;
@Data
public class TwoVo {
    private String noticeCreateTime;
    private String noticeName;
    private String siteSheng;
    private String siteShi;
    private String qx;
    private String noticeUrl;
    private String siteName;
    private Integer noticeType;

}

控制檯輸出

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章