| | |
| | | <result property="updateBy" column="update_by" /> |
| | | <result property="remark" column="remark" /> |
| | | <result property="delFlag" column="del_flag" /> |
| | | <result property="legacySynced" column="legacy_synced" /> |
| | | <result property="creatorName" column="creator_name" /> |
| | | <result property="assigneeName" column="assignee_name" /> |
| | | <result property="deptName" column="dept_name" /> |
| | | <result property="vehicleNo" column="vehicle_no" /> |
| | | <collection property="assignedVehicles" ofType="SysTaskVehicle"> |
| | | <result property="id" column="tv_id" /> |
| | | <result property="taskId" column="tv_task_id" /> |
| | | <result property="vehicleId" column="tv_vehicle_id" /> |
| | | <result property="vehicleNo" column="tv_vehicle_no" /> |
| | | <result property="vehicleType" column="tv_vehicle_type" /> |
| | | <result property="vehicleBrand" column="tv_vehicle_brand" /> |
| | | <result property="vehicleModel" column="tv_vehicle_model" /> |
| | | <result property="assignTime" column="tv_assign_time" /> |
| | | <result property="assignBy" column="tv_assign_by" /> |
| | | <result property="status" column="tv_status" /> |
| | | <result property="remark" column="tv_remark" /> |
| | | </collection> |
| | | </resultMap> |
| | | |
| | | <sql id="selectSysTaskVo"> |
| | |
| | | t.destination_longitude, t.destination_latitude, t.estimated_distance, |
| | | t.planned_start_time, t.planned_end_time, |
| | | t.actual_start_time, t.actual_end_time, t.creator_id, t.assignee_id, t.dept_id, |
| | | t.create_time, t.update_time, t.create_by, t.update_by, t.remark, t.del_flag, |
| | | u1.nick_name as creator_name, u2.nick_name as assignee_name, d.dept_name |
| | | t.create_time, t.update_time, t.create_by, t.update_by, t.remark, t.del_flag, t.legacy_synced, |
| | | u1.nick_name as creator_name, u2.nick_name as assignee_name, d.dept_name, |
| | | ( |
| | | select v2.vehicle_no |
| | | from sys_task_vehicle tv2 |
| | | left join tb_vehicle_info v2 on tv2.vehicle_id = v2.vehicle_id |
| | | where tv2.task_id = t.task_id |
| | | order by tv2.assign_time asc |
| | | limit 1 |
| | | ) as vehicle_no, |
| | | tv.id as tv_id, tv.task_id as tv_task_id, tv.vehicle_id as tv_vehicle_id, |
| | | v.vehicle_no as tv_vehicle_no, v.vehicle_type as tv_vehicle_type, |
| | | v.vehicle_brand as tv_vehicle_brand, v.vehicle_model as tv_vehicle_model, |
| | | tv.assign_time as tv_assign_time, tv.assign_by as tv_assign_by, |
| | | tv.status as tv_status, tv.remark as tv_remark |
| | | from sys_task t |
| | | left join sys_user u1 on t.creator_id = u1.user_id |
| | | left join sys_user u2 on t.assignee_id = u2.user_id |
| | | left join sys_dept d on t.dept_id = d.dept_id |
| | | left join sys_task_vehicle tv on t.task_id = tv.task_id |
| | | left join tb_vehicle_info v on tv.vehicle_id = v.vehicle_id |
| | | </sql> |
| | | |
| | | <select id="selectSysTaskList" parameterType="TaskQueryVO" resultMap="SysTaskResult"> |
| | |
| | | <if test="taskCode != null and taskCode != ''"> and t.task_code like concat('%', #{taskCode}, '%')</if> |
| | | <if test="taskType != null and taskType != ''"> and t.task_type = #{taskType}</if> |
| | | <if test="taskStatus != null and taskStatus != ''"> and t.task_status = #{taskStatus}</if> |
| | | <if test="creatorId != null "> and t.creator_id = #{creatorId}</if> |
| | | <if test="assigneeId != null "> and t.assignee_id = #{assigneeId}</if> |
| | | <if test="deptId != null "> and t.dept_id = #{deptId}</if> |
| | | <if test="vehicleNo != null and vehicleNo != ''"> and v.vehicle_no like concat('%', #{vehicleNo}, '%')</if> |
| | | <!-- 综合查询:当前用户所在机构 OR 当前用户创建 OR 分配给当前用户 --> |
| | | <if test="(creatorId != null and creatorId != 0) or (assigneeId != null and assigneeId != 0) or (deptId != null and deptId != 0) or (deptIds != null and deptIds.size() > 0)"> |
| | | and ( |
| | | <!-- 查询指定分公司及其所有子部门的任务 --> |
| | | <if test="deptId != null and deptId != 0"> |
| | | (t.dept_id = #{deptId} OR t.dept_id IN ( |
| | | SELECT dept_id FROM sys_dept |
| | | WHERE del_flag = '0' AND find_in_set(#{deptId}, ancestors) |
| | | )) |
| | | </if> |
| | | <!-- 查询多个分公司及其所有子部门的任务 --> |
| | | <if test="deptIds != null and deptIds.size() > 0"> |
| | | <if test="deptId != null and deptId != 0"> or </if> |
| | | ( |
| | | <foreach collection="deptIds" item="branchDeptId" separator=" OR "> |
| | | (t.dept_id = #{branchDeptId} OR t.dept_id IN ( |
| | | SELECT dept_id FROM sys_dept |
| | | WHERE del_flag = '0' AND find_in_set(#{branchDeptId}, ancestors) |
| | | )) |
| | | </foreach> |
| | | ) |
| | | </if> |
| | | <if test="creatorId != null and creatorId != 0"> |
| | | <if test="(deptId != null and deptId != 0) or (deptIds != null and deptIds.size() > 0)"> or </if> |
| | | t.creator_id = #{creatorId} |
| | | </if> |
| | | <if test="assigneeId != null and assigneeId != 0"> |
| | | <if test="(deptId != null and deptId != 0) or (deptIds != null and deptIds.size() > 0) or (creatorId != null and creatorId != 0)"> or </if> |
| | | t.task_id IN ( |
| | | SELECT task_id FROM sys_task_assignee WHERE user_id = #{assigneeId} |
| | | ) |
| | | </if> |
| | | ) |
| | | </if> |
| | | <if test="plannedStartTimeBegin != null "> and t.planned_start_time >= #{plannedStartTimeBegin}</if> |
| | | <if test="plannedStartTimeEnd != null "> and t.planned_start_time <= #{plannedStartTimeEnd}</if> |
| | | <if test="plannedEndTimeBegin != null "> and t.planned_end_time >= #{plannedEndTimeBegin}</if> |
| | | <if test="plannedEndTimeEnd != null "> and t.planned_end_time <= #{plannedEndTimeEnd}</if> |
| | | <if test="overdue != null and overdue == true"> and t.planned_end_time < now() and t.task_status != 'COMPLETED'</if> |
| | | </where> |
| | | order by t.create_time desc |
| | | order by |
| | | CASE t.task_status |
| | | WHEN 'PENDING' THEN 1 |
| | | WHEN 'DEPARTING' THEN 2 |
| | | WHEN 'ARRIVED' THEN 3 |
| | | WHEN 'RETURNING' THEN 4 |
| | | WHEN 'IN_PROGRESS' THEN 5 |
| | | WHEN 'COMPLETED' THEN 6 |
| | | WHEN 'CANCELLED' THEN 7 |
| | | ELSE 8 |
| | | END, |
| | | t.create_time desc |
| | | </select> |
| | | |
| | | <select id="selectSysTaskByTaskId" parameterType="Long" resultMap="SysTaskResult"> |
| | |
| | | <select id="selectMaxTaskCodeByDatePrefix" parameterType="String" resultType="String"> |
| | | select max(task_code) |
| | | from sys_task |
| | | where task_code like concat(#{datePrefix}, '%') and del_flag = '0' |
| | | where task_code like concat(#{datePrefix}, '%') |
| | | </select> |
| | | |
| | | <select id="selectOverdueTasks" resultMap="SysTaskResult"> |
| | |
| | | |
| | | <select id="selectMyTasks" parameterType="Long" resultMap="SysTaskResult"> |
| | | <include refid="selectSysTaskVo"/> |
| | | where t.del_flag = '0' and (t.creator_id = #{userId} or t.assignee_id = #{userId}) |
| | | order by t.create_time desc |
| | | where t.del_flag = '0' and ( |
| | | t.creator_id = #{userId} |
| | | OR t.task_id IN ( |
| | | SELECT task_id FROM sys_task_assignee WHERE user_id = #{userId} |
| | | ) |
| | | ) |
| | | order by |
| | | CASE t.task_status |
| | | WHEN 'PENDING' THEN 1 |
| | | WHEN 'DEPARTING' THEN 2 |
| | | WHEN 'ARRIVED' THEN 3 |
| | | WHEN 'RETURNING' THEN 4 |
| | | WHEN 'IN_PROGRESS' THEN 5 |
| | | WHEN 'COMPLETED' THEN 6 |
| | | WHEN 'CANCELLED' THEN 7 |
| | | ELSE 8 |
| | | END, |
| | | t.update_time desc, |
| | | t.create_time desc |
| | | </select> |
| | | |
| | | <select id="selectTaskByVehicleIdAndDate" resultMap="SysTaskResult"> |
| | | select tv.task_id, t.actual_start_time, |
| | | IFNULL(t.actual_end_time, NOW()) as t.actual_end_time |
| | | from sys_task_vehicle tv |
| | | inner join sys_task t on tv.task_id = t.task_id |
| | | where tv.vehicle_id = #{vehicleId} |
| | | and t.del_flag = '0' |
| | | and ( |
| | | (t.actual_end_time is not null and t.actual_start_time > #{startTime} and t.actual_end_time < #{endTime} ) |
| | | or (t.actual_end_time is null and t.actual_start_time > ${endTime} ) |
| | | ) |
| | | order by t.actual_start_time |
| | | </select> |
| | | |
| | | <select id="selectTaskStatistics" resultType="TaskStatisticsVO"> |
| | |
| | | <if test="actualEndTime != null">actual_end_time = #{actualEndTime},</if> |
| | | <if test="creatorId != null">creator_id = #{creatorId},</if> |
| | | <if test="assigneeId != null">assignee_id = #{assigneeId},</if> |
| | | |
| | | <if test="deptId != null">dept_id = #{deptId},</if> |
| | | <if test="updateTime != null">update_time = #{updateTime},</if> |
| | | <if test="updateBy != null">update_by = #{updateBy},</if> |
| | |
| | | where task_id = #{taskId} |
| | | </update> |
| | | |
| | | <select id="selectActiveTasksByVehicleId" parameterType="Long" resultMap="SysTaskResult"> |
| | | select t.task_id, t.task_code, t.task_type, t.task_status, t.task_description, |
| | | t.departure_address, t.destination_address, |
| | | t.planned_start_time, t.actual_start_time, |
| | | t.create_time, t.update_time |
| | | from sys_task t |
| | | inner join sys_task_vehicle tv on t.task_id = tv.task_id |
| | | where tv.vehicle_id = #{vehicleId} |
| | | and t.del_flag = '0' |
| | | and t.task_status not in ('PENDING', 'COMPLETED', 'CANCELLED') |
| | | order by t.create_time desc |
| | | </select> |
| | | |
| | | <delete id="deleteSysTaskByTaskId" parameterType="Long"> |
| | | update sys_task set del_flag = '2', update_time = now() where task_id = #{taskId} |
| | | </delete> |