ComProjectAuditDAO.xml 17.6 KB
<?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.yiboshi.science.dao.ComProjectAuditDAO">
    <sql id="allColumns">
        t.id as id, t.report_year as reportYear, t.audit_type as auditType, t.audit_object_id as reportObjectId, t.audit_unit_id as auditUnitId, t.audit_content as auditContent, t.audit_result as auditResult, t.audit_date as auditDate,
        t.unit_level as unitLevel, t.com_person as comPerson, t.created as created
    </sql>
    <select id="getListByPage"  resultType="com.yiboshi.science.param.dto.ComProjectAuditDTO">
        SELECT
        a.*,d.unit_name,e.person_name
        FROM com_project_audit a
        left join com_unit d on a.audit_unit_id=d.id
        left join com_person e on a.com_person=e.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getProjectAuditListByPage"  resultType="com.yiboshi.science.param.dto.ComProjectAuditDTO">
        SELECT
        a.*,c.id proj_id,c.proj_name,c.proj_no,c.version_no,c.app_no,c.proj_class,c.start_date,c.end_date,c.proj_state,c.total_score,c.average_score,c.knowledge_id,
        d.unit_name app_unit_name,e.person_name app_person_name,p.name as knowledgeName,p1.name as knowledgeParentName,
        (case when g.unit_name = d.unit_name then '直属' else REPLACE(g.unit_name,'卫生健康局','') end) as upUnitName
        FROM
        com_project_audit a
        left join com_project c on a.audit_object_id=c.id
        left join com_unit d on c.app_unit_id=d.id
        left join com_unit g on substring(d.tree_code, 1, 10) = g.tree_code
        left join com_person e on c.app_person_id=e.id
        left join system_parameter p on c.knowledge_id = p.id
        left join system_parameter p1 on p.parent_id = p1.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getTaskAuditListByPage"  resultType="com.yiboshi.science.param.dto.ComProjectAuditDTO">
        SELECT
        a.*,c.id proj_id,c.proj_name,c.proj_no,c.version_no,c.app_no,c.proj_class,c.start_date,c.end_date,c.proj_state,d.unit_name app_unit_name,e.person_name app_person_name
        FROM com_project_audit a
        left join com_project_test b on a.audit_object_id=b.id
        left join com_project c on b.proj_id=c.id
        left join com_unit d on c.app_unit_id=d.id
        left join com_person e on c.app_person_id=e.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getCheckAuditListByPage"  resultType="com.yiboshi.science.param.dto.ComProjectAuditDTO">
        SELECT
        a.*,c.id proj_id,c.proj_name,c.proj_no,c.version_no,c.proj_class,c.start_date,c.end_date,c.proj_state,d.unit_name app_unit_name,e.person_name app_person_name
        FROM
        com_project_audit a
        left join com_project_check b on a.audit_object_id=b.id
        left join com_project c on b.proj_id=c.id
        left join com_unit d on c.app_unit_id=d.id
        left join com_person e on c.app_person_id=e.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getConclusionAuditListByPage"  resultType="com.yiboshi.science.param.dto.ComProjectAuditDTO">
        SELECT
        a.*,c.id proj_id,c.proj_name,c.proj_no,c.version_no,c.app_no,c.proj_class,c.start_date,c.end_date,c.proj_state,c.total_score,c.average_score,c.knowledge_id,
        d.unit_name app_unit_name,e.person_name app_person_name,p.name as knowledgeName,p1.name as knowledgeParentName,
        (case when g.unit_name = d.unit_name then '直属' else REPLACE(g.unit_name,'卫生健康局','') end) as upUnitName
        FROM com_project_audit a
        left join com_project_conclusion j on a.audit_object_id=j.id
        left join com_project c on j.proj_id=c.id
        left join com_unit d on c.app_unit_id=d.id
        left join com_unit g on substring(d.tree_code, 1, 10) = g.tree_code
        left join com_person e on c.app_person_id=e.id
        left join system_parameter p on c.knowledge_id = p.id
        left join system_parameter p1 on p.parent_id = p1.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getConclusionAuditCount" resultType="com.yiboshi.science.param.dto.DataStatisticsDTO">
        SELECT ifnull(sum(case when a.audit_result=1 then 1 else 0 end),0) count1,
        ifnull(sum(case when a.audit_result=10 then 1 else 0 end),0) count2,
        ifnull(sum(case when a.audit_result =30 then 1 else 0 end),0) count3,
        ifnull(sum(case when a.audit_result =20 then 1 else 0 end),0) count4,
        ifnull(sum(case when a.id is not null then 1 else 0 end),0) count5
        FROM com_project_audit a
        left join com_project_conclusion j on a.audit_object_id=j.id
        left join com_project c on j.proj_id=c.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getMaxUnitLevelByObjectId" parameterType="java.lang.String" resultType="java.lang.Integer">
        select max(unit_level) from com_project_audit where audit_object_id= #{objectId}
    </select>
    <select id="getMaxAuditIndex" parameterType="java.lang.String" resultType="Integer">
        select ifnull(max(show_index),0) AS show_index from com_project_audit where audit_object_id=#{auditObjectId}
    </select>
    <select id="getCount" resultType="com.yiboshi.science.param.dto.DataStatisticsDTO">
        SELECT ifnull(sum(case when a.audit_result=1 then 1 else 0 end),0) count1,
        ifnull(sum(case when a.audit_result=10 then 1 else 0 end),0) count2,
        ifnull(sum(case when a.audit_result=30 then 1 else 0 end),0) count3,
        ifnull(sum(case when a.audit_result =20 then 1 else 0 end),0) count4,
        ifnull(sum(case when a.id is not null then 1 else 0 end),0) count5
        FROM com_project_audit a
        left join com_project c on a.audit_object_id=c.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getCountByDay" resultType="com.yiboshi.science.param.dto.DataStatisticsDTO">
        SELECT count(1) count1
        FROM com_project_audit a
        left join com_project c on a.audit_object_id=c.id
        <where>
            ${ew.sqlSegment} and TO_DAYS(a.created) = TO_DAYS(NOW())
        </where>
    </select>
    <select id="getTreeCodeProjectCount" resultType="com.yiboshi.science.param.dto.DataStatisticsDTO">
        select unit_name title,ifnull(s.count,0) count1
        from com_unit a
        left join (select tree_code,sum(count) count
                   from(select case when LENGTH(e.tree_code)>(LENGTH(#{treeCode})+5) then SUBSTR(e.tree_code,1,(LENGTH(#{treeCode})+5)) else e.tree_code end tree_code,count(1) count
                   FROM com_project_audit a
                   left join com_project c on a.audit_object_id=c.id
                   left join com_unit d on c.app_unit_id=d.id
                   left join com_unit e on SUBSTR(d.tree_code,1,LENGTH(d.tree_code)-5)=e.tree_code
                   <where>
                    ${ew.sqlSegment}
                   </where>
                   group by e.tree_code)as t group by t.tree_code) s on s.tree_code=a.tree_code
        where a.unit_type=0 and (SUBSTR(a.tree_code,1,LENGTH(a.tree_code)-5)= #{treeCode} or a.tree_code= #{treeCode})
        order by a.tree_code
--      length(a.tree_code) <![CDATA[ <= ]]> 10
    </select>
    <select id="getKnowledgeCount" resultType="com.yiboshi.science.param.dto.DataStatisticsDTO">
        select e.name title,count(1) count1
        FROM com_project_audit a
        left join com_project c on a.audit_object_id=c.id
        left join system_parameter d on  c.knowledge_id =d.id
        left join system_parameter e on  e.id=d.parent_id
        <where>
            ${ew.sqlSegment}
        </where>
        group by e.id
    </select>
    <select id="getFirstAuditPassCount" resultType="com.yiboshi.science.param.dto.DataStatisticsDTO">
        SELECT ifnull(sum(case when c.assign_state is null or c.assign_state=0 then 1 else 0 end),0) count1,
               ifnull(sum(case when c.assign_state=1 then 1 else 0 end),0) count2,
               ifnull(sum(case when to_days(a.updated) = to_days(now()) then 1 else 0 end),0) count3,
               ifnull(sum(case when a.id is not null then 1 else 0 end),0) count5
        FROM com_project_audit a
        left join com_project c on a.audit_object_id=c.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getAuditProjectList"  resultType="com.yiboshi.science.param.dto.ComProjectAuditDTO">
        SELECT
        c.id,c.id proj_id,c.proj_name,c.proj_no,c.version_no,c.proj_class,c.report_year,c.start_date,c.end_date,c.proj_state,
        d.unit_name app_unit_name,e.person_name app_person_name,c.proj_state
        FROM
        com_project_audit a
        left join com_project c on a.audit_object_id=c.id
        left join com_unit d on c.app_unit_id=d.id
        left join com_person e on c.app_person_id=e.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getProjectStatisticListByPage"  resultType="com.yiboshi.science.param.dto.ComProjectAuditDTO">
        SELECT
        a.audit_result,c.id,c.id proj_id,c.proj_name,c.proj_no,c.version_no,c.proj_class,c.report_year,c.start_date,c.end_date,c.proj_state,c.app_unit_id,
        d.unit_name app_unit_name,e.person_name app_person_name,c.proj_state,
        (case when g.unit_name = d.unit_name then '直属' else REPLACE(g.unit_name,'卫生健康局','') end) as upUnitName
        FROM
        com_project_audit a
        left join com_project c on a.audit_object_id=c.id
        left join com_unit d on c.app_unit_id=d.id
        left join com_unit g on substring(d.tree_code, 1, 10) = g.tree_code
        left join com_person e on c.app_person_id=e.id
        left join system_parameter p on c.knowledge_id = p.id
        left join system_parameter p1 on p.parent_id = p1.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getTaskStatisticListByPage"  resultType="com.yiboshi.science.param.dto.ComProjectAuditDTO">
        SELECT
        b.id,c.id proj_id,c.proj_name,c.proj_no,c.version_no,c.proj_class,c.report_year,c.start_date,c.end_date,c.proj_state,
        d.unit_name app_unit_name,e.person_name app_person_name,ifnull(b.test_state,0) test_state
        FROM
        com_project_audit a
        left join com_project c on a.audit_object_id=c.id and c.proj_state=50
        left join com_project_test b on c.id=b.proj_id
        left join com_unit d on c.app_unit_id=d.id
        left join com_person e on c.app_person_id=e.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getCheckStatisticListByPage"  resultType="com.yiboshi.science.param.dto.ComProjectAuditDTO">
        SELECT
        b.id,c.id proj_id,c.proj_name,c.proj_no,c.version_no,c.proj_class,c.report_year,c.start_date,c.end_date,c.proj_state,
        d.unit_name app_unit_name,e.person_name app_person_name,b.check_year,b.check_state
        FROM
        com_project_audit a
        left join com_project c on a.audit_object_id=c.id and c.proj_state=50
        left join com_project_check b on c.id=b.proj_id
        left join com_unit d on c.app_unit_id=d.id
        left join com_person e on c.app_person_id=e.id
        <where>
            ${ew.sqlSegment}
        </where>
    </select>
    <select id="getAssignPersonCount" resultType="com.yiboshi.science.param.dto.DataStatisticsDTO">
        select ifnull(count(*), 0) count1,
               ifnull(sum(case when a.audit_state !=2 then 1 else 0 end),0) count2,
               ifnull(sum(case when a.audit_state =2 then 1 else 0 end),0) count3,
               ifnull(sum(case when to_days(a.updated) = to_days(now()) then 1 else 0 end),0) count4
        from com_project_assign a left join com_project b on a.proj_id = b.id
        where a.assign_year = #{assignYear} and b.proj_type = #{projType}
    </select>
    <select id="getKnowledgeStatistic" resultType="com.yiboshi.science.param.dto.KnowledgeStatisticsDTO">
        select tabA.*, IFNULL(tabB.count1,0) as knowledgeCount from
            (select a.id as knowledge1Id, a.name as knowledge1Name, b.id as knowledge2Id, b.name as knowledge2Name, b.display_order as displayOrder
             from system_parameter a left join system_parameter b on a.id = b.parent_id
             where a.type_id = 56 and a.note_state = 1 and b.type_id = 57 and b.note_state = 1
             order by a.display_order, b.display_order) as tabA
                left join
            (select d.id as knowledge2Id, count(1) as count1
             from com_project_audit a left join com_project c on a.audit_object_id=c.id
                                      left join system_parameter d on c.knowledge_id =d.id
        <where>
            ${ew.sqlSegment}
        </where>
        and d.note_state = 1 group by d.id) as tabB on tabA.knowledge2Id = tabB.knowledge2Id where IFNULL(tabB.count1,0) != 0 order by tabA.knowledge1Id, tabA.displayOrder
    </select>
    <select id="getUnAssignProjectListByPage" resultType="com.yiboshi.science.param.dto.ComProjectAuditDTO">
        SELECT
        a.*,c.id proj_id,c.proj_name,c.proj_no,c.version_no,c.app_no,c.proj_class,c.start_date,c.end_date,c.proj_state,c.total_score,c.average_score,c.knowledge_id,
        d.unit_name app_unit_name,e.cert_id,e.person_name app_person_name,p.name as knowledgeName
        FROM
        com_project_audit a
        left join com_project c on a.audit_object_id=c.id
        left join com_unit d on c.app_unit_id=d.id
        left join com_person e on c.app_person_id=e.id
        left join system_parameter p on c.knowledge_id = p.id
        left join system_parameter p1 on p.parent_id = p1.id
        <where>
            ${ew.sqlSegment}
        </where>
        and c.id not in (select proj_id from com_project_group_detail where group_id in (select id from com_project_group where group_year = #{reportYear}))
    </select>
    <select id="getProjectGroupKnowledgeId" resultType="com.yiboshi.science.param.dto.ComProjectGroupDetailDTO">
        select distinct knowledge_id from com_project_group_detail where group_id in (select id from com_project_group where group_year = #{reportYear})
    </select>
    <select id="getProjectExpertGroupStatistic" resultType="com.yiboshi.science.param.dto.projectExpertGroupStatisticDTO">
        select tabA.*, IFNULL(tabB.count1,0) as knowledgeCount, tabC.id as groupId, tabC.group_name as groupName from (
        select a.id as knowledge1Id, a.name as knowledge1Name, b.id as knowledge2Id, b.name as knowledge2Name
        from system_parameter a left join system_parameter b on a.id = b.parent_id
        where a.type_id = 56 and a.note_state = 1 and b.type_id = 57 and b.note_state = 1 order by a.display_order, b.display_order) as tabA
        left join (
        select d.id as knowledge2Id, count(1) as count1
        from com_project_audit a left join com_project c on a.audit_object_id=c.id
        left join system_parameter d on c.knowledge_id =d.id
        <where>
            ${ew.sqlSegment}
        </where>
        group by d.id) as tabB on tabA.knowledge2Id = tabB.knowledge2Id
        left join (
        select distinct a.id, a.group_name, a.display_order as displayOrder, b.knowledge_id as knowledge2Id
        from com_project_group a left join com_project_group_detail b on a.id = b.group_id
        where a.group_year = #{groupYear}) as tabC on tabA.knowledge2Id = tabC.knowledge2Id
        where IFNULL(tabB.count1,0) != 0 and tabC.id is not null order by tabC.displayOrder
    </select>
    <select id="getExpertInfoByGroupId" resultType="com.yiboshi.science.param.dto.ComPersonDTO">
        select cert_id, person_name, b.unit_name
        from com_person a left join com_unit b on a.unit_id = b.id
        where a.id in (
            select person_id from com_expert where id in (
                select expert_id from com_project_group_assign where group_id = #{groupId}))
    </select>
    <select id="getEvaluationStatistic" resultType="com.yiboshi.science.param.dto.EvaluationStatisticDTO">
        select b.proj_id, a.proj_no, a.app_no, a.proj_name, f.name as knowledge_name, ifnull(h.unit_name, '省直属') as unit_name, c.id as expert_id, c.person_id, d.cert_id, d.person_name, e.unit_name as expert_unit_name, d.mobile, b.total_score, b.remark, b.audit_state, a.average_score
        from com_project_assign b left join com_project a on a.id = b.proj_id
        left join com_expert c on b.expert_id = c.id
        left join com_person d on c.person_id = d.id
        left join com_unit e on d.unit_id = e.id
        left join system_parameter f on a.knowledge_id = f.id
        left join com_unit g on a.app_unit_id = g.id
        left join com_unit h on substring(g.tree_code, 1, 10) = h.tree_code and h.unit_type = 0
        where b.assign_year = #{reportYear}
        order by a.proj_no, a.proj_name
    </select>
    <select id="getProjectGroupScoreOrder" resultType="com.yiboshi.science.param.dto.ProjectGroupScoreOrderDTO">
        select a.id as group_id, a.group_name, a.display_order, b.proj_id, c.proj_no, c.proj_name, f.name as knowledge_name, ifnull(h.unit_name, '省直属') as unit_name, d.person_name, e.unit_name as app_unit_name, c.average_score
        from com_project_group a left join com_project_group_detail b on a.id = b.group_id
        left join com_project c on b.proj_id = c.id
        left join com_person d on c.app_person_id = d.id
        left join com_unit e on c.app_unit_id = e.id
        left join system_parameter f on c.knowledge_id = f.id
        left join com_unit g on c.app_unit_id = g.id
        left join com_unit h on substring(g.tree_code, 1, 10) = h.tree_code and h.unit_type = 0
        where a.group_year = #{reportYear} order by a.display_order, c.average_score desc
    </select>
</mapper>