Newer
Older
casic-metering-biz-xichang / casic-metering-dao / src / main / resources / mapper / business / BizBusinessOrderSampleRelationMapper.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="com.casic.missiles.mapper.business.BizBusinessOrderSampleRelationMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.casic.missiles.model.business.BizBusinessOrderSampleRelation">
        <id column="id" property="id" />
        <result column="order_id" property="orderId" />
        <result column="sample_id" property="sampleId" />
        <result column="sample_no" property="sampleNo" />
        <result column="sample_name" property="sampleName" />
        <result column="sample_model" property="sampleModel" />
        <result column="interchange_id" property="interchangeId" />
        <result column="back_interchange_id" property="backInterchangeId" />
        <result column="sample_status" property="sampleStatus" />
        <result column="remark" property="remark" />
        <result column="real_deliver_time" property="realDeliverTime" />
        <result column="return_time" property="returnTime" />
        <result column="measure_type" property="measureType" />
        <result column="appendix_descn" property="appendixDescn" />
        <result column="appearance_inspect" property="appearanceInspect" />
        <result column="special_require" property="specialRequire" />
        <result column="measure_content" property="measureContent" />
        <result column="measure_complete_time" property="measureCompleteTime" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, order_id, sample_id, sample_no, sample_name, sample_model, interchange_id, back_interchange_id, sample_status, remark, real_deliver_time, return_time, measure_type, appendix_descn, appearance_inspect, special_require, measure_content, measure_complete_time, create_time, update_time
    </sql>

    <!-- 各状态列表查询结果列 -->
    <sql id="Status_Column_List">
        eei.id AS sample_id, eei.equipment_no AS sampleNo, eei.equipment_name AS sampleName, eei.model AS sampleModel, eei.category,
        eei.manufacture_no AS manufactureNo, bo.order_no AS orderNo, bo.id AS orderId, bo.customer_id,
        bo.customer_name, bo.deliverer, bo.is_urgent, bo.require_over_time, bosr.sample_status, bosr.real_deliver_time,
        eei.manufacturer, eei.help_instruction
    </sql>

    <!-- 详情查询结果列 -->
    <sql id="Detail_Column_List">
        bosr.sample_id, eei.equipment_no AS sampleNo, eei.equipment_name AS sampleName, eei.model AS sampleModel, eei.manufacture_no AS manufactureNo,
        bo.customer_id, bo.customer_name, bo.id AS orderId, bo.order_no, bosr.measure_content
    </sql>

    <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.equipmentId}
    </update>

    <select id="selectSampleListByStatus" resultType="com.casic.missiles.dto.business.labExecutive.SampleHandOutListResponse">
        SELECT
        <include refid="Status_Column_List"/>
        FROM biz_business_order_info bo
        JOIN biz_business_order_sample_relation bosr ON bo.id = bosr.order_id
        JOIN eqpt_equipment_info eei ON eei.id = bosr.sample_id
        WHERE 1=1
        AND bosr.measure_type = 1<!--检定方式:内检-->
        <if test="request != null and request.sampleStatus == 8"><!--超期状态,样品在待分发和检测中下的超期-->
            AND (bosr.sample_status = 2 OR bosr.sample_status = 3)
            AND bo.require_over_time &lt; NOW()
        </if>
        <if test="request != null and request.sampleStatus != 8"><!--非超期状态的其它状态-->
            AND bosr.sample_status = #{request.sampleStatus}
        </if>
        <if test="request != null and request.sampleNo != null and request.sampleNo !=''">
            AND eei.equipment_no LIKE concat('%',#{request.sampleNo},'%')
        </if>
        <if test="request != null and request.sampleName != null and request.sampleName !=''">
            AND eei.equipment_name LIKE concat('%',#{request.sampleName},'%')
        </if>
        <if test="request != null and request.orderNo != null and request.orderNo !=''">
            AND bo.order_no LIKE concat('%',#{request.orderNo},'%')
        </if>
        <if test="request != null and request.customerName != null and request.customerName !=''">
            AND bo.customer_name LIKE concat('%',#{request.customerName},'%')
        </if>
        <if test="request != null and request.startTime != null and request.startTime !=''">
            AND bo.require_over_time &gt;= #{request.startTime}
        </if>
        <if test="request != null and request.endTime != null and request.endTime !=''">
            AND bo.require_over_time &lt; #{request.endTime}
        </if>
        <if test="request != null and request.isUrgent != null and request.isUrgent !=''">
            AND bo.is_urgent = #{request.isUrgent}
        </if>
        <if test="request != null and request.measureCompany != null and request.measureCompany !=''">
            AND bo.measure_company = #{request.measureCompany}
        </if>
        <if test="request != null and request.category != null and request.category !=''">
            AND eei.category = #{request.category}
        </if>
        <if test="request != null and request.ids != null and request.ids.size() > 0">
            AND eei.id IN
            <foreach collection="request.ids" item="item" index="index" open="(" close=")" separator=",">
                #{item}
            </foreach>
        </if>
        ORDER BY bosr.create_time DESC
    </select>

    <select id="selectSampleDetail" resultType="com.casic.missiles.dto.business.labExecutive.SampleHandOutDetailResponse">
        SELECT
        <include refid="Detail_Column_List"/>
        FROM biz_business_order_sample_relation bosr
        JOIN eqpt_equipment_info eei ON bosr.sample_id = eei.id
        JOIN biz_business_order_info bo ON bosr.order_id = bo.id
        WHERE bosr.order_id = #{orderId}
        AND bosr.sample_id = #{sampleId}
    </select>

    <update id="updateByOrderIdAndSampleId">
        UPDATE biz_business_order_sample_relation
        SET sample_status = #{status}
        <if test="remark != null and remark !=''">
            ,remark = #{remark}
        </if>
        <if test="status == 5"><!--待归还时更新检测完成时间-->
            ,measure_complete_time = NOW()
        </if>
        WHERE order_id = #{orderId}
        AND sample_id = #{sampleId}
    </update>

    <select id="getSampleListByStatus" resultType="com.casic.missiles.dto.business.dispatch.SampleDispatchListResponse">
        SELECT bosr.id, eei.id AS sampleId, eei.equipment_no AS sampleNo, eei.equipment_name AS sampleName, bo.order_no, bo.id AS orderId,
        bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, bo.require_over_time, bosr.sample_status, bosr.real_deliver_time,
        bosr.measure_type, bo.plan_deliver_time, bosr.return_time, eei.RFID AS labelBind, eei.model AS sampleModel, eei.manufacture_no,
        eei.certificate_valid AS certificateValid, bosr.appendix_descn, bosr.appearance_inspect, bosr.special_require, bosr.measure_content,
        eei.help_instruction, eei.manufacturer, eei.category, bosr.interchange_id, bosr.back_interchange_id
        FROM
        (
            SELECT *
            FROM biz_business_order_info bo
            WHERE 1=1
            <if test="request != null and request.sampleStatus == 8"><!--超期状态,样品在待分发和检测中下的超期-->
                AND bo.require_over_time &lt; NOW()
            </if>
            <if test="request != null and request.orderNo != null and request.orderNo !=''">
                AND bo.order_no LIKE concat('%',#{request.orderNo},'%')
            </if>
            <if test="request != null and request.customerName != null and request.customerName !=''">
                AND bo.customer_name LIKE concat('%',#{request.customerName},'%')
            </if>
            <if test="request != null and request.deliverer != null and request.deliverer !=''">
                AND bo.deliverer LIKE concat('%',#{request.deliverer},'%')
            </if>
            <if test="request != null and request.measureCompany != null and request.measureCompany !=''">
                AND bo.measure_company = #{request.measureCompany}
            </if>
            <if test="request != null and request.planDeliverStartTime != null and request.planDeliverStartTime !=''">
                AND bo.plan_deliver_time &gt;= #{request.planDeliverStartTime}
            </if>
            <if test="request != null and request.planDeliverEndTime != null and request.planDeliverEndTime !=''">
                AND bo.plan_deliver_time &lt; #{request.planDeliverEndTime}
            </if>
        ) bo
        JOIN(
            SELECT *
            FROM biz_business_order_sample_relation bosr
            WHERE 1=1
            <if test="request != null and request.sampleStatus == 2">
                AND (bosr.sample_status = 2 OR bosr.sample_status = 3 OR bosr.sample_status = 4)
            </if>
            <if test="request != null and request.sampleStatus == 8"><!--超期状态,样品在待分发和检测中下的超期-->
                AND bosr.sample_status = 3
            </if>
            <if test="request != null and request.sampleStatus != null and request.sampleStatus != 8  and request.sampleStatus != 2"><!--非超期状态的其它状态-->
                AND bosr.sample_status = #{request.sampleStatus}
            </if>
            <if test="request != null and request.interchangeType != null and request.interchangeType == 1"><!--收入交接单-->
                AND bosr.interchange_id is not null
            </if>
            <if test="request != null and request.interchangeType != null and request.interchangeType == 2"><!--归还交接单-->
                AND bosr.back_interchange_id is not null
            </if>
            <if test="request != null and request.interchangeType != null and request.interchangeType == 0">
                AND bosr.back_interchange_id is null AND bosr.interchange_id is null
            </if>
            <if test="request != null and request.ids != null and request.ids.size() > 0">
                and bosr.id in
                <foreach collection="request.ids" item="id" index="index" open="(" close=")" separator=",">
                    #{id}
                </foreach>
            </if>
        ) bosr ON bo.id = bosr.order_id
        JOIN (
            SELECT *
            FROM eqpt_equipment_info eei
            WHERE 1=1
            <if test="request != null and request.sampleNo != null and request.sampleNo !=''">
                AND eei.equipment_no LIKE concat('%',#{request.sampleNo},'%')
            </if>
            <if test="request != null and request.sampleName != null and request.sampleName !=''">
                AND eei.equipment_name LIKE concat('%',#{request.sampleName},'%')
            </if>
            <if test="request != null and request.model != null and request.model !=''">
                AND eei.model LIKE concat('%',#{request.model},'%')
            </if>
            <if test="request != null and request.manufactureNo != null and request.manufactureNo !=''">
                AND eei.manufacture_no LIKE concat('%',#{request.manufactureNo},'%')
            </if>
            <if test="request != null and request.manufacturer != null and request.manufacturer !=''">
                AND eei.manufacturer LIKE concat('%',#{request.manufacturer},'%')
            </if>
            <if test="request != null and request.helpInstruction != null and request.helpInstruction !=''">
                AND eei.help_instruction LIKE concat('%',#{request.helpInstruction},'%')
            </if>
        ) eei ON eei.id = bosr.sample_id
        ORDER BY bosr.create_time DESC
    </select>

    <select id="listPageForInterchange" resultType="com.casic.missiles.dto.business.interchange.InterchangeSampleListResponse">
        SELECT eei.id AS sampleId, eei.sampleNo, eei.sampleName, eei.sampleModel, bor.appendix_descn, bor.appearance_inspect,
        bor.special_require, bor.measure_content, eei.manufacture_no AS manufactureNo, eei.manufacturer, eei.certificate_valid AS certificateValid,
        eei.meter_identify AS meterIdentify, eei.limit_instruction AS limitInstruction
        FROM (
            SELECT id, equipment_no AS sampleNo, equipment_name AS sampleName, model AS sampleModel, manufacture_no, manufacturer, certificate_valid,
                meter_identify, limit_instruction
            FROM eqpt_equipment_info
            WHERE 1=1
            <if test="request != null and request.sampleNo != null and request.sampleNo !=''">
                AND equipment_no like concat('%',#{request.sampleNo},'%')
            </if>
            <if test="request != null and request.sampleName != null and request.sampleName !=''">
                AND equipment_name like concat('%',#{request.sampleName},'%')
            </if>
        ) eei
        JOIN (
            SELECT bosr.sample_id, bosr.appendix_descn, bosr.appearance_inspect, bosr.special_require, bosr.measure_content, bosr.create_time
            FROM biz_business_order_sample_relation bosr
            JOIN (
                SELECT id
                FROM biz_business_order_info
                WHERE customer_id = #{request.customerId}
            )bo ON bo.id = bosr.order_id
            WHERE bosr.interchange_id is null
            <if test="request != null and request.orderId != null and request.orderId !=''">
                AND bosr.order_id = #{request.orderId}
            </if>
        )bor ON bor.sample_id = eei.id
        ORDER BY bor.create_time DESC
    </select>

    <select id="selectSampleIdsForInterchange" resultType="java.lang.Long">
        SELECT bosr.sample_id
        FROM biz_business_order_sample_relation bosr
        JOIN biz_business_order_info boi ON boi.id = bosr.order_id
        WHERE boi.receive_status = 2 <!-- 已接收 -->
    </select>

    <select id="selectSampleListForInterChange" resultType="com.casic.missiles.dto.business.interchange.InterchangeSampleListResponse">
        SELECT eei.id AS sampleId, eei.equipment_no AS sampleNo, eei.equipment_name AS sampleName, eei.model AS sampleModel,
        eei.manufacturer, eei.manufacture_no, eei.meter_identify, eei.limit_instruction, eei.certificate_valid, bbosr.sample_status,
        bbosr.appendix_descn, bbosr.appearance_inspect, bbosr.special_require, bbosr.measure_content, bbosr.measure_complete_time
        FROM biz_business_order_sample_relation bbosr
        JOIN eqpt_equipment_info eei ON bbosr.sample_id = eei.id
        WHERE (bbosr.interchange_id = #{interchangeId} OR bbosr.back_interchange_id = #{interchangeId})
        AND bbosr.order_id = #{orderId}
    </select>

    <select id="selectReceivedListPage" resultType="com.casic.missiles.model.eqpt.EqptEquipmentInfo">
        SELECT eei.*, bboi.id AS orderId, bboi.order_no, bboi.customer_name
        FROM biz_business_order_sample_relation bbosr
        JOIN eqpt_equipment_info eei ON bbosr.sample_id = eei.id
        JOIN biz_business_order_info bboi ON bboi.id = bbosr.order_id
        WHERE bboi.receive_status = 2
        <if test="request != null and request.customerId != null and request.customerId !=''">
            and eei.company_id = #{request.customerId}
        </if>
        <if test="request != null and request.equipmentNo != null and request.equipmentNo !=''">
            and eei.equipment_no like concat('%',#{request.equipmentNo},'%')
        </if>
        <if test="request != null and request.equipmentName != null and request.equipmentName !=''">
            and eei.equipment_name like concat('%',#{request.equipmentName},'%')
        </if>
        <if test="request != null and request.equipmentType != null and request.equipmentType !=''">
            and eei.equipment_type = #{request.equipmentType}
        </if>
        <if test="request != null and request.certificateValidStart != null and request.certificateValidStart !=''">
            and eei.certificate_valid &gt;= #{request.certificateValidStart}
        </if>
        <if test="request != null and request.certificateValidEnd != null and request.certificateValidEnd !=''">
            and eei.certificate_valid &lt;= #{request.certificateValidEnd}
        </if>
    </select>

    <select id="selectListForReadWriter" resultType="com.casic.missiles.dto.business.dispatch.ReadSampleDTO">
        SELECT sr.id, sr.order_id, sr.sample_id, bo.order_no, bo.customer_id, bo.customer_name, eei.equipment_no AS sampleNo, eei.equipment_name AS sampleName,
            eei.model AS sampleModel, eei.manufacture_no, eei.RFID AS labelBind, eei.certificate_valid AS certificateValid
        FROM eqpt_equipment_info eei
        <!--  按委托书id和样品id分组取的就是关联表里最新的关联   -->
        LEFT JOIN (SELECT order_id, sample_id FROM biz_business_order_sample_relation GROUP BY order_id, sample_id) sr ON sr.sample_id = eei.id
        LEFT JOIN biz_business_order_info bo ON bo.id = sr.order_id
        WHERE eei.is_del = 0
        <if test="gunSet != null">
            and eei.equipment_no in
            <foreach collection="gunSet" item="id" index="index" open="(" close=")" separator=",">
                #{id}
            </foreach>
        </if>
        <if test="tIds != null">
            and eei.RFID in
            <foreach collection="tIds" item="id" index="index" open="(" close=")" separator=",">
                #{id}
            </foreach>
        </if>
        <if test="customerId != null and customerId !=''">
            AND bo.customer_id = #{customerId}
        </if>
        AND eei.id NOT IN
        (
            SELECT sample_id
            FROM biz_business_order_sample_relation bosrr
            JOIN (
                SELECT id
                FROM biz_business_order_info
                WHERE receive_status ='2' OR receive_status ='1' OR receive_status =''    <!-- 委托书创建,引入的委托书只能是只能为接收状态-->
            )boo ON boo.id = bosrr.order_id
        )
        ORDER BY eei.create_time DESC
    </select>

    <select id="selectSampleListByOrderId" resultMap="BaseResultMap">
        SELECT bbosr.*, eei.category
        FROM biz_business_order_sample_relation bbosr
        JOIN eqpt_equipment_info eei ON bbosr.sample_id = eei.id
        WHERE bbosr.order_id = #{id}
    </select>

    <update id="updateInterchange">
        UPDATE biz_business_order_sample_relation
        SET interchange_id = null
        WHERE order_id = #{orderId} AND interchange_id = #{interchangeId}
    </update>

    <update id="updateBackInterchange">
        UPDATE biz_business_order_sample_relation
        SET back_interchange_id = null
        WHERE order_id = #{orderId} AND back_interchange_id = #{interchangeId}
    </update>
</mapper>