| | |
| | | <result property="vehicleModel" column="vehicle_model" /> |
| | | <result property="status" column="status" /> |
| | | <result property="platformCode" column="platform_code" /> |
| | | <result property="deptId" column="dept_id" /> |
| | | <result property="deptName" column="dept_name" /> |
| | | <result property="createBy" column="create_by" /> |
| | | <result property="createTime" column="create_time" /> |
| | |
| | | <result property="updateTime" column="update_time" /> |
| | | <result property="remark" column="remark" /> |
| | | </resultMap> |
| | | |
| | | <!-- 包含多分公司关联的完整结果映射(仅在需要时使用) --> |
| | | <resultMap type="com.ruoyi.system.domain.VehicleInfo" id="VehicleInfoWithDeptsResult" extends="VehicleInfoResult"> |
| | | <!-- 多个分公司关联(立即加载,避免延迟加载导致的序列化问题) --> |
| | | <collection property="deptIds" ofType="Long" |
| | | select="selectVehicleDeptIds" |
| | | column="vehicle_id" |
| | | fetchType="eager"/> |
| | | <collection property="deptNames" ofType="String" |
| | | select="selectVehicleDeptNames" |
| | | column="vehicle_id" |
| | | fetchType="eager"/> |
| | | </resultMap> |
| | | |
| | | <sql id="selectVehicleInfoVo"> |
| | | select v.vehicle_id, v.car_id, v.device_id, v.vehicle_no, v.vehicle_type, v.vehicle_brand, v.vehicle_model, v.status, v.platform_code, v.dept_id, d.dept_name, v.create_by, v.create_time, v.update_by, v.update_time, v.remark |
| | | select v.vehicle_id, v.car_id, v.device_id, v.vehicle_no, v.vehicle_type, v.vehicle_brand, v.vehicle_model, v.status, v.platform_code, v.create_by, v.create_time, v.update_by, v.update_time, v.remark |
| | | from tb_vehicle_info v |
| | | left join sys_dept d on v.dept_id = d.dept_id |
| | | </sql> |
| | | |
| | | <!-- 查询车辆关联的所有分公司ID --> |
| | | <select id="selectVehicleDeptIds" resultType="Long"> |
| | | SELECT dept_id FROM tb_vehicle_dept WHERE vehicle_id = #{vehicle_id} |
| | | </select> |
| | | |
| | | <!-- 查询车辆关联的所有分公司名称 --> |
| | | <select id="selectVehicleDeptNames" resultType="String"> |
| | | SELECT d.dept_name |
| | | FROM tb_vehicle_dept vd |
| | | LEFT JOIN sys_dept d ON vd.dept_id = d.dept_id |
| | | WHERE vd.vehicle_id = #{vehicle_id} |
| | | </select> |
| | | |
| | | <select id="selectVehicleInfoList" parameterType="VehicleInfo" resultMap="VehicleInfoResult"> |
| | | <include refid="selectVehicleInfoVo"/> |
| | | <select id="selectVehicleInfoListWithDepts" parameterType="VehicleInfo" resultMap="VehicleInfoWithDeptsResult"> |
| | | select v.vehicle_id, v.car_id, v.device_id, v.vehicle_no, v.vehicle_type, v.vehicle_brand, |
| | | v.vehicle_model, v.status, v.platform_code, v.create_by, v.create_time, |
| | | v.update_by, v.update_time, v.remark |
| | | from tb_vehicle_info v |
| | | <where> |
| | | <if test="vehicleNo != null and vehicleNo != ''"> and v.vehicle_no = #{vehicleNo}</if> |
| | | <if test="vehicleNo != null and vehicleNo != ''"> and v.vehicle_no LIKE concat('%', #{vehicleNo}, '%')</if> |
| | | <if test="deviceId != null and deviceId != ''"> and v.device_id = #{deviceId}</if> |
| | | <if test="vehicleType != null and vehicleType != ''"> and v.vehicle_type = #{vehicleType}</if> |
| | | <if test="vehicleBrand != null and vehicleBrand != ''"> and v.vehicle_brand = #{vehicleBrand}</if> |
| | | <if test="vehicleModel != null and vehicleModel != ''"> and v.vehicle_model = #{vehicleModel}</if> |
| | | <if test="status != null and status != ''"> and v.status = #{status}</if> |
| | | <if test="platformCode != null and platformCode != ''"> and v.platform_code = #{platformCode}</if> |
| | | <!-- 部门过滤:自动查找传入部门所属的分公司(parent_id=100) --> |
| | | <!-- 部门过滤:根据分公司ID查询车辆(通过关联表) --> |
| | | <if test="deptId != null"> |
| | | and v.dept_id = ( |
| | | <!-- 如果传入的就是分公司(parent_id=100),直接返回 --> |
| | | select case |
| | | when exists(select 1 from sys_dept where dept_id = #{deptId} and parent_id = 100) then #{deptId} |
| | | else ( |
| | | <!-- 否则从 ancestors 中查找分公司ID --> |
| | | select d.dept_id |
| | | from sys_dept d |
| | | where d.parent_id = 100 |
| | | and FIND_IN_SET(d.dept_id, ( |
| | | select ancestors from sys_dept where dept_id = #{deptId} |
| | | )) |
| | | limit 1 |
| | | ) |
| | | end |
| | | and EXISTS ( |
| | | SELECT 1 FROM tb_vehicle_dept vd2 |
| | | WHERE vd2.vehicle_id = v.vehicle_id |
| | | AND vd2.dept_id = #{deptId} |
| | | ) |
| | | </if> |
| | | <!-- 任务车辆选择必须过滤:只显示car_id和dept_id都不为空的车辆 --> |
| | | and v.car_id is not null and v.car_id != '' |
| | | and v.dept_id is not null |
| | | and v.status=0 |
| | | </where> |
| | | group by v.vehicle_id, v.car_id, v.device_id, v.vehicle_no, v.vehicle_type, v.vehicle_brand, |
| | | v.vehicle_model, v.status, v.platform_code, v.create_by, v.create_time, |
| | | v.update_by, v.update_time, v.remark |
| | | order by v.create_time desc |
| | | </select> |
| | | |
| | | <select id="selectVehicleInfoList" parameterType="VehicleInfo" resultMap="VehicleInfoResult"> |
| | | select v.vehicle_id, v.car_id, v.device_id, v.vehicle_no, v.vehicle_type, v.vehicle_brand, |
| | | v.vehicle_model, v.status, v.platform_code, v.create_by, v.create_time, |
| | | v.update_by, v.update_time, v.remark, |
| | | GROUP_CONCAT(DISTINCT d.dept_name ORDER BY d.dept_name SEPARATOR ',') as dept_name |
| | | from tb_vehicle_info v |
| | | left join tb_vehicle_dept vd on v.vehicle_id = vd.vehicle_id |
| | | left join sys_dept d on vd.dept_id = d.dept_id |
| | | <where> |
| | | <if test="vehicleNo != null and vehicleNo != ''"> and v.vehicle_no LIKE concat('%', #{vehicleNo}, '%')</if> |
| | | <if test="deviceId != null and deviceId != ''"> and v.device_id = #{deviceId}</if> |
| | | <if test="vehicleType != null and vehicleType != ''"> and v.vehicle_type = #{vehicleType}</if> |
| | | <if test="vehicleBrand != null and vehicleBrand != ''"> and v.vehicle_brand = #{vehicleBrand}</if> |
| | | <if test="vehicleModel != null and vehicleModel != ''"> and v.vehicle_model = #{vehicleModel}</if> |
| | | <if test="status != null and status != ''"> and v.status = #{status}</if> |
| | | <if test="platformCode != null and platformCode != ''"> and v.platform_code = #{platformCode}</if> |
| | | <!-- 部门过滤:根据分公司ID查询车辆(通过关联表) --> |
| | | <if test="deptId != null"> |
| | | and EXISTS ( |
| | | SELECT 1 FROM tb_vehicle_dept vd2 |
| | | WHERE vd2.vehicle_id = v.vehicle_id |
| | | AND vd2.dept_id = #{deptId} |
| | | ) |
| | | </if> |
| | | <!-- 任务车辆选择必须过滤:只显示car_id不为空且已关联分公司的车辆 --> |
| | | <!-- and v.car_id is not null and v.car_id != ''--> |
| | | <!-- and EXISTS (SELECT 1 FROM tb_vehicle_dept vd WHERE vd.vehicle_id = v.vehicle_id)--> |
| | | and v.status=0 |
| | | |
| | | </where> |
| | | group by v.vehicle_id, v.car_id, v.device_id, v.vehicle_no, v.vehicle_type, v.vehicle_brand, |
| | | v.vehicle_model, v.status, v.platform_code, v.create_by, v.create_time, |
| | | v.update_by, v.update_time, v.remark |
| | | </select> |
| | | |
| | | <select id="selectVehicleInfoById" parameterType="Long" resultMap="VehicleInfoResult"> |
| | | <select id="selectVehicleInfoById" parameterType="Long" resultMap="VehicleInfoWithDeptsResult"> |
| | | <include refid="selectVehicleInfoVo"/> |
| | | where v.vehicle_id = #{vehicleId} |
| | | </select> |
| | | |
| | | <!-- 查询车辆信息(包含多分公司关联) --> |
| | | <select id="selectVehicleInfoWithDeptsById" parameterType="Long" resultMap="VehicleInfoWithDeptsResult"> |
| | | <include refid="selectVehicleInfoVo"/> |
| | | where v.vehicle_id = #{vehicleId} |
| | | </select> |
| | | |
| | | <select id="selectVehicleInfoByPlateNumber" parameterType="String" resultMap="VehicleInfoResult"> |
| | | <include refid="selectVehicleInfoVo"/> |
| | | where v.vehicle_no = #{plateNumber} |
| | | where v.vehicle_no LIKE concat('%', #{plateNumber}, '%') |
| | | limit 1 |
| | | </select> |
| | | |
| | | <select id="selectVehicleInfoByVehicleNo" parameterType="String" resultMap="VehicleInfoResult"> |
| | | <include refid="selectVehicleInfoVo"/> |
| | | where v.vehicle_no = #{vehicleNo} |
| | | where v.vehicle_no LIKE concat('%', #{vehicleNo}, '%') |
| | | </select> |
| | | |
| | | <!-- 根据旧系统车辆ID(CarID)查询车辆信息 --> |
| | | <select id="selectVehicleInfoByCarId" parameterType="Integer" resultMap="VehicleInfoResult"> |
| | | <include refid="selectVehicleInfoVo"/> |
| | | where v.car_id = #{carId} |
| | | </select> |
| | | |
| | | <!-- 根据旧系统车辆ID查询车辆信息 --> |
| | | <select id="selectVehicleInfoByCarID" resultType="java.util.HashMap"> |
| | | SELECT |
| | | vehicle_id, |
| | | car_id, |
| | | vehicle_no |
| | | FROM tb_vehicle_info |
| | | WHERE car_id = #{carID} |
| | | </select> |
| | | |
| | | <insert id="insertVehicleInfo" parameterType="VehicleInfo" useGeneratedKeys="true" keyProperty="vehicleId"> |
| | |
| | | <if test="vehicleModel != null">vehicle_model,</if> |
| | | <if test="status != null">status,</if> |
| | | <if test="platformCode != null">platform_code,</if> |
| | | <if test="deptId != null">dept_id,</if> |
| | | <if test="createBy != null">create_by,</if> |
| | | <if test="createTime != null">create_time,</if> |
| | | <if test="updateBy != null">update_by,</if> |
| | |
| | | <if test="vehicleModel != null">#{vehicleModel},</if> |
| | | <if test="status != null">#{status},</if> |
| | | <if test="platformCode != null">#{platformCode},</if> |
| | | <if test="deptId != null">#{deptId},</if> |
| | | <if test="createBy != null">#{createBy},</if> |
| | | <if test="createTime != null">#{createTime},</if> |
| | | <if test="updateBy != null">#{updateBy},</if> |
| | |
| | | <if test="vehicleModel != null">vehicle_model = #{vehicleModel},</if> |
| | | <if test="status != null">status = #{status},</if> |
| | | <if test="platformCode != null">platform_code = #{platformCode},</if> |
| | | <if test="deptId != null">dept_id = #{deptId},</if> |
| | | <if test="updateBy != null">update_by = #{updateBy},</if> |
| | | <if test="updateTime != null">update_time = #{updateTime},</if> |
| | | <if test="remark != null">remark = #{remark},</if> |
| | |
| | | ORDER BY uv.bind_time DESC |
| | | LIMIT 1 |
| | | </select> |
| | | |
| | | <!-- 批量插入车辆-分公司关联 --> |
| | | <insert id="batchInsertVehicleDept"> |
| | | INSERT INTO tb_vehicle_dept (vehicle_id, dept_id, order_class, create_by, create_time) |
| | | VALUES |
| | | <foreach collection="list" item="item" separator=","> |
| | | (#{item.vehicleId}, #{item.deptId}, #{item.orderClass}, #{item.createBy}, NOW()) |
| | | </foreach> |
| | | ON DUPLICATE KEY UPDATE |
| | | order_class = VALUES(order_class), |
| | | update_by = VALUES(create_by), |
| | | update_time = NOW() |
| | | </insert> |
| | | |
| | | <!-- 删除车辆的所有分公司关联 --> |
| | | <delete id="deleteVehicleDeptByVehicleId"> |
| | | DELETE FROM tb_vehicle_dept WHERE vehicle_id = #{vehicleId} |
| | | </delete> |
| | | </mapper> |