最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java查詢近七日數(shù)據(jù)功能的實(shí)現(xiàn)

 更新時(shí)間:2023年01月16日 11:04:19   作者:超級(jí)帥帥吳  
這篇文章主要介紹了java查詢近七日數(shù)據(jù)功能的實(shí)現(xiàn),文章內(nèi)容詳細(xì),簡(jiǎn)單易懂,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

前文

在開寫之前 先來看實(shí)現(xiàn)的思路

1.編寫SQL 根據(jù)這七天的日期作為條件查詢數(shù)據(jù)庫

2.獲取Java內(nèi)每次從今天開始到前六天的日期數(shù)據(jù)

3.將查詢出來數(shù)據(jù)做邏輯處理 之后返回json字符串

4.前端使用ajax對(duì)接接口 將獲取的數(shù)據(jù)對(duì)接到echarts表圖上面

注意 如果你只是看如何獲取近七天的數(shù)據(jù)只看 1 2 3即可

編寫SQL 根據(jù)這七天的日期作為條件查詢數(shù)據(jù)庫

說了實(shí)現(xiàn)思路 那么現(xiàn)在看一眼我的表結(jié)構(gòu)是什么樣子的

這里看到一共是7條數(shù)據(jù) 一共是 3條26號(hào) 4條25號(hào) 1條23號(hào)的數(shù)據(jù)

那么我們查詢出來 按每日查詢 有數(shù)據(jù)的顯示幾條數(shù)量

上SQL

SELECT
 COUNT( * ) AS 'count',
 DATE_FORMAT( start_task_time, '%Y-%m-%d' ) AS date 
FROM
 task 
WHERE
 DATE_FORMAT( start_task_time, '%Y-%m-%d' ) IN ( '2020-10-27', '2020-10-26', '2020-10-25', '2020-10-24', '2020-10-23', '2020-10-22', '2020-10-21' ) 
GROUP BY
 DATE_FORMAT( start_task_time, '%Y-%m-%d' ) 
ORDER BY
 DATE_FORMAT( start_task_time, '%Y-%m-%d' ) DESC;

查詢出來的效果圖

那么現(xiàn)在先來講解一下sql 我是數(shù)據(jù)庫里面時(shí)間是帶了時(shí)分秒 而查詢的條件日期是不帶時(shí)分秒的 這句話的意思是日期格式轉(zhuǎn)換 轉(zhuǎn)換成年月日 去掉時(shí)分秒

DATE_FORMAT( start_task_time, '%Y-%m-%d' )

中間的這個(gè)是要查詢的字段

現(xiàn)在把SQL拆開來看 先看第一部分

sql的第一部分很好理解 第一個(gè)是查詢出整表共有幾條數(shù)據(jù) ,第二個(gè)是查詢出時(shí)間 AS的意思是字段取別名 。

現(xiàn)在查詢出來的數(shù)據(jù)是 整表共8條數(shù)據(jù) 第一條的數(shù)據(jù)的時(shí)間是2020-10-25日

現(xiàn)在來看SQL的第二段

where DATE_FORMAT( start_task_time, ‘%Y-%m-%d’ ) 是要查詢的條件我們根據(jù)日期條件進(jìn)行查詢 由于是一次查詢七天的 所以需要使用 IN 一個(gè)字段多個(gè)條件。

后面的group by 分組 每一個(gè)日期條件查詢出來的時(shí)間 進(jìn)行分組 并顯示共有幾條 。

最后一個(gè)order by 排序

OK! 現(xiàn)在看完了sql 來看最后的查詢結(jié)果 。

現(xiàn)在發(fā)現(xiàn)如果哪一天有數(shù)據(jù)的話是可以查詢出來并分組的,如何沒有數(shù)據(jù)是查詢不出來的 。

但是我們查詢出近七天的數(shù)據(jù),如果沒有值就補(bǔ)全為0。

獲取Java內(nèi)每次從今天開始到前六天的日期數(shù)據(jù)

補(bǔ)全剩下沒有日期的數(shù)據(jù),這里就需要我們Java邏輯來實(shí)現(xiàn)了。

首先剛剛的sql語句條件是自己寫的 在java里面我們可不能手寫要每次都動(dòng)態(tài)的獲取從今天開始到前六日的日期數(shù)據(jù)共七天。

那么上Java代碼 獲取近七天的日期

 //獲取近七天日期
    public static List<String> getSevenDate() {
        List<String> dateList = new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        for (int i = 0; i < 7; i++) {
            Date date = DateUtils.addDays(new Date(), -i);
            String formatDate = sdf.format(date);
            dateList.add(formatDate);
        }
        return dateList;
    }

將查詢出來數(shù)據(jù)做邏輯處理 之后返回json字符串

在java中獲取到了最新的近七天的日期 現(xiàn)在將日期和sql結(jié)合 在項(xiàng)目中查詢出數(shù)據(jù)來。

現(xiàn)在看接口,先看前兩句,第一句是獲取近七天數(shù)據(jù),我把代碼封裝到工具類中了,直接調(diào)用的,第二句是將生成的日期作為參數(shù),執(zhí)行查詢方法

這里看Mapper foreach 當(dāng)中collection 傳的是map就寫map 傳list就寫list 這里咱們查詢方法 默認(rèn)就寫list就行,item是集合中每一個(gè)元素進(jìn)行迭代時(shí)的別名, 傳的參數(shù)名叫什么這個(gè)就叫什么就可以。 其他的默認(rèn)不用管

<select id="sevenDaysCompleteTask" resultType="com.example.demo.bean.Task">
       SELECT
       COUNT(*) AS 'FinishTheTask',
       DATE_FORMAT(start_task_time,'%Y-%m-%d') AS start_task_time
       FROM
       task
       WHERE
       is_delete='0'
       and
       DATE_FORMAT(start_task_time, '%Y-%m-%d') IN
       <foreach collection="list" item="sevenDate" separator="," open="(" close=")">
        #{sevenDate}
       </foreach>
       GROUP BY
       DATE_FORMAT(start_task_time, '%Y-%m-%d')
       ORDER BY
       DATE_FORMAT(start_task_time, '%Y-%m-%d') DESC;
    </select>

寫完后我們測(cè)試一下看看查詢出來的數(shù)據(jù)是什么樣子

用postman測(cè)試了一下接口和在數(shù)據(jù)庫查詢返回的數(shù)據(jù)是一樣的

那么現(xiàn)在用java將沒有的日期和數(shù)量進(jìn)行補(bǔ)全

在開始寫之前說一下編寫思路

現(xiàn)在知道生成的日期長(zhǎng)度是7 而數(shù)據(jù)庫查詢出來的數(shù)據(jù)長(zhǎng)度是不一定的 因?yàn)橹挥心莻€(gè)日期有數(shù)據(jù)的話才能查詢出來。

實(shí)現(xiàn)思路是 創(chuàng)建一個(gè)空的arraylist集合來放我們的封裝類,循環(huán)創(chuàng)建封裝類要?jiǎng)?chuàng)建七個(gè),之后循環(huán)拿生成的時(shí)間和數(shù)據(jù)庫查詢出的時(shí)間做比較,如果一致就將查詢出來的數(shù)據(jù)添加進(jìn)封裝類中,如果不一致就設(shè)置為0,因?yàn)槲覀円衅咛斓臄?shù)據(jù),所以要有七條數(shù)據(jù),每一條數(shù)據(jù)一個(gè)封裝類,共七個(gè),之后循環(huán)的將封裝類添加進(jìn)arraylist集合中。

我不知道大家能不能看明白我所表達(dá)的意思 ,如果不明白也沒關(guān)系,去看代碼一句一句理解意思。

下面我上代碼 我會(huì)一句一句解釋意思

第三句創(chuàng)建一個(gè)arraylist對(duì)象 這個(gè)就是我們最后要返回的集合 這個(gè)不難理解

第四句 for循環(huán) 長(zhǎng)度是我們生成日期數(shù)組長(zhǎng)度 也就是七個(gè)

第五句 創(chuàng)建封裝類 外圈循環(huán)七次 一共會(huì)創(chuàng)建七個(gè)封裝類 一個(gè)封裝類代表一條數(shù)據(jù)

第六句 創(chuàng)建boolean類型變量 ,用來判斷生成的日期和查詢出的日期是否一致,默認(rèn)為false

第七句 創(chuàng)建小循環(huán) 目的是每次小循環(huán)都去循環(huán)查詢出來的日期 一個(gè)一個(gè)的跟生成出的日期比較,如果一致就將查詢出的數(shù)據(jù)添加進(jìn)封裝類中,并且設(shè)置boolean類型為true 不讓進(jìn)入設(shè)置0的判斷,并結(jié)束此次小循環(huán),開始第二次大循環(huán)。

第八句 將查詢出的數(shù)據(jù)添加進(jìn)封裝類中

第九句 設(shè)置boolean類型為true

第十句 結(jié)束此次小循環(huán) break

第十一句 每次大循環(huán)都要判斷 是否進(jìn)入了循環(huán)內(nèi)部判斷 如果進(jìn)入就不設(shè)置0 如果沒有進(jìn)入就設(shè)置為0

第十二句 將每次的封裝類添加到list集合中 并最后返回

上面圖片有點(diǎn)誤差 最后的list要放到外面

@ResponseBody
    @RequestMapping("/sevenDaysCompleteTask")
    public List<Task>  sevenDaysCompleteTask(){
        try {
            //獲取近七天日期
            List<String> sevenDate = ConFig.getSevenDate();
            //查詢近七天完成任務(wù)數(shù)量方法
            List<Task> tasks = healthCommissionService.sevenDaysCompleteTask(sevenDate);
            //創(chuàng)建一個(gè)arraylist對(duì)象
            List<Task> list=new ArrayList<>();
            //外層七天循環(huán)  循環(huán)七次
           for (int i=0;i<sevenDate.size();i++){
               //創(chuàng)建封裝類對(duì)象  循環(huán)七次 創(chuàng)建七個(gè)
               Task task=new Task();
               //將近七天日期添加進(jìn)封裝類中
               task.setStart_task_time(sevenDate.get(i));
               boolean bool=false;
               //創(chuàng)建內(nèi)循環(huán) 根據(jù)查詢出已有的數(shù)量 循環(huán)次數(shù)
               for (int m=0;m<tasks.size();m++){
                   if (sevenDate.get(i).equals(tasks.get(m).getStart_task_time())){
                       task.setFinishTheTask(tasks.get(m).getFinishTheTask());
                       bool=true;
                       break;
                   }
               }
               if (!bool) {
                   task.setFinishTheTask("0");
               }
                   list.add(task);
           }
            return list;
        }catch (Exception e) {
            LOG.error("錯(cuò)誤信息", e);
        return null;
        }
    }

好了 java的邏輯已經(jīng)完成了 最后看一下返回的數(shù)據(jù)

現(xiàn)在成功的吧沒有數(shù)據(jù)的日期也添加到集合并且返回了

前端使用ajax對(duì)接接口 將獲取的數(shù)據(jù)對(duì)接到echarts表圖上面

OK??! 最后一步 對(duì)接echarts圖表

打開html 在圖表的js里面先創(chuàng)建兩個(gè) 數(shù)組 一個(gè)代表時(shí)間 一個(gè)代表數(shù)量 也就是圖表當(dāng)中的這兩部分

使用ajax 對(duì)接接口 用each循環(huán)將返回的json數(shù)據(jù)添加進(jìn)兩個(gè)數(shù)組中

將數(shù)據(jù)添加進(jìn)去后 把數(shù)組放入echarts圖表中

這里就結(jié)束了 看成品效果

最后放js代碼 比較長(zhǎng)

<!--完成任務(wù)七天數(shù)量條形圖js-->
<script>
    //七天時(shí)間變量
    var time1=[];
    //近七天完成任務(wù)數(shù)量
    var numberofelderly1=[];
    $(function () {
        $.ajax({
            type:"post",
            url:"sevenDaysCompleteTask",
            async: false,
            datatype: "json",
            success:function (data){
                $.each(data, function(i,item) {
                    time1.push(item.start_task_time);
                    numberofelderly1.push(item.finishTheTask);
                })
                var myChart = echarts.init(document.getElementById('main'));
                const CubeLeft = echarts.graphic.extendShape({
                    shape: {
                        x: 20,
                        y: 10
                    },
                    buildPath: function(ctx, shape) {
                        const xAxisPoint = shape.xAxisPoint
                        const c0 = [shape.x, shape.y]
                        const c1 = [shape.x - 9, shape.y - 9]
                        const c2 = [xAxisPoint[0] - 9, xAxisPoint[1] - 9]
                        const c3 = [xAxisPoint[0], xAxisPoint[1]]
                        ctx.moveTo(c0[0], c0[1]).lineTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).closePath()
                    }
                })
                const CubeRight = echarts.graphic.extendShape({
                    shape: {
                        x: 10,
                        y: 10
                    },
                    buildPath: function(ctx, shape) {
                        const xAxisPoint = shape.xAxisPoint
                        const c1 = [shape.x, shape.y]
                        const c2 = [xAxisPoint[0], xAxisPoint[1]]
                        const c3 = [xAxisPoint[0] + 18, xAxisPoint[1] - 9]
                        const c4 = [shape.x + 18, shape.y - 9]
                        ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath()
                    }
                })
                const CubeTop = echarts.graphic.extendShape({
                    shape: {
                        x: 0,
                        y: 0
                    },
                    buildPath: function(ctx, shape) {
                        const c1 = [shape.x, shape.y]
                        const c2 = [shape.x + 18, shape.y - 9]
                        const c3 = [shape.x + 9, shape.y - 18]
                        const c4 = [shape.x - 9, shape.y - 9]
                        ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath()
                    }
                })
                echarts.graphic.registerShape('CubeLeft', CubeLeft)
                echarts.graphic.registerShape('CubeRight', CubeRight)
                echarts.graphic.registerShape('CubeTop', CubeTop)
                const MAX = numberofelderly1
                const VALUE = numberofelderly1
                option = {
                    // backgroundColor: "#010d3a",
                    title: {
                        text: '',
                        top: 32,
                        left: 18,
                        textStyle: {
                            color: '#00F6FF',
                            fontSize: 24
                        }
                    },
                    /*調(diào)整表格大小*/
                    grid: {
                        left: 0,
                        right: 0,
                        bottom: '6%',
                        top: 90,
                        containLabel: true
                    },
                    xAxis: {
                        type: 'category',
                        data: time1,
                        axisLine: {
                            show: true,
                            lineStyle: {
                                color: 'white'
                            }
                        },
                        offset: 20,
                        axisTick: {
                            show: false,
                            length: 9,
                            alignWithLabel: true,
                            lineStyle: {
                                color: '#7DFFFD'
                            }
                        },
                        axisLabel: {
                            fontSize: 10
                        }
                    },
                    yAxis: {
                        type: 'value',
                        axisLine: {
                            show: true,
                            lineStyle: {
                                color: 'white'
                            }
                        },
                        splitLine: {
                            show: false
                        },
                        axisTick: {
                            show: false
                        },
                        axisLabel: {
                            fontSize: 15
                        },
                        boundaryGap: ['0', '20%']
                    },
                    series: [{
                        type: 'custom',
                        renderItem: function(params, api) {
                            const location = api.coord([api.value(0), api.value(1)])
                            return {
                                type: 'group',
                                children: [{
                                    type: 'CubeLeft',
                                    shape: {
                                        api,
                                        xValue: api.value(0),
                                        yValue: api.value(1),
                                        x: location[0],
                                        y: location[1],
                                        xAxisPoint: api.coord([api.value(0), 0])
                                    },
                                    style: {
                                        fill: 'rgba(7,29,97,.6)'
                                    }
                                }, {
                                    type: 'CubeRight',
                                    shape: {
                                        api,
                                        xValue: api.value(0),
                                        yValue: api.value(1),
                                        x: location[0],
                                        y: location[1],
                                        xAxisPoint: api.coord([api.value(0), 0])
                                    },
                                    style: {
                                        fill: 'rgba(10,35,108,.7)'
                                    }
                                }, {
                                    type: 'CubeTop',
                                    shape: {
                                        api,
                                        xValue: api.value(0),
                                        yValue: api.value(1),
                                        x: location[0],
                                        y: location[1],
                                        xAxisPoint: api.coord([api.value(0), 0])
                                    },
                                    style: {
                                        fill: 'rgba(11,42,106,.8)'
                                    }
                                }]
                            }
                        },
                        data: MAX
                    }, {
                        type: 'custom',
                        renderItem: (params, api) => {
                        const location = api.coord([api.value(0), api.value(1)])
                        return {
                            type: 'group',
                            children: [{
                                type: 'CubeLeft',
                                shape: {
                                    api,
                                    xValue: api.value(0),
                                    yValue: api.value(1),
                                    x: location[0],
                                    y: location[1],
                                    xAxisPoint: api.coord([api.value(0), 0])
                                },
                                style: {
                                    fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                                        offset: 0,
                                        color: '#3B80E2'
                                    },
                                        {
                                            offset: 1,
                                            color: '#49BEE5'
                                        }
                                    ])
                                }
                            }, {
                                type: 'CubeRight',
                                shape: {
                                    api,
                                    xValue: api.value(0),
                                    yValue: api.value(1),
                                    x: location[0],
                                    y: location[1],
                                    xAxisPoint: api.coord([api.value(0), 0])
                                },
                                style: {
                                    fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                                        offset: 0,
                                        color: '#3B80E2'
                                    },
                                        {
                                            offset: 1,
                                            color: '#49BEE5'
                                        }
                                    ])
                                }
                            }, {
                                type: 'CubeTop',
                                shape: {
                                    api,
                                    xValue: api.value(0),
                                    yValue: api.value(1),
                                    x: location[0],
                                    y: location[1],
                                    xAxisPoint: api.coord([api.value(0), 0])
                                },
                                style: {
                                    fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                                        offset: 0,
                                        color: '#3B80E2'
                                    },
                                        {
                                            offset: 1,
                                            color: '#49BEE5'
                                        }
                                    ])
                                }
                            }]
                        }
                    },
                        data: VALUE
            }, {
                    type: 'bar',
                        label: {
                        normal: {
                            show: true,
                                position: 'top',
                                formatter: (e) => {
                                switch (e.name) {
                                    case '10kV線路':
                                        return VALUE[0]
                                    case '公用配變':
                                        return VALUE[1]
                                    case '35kV主變':
                                        return VALUE[2]
                                    case '水':

                                }
                            },
                            fontSize: 16,
                                color: '#38ff9f',
                                offset: [4, -25]
                        }
                    },
                    itemStyle: {
                        color: 'transparent'
                    },
                    data: MAX
                }]
            }
                myChart.setOption(option);
            }
       })
    })
</script>

到此這篇關(guān)于java查詢近七日數(shù)據(jù)功能的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)java實(shí)現(xiàn)查詢數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Sentinel流控規(guī)則實(shí)現(xiàn)限流保護(hù)詳解

    Sentinel流控規(guī)則實(shí)現(xiàn)限流保護(hù)詳解

    這篇文章主要介紹了Sentinel流控規(guī)則實(shí)現(xiàn)限流保護(hù),Sentinel是一個(gè)分布式系統(tǒng)的流量控制組件,它可以實(shí)現(xiàn)限流,流控,降級(jí)等功能,提高系統(tǒng)的穩(wěn)定性和可靠性,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • Java數(shù)組與二維數(shù)組及替換空格實(shí)戰(zhàn)真題講解

    Java數(shù)組與二維數(shù)組及替換空格實(shí)戰(zhàn)真題講解

    數(shù)組對(duì)于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語言對(duì)數(shù)組的實(shí)現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲(chǔ)固定大小的同類型元素,這篇文章主要介紹了Java數(shù)組與二維數(shù)組及替換空格實(shí)戰(zhàn)真題講解
    2022-07-07
  • Java微信公眾平臺(tái)之獲取地理位置

    Java微信公眾平臺(tái)之獲取地理位置

    這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺(tái)之獲取地理位置的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Java中樹的存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)示例代碼

    Java中樹的存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)示例代碼

    本篇文章主要介紹了Java中樹的存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • java多線程之定時(shí)器Timer的使用詳解

    java多線程之定時(shí)器Timer的使用詳解

    本篇文章主要介紹了java多線程之定時(shí)器Timer的使用詳解,Time類主要負(fù)責(zé)完成定時(shí)計(jì)劃任務(wù)的功能,有興趣的可以了解一下。
    2017-04-04
  • 從基礎(chǔ)學(xué)java--數(shù)組

    從基礎(chǔ)學(xué)java--數(shù)組

    數(shù)組是相同類型數(shù)據(jù)的有序集合數(shù)組描述的是相同類型的若干個(gè)數(shù)據(jù),按照一定的先后次序排列組合而成。其中,每一個(gè)數(shù)據(jù)稱作一個(gè)數(shù)組元素,每個(gè)數(shù)組元素可以通過一個(gè)下標(biāo)來訪問它們數(shù)組的聲明創(chuàng)建
    2021-09-09
  • springboot實(shí)現(xiàn)jar運(yùn)行復(fù)制resources文件到指定的目錄(思路詳解)

    springboot實(shí)現(xiàn)jar運(yùn)行復(fù)制resources文件到指定的目錄(思路詳解)

    這篇文章主要介紹了springboot實(shí)現(xiàn)jar運(yùn)行復(fù)制resources文件到指定的目錄,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • spring與mybatis整合配置文件

    spring與mybatis整合配置文件

    本文通過實(shí)例代碼給大家介紹了spring與mybatis整合配置文件的方法,需要的朋友參考下吧
    2017-09-09
  • java設(shè)計(jì)優(yōu)化之代理模式

    java設(shè)計(jì)優(yōu)化之代理模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)優(yōu)化中的代理模式,感興趣的朋友可以參考一下
    2016-03-03
  • Java隨機(jī)生成字符串的四種方式例子

    Java隨機(jī)生成字符串的四種方式例子

    這篇文章主要給大家介紹了關(guān)于Java隨機(jī)生成字符串的四種方式,隨機(jī)數(shù)在實(shí)際中使用很廣泛,比如要隨即生成一個(gè)固定長(zhǎng)度的字符串、數(shù)字,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

桂平市| 资源县| 麦盖提县| 循化| 巧家县| 观塘区| 开化县| 玉田县| 仲巴县| 湖州市| 南乐县| 莫力| 天柱县| 乌鲁木齐市| 玉山县| 天门市| 高碑店市| 新蔡县| 乡城县| 鹤山市| 剑川县| 黄冈市| 南投市| 榆社县| 文昌市| 瑞安市| 清水县| 新蔡县| 沾化县| 罗城| 定襄县| 郧西县| 濉溪县| 鄂温| 吉木乃县| 呼伦贝尔市| 依兰县| 轮台县| 隆子县| 黄石市| 巍山|