| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394 |
- <?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="com.ruoyi.web.modules.screen.mapper.LivestockResourceScreenMapper">
- <sql id="aiSession">
- consult_type = 2
- </sql>
- <sql id="aiMessageJoin">
- inner join biz_consult_session s on s.id = m.session_id and s.consult_type = 2
- </sql>
- <sql id="aiMessageFilter">
- m.sender_role = 3
- and m.sender_user_id = 0
- </sql>
- <select id="sumRuralThreeAssetsFixed"
- resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceThreeAssetsSumDto">
- select
- ifnull(sum(operating_fixed_assets), 0) as operatingFixedAssets,
- ifnull(sum(non_operating_fixed_assets), 0) as nonOperatingFixedAssets,
- ifnull(sum(fixed_assets), 0) as fixedAssets
- from biz_rural_three_assets
- </select>
- <select id="countThreeAssetsProblemByLevel"
- resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceProblemLevelCountDto">
- select
- problem_level as problemLevel,
- count(1) as count
- from biz_three_assets_problem_report
- where report_time >= #{yearStart}
- and report_time <= #{yearEnd}
- group by problem_level
- </select>
- <select id="selectLatestLivestockProductOutputStatPeriodByYear"
- resultType="com.ruoyi.web.modules.screen.domain.dto.HomeScreenStatPeriodDto">
- select
- stat_year as statYear,
- max(stat_month) as statMonth
- from biz_livestock_product_output
- where stat_year = #{statYear}
- group by stat_year
- </select>
- <select id="sumLivestockProductOutputByStatYearMonth"
- resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceProductOutputSumDto">
- select
- ifnull(sum(meat_output), 0) as meatOutput,
- ifnull(sum(milk_output), 0) as milkOutput
- from biz_livestock_product_output
- where stat_year = #{statYear}
- and stat_month = #{statMonth}
- </select>
- <select id="sumLivestockProductOutputMonthlyUpTo"
- resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceProductOutputMonthDto">
- select
- stat_month as statMonth,
- ifnull(sum(meat_output), 0) as meatOutput,
- ifnull(sum(milk_output), 0) as milkOutput
- from biz_livestock_product_output
- where stat_year = #{statYear}
- and stat_month >= 1
- and stat_month <= #{maxMonth}
- group by stat_month
- order by stat_month asc
- </select>
- <select id="selectLatestVaccinationStatPeriodByYear"
- resultType="com.ruoyi.web.modules.screen.domain.dto.HomeScreenStatPeriodDto">
- select
- stat_year as statYear,
- max(stat_month) as statMonth
- from biz_vaccination_data
- where stat_year = #{statYear}
- group by stat_year
- </select>
- <select id="sumVaccinationByStatYearMonth"
- resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceVaccinationSumDto">
- select
- ifnull(sum(should_vaccinate_count), 0) as shouldVaccinateCount,
- ifnull(sum(actual_vaccinate_count), 0) as actualVaccinateCount
- from biz_vaccination_data
- where stat_year = #{statYear}
- and stat_month = #{statMonth}
- </select>
- <select id="countVetMedicalResource" resultType="long">
- select count(1)
- from biz_medical_resource
- where resource_type = '004001'
- and del_flag = '0'
- </select>
- <select id="selectVetCountByTown"
- resultType="com.ruoyi.web.modules.screen.domain.vo.LivestockResourceVetCountListItemVo">
- select r.town_name as townName,
- count(1) as vetCount
- from biz_medical_resource r
- left join sys_dept d on r.town_dept_id = d.dept_id
- where r.resource_type = '004001'
- and r.del_flag = '0'
- <if test="townDeptId != null">
- and r.town_dept_id = #{townDeptId}
- </if>
- group by r.town_dept_id, r.town_name, d.order_num
- order by ifnull(d.order_num, 999999) asc, r.town_dept_id asc
- </select>
- <select id="countMedicalOrgResource" resultType="long">
- select count(1)
- from biz_medical_resource
- where resource_type = '004003'
- and del_flag = '0'
- </select>
- <select id="countTechExpertResource" resultType="long">
- select count(1)
- from biz_tech_resource
- where resource_type = '004005'
- and del_flag = '0'
- </select>
- <select id="selectTechServicePersonnelTotals"
- resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceTechPersonnelDto">
- select
- ifnull(envoy_male_count, 0) as envoyMaleCount,
- ifnull(envoy_female_count, 0) as envoyFemaleCount,
- ifnull(envoy_party_member_count, 0) as envoyPartyMemberCount,
- ifnull(envoy_total_count, 0) as envoyTotalCount,
- ifnull(agri_junior_count, 0) as agriJuniorCount,
- ifnull(agri_clerk_count, 0) as agriClerkCount,
- ifnull(agri_intermediate_count, 0) as agriIntermediateCount,
- ifnull(agri_associate_senior_count, 0) as agriAssociateSeniorCount,
- ifnull(agri_management_count, 0) as agriManagementCount,
- ifnull(agri_total_count, 0) as agriTotalCount
- from biz_tech_service_personnel
- where id = 1
- limit 1
- </select>
- <select id="selectYearOverviewMetrics" resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceOverviewDto">
- select
- (select count(distinct asker_user_id)
- from biz_consult_session
- where <include refid="aiSession"/>
- and create_time >= #{yearStart}
- and create_time <= #{yearEnd}) as totalUsers,
- (select count(*)
- from biz_consult_session
- where <include refid="aiSession"/>
- and create_time >= #{yearStart}
- and create_time <= #{yearEnd}) as totalSessions,
- (select count(*)
- from biz_consult_message m
- <include refid="aiMessageJoin"/>
- where <include refid="aiMessageFilter"/>
- and m.create_time >= #{yearStart}
- and m.create_time <= #{yearEnd}) as totalQuestionCount,
- (select avg(m.cost_time)
- from biz_consult_message m
- <include refid="aiMessageJoin"/>
- where <include refid="aiMessageFilter"/>
- and m.cost_time is not null
- and m.create_time >= #{yearStart}
- and m.create_time <= #{yearEnd}) as avgCostTimeMs
- </select>
- <select id="countTodayActiveUsers" resultType="long">
- select count(distinct asker_user_id)
- from biz_consult_session
- where <include refid="aiSession"/>
- and update_time >= #{dayStart}
- and update_time <= #{dayEnd}
- </select>
- <select id="countTodayNewUsers" resultType="long">
- select count(distinct asker_user_id)
- from biz_consult_session
- where <include refid="aiSession"/>
- and create_time >= #{dayStart}
- and create_time <= #{dayEnd}
- and update_time >= #{dayStart}
- and update_time <= #{dayEnd}
- and asker_user_id not in (
- select distinct asker_user_id
- from biz_consult_session
- where <include refid="aiSession"/>
- and create_time < #{dayStart}
- )
- </select>
- <select id="countTodaySessions" resultType="long">
- select count(*)
- from biz_consult_session
- where <include refid="aiSession"/>
- and create_time >= #{dayStart}
- and create_time <= #{dayEnd}
- </select>
- <select id="countTodayQuestionCount" resultType="long">
- select count(*)
- from biz_consult_message m
- <include refid="aiMessageJoin"/>
- where <include refid="aiMessageFilter"/>
- and m.create_time >= #{dayStart}
- and m.create_time <= #{dayEnd}
- </select>
- <select id="selectDailySessionCounts" resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceDateCountDto">
- select date_format(create_time, '%Y-%m-%d') as bucketKey,
- count(*) as count
- from biz_consult_session
- where <include refid="aiSession"/>
- and create_time >= #{rangeStart}
- and create_time <= #{rangeEnd}
- group by date_format(create_time, '%Y-%m-%d')
- </select>
- <select id="selectDailyAiReplyCounts" resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceDateCountDto">
- select date_format(m.create_time, '%Y-%m-%d') as bucketKey,
- count(*) as count
- from biz_consult_message m
- <include refid="aiMessageJoin"/>
- where <include refid="aiMessageFilter"/>
- and m.create_time >= #{rangeStart}
- and m.create_time <= #{rangeEnd}
- group by date_format(m.create_time, '%Y-%m-%d')
- </select>
- <select id="selectUserStructure" resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceUserStructureDto">
- select coalesce(sum(case when datediff(last_use_time, first_use_time) <= 180 then 1 else 0 end), 0) as newUserCount,
- coalesce(sum(case when datediff(last_use_time, first_use_time) > 180 then 1 else 0 end), 0) as oldUserCount
- from biz_consult_user
- </select>
- <select id="countAskerMessagesInYear" resultType="long">
- select count(*)
- from biz_consult_message m
- <include refid="aiMessageJoin"/>
- where <include refid="aiMessageFilter"/>
- and m.create_time >= #{yearStart}
- and m.create_time <= #{yearEnd}
- </select>
- <select id="selectAskerCategoryCounts" resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceCategoryCountDto">
- select category_code as categoryCode,
- count(*) as count,
- max(last_time) as lastEventTime
- from (
- select m.id,
- case
- when trim(coalesce((
- select m2.ai_category
- from biz_consult_message m2
- where m2.session_id = m.session_id
- and m2.sender_role = 1
- and m2.send_time <= m.send_time
- order by m2.send_time desc
- limit 1
- ), '')) is null
- or trim(coalesce((
- select m2.ai_category
- from biz_consult_message m2
- where m2.session_id = m.session_id
- and m2.sender_role = 1
- and m2.send_time <= m.send_time
- order by m2.send_time desc
- limit 1
- ), '')) = '' then 'UNCAT'
- else trim(coalesce((
- select m2.ai_category
- from biz_consult_message m2
- where m2.session_id = m.session_id
- and m2.sender_role = 1
- and m2.send_time <= m.send_time
- order by m2.send_time desc
- limit 1
- ), ''))
- end as category_code,
- m.create_time as last_time
- from biz_consult_message m
- <include refid="aiMessageJoin"/>
- where <include refid="aiMessageFilter"/>
- and m.create_time >= #{yearStart}
- and m.create_time <= #{yearEnd}
- ) t
- group by category_code
- </select>
- <select id="selectHourlySessionCounts" resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceDateCountDto">
- select date_format(create_time, '%Y%m%d%H') as bucketKey,
- count(*) as count
- from biz_consult_session
- where <include refid="aiSession"/>
- and create_time >= #{windowStart}
- and create_time <= #{windowEnd}
- group by date_format(create_time, '%Y%m%d%H')
- </select>
- <select id="selectHourlyAiReplyCounts" resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceDateCountDto">
- select date_format(m.create_time, '%Y%m%d%H') as bucketKey,
- count(*) as count
- from biz_consult_message m
- <include refid="aiMessageJoin"/>
- where <include refid="aiMessageFilter"/>
- and m.create_time >= #{windowStart}
- and m.create_time <= #{windowEnd}
- group by date_format(m.create_time, '%Y%m%d%H')
- </select>
- <select id="countYearSessions" resultType="long">
- select count(*)
- from biz_consult_session
- where <include refid="aiSession"/>
- and create_time >= #{yearStart}
- and create_time <= #{yearEnd}
- </select>
- <select id="selectSessionReplyBuckets" resultType="com.ruoyi.web.modules.screen.domain.dto.LivestockResourceBandCountDto">
- select band_code as bandCode,
- count(*) as sessionCount
- from (
- select s.id,
- case
- when r.cnt between 1 and 2 then 'LIGHT'
- when r.cnt between 3 and 4 then 'NORMAL'
- when r.cnt between 5 and 10 then 'ACTIVE'
- else 'DEEP'
- end as band_code
- from biz_consult_session s
- inner join (
- select m.session_id, count(*) as cnt
- from biz_consult_message m
- inner join biz_consult_session s2 on s2.id = m.session_id and s2.consult_type = 2
- where m.sender_role = 3
- and m.sender_user_id = 0
- and m.create_time >= #{yearStart}
- and m.create_time <= #{yearEnd}
- group by m.session_id
- ) r on r.session_id = s.id
- where s.consult_type = 2
- and s.create_time >= #{yearStart}
- and s.create_time <= #{yearEnd}
- ) t
- group by band_code
- </select>
- <select id="countAiRepliesOk" resultType="long">
- select count(*)
- from biz_consult_message m
- <include refid="aiMessageJoin"/>
- where <include refid="aiMessageFilter"/>
- and m.cost_time is not null
- and m.create_time >= #{yearStart}
- and m.create_time <= #{yearEnd}
- </select>
- <select id="countAiRepliesFail" resultType="long">
- select count(*)
- from biz_consult_message m
- <include refid="aiMessageJoin"/>
- where <include refid="aiMessageFilter"/>
- and m.cost_time is null
- and m.create_time >= #{yearStart}
- and m.create_time <= #{yearEnd}
- </select>
- <select id="selectTextAskerContents" resultType="string">
- select m.content
- from biz_consult_message m
- <include refid="aiMessageJoin"/>
- where m.sender_role = 1
- and m.sender_user_id <> 0
- and m.msg_type = 1
- and m.content is not null
- and trim(m.content) != ''
- and m.send_time >= #{yearStart}
- and m.send_time <= #{yearEnd}
- </select>
- <select id="selectDistinctSessionYears" resultType="int">
- select distinct year(create_time)
- from biz_consult_session
- where <include refid="aiSession"/>
- and create_time is not null
- order by year(create_time) desc
- </select>
- </mapper>
|