Newer
Older
casic-metering-eqpt-xichang / casic-metering-dao / src / main / resources / mapper / equipment / EquipmentInfoMapper.xml
zhangyingjie on 19 Jan 2024 12 KB 20240119 修改联调问题
<?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.casic.missiles.mapper.equipment.EquipmentInfoMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.casic.missiles.model.equipment.EquipmentInfo">
        <id column="id" property="id" />
        <result column="equipmentNo" property="equipmentNo" />
        <result column="equipment_name" property="equipmentName" />
        <result column="usage_status" property="usageStatus" />
        <result column="level" property="level" />
        <result column="product_country" property="productCountry" />
        <result column="manufacturer" property="manufacturer" />
        <result column="manufactureNo" property="manufactureNo" />
        <result column="product_date" property="productDate" />
        <result column="unit_price" property="unitPrice" />
        <result column="purchase_date" property="purchaseDate" />
        <result column="model" property="model" />
        <result column="quality_condition" property="qualityCondition" />
        <result column="company_id" property="companyId" />
        <result column="dept_id" property="deptId" />
        <result column="category" property="category" />
        <result column="check_cycle" property="checkCycle" />
        <result column="remark" property="remark" />
        <result column="instructions_file" property="instructionsFile" />
        <result column="check_organization" property="checkOrganization" />
        <result column="check_date" property="checkDate" />
        <result column="certificateValid" property="certificateValid" />
        <result column="meter_identify" property="meterIdentify" />
        <result column="use_position" property="usePosition" />
        <result column="director_name" property="directorName" />
        <result column="RFID" property="rfid" />
        <result column="use_sign" property="useSign" />
        <result column="install_location" property="installLocation" />
        <result column="install_location_ext" property="installLocationExt" />
        <result column="test_task" property="testTask" />
        <result column="remark_ext" property="remarkExt" />
        <result column="create_user_id" property="createUserId" />
        <result column="create_user_name" property="createUserName" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="is_del" property="isDel" />
        <result column="model_id" property="modelId" />
        <result column="help_instruction" property="helpInstruction" />
        <result column="use_position_id" property="usePositionId" />
        <result column="director_id" property="directorId" />
        <result column="install_location_id" property="installLocationId" />
        <result column="check_destination" property="checkDestination" />
        <result column="limit_instruction" property="limitInstruction" />
        <result column="group_names" property="groupNames" />
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo,
            product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file,
            check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign,
            install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time,
            is_del,model_id,help_instruction,use_position_id,director_id,install_location_id,check_destination,limit_instruction
    </sql>

    <select id="selectListPage" resultMap="BaseResultMap">
        select <include refid="Base_Column_List"/>,
        (
        SELECT
        GROUP_CONCAT( eqpt_equipment_group_info.group_name )
        FROM
        eqpt_equipment_group_info
        WHERE
        exists ( SELECT id FROM eqpt_equipment_group_relation tmp WHERE tmp.group_id = eqpt_equipment_group_info.id AND tmp.equipment_id = eqpt_equipment_info_view.id )
        ) as group_names
        from eqpt_equipment_info_view
        <where>
            <if test="ew != null">
                ${ew.sqlSegment}
            </if>
        </where>
    </select>

    <select id="selectList" resultMap="BaseResultMap">
        select <include refid="Base_Column_List"/>
        from eqpt_equipment_info_view
        <where>
            <if test="ew != null">
                ${ew.sqlSegment}
            </if>
        </where>
    </select>


    <select id="isBindLabel" resultType="java.lang.Long">
        SELECT id
        FROM eqpt_equipment_info
        WHERE 1=1
        <if test="label != null and label !=''">
            and RFID =#{label}
        </if>
    </select>

    <update id="bindLabel">
        UPDATE eqpt_equipment_info
        SET RFID = #{request.label}
        WHERE id = #{request.sampleId}
    </update>

    <sql id="equipmentRemindList">
        with remind_config_info as (
            select
            c.remind_time as remind_time,
            r.task_id as task_id,
            r.model_id as model_id,
            e.id as equipment_id
            from eqpt_remind_config c
            left join eqpt_remind_relation r on c.id = r.remind_id
            left join eqpt_equipment_task_relation t on r.task_id = t.task_id
            left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id)
            where e.id is not null
        ),
        eqpt_remind as (
            select equipment_id,min(remind_time) as remind_time
            from remind_config_info
            group by equipment_id
        ),
        eqpt_remind_all as (
            select
            e.id as equipment_id,
            IFNULL(m.remind_time,90) as remind_time
            from eqpt_equipment_info e
            left join eqpt_remind m on e.id = m.equipment_id
        ),
        task_ext as (
            select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time
            from eqpt_equipment_task_info
        ),
        latest_sample_relation AS (
            SELECT *
            FROM biz_business_order_sample_relation a
            WHERE id = (
            SELECT max( id )
            FROM biz_business_order_sample_relation b
            WHERE a.sample_id = b.sample_id )
        ),
        eqpt_ext as (
            select e.* ,
                DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid,
                GROUP_CONCAT(t.task_name) as taskNames,
                GROUP_CONCAT(t.time_ext) as taskTimes,
                GROUP_CONCAT(t.id) as taskIds,
                min(t.start_time) as task_start_time,
                max(t.end_time) as task_end_time,
                (case when lsr.sample_status in
                    <foreach collection="checkedStatus" item="item" index="index" open="(" close=")" separator=",">#{item}</foreach>
                then 1 else 0 end) as check_status
            from eqpt_equipment_info_view e
            left join eqpt_remind_all a on e.id = a.equipment_id
            left join eqpt_equipment_task_relation r on e.id = r.equipment_id
            left join task_ext t on r.task_id = t.id
            left join latest_sample_relation lsr on lsr.sample_id = e.id
            group by e.id,e.certificate_valid,a.remind_time,lsr.sample_status
        )

        select * from eqpt_ext
        <where>
            <if test="ew != null">
                ${ew.sqlSegment}
            </if>
        </where>
        ORDER BY remind_valid asc
    </sql>

    <select id="selectRemindListPage"  resultType="com.casic.missiles.dto.equipment.EquipmentRemindList">
        select * from (
            <include refid="equipmentRemindList"/>
        )A
    </select>

    <select id="selectRemindList"  resultType="com.casic.missiles.dto.equipment.EquipmentRemindList">
        select * from (
            <include refid="equipmentRemindList"/>
        )A
    </select>

    <sql id="selectBizCertificate">
        select
            c.id as id,
            e.id as equipmentId,
            e.equipment_no as equipmentNo,
            e.equipment_name as equipmentName,
            e.meter_identify as meterIdentify,
            e.dept_id as deptId,
            e.model as model,
            e.company_id as companyId,
            e.manufacture_no as manufactureNo,
            c.certificate_report_no as certificateNo,
            c.certificate_report_name as certificateName,
            '西昌卫星发射中心计量测试站' as checkOrganization,
            c.calibration_time as checkDate,
            c.expiration_date as certificateValid,
            c.certificate_report_file as minioFileName,
            c.create_time as createTime,
            c.update_time as updateTime,
            '1' as certificateType,
            c.remark as remark
        from biz_business_certificate_report_view c ,eqpt_equipment_info_view e
        where c.sample_id = e.id
    </sql>

    <select id="bizCertificateListPage" resultType="com.casic.missiles.dto.equipment.EquipmentCertificateDTO">
        SELECT * FROM (
            WITH biz_cert AS (
                SELECT
                    id AS id,
                    sample_id AS equipment_id,
                    certificate_report_no AS certificate_no,
                    certificate_report_name AS certificate_name,
                    check_organization AS check_organization,
                    calibration_time AS check_date,
                    expiration_date AS certificate_valid,
                    certificate_report_file AS certificate_report_file,
                    create_time AS create_time,
                    update_time AS update_time,
                    '1' as equipment_type
                FROM biz_business_certificate_report_view
            ),
            subcontract_cert AS (
                SELECT
                    id,
                    equipment_id,
                    certificate_no,
                    certificate_name,
                    ( SELECT company_name FROM eqpt_subcontractor WHERE id = subcontractor_id ) AS check_organization,
                    check_date,
                    certificate_valid,
                    certificate_report AS certificate_report_file,
                    create_time,
                    update_time ,
                    '2' as equipment_type
                FROM eqpt_subcontract_certificate
            ),
            all_cert AS (
                SELECT * FROM biz_cert
                UNION ALL
                SELECT * FROM subcontract_cert
            )

            SELECT
                c.id as id,
                e.id as equipmentId,
                e.equipment_no as equipmentNo,
                e.equipment_name as equipmentName,
                e.meter_identify as meterIdentify,
                e.dept_id as deptId,
                e.model as model,
                e.company_id as companyId,
                e.manufacture_no as manufactureNo,
                c.certificate_no as certificateNo,
                c.certificate_name as certificateName,
                c.check_organization as checkOrganization,
                c.check_date as checkDate,
                c.certificate_valid as certificateValid,
                c.certificate_report_file as minioFileName,
                c.create_time as createTime,
                c.update_time as updateTime,
                c.equipment_type as certificateType
            FROM
                all_cert c, eqpt_equipment_info_view e
            where c.equipment_id = e.id
            <if test="ew != null">
                and
                ${ew.sqlSegment}
            </if>
        )T
    </select>

    <select id="bizCertificateList" resultType="com.casic.missiles.dto.equipment.EquipmentCertificateDTO">
        <include refid="selectBizCertificate"/>
        and e.is_del = 0
        and c.approval_status = '4'
        and e.id = #{equipmentId}
    </select>

</mapper>