<?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.plan.PlanEquipmentRelationMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.casic.missiles.model.plan.PlanEquipmentRelation"> <id column="id" property="id" /> <result column="plan_id" property="planId" /> <result column="equipment_id" property="equipmentId" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, plan_id, equipment_id, create_time, update_time </sql> <select id="getPlanEquipmentAggr" resultType="com.casic.missiles.dto.plan.PlanEquipmentAggr"> SELECT e.equipment_name, count( e.id ) as `count`, sum( case when check_completion = '1' or check_completion is null then 1 else 0 end ) AS uncheck, sum( case when check_completion = '2' then 1 else 0 end ) AS incheck, sum( case when check_completion = '3' then 1 else 0 end) AS checked FROM `eqpt_plan_equipment_relation` r LEFT JOIN eqpt_equipment_info_view e ON r.equipment_id = e.id where r.plan_id = #{planId} GROUP BY e.equipment_name </select> <sql id="commonSelect"> r1.id AS id, r1.plan_id AS planId, e.id AS equipmentId, e.equipment_no AS equipmentNo, e.equipment_name AS equipmentName, e.model AS model, e.company_id AS companyId, e.use_position AS usePosition, e.check_organization AS checkOrganization, e.certificate_valid AS certificateValid, e.director_name AS director_name, e.dept_id AS deptId, e.usage_status AS usageStatus, e.manufacture_no AS manufactureNo, e.manufacturer as manufacturer, e.meter_identify as meterIdentify, r1.plan_deliver_time AS planDeliverTime, r1.real_deliver_time AS realDeliverTime, r1.plan_measure_company AS planMeasureCompany, r1.real_measure_company AS realMeasureCompany, r1.check_completion AS checkCompletion, r1.check_finish_time AS checkFinishTime, r1.create_time AS createTime, r1.update_time AS updateTime </sql> <select id="listByPlanAndName" resultType="com.casic.missiles.model.plan.PlanEquipmentRelation"> SELECT <include refid="commonSelect"/> FROM eqpt_equipment_info_view e, eqpt_plan_equipment_relation r1 WHERE e.id = r1.equipment_id <if test="planId != null and planId !=''"> AND r1.plan_id = #{planId} </if> <if test="equipmentName != null and equipmentName != ''"> AND e.equipment_name = #{equipmentName} </if> </select> <select id="listByPlansAndName" resultType="com.casic.missiles.model.plan.PlanEquipmentRelation"> SELECT <include refid="commonSelect"/> FROM eqpt_equipment_info_view e, eqpt_plan_equipment_relation r1 WHERE e.id = r1.equipment_id <if test="planIds != null"> AND r1.plan_id in <foreach collection="planIds" item="item" index="index" open="(" close=")" separator=","> #{item} </foreach> </if> <if test="equipmentName != null and equipmentName != ''"> AND e.equipment_name = #{equipmentName} </if> </select> <select id="getPlanEquipmentStatus" resultType="com.casic.missiles.dto.plan.PlanEquipmentStatus"> WITH R1 AS ( SELECT i.measure_company AS measureCompany, r.real_deliver_time AS realDeliverTime, r.sample_status AS sampleStatus, r.measure_complete_time AS measureCompleteTime, i.update_time AS updateTime FROM `biz_business_order_info` i INNER JOIN biz_business_order_sample_relation r ON r.order_id = i.id WHERE YEAR ( i.update_time ) = YEAR (NOW()) AND YEAR ( r.update_time ) = YEAR (NOW()) AND r.sample_id = #{equipmentId} ), R2 AS ( SELECT ( SELECT company_name FROM eqpt_subcontractor WHERE id = i.subcontractor_id ) AS measureCompany, i.update_time AS realDeliverTime, '6' AS sampleStatus, i.update_time AS measureCompleteTime, i.update_time AS updateTime FROM `eqpt_subcontract_order` i INNER JOIN eqpt_subcontract_order_relation r ON r.order_id = i.id WHERE i.approval_status = '4' AND YEAR ( i.update_time ) = YEAR (NOW()) AND YEAR ( r.update_time ) = YEAR (NOW()) AND r.equipment_id = #{equipmentId} ), R AS ( SELECT * FROM R1 UNION ALL SELECT * FROM R2 ) SELECT measureCompany, realDeliverTime, sampleStatus, measureCompleteTime FROM R ORDER BY updateTime DESC LIMIT 1 </select> <select id="planFinishStatistics" resultType="com.casic.missiles.dto.board.PlanFinishDTO"> select e.dept_id as deptId, sum(if(r.check_completion = #{checkedStatus},1,0)) as finished, count(r.id) as total from eqpt_plan_equipment_relation r left join eqpt_equipment_info e on r.equipment_id = e.id where e.is_del = '0' AND YEAR ( r.update_time ) = YEAR (NOW()) group by e.dept_id <if test="deptIds != null"> having e.dept_id in <foreach collection="deptIds" item="item" index="index" open="(" close=")" separator=","> #{item} </foreach> </if> </select> <update id="inspectionStatusUpdate"> update eqpt_plan_equipment_relation r1, eqpt_plan p, eqpt_inspection_equipment_relation r2 set r1.execute_status = #{executeStatus}, r1.execute_time = r2.inspection_time where r1.plan_id = p.id and p.year = YEAR(NOW()) and r1.execute_status = '0' and r1.equipment_id = r2.equipment_id and r2.inspection_id = #{inspectionId} </update> </mapper>