|
@@ -1,404 +1,400 @@
|
|
-<?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.qmth.sop.business.mapper.TBDingMapper">
|
|
|
|
-
|
|
|
|
- <select id="query" resultType="com.qmth.sop.business.bean.result.TBDingSubmitQueryResult">
|
|
|
|
-
|
|
|
|
- SELECT
|
|
|
|
- d.id,
|
|
|
|
- bs.NAME service,
|
|
|
|
- d.sop_no,
|
|
|
|
- c.NAME custom,
|
|
|
|
- ua.province,
|
|
|
|
- ua.city,
|
|
|
|
- d.approach_time exam_start_time,
|
|
|
|
- d.departure_time exam_end_time,
|
|
|
|
- ua.name user_name,
|
|
|
|
- ua.`code` user_no,
|
|
|
|
- r.`name` role_name,
|
|
|
|
- s.NAME supplier,
|
|
|
|
- d.actual_days attendance,
|
|
|
|
- d.weekdays weekdays,
|
|
|
|
- d.weekends weekends,
|
|
|
|
- d.legal_holidays holidays,
|
|
|
|
- d.work_hours work_hours,
|
|
|
|
- d.violation_days violation_days,
|
|
|
|
- d.submit_status `status`,
|
|
|
|
- sub.real_name submitter,
|
|
|
|
- d.submit_time submission_time
|
|
|
|
-
|
|
|
|
- FROM
|
|
|
|
- t_b_ding_submit d
|
|
|
|
- LEFT JOIN t_b_user_archives ua ON d.user_archives_id = ua.id
|
|
|
|
- LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
|
|
|
|
- LEFT JOIN t_b_service bs ON bs.id = d.service_id
|
|
|
|
- LEFT JOIN sys_role r ON r.type = d.role_type
|
|
|
|
- LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
|
|
|
|
- LEFT JOIN sys_custom c ON c.id = crm.custom_id
|
|
|
|
- LEFT JOIN sys_user sub ON sub.id = d.submit_user_id
|
|
|
|
- LEFT JOIN sys_supplier s ON s.id = us.supplier_id
|
|
|
|
-
|
|
|
|
- <where>
|
|
|
|
- <if test="serviceId != null and serviceId != ''">
|
|
|
|
- and d.service_id = #{serviceId}
|
|
|
|
- </if>
|
|
|
|
- <if test="status != null and status != ''">
|
|
|
|
- and d.submit_status = #{status}
|
|
|
|
- </if>
|
|
|
|
- <if test="createId != null and createId != ''">
|
|
|
|
- and d.submit_user_id = #{create_id}
|
|
|
|
- </if>
|
|
|
|
- <if test="userName != null and userName != ''">
|
|
|
|
- and ua.name like concat('%', #{userName} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="supplierId != null and supplierId != ''">
|
|
|
|
- and us.supplier_id = #{supplierId}
|
|
|
|
- </if>
|
|
|
|
- <if test="custom != null and custom != ''">
|
|
|
|
- and c.NAME like concat('%', #{custom} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="sopNo != null and sopNo != ''">
|
|
|
|
- and d.sop_no like concat('%', #{sopNo} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="days != null and days != '' ">
|
|
|
|
- <![CDATA[
|
|
|
|
- and d.violation_days > #{days}
|
|
|
|
- ]]>
|
|
|
|
- </if>
|
|
|
|
- <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasBusiness">
|
|
|
|
- AND bs.service_lead_id = #{dpr.requestUserId}
|
|
|
|
- </when>
|
|
|
|
- <otherwise>
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasRegionManager">
|
|
|
|
- AND crm.lead_id = #{dpr.requestUserId}
|
|
|
|
- </when>
|
|
|
|
- <otherwise>
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasRegionCoordinator">
|
|
|
|
- AND crm.region_coordinator_id = #{dpr.requestUserId}
|
|
|
|
- </when>
|
|
|
|
- </choose>
|
|
|
|
- </otherwise>
|
|
|
|
- </choose>
|
|
|
|
- </otherwise>
|
|
|
|
- </choose>
|
|
|
|
- </if>
|
|
|
|
- </where>
|
|
|
|
- order by d.submit_time desc
|
|
|
|
- </select>
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- <select id="count" resultType="com.qmth.sop.business.bean.result.TBDingCountResult">
|
|
|
|
- SELECT
|
|
|
|
- count( d.id ) total,
|
|
|
|
- SUM( CASE WHEN d.submit_status='ALREADY_SUBMIT' THEN 1 ELSE 0 END ) submitted,
|
|
|
|
- SUM( CASE WHEN d.submit_status='WILL_SUBMIT' THEN 1 ELSE 0 END ) un_submitted,
|
|
|
|
- SUM( CASE WHEN d.submit_status='ALREADY_SUBMIT' THEN d.actual_days ELSE 0 END ) all_days,
|
|
|
|
- SUM( CASE WHEN d.submit_status='ALREADY_SUBMIT' THEN d.work_hours ELSE 0 END ) all_hours
|
|
|
|
- FROM
|
|
|
|
- t_b_ding_submit d
|
|
|
|
- LEFT JOIN t_b_user_archives ua ON d.user_archives_id = ua.id
|
|
|
|
- LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
|
|
|
|
- LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
|
|
|
|
- LEFT JOIN sys_custom c ON c.id = crm.custom_id
|
|
|
|
- <where>
|
|
|
|
- <if test="serviceId != null and serviceId != ''">
|
|
|
|
- and d.service_id = #{serviceId}
|
|
|
|
- </if>
|
|
|
|
- <if test="createId != null and createId != ''">
|
|
|
|
- and d.submit_user_id = #{create_id}
|
|
|
|
- </if>
|
|
|
|
- <if test="userName != null and userName != ''">
|
|
|
|
- and ua.name like concat('%', #{userName} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="supplierId != null and supplierId != ''">
|
|
|
|
- and us.supplier_id = #{supplierId}
|
|
|
|
- </if>
|
|
|
|
- <if test="custom != null and custom != ''">
|
|
|
|
- and c.name like concat('%', #{custom} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="sopNo != null and sopNo != ''">
|
|
|
|
- and d.sop_no like concat('%', #{sopNo} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasBusiness">
|
|
|
|
- AND EXISTS(SELECT 1 FROM t_b_service tbs WHERE d.service_id = tbs.id AND tbs.service_lead_id = #{dpr.requestUserId})
|
|
|
|
- </when>
|
|
|
|
- <otherwise>
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasRegionManager">
|
|
|
|
- AND crm.lead_id = #{dpr.requestUserId}
|
|
|
|
- </when>
|
|
|
|
- <otherwise>
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasRegionCoordinator">
|
|
|
|
- AND crm.region_coordinator_id = #{dpr.requestUserId}
|
|
|
|
- </when>
|
|
|
|
- </choose>
|
|
|
|
- </otherwise>
|
|
|
|
- </choose>
|
|
|
|
- </otherwise>
|
|
|
|
- </choose>
|
|
|
|
- </if>
|
|
|
|
- </where>
|
|
|
|
- </select>
|
|
|
|
-
|
|
|
|
- <select id="attendanceQuery" resultType="com.qmth.sop.business.bean.result.TBDingAttendanceResult">
|
|
|
|
- SELECT * from (
|
|
|
|
- SELECT
|
|
|
|
- d.sop_no sop_no,
|
|
|
|
- bs.NAME service,
|
|
|
|
- c.NAME custom,
|
|
|
|
- ua.province,
|
|
|
|
- ua.city,
|
|
|
|
- ua.name user_name,
|
|
|
|
- ua.`code` user_no,
|
|
|
|
- r.`name` role_name,
|
|
|
|
- s.NAME supplier,
|
|
|
|
- d.sign_date,
|
|
|
|
- d.type,
|
|
|
|
- d.sign_time,
|
|
|
|
- CASE WHEN d.sign_time IS NOT NULL THEN 'NORMAL' ELSE 'ABNORMAL' END STATUS,
|
|
|
|
- d.address,
|
|
|
|
- d.axis_x AS axisX,
|
|
|
|
- d.axis_y AS axisY,
|
|
|
|
- d.service_id,
|
|
|
|
- s.id supplier_id ,
|
|
|
|
- d.user_id,
|
|
|
|
- bs.service_lead_id AS serviceUnitLeaderId,
|
|
|
|
- crm.lead_id AS regionManagerId,
|
|
|
|
- crm.region_coordinator_id AS coordinatorId
|
|
|
|
- FROM
|
|
|
|
- (
|
|
|
|
- SELECT d.*,d.axis_in_x AS axis_x, d.axis_in_y AS axis_y,d.sign_in_address address, d.sign_in_time sign_time,'IN' AS type FROM t_b_ding d UNION ALL
|
|
|
|
- SELECT d.*,d.axis_out_x AS axis_x, d.axis_out_y AS axis_y,d.sign_out_address address, d.sign_out_time sign_time,'OUT' AS type FROM t_b_ding d
|
|
|
|
- where
|
|
|
|
- d.sign_out_time is not null or
|
|
|
|
- (d.sign_out_time is null and
|
|
|
|
- date_format(from_unixtime(d.create_time/1000),'%Y-%m-%d') != date_format(now(),'%Y-%m-%d'))
|
|
|
|
- ) d
|
|
|
|
- LEFT JOIN t_b_user_archives ua ON ua.id = d.user_archives_id
|
|
|
|
- LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
|
|
|
|
- LEFT JOIN t_b_service bs ON bs.id = d.service_id
|
|
|
|
- LEFT JOIN sys_role r ON r.type = d.role_type
|
|
|
|
- LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
|
|
|
|
- LEFT JOIN sys_custom c ON c.id = crm.custom_id
|
|
|
|
- LEFT JOIN sys_supplier s ON s.id = us.supplier_id
|
|
|
|
- ) a
|
|
|
|
- <where>
|
|
|
|
- <if test="serviceId != null and serviceId != ''">
|
|
|
|
- and a.service_id = #{serviceId}
|
|
|
|
- </if>
|
|
|
|
- <if test="userName != null and userName != ''">
|
|
|
|
- and a.user_name like concat('%', #{userName} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="startTime != null and startTime != '' ">
|
|
|
|
- <![CDATA[
|
|
|
|
- and a.sign_date >= #{startTime}
|
|
|
|
- ]]>
|
|
|
|
- </if>
|
|
|
|
- <if test="endTime != null and endTime != ''">
|
|
|
|
- <![CDATA[
|
|
|
|
- and a.sign_date <= #{endTime}
|
|
|
|
- ]]>
|
|
|
|
- </if>
|
|
|
|
- <if test="supplierId != null and supplierId != ''">
|
|
|
|
- and a.supplier_id = #{supplierId}
|
|
|
|
- </if>
|
|
|
|
- <if test="custom != null and custom != ''">
|
|
|
|
- and a.custom like concat('%', #{custom} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="sopNo != null and sopNo != ''">
|
|
|
|
- and a.sop_no like concat('%', #{sopNo} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="type != null and type != ''">
|
|
|
|
- and a.type = #{type}
|
|
|
|
- </if>
|
|
|
|
- <if test="status != null and status != ''">
|
|
|
|
- and a.status = #{status}
|
|
|
|
- </if>
|
|
|
|
- <if test="abnormal != null and abnormal != ''">
|
|
|
|
- and a.user_id in ( SELECT x.user_id from(
|
|
|
|
-
|
|
|
|
- SELECT
|
|
|
|
-
|
|
|
|
- d.user_id,sum(case when d.sign_time is null then 1 else 0 end) count
|
|
|
|
- FROM
|
|
|
|
- (
|
|
|
|
- SELECT d.*,d.axis_in_x AS axis_x, d.axis_in_y AS axis_y,d.sign_in_address address, d.sign_in_time sign_time,'IN' AS type FROM t_b_ding d UNION ALL
|
|
|
|
- SELECT d.*,d.axis_out_x AS axis_x, d.axis_out_y AS axis_y,d.sign_out_address address, d.sign_out_time sign_time,'OUT' AS type FROM t_b_ding d
|
|
|
|
- where
|
|
|
|
- d.sign_out_time is not null or
|
|
|
|
- (d.sign_out_time is null and
|
|
|
|
- date_format(from_unixtime(d.create_time/1000),'%Y-%m-%d') != date_format(now(),'%Y-%m-%d'))
|
|
|
|
- ) d
|
|
|
|
-
|
|
|
|
- GROUP BY d.user_id
|
|
|
|
-
|
|
|
|
- )x where x.count>=#{abnormal})
|
|
|
|
- </if>
|
|
|
|
- <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasBusiness">
|
|
|
|
- AND a.serviceUnitLeaderId = #{dpr.requestUserId}
|
|
|
|
- </when>
|
|
|
|
- <otherwise>
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasRegionManager">
|
|
|
|
- AND a.regionManagerId = #{dpr.requestUserId}
|
|
|
|
- </when>
|
|
|
|
- <otherwise>
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasRegionCoordinator">
|
|
|
|
- AND a.coordinatorId = #{dpr.requestUserId}
|
|
|
|
- </when>
|
|
|
|
- </choose>
|
|
|
|
- </otherwise>
|
|
|
|
- </choose>
|
|
|
|
- </otherwise>
|
|
|
|
- </choose>
|
|
|
|
- </if>
|
|
|
|
- </where>
|
|
|
|
- order by a.sign_date desc
|
|
|
|
- </select>
|
|
|
|
-
|
|
|
|
- <select id="attendanceCount" resultType="com.qmth.sop.business.bean.result.TBDingAttendanceCountResult">
|
|
|
|
- SELECT
|
|
|
|
-<!-- sum( CASE WHEN d.sign_in_time IS NOT NULL THEN 1 ELSE 0 END )+ sum( CASE WHEN d.sign_out_time IS NOT NULL THEN 1 ELSE 0 END ) total,-->
|
|
|
|
- count(d.id)*2 total,
|
|
|
|
- sum( CASE WHEN d.sign_in_time IS NULL THEN 1 ELSE 0 END )+ sum( CASE WHEN d.sign_out_time IS NULL THEN 1 ELSE 0 END ) abnormal,
|
|
|
|
- SUM( CASE WHEN d.sign_in_time IS NOT NULL AND d.sign_out_time IS NOT NULL THEN 1 ELSE 0 END ) all_days,
|
|
|
|
- SUM( CASE WHEN d.sign_in_time IS NOT NULL AND d.sign_out_time IS NOT NULL THEN
|
|
|
|
- (d.sign_out_time-d.sign_in_time)
|
|
|
|
- ELSE 0
|
|
|
|
- END
|
|
|
|
- )/1000/60/60 all_hours
|
|
|
|
- FROM
|
|
|
|
- t_b_ding d
|
|
|
|
- LEFT JOIN sys_user u ON u.id = d.user_id
|
|
|
|
- LEFT JOIN t_b_user_archives ua ON u.mobile_number = ua.mobile_number
|
|
|
|
- LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
|
|
|
|
- LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
|
|
|
|
- LEFT JOIN sys_custom c ON c.id = crm.custom_id
|
|
|
|
-
|
|
|
|
- LEFT JOIN t_b_service tbs ON d.service_id = tbs.id
|
|
|
|
-
|
|
|
|
- <where>
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- <if test="serviceId != null and serviceId != ''">
|
|
|
|
- and d.service_id = #{serviceId}
|
|
|
|
- </if>
|
|
|
|
- <if test="userName != null and userName != ''">
|
|
|
|
- and u.real_name like concat('%', #{userName} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="startTime != null and startTime != '' ">
|
|
|
|
- <![CDATA[
|
|
|
|
- and d.sign_date >= #{startTime}
|
|
|
|
- ]]>
|
|
|
|
- </if>
|
|
|
|
- <if test="endTime != null and endTime != ''">
|
|
|
|
- <![CDATA[
|
|
|
|
- and d.sign_date <= #{endTime}
|
|
|
|
- ]]>
|
|
|
|
- </if>
|
|
|
|
- <if test="supplierId != null and supplierId != ''">
|
|
|
|
- and us.supplier_id = #{supplierId}
|
|
|
|
- </if>
|
|
|
|
- <if test="custom != null and custom != ''">
|
|
|
|
- and c.name like concat('%', #{custom} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="sopNo != null and sopNo != ''">
|
|
|
|
- and d.sop_no like concat('%', #{sopNo} , '%')
|
|
|
|
- </if>
|
|
|
|
- <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasBusiness">
|
|
|
|
- AND tbs.service_lead_id = #{dpr.requestUserId}
|
|
|
|
- </when>
|
|
|
|
- <otherwise>
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasRegionManager">
|
|
|
|
- AND tbc.lead_id = #{dpr.requestUserId}
|
|
|
|
- </when>
|
|
|
|
- <otherwise>
|
|
|
|
- <choose>
|
|
|
|
- <when test="dpr.hasRegionCoordinator">
|
|
|
|
- AND tbc.region_coordinator_id = #{dpr.requestUserId}
|
|
|
|
- </when>
|
|
|
|
- </choose>
|
|
|
|
- </otherwise>
|
|
|
|
- </choose>
|
|
|
|
- </otherwise>
|
|
|
|
- </choose>
|
|
|
|
- </if>
|
|
|
|
- </where>
|
|
|
|
-
|
|
|
|
- </select>
|
|
|
|
- <select id="findDingResultByUserId" resultType="com.qmth.sop.business.bean.result.DingElementResult">
|
|
|
|
- SELECT
|
|
|
|
- tbua.id AS userArchivesId,
|
|
|
|
- tbua.name AS userArchivesName,
|
|
|
|
- tbua.base_photo_path AS basePhotoPath,
|
|
|
|
- sdg.sign_in_time AS signInTimeScope,
|
|
|
|
- sdg.sign_out_time AS signOutTimeScope,
|
|
|
|
- sdg.reissue_card_count AS reissueCardCount,
|
|
|
|
- sdg.face_open AS faceOpen,
|
|
|
|
- sdg.id AS dingGroupId
|
|
|
|
- FROM
|
|
|
|
- t_b_user_archives tbua
|
|
|
|
- LEFT JOIN
|
|
|
|
- sys_user su ON tbua.mobile_number = su.mobile_number
|
|
|
|
- LEFT JOIN
|
|
|
|
- t_b_user_archives_supplier tbuas ON tbuas.user_archives_id = tbua.id
|
|
|
|
- LEFT JOIN
|
|
|
|
- sys_supplier ss ON tbuas.supplier_id = ss.id
|
|
|
|
- LEFT JOIN
|
|
|
|
- sys_ding_group sdg ON sdg.supplier_id = ss.id
|
|
|
|
- <where>
|
|
|
|
- <if test="userId != null">
|
|
|
|
- AND su.id = #{userId}
|
|
|
|
- </if>
|
|
|
|
- <if test="serviceUnitId != null">
|
|
|
|
- AND sdg.service_id = #{serviceUnitId}
|
|
|
|
- </if>
|
|
|
|
- </where>
|
|
|
|
- </select>
|
|
|
|
- <select id="findDateAndStatusBySopNo" resultType="com.qmth.sop.business.entity.TFFlowApprove">
|
|
|
|
- SELECT
|
|
|
|
- tffa.flow_id AS flowId,
|
|
|
|
- tffa.status AS status,
|
|
|
|
- tffa.create_time AS createTime,
|
|
|
|
- tffa.update_time AS updateTime
|
|
|
|
- FROM
|
|
|
|
- t_f_flow_approve tffa
|
|
|
|
- LEFT JOIN
|
|
|
|
- t_f_custom_flow_entity tfcfe ON tffa.flow_id = tfcfe.flow_id
|
|
|
|
- <where>
|
|
|
|
- <if test="sopNo != null and sopNo != ''">
|
|
|
|
- AND tfcfe.code = #{sopNo}
|
|
|
|
- </if>
|
|
|
|
- </where>
|
|
|
|
- </select>
|
|
|
|
- <select id="findDingExceptionApplyCount" resultType="java.lang.Integer">
|
|
|
|
- SELECT
|
|
|
|
- COUNT(*)
|
|
|
|
- FROM
|
|
|
|
- t_b_ding_apply
|
|
|
|
- <where>
|
|
|
|
- AND (approve IS NULL OR approve = 'PASS')
|
|
|
|
- <if test="userId != null">
|
|
|
|
- AND create_id = #{userId}
|
|
|
|
- </if>
|
|
|
|
- <if test="sopNo != null and sopNo != ''">
|
|
|
|
- AND sop_no = #{sopNo}
|
|
|
|
- </if>
|
|
|
|
- </where>
|
|
|
|
- </select>
|
|
|
|
|
|
+<?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.qmth.sop.business.mapper.TBDingMapper">
|
|
|
|
+
|
|
|
|
+ <select id="query" resultType="com.qmth.sop.business.bean.result.TBDingSubmitQueryResult">
|
|
|
|
+
|
|
|
|
+ SELECT
|
|
|
|
+ d.id,
|
|
|
|
+ bs.NAME service,
|
|
|
|
+ d.sop_no,
|
|
|
|
+ c.NAME custom,
|
|
|
|
+ ua.province,
|
|
|
|
+ ua.city,
|
|
|
|
+ d.approach_time exam_start_time,
|
|
|
|
+ d.departure_time exam_end_time,
|
|
|
|
+ ua.name user_name,
|
|
|
|
+ ua.`code` user_no,
|
|
|
|
+ r.`name` role_name,
|
|
|
|
+ s.NAME supplier,
|
|
|
|
+ d.actual_days attendance,
|
|
|
|
+ d.weekdays weekdays,
|
|
|
|
+ d.weekends weekends,
|
|
|
|
+ d.legal_holidays holidays,
|
|
|
|
+ d.work_hours work_hours,
|
|
|
|
+ d.violation_days violation_days,
|
|
|
|
+ d.submit_status `status`,
|
|
|
|
+ sub.real_name submitter,
|
|
|
|
+ d.submit_time submission_time
|
|
|
|
+
|
|
|
|
+ FROM
|
|
|
|
+ t_b_ding_submit d
|
|
|
|
+ LEFT JOIN t_b_user_archives ua ON d.user_archives_id = ua.id
|
|
|
|
+ LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
|
|
|
|
+ LEFT JOIN t_b_service bs ON bs.id = d.service_id
|
|
|
|
+ LEFT JOIN sys_role r ON r.type = d.role_type
|
|
|
|
+ LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
|
|
|
|
+ LEFT JOIN sys_custom c ON c.id = crm.custom_id
|
|
|
|
+ LEFT JOIN sys_user sub ON sub.id = d.submit_user_id
|
|
|
|
+ LEFT JOIN sys_supplier s ON s.id = us.supplier_id
|
|
|
|
+
|
|
|
|
+ <where>
|
|
|
|
+ <if test="serviceId != null and serviceId != ''">
|
|
|
|
+ and d.service_id = #{serviceId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="status != null and status != ''">
|
|
|
|
+ and d.submit_status = #{status}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="createId != null and createId != ''">
|
|
|
|
+ and d.submit_user_id = #{create_id}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="userName != null and userName != ''">
|
|
|
|
+ and ua.name like concat('%', #{userName} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="supplierId != null and supplierId != ''">
|
|
|
|
+ and us.supplier_id = #{supplierId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="custom != null and custom != ''">
|
|
|
|
+ and c.NAME like concat('%', #{custom} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="sopNo != null and sopNo != ''">
|
|
|
|
+ and d.sop_no like concat('%', #{sopNo} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="days != null and days != '' ">
|
|
|
|
+ <![CDATA[
|
|
|
|
+ and d.violation_days > #{days}
|
|
|
|
+ ]]>
|
|
|
|
+ </if>
|
|
|
|
+ <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasBusiness">
|
|
|
|
+ AND bs.service_lead_id = #{dpr.requestUserId}
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasRegionManager">
|
|
|
|
+ AND crm.lead_id = #{dpr.requestUserId}
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasRegionCoordinator">
|
|
|
|
+ AND crm.region_coordinator_id = #{dpr.requestUserId}
|
|
|
|
+ </when>
|
|
|
|
+ </choose>
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
|
|
+ </if>
|
|
|
|
+ </where>
|
|
|
|
+ order by d.submit_time desc
|
|
|
|
+ </select>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ <select id="count" resultType="com.qmth.sop.business.bean.result.TBDingCountResult">
|
|
|
|
+ SELECT
|
|
|
|
+ count( d.id ) total,
|
|
|
|
+ SUM( CASE WHEN d.submit_status='ALREADY_SUBMIT' THEN 1 ELSE 0 END ) submitted,
|
|
|
|
+ SUM( CASE WHEN d.submit_status='WILL_SUBMIT' THEN 1 ELSE 0 END ) un_submitted,
|
|
|
|
+ SUM( CASE WHEN d.submit_status='ALREADY_SUBMIT' THEN d.actual_days ELSE 0 END ) all_days,
|
|
|
|
+ SUM( CASE WHEN d.submit_status='ALREADY_SUBMIT' THEN d.work_hours ELSE 0 END ) all_hours
|
|
|
|
+ FROM
|
|
|
|
+ t_b_ding_submit d
|
|
|
|
+ LEFT JOIN t_b_user_archives ua ON d.user_archives_id = ua.id
|
|
|
|
+ LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
|
|
|
|
+ LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
|
|
|
|
+ LEFT JOIN sys_custom c ON c.id = crm.custom_id
|
|
|
|
+ <where>
|
|
|
|
+ <if test="serviceId != null and serviceId != ''">
|
|
|
|
+ and d.service_id = #{serviceId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="createId != null and createId != ''">
|
|
|
|
+ and d.submit_user_id = #{create_id}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="userName != null and userName != ''">
|
|
|
|
+ and ua.name like concat('%', #{userName} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="supplierId != null and supplierId != ''">
|
|
|
|
+ and us.supplier_id = #{supplierId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="custom != null and custom != ''">
|
|
|
|
+ and c.name like concat('%', #{custom} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="sopNo != null and sopNo != ''">
|
|
|
|
+ and d.sop_no like concat('%', #{sopNo} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasBusiness">
|
|
|
|
+ AND EXISTS(SELECT 1 FROM t_b_service tbs WHERE d.service_id = tbs.id AND tbs.service_lead_id = #{dpr.requestUserId})
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasRegionManager">
|
|
|
|
+ AND crm.lead_id = #{dpr.requestUserId}
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasRegionCoordinator">
|
|
|
|
+ AND crm.region_coordinator_id = #{dpr.requestUserId}
|
|
|
|
+ </when>
|
|
|
|
+ </choose>
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
|
|
+ </if>
|
|
|
|
+ </where>
|
|
|
|
+ </select>
|
|
|
|
+
|
|
|
|
+ <select id="attendanceQuery" resultType="com.qmth.sop.business.bean.result.TBDingAttendanceResult">
|
|
|
|
+ SELECT * from (
|
|
|
|
+ SELECT
|
|
|
|
+ d.sop_no sop_no,
|
|
|
|
+ bs.NAME service,
|
|
|
|
+ c.NAME custom,
|
|
|
|
+ ua.province,
|
|
|
|
+ ua.city,
|
|
|
|
+ ua.name user_name,
|
|
|
|
+ ua.`code` user_no,
|
|
|
|
+ r.`name` role_name,
|
|
|
|
+ s.NAME supplier,
|
|
|
|
+ d.sign_date,
|
|
|
|
+ d.type,
|
|
|
|
+ d.sign_time,
|
|
|
|
+ CASE WHEN d.sign_time IS NOT NULL THEN 'NORMAL' ELSE 'ABNORMAL' END STATUS,
|
|
|
|
+ d.address,
|
|
|
|
+ d.axis_x AS axisX,
|
|
|
|
+ d.axis_y AS axisY,
|
|
|
|
+ d.service_id,
|
|
|
|
+ s.id supplier_id ,
|
|
|
|
+ d.user_id,
|
|
|
|
+ bs.service_lead_id AS serviceUnitLeaderId,
|
|
|
|
+ crm.lead_id AS regionManagerId,
|
|
|
|
+ crm.region_coordinator_id AS coordinatorId
|
|
|
|
+ FROM
|
|
|
|
+ (
|
|
|
|
+ SELECT d.*,d.axis_in_x AS axis_x, d.axis_in_y AS axis_y,d.sign_in_address address, d.sign_in_time sign_time,'IN' AS type FROM t_b_ding d UNION ALL
|
|
|
|
+ SELECT d.*,d.axis_out_x AS axis_x, d.axis_out_y AS axis_y,d.sign_out_address address, d.sign_out_time sign_time,'OUT' AS type FROM t_b_ding d
|
|
|
|
+ where
|
|
|
|
+ d.sign_out_time is not null or
|
|
|
|
+ (d.sign_out_time is null and
|
|
|
|
+ date_format(from_unixtime(d.create_time/1000),'%Y-%m-%d') != date_format(now(),'%Y-%m-%d'))
|
|
|
|
+ ) d
|
|
|
|
+ LEFT JOIN t_b_user_archives ua ON ua.id = d.user_archives_id
|
|
|
|
+ LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
|
|
|
|
+ LEFT JOIN t_b_service bs ON bs.id = d.service_id
|
|
|
|
+ LEFT JOIN sys_role r ON r.type = d.role_type
|
|
|
|
+ LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
|
|
|
|
+ LEFT JOIN sys_custom c ON c.id = crm.custom_id
|
|
|
|
+ LEFT JOIN sys_supplier s ON s.id = us.supplier_id
|
|
|
|
+ ) a
|
|
|
|
+ <where>
|
|
|
|
+ <if test="serviceId != null and serviceId != ''">
|
|
|
|
+ and a.service_id = #{serviceId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="userName != null and userName != ''">
|
|
|
|
+ and a.user_name like concat('%', #{userName} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="startTime != null and startTime != '' ">
|
|
|
|
+ <![CDATA[
|
|
|
|
+ and a.sign_date >= #{startTime}
|
|
|
|
+ ]]>
|
|
|
|
+ </if>
|
|
|
|
+ <if test="endTime != null and endTime != ''">
|
|
|
|
+ <![CDATA[
|
|
|
|
+ and a.sign_date <= #{endTime}
|
|
|
|
+ ]]>
|
|
|
|
+ </if>
|
|
|
|
+ <if test="supplierId != null and supplierId != ''">
|
|
|
|
+ and a.supplier_id = #{supplierId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="custom != null and custom != ''">
|
|
|
|
+ and a.custom like concat('%', #{custom} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="sopNo != null and sopNo != ''">
|
|
|
|
+ and a.sop_no like concat('%', #{sopNo} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="type != null and type != ''">
|
|
|
|
+ and a.type = #{type}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="status != null and status != ''">
|
|
|
|
+ and a.status = #{status}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="abnormal != null and abnormal != ''">
|
|
|
|
+ and a.user_id in ( SELECT x.user_id from(
|
|
|
|
+
|
|
|
|
+ SELECT
|
|
|
|
+
|
|
|
|
+ d.user_id,sum(case when d.sign_time is null then 1 else 0 end) count
|
|
|
|
+ FROM
|
|
|
|
+ (
|
|
|
|
+ SELECT d.*,d.axis_in_x AS axis_x, d.axis_in_y AS axis_y,d.sign_in_address address, d.sign_in_time sign_time,'IN' AS type FROM t_b_ding d UNION ALL
|
|
|
|
+ SELECT d.*,d.axis_out_x AS axis_x, d.axis_out_y AS axis_y,d.sign_out_address address, d.sign_out_time sign_time,'OUT' AS type FROM t_b_ding d
|
|
|
|
+ where
|
|
|
|
+ d.sign_out_time is not null or
|
|
|
|
+ (d.sign_out_time is null and
|
|
|
|
+ date_format(from_unixtime(d.create_time/1000),'%Y-%m-%d') != date_format(now(),'%Y-%m-%d'))
|
|
|
|
+ ) d
|
|
|
|
+
|
|
|
|
+ GROUP BY d.user_id
|
|
|
|
+
|
|
|
|
+ )x where x.count>=#{abnormal})
|
|
|
|
+ </if>
|
|
|
|
+ <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasBusiness">
|
|
|
|
+ AND a.serviceUnitLeaderId = #{dpr.requestUserId}
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasRegionManager">
|
|
|
|
+ AND a.regionManagerId = #{dpr.requestUserId}
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasRegionCoordinator">
|
|
|
|
+ AND a.coordinatorId = #{dpr.requestUserId}
|
|
|
|
+ </when>
|
|
|
|
+ </choose>
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
|
|
+ </if>
|
|
|
|
+ </where>
|
|
|
|
+ order by a.sign_date desc
|
|
|
|
+ </select>
|
|
|
|
+
|
|
|
|
+ <select id="attendanceCount" resultType="com.qmth.sop.business.bean.result.TBDingAttendanceCountResult">
|
|
|
|
+ SELECT
|
|
|
|
+<!-- sum( CASE WHEN d.sign_in_time IS NOT NULL THEN 1 ELSE 0 END )+ sum( CASE WHEN d.sign_out_time IS NOT NULL THEN 1 ELSE 0 END ) total,-->
|
|
|
|
+ count(d.id)*2 total,
|
|
|
|
+ sum( CASE WHEN d.sign_in_time IS NULL THEN 1 ELSE 0 END )+ sum( CASE WHEN d.sign_out_time IS NULL THEN 1 ELSE 0 END ) abnormal,
|
|
|
|
+ SUM( CASE WHEN d.sign_in_time IS NOT NULL AND d.sign_out_time IS NOT NULL THEN 1 ELSE 0 END ) all_days,
|
|
|
|
+ SUM( CASE WHEN d.sign_in_time IS NOT NULL AND d.sign_out_time IS NOT NULL THEN
|
|
|
|
+ (d.sign_out_time-d.sign_in_time)
|
|
|
|
+ ELSE 0
|
|
|
|
+ END
|
|
|
|
+ )/1000/60/60 all_hours
|
|
|
|
+ FROM
|
|
|
|
+ t_b_ding d
|
|
|
|
+ LEFT JOIN sys_user u ON u.id = d.user_id
|
|
|
|
+ LEFT JOIN t_b_user_archives ua ON u.mobile_number = ua.mobile_number
|
|
|
|
+ LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
|
|
|
|
+ LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
|
|
|
|
+ LEFT JOIN sys_custom c ON c.id = crm.custom_id
|
|
|
|
+ LEFT JOIN t_b_service tbs ON d.service_id = tbs.id
|
|
|
|
+ <where>
|
|
|
|
+ <if test="serviceId != null and serviceId != ''">
|
|
|
|
+ and d.service_id = #{serviceId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="userName != null and userName != ''">
|
|
|
|
+ and u.real_name like concat('%', #{userName} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="startTime != null and startTime != '' ">
|
|
|
|
+ <![CDATA[
|
|
|
|
+ and d.sign_date >= #{startTime}
|
|
|
|
+ ]]>
|
|
|
|
+ </if>
|
|
|
|
+ <if test="endTime != null and endTime != ''">
|
|
|
|
+ <![CDATA[
|
|
|
|
+ and d.sign_date <= #{endTime}
|
|
|
|
+ ]]>
|
|
|
|
+ </if>
|
|
|
|
+ <if test="supplierId != null and supplierId != ''">
|
|
|
|
+ and us.supplier_id = #{supplierId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="custom != null and custom != ''">
|
|
|
|
+ and c.name like concat('%', #{custom} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="sopNo != null and sopNo != ''">
|
|
|
|
+ and d.sop_no like concat('%', #{sopNo} , '%')
|
|
|
|
+ </if>
|
|
|
|
+ <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasBusiness">
|
|
|
|
+ AND tbs.service_lead_id = #{dpr.requestUserId}
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasRegionManager">
|
|
|
|
+ AND crm.lead_id = #{dpr.requestUserId}
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="dpr.hasRegionCoordinator">
|
|
|
|
+ AND crm.region_coordinator_id = #{dpr.requestUserId}
|
|
|
|
+ </when>
|
|
|
|
+ </choose>
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
|
|
+ </if>
|
|
|
|
+ </where>
|
|
|
|
+ </select>
|
|
|
|
+
|
|
|
|
+ <select id="findDingResultByUserId" resultType="com.qmth.sop.business.bean.result.DingElementResult">
|
|
|
|
+ SELECT
|
|
|
|
+ tbua.id AS userArchivesId,
|
|
|
|
+ tbua.name AS userArchivesName,
|
|
|
|
+ tbua.base_photo_path AS basePhotoPath,
|
|
|
|
+ sdg.sign_in_time AS signInTimeScope,
|
|
|
|
+ sdg.sign_out_time AS signOutTimeScope,
|
|
|
|
+ sdg.reissue_card_count AS reissueCardCount,
|
|
|
|
+ sdg.face_open AS faceOpen,
|
|
|
|
+ sdg.id AS dingGroupId
|
|
|
|
+ FROM
|
|
|
|
+ t_b_user_archives tbua
|
|
|
|
+ LEFT JOIN
|
|
|
|
+ sys_user su ON tbua.mobile_number = su.mobile_number
|
|
|
|
+ LEFT JOIN
|
|
|
|
+ t_b_user_archives_supplier tbuas ON tbuas.user_archives_id = tbua.id
|
|
|
|
+ LEFT JOIN
|
|
|
|
+ sys_supplier ss ON tbuas.supplier_id = ss.id
|
|
|
|
+ LEFT JOIN
|
|
|
|
+ sys_ding_group sdg ON sdg.supplier_id = ss.id
|
|
|
|
+ <where>
|
|
|
|
+ <if test="userId != null">
|
|
|
|
+ AND su.id = #{userId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="serviceUnitId != null">
|
|
|
|
+ AND sdg.service_id = #{serviceUnitId}
|
|
|
|
+ </if>
|
|
|
|
+ </where>
|
|
|
|
+ </select>
|
|
|
|
+ <select id="findDateAndStatusBySopNo" resultType="com.qmth.sop.business.entity.TFFlowApprove">
|
|
|
|
+ SELECT
|
|
|
|
+ tffa.flow_id AS flowId,
|
|
|
|
+ tffa.status AS status,
|
|
|
|
+ tffa.create_time AS createTime,
|
|
|
|
+ tffa.update_time AS updateTime
|
|
|
|
+ FROM
|
|
|
|
+ t_f_flow_approve tffa
|
|
|
|
+ LEFT JOIN
|
|
|
|
+ t_f_custom_flow_entity tfcfe ON tffa.flow_id = tfcfe.flow_id
|
|
|
|
+ <where>
|
|
|
|
+ <if test="sopNo != null and sopNo != ''">
|
|
|
|
+ AND tfcfe.code = #{sopNo}
|
|
|
|
+ </if>
|
|
|
|
+ </where>
|
|
|
|
+ </select>
|
|
|
|
+ <select id="findDingExceptionApplyCount" resultType="java.lang.Integer">
|
|
|
|
+ SELECT
|
|
|
|
+ COUNT(*)
|
|
|
|
+ FROM
|
|
|
|
+ t_b_ding_apply
|
|
|
|
+ <where>
|
|
|
|
+ AND (approve IS NULL OR approve = 'PASS')
|
|
|
|
+ <if test="userId != null">
|
|
|
|
+ AND create_id = #{userId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="sopNo != null and sopNo != ''">
|
|
|
|
+ AND sop_no = #{sopNo}
|
|
|
|
+ </if>
|
|
|
|
+ </where>
|
|
|
|
+ </select>
|
|
</mapper>
|
|
</mapper>
|