WHEN IF(LENGTH(r.answer) - LENGTH(REPLACE(r.answer,",","")) >= 2, 1, 0 ) THEN '1'
WHEN IF((FIND_IN_SET('09',r.answer) > -1) or (FIND_IN_SET('10',r.answer) > -1), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',r.answer) > -1) or (FIND_IN_SET('03',r.answer) > -1) or (FIND_IN_SET('04',r.answer) > -1), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',r.answer) > -1) or (FIND_IN_SET('05',r.answer) > -1) or (FIND_IN_SET('06',r.answer) > -1) or (FIND_IN_SET('07',r.answer) > -1) or (FIND_IN_SET('08',r.answer) > -1) , 1, 0) THEN '3'
WHEN IF((FIND_IN_SET('09',r.answer) > 0) or (FIND_IN_SET('10',r.answer) > 0), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',r.answer) > 0) or (FIND_IN_SET('03',r.answer) > 0) or (FIND_IN_SET('04',r.answer) > 0), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',r.answer) > 0) or (FIND_IN_SET('05',r.answer) > 0) or (FIND_IN_SET('06',r.answer) > 0) or (FIND_IN_SET('07',r.answer) > 0) or (FIND_IN_SET('08',r.answer) > 0) , 1, 0) THEN '3'
WHEN IF(LENGTH(r1.answer) - LENGTH(REPLACE(r1.answer,",","")) >= 2, 1, 0 ) THEN '1'
WHEN IF((FIND_IN_SET('09',r1.answer) > -1) or (FIND_IN_SET('10',r1.answer) > -1), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',r1.answer) > -1) or (FIND_IN_SET('03',r1.answer) > -1) or (FIND_IN_SET('04',r1.answer) > -1), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',r1.answer) > -1) or (FIND_IN_SET('05',r1.answer) > -1) or (FIND_IN_SET('06',r1.answer) > -1) or (FIND_IN_SET('07',r1.answer) > -1) or (FIND_IN_SET('08',r1.answer) > -1) , 1, 0) THEN '3'
WHEN IF((FIND_IN_SET('09',r1.answer) > 0) or (FIND_IN_SET('10',r1.answer) > 0), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',r1.answer) > 0) or (FIND_IN_SET('03',r1.answer) > 0) or (FIND_IN_SET('04',r1.answer) > 0), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',r1.answer) > 0) or (FIND_IN_SET('05',r1.answer) > 0) or (FIND_IN_SET('06',r1.answer) > 0) or (FIND_IN_SET('07',r1.answer) > 0) or (FIND_IN_SET('08',r1.answer) > 0) , 1, 0) THEN '3'
ELSE '0'
END as type
FROM
(
SELECT
qd.id,
UNIX_TIMESTAMP(qd.updated_at) * 1000 as submitTime
qd.id
FROM
t_qcp_questionnaire q,
t_qcp_questionnaire_detail qd
@ -254,6 +252,7 @@
LEFT JOIN t_qcp_questionnaire_record r1 on a.id = r1.questionnaire_detail_id and r1.question_code = 'SCWJ-NAME' and r1.rec_status = 0
LEFT JOIN t_qcp_questionnaire_record r2 on a.id = r2.questionnaire_detail_id and r2.question_code = 'SCWJ-PHONE'and r2.rec_status = 0
LEFT JOIN t_qcp_questionnaire_record r3 on a.id = r3.questionnaire_detail_id and r3.question_code = 'SCWJ-ILLNESS'and r3.rec_status = 0
LEFT JOIN t_qcp_questionnaire_record r4 on a.id = r4.questionnaire_detail_id and r4.question_code = 'SCWJ-SUBMIT'and r4.rec_status = 0
<iftest="type != 0">
where
a.type = #{type}
@ -293,9 +292,9 @@
r.answer,
CASE 1
WHEN IF(LENGTH(r.answer) - LENGTH(REPLACE(r.answer,",","")) >= 2, 1, 0 ) THEN '1'
WHEN IF((FIND_IN_SET('09',r.answer) > -1) or (FIND_IN_SET('10',r.answer) > -1), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',r.answer) > -1) or (FIND_IN_SET('03',r.answer) > -1) or (FIND_IN_SET('04',r.answer) > -1), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',r.answer) > -1) or (FIND_IN_SET('05',r.answer) > -1) or (FIND_IN_SET('06',r.answer) > -1) or (FIND_IN_SET('07',r.answer) > -1) or (FIND_IN_SET('08',r.answer) > -1) , 1, 0) THEN '3'
WHEN IF((FIND_IN_SET('09',r.answer) > 0) or (FIND_IN_SET('10',r.answer) > 0), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',r.answer) > 0) or (FIND_IN_SET('03',r.answer) > 0) or (FIND_IN_SET('04',r.answer) > 0), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',r.answer) > 0) or (FIND_IN_SET('05',r.answer) > 0) or (FIND_IN_SET('06',r.answer) > 0) or (FIND_IN_SET('07',r.answer) > 0) or (FIND_IN_SET('08',r.answer) > 0) , 1, 0) THEN '3'
WHEN IF(LENGTH(a.illness) - LENGTH(REPLACE(a.illness,",","")) >= 2, 1, 0 ) THEN '1'
WHEN IF((FIND_IN_SET('09',a.illness) > 0) or (FIND_IN_SET('10',a.illness) > 0), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',a.illness) > 0) or (FIND_IN_SET('03',a.illness) > 0) or (FIND_IN_SET('04',a.illness) > 0), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',a.illness) > 0) or (FIND_IN_SET('05',a.illness) > 0) or (FIND_IN_SET('06',a.illness) > 0) or (FIND_IN_SET('07',a.illness) > 0) or (FIND_IN_SET('08',a.illness) > 0) , 1, 0) THEN '3'
ELSE '0'
END as types
FROM
(
SELECT
q.id,
q.healthTracking,
MAX( CASE q.question_code WHEN 'SCWJ-idCard' THEN q.answer ELSE null END ) as `idCard`,
MAX( CASE q.question_code WHEN 'SCWJ-NAME' THEN q.answer ELSE null END ) as `name`,
MAX( CASE q.question_code WHEN 'SCWJ-SEX' THEN q.answer ELSE null END ) as `sex`,
MAX( CASE q.question_code WHEN 'SCWJ-BIRTH' THEN q.answer ELSE null END ) as `birthday`,
MAX( CASE q.question_code WHEN 'SCWJ-AGE' THEN q.answer ELSE null END ) as `age`,
MAX( CASE q.question_code WHEN 'SCWJ-PHONE' THEN q.answer ELSE null END ) as `phone`,
MAX( CASE q.question_code WHEN 'SCWJ-REMARK' THEN q.answer ELSE null END ) as `remark`,
MAX( CASE q.question_code WHEN 'SCWJ-ILLNESS' THEN q.answer ELSE null END ) as `illness`,
MAX( CASE q.question_code WHEN 'SCWJ-SUBMIT' THEN q.answer ELSE null END ) as `submitTime`
FROM
(
SELECT
qd.id,
r.question_code,
r.answer,
qd.pci_status as healthTracking
FROM
t_qcp_questionnaire q,
t_qcp_questionnaire_detail qd,
t_qcp_questionnaire_record r
WHERE
q.id = qd.questionnaire_id
and qd.id = r.questionnaire_detail_id
and q.type = 1
and q.start_time < #{now}
and q.end_time > #{now}
and q.rec_status = 0
and qd.rec_status = 0
and r.rec_status = 0
and qd.submit_status = 1
)q
GROUP BY q.id
)a
)t
<where>
<iftest="param.idCard != null and param.idCard != ''">
and t.idCard = #{param.idCard}
</if>
<iftest="param.name != null and param.name != ''">
and t.`name` like count('%',#{param.name},'%')
</if>
<iftest="param.sex != null and param.sex != ''">
and t.sex = #{param.sex}
</if>
<iftest="param.startTime != null and param.startTime != '' and param.endTime != null and param.endTime != ''">
and t.birthday >= #{param.startTime}
and t.birthday <= #{param.endTime}
</if>
<iftest="param.age != null and param.age != ''">
and t.age = #{param.age}
</if>
<iftest="param.phone != null and param.phone != ''">
and t.phone = #{param.phone}
</if>
<iftest="param.phone != null and param.phone != ''">
and t.phone = #{param.phone}
</if>
<iftest="param.hypertension != null">
<iftest="param.hypertension = 1">
and (FIND_IN_SET('01',t.illness) > 0)
</if>
<iftest="param.hypertension = 0">
and (FIND_IN_SET('01',t.illness) = 0 or FIND_IN_SET('01',t.illness) is null)
</if>
</if>
<iftest="param.bloodFat != null">
<iftest="param.bloodFat = 1">
and (FIND_IN_SET('02',t.illness) > 0)
</if>
<iftest="param.bloodFat = 0">
and (FIND_IN_SET('02',t.illness) = 0 or FIND_IN_SET('02',t.illness) is null)
</if>
</if>
<iftest="param.diabetes != null">
<iftest="param.diabetes = 1">
and (FIND_IN_SET('03',t.illness) > 0)
</if>
<iftest="param.diabetes = 0">
and (FIND_IN_SET('03',t.illness) = 0 or FIND_IN_SET('03',t.illness) is null)
</if>
</if>
<iftest="param.fibrillation != null">
<iftest="param.fibrillation = 1">
and (FIND_IN_SET('04',t.illness) > 0)
</if>
<iftest="param.fibrillation = 0">
and (FIND_IN_SET('04',t.illness) = 0 or FIND_IN_SET('04',t.illness) is null)
</if>
</if>
<iftest="param.smoke != null">
<iftest="param.smoke = 1">
and (FIND_IN_SET('05',t.illness) > 0)
</if>
<iftest="param.smoke = 0">
and (FIND_IN_SET('05',t.illness) = 0 or FIND_IN_SET('05',t.illness) is null)
</if>
</if>
<iftest="param.weight != null">
<iftest="param.weight = 1">
and (FIND_IN_SET('06',t.illness) > 0)
</if>
<iftest="param.weight = 0">
and (FIND_IN_SET('06',t.illness) = 0 or FIND_IN_SET('06',t.illness) is null)
</if>
</if>
<iftest="param.sports != null">
<iftest="param.sports = 1">
and (FIND_IN_SET('07',t.illness) > 0)
</if>
<iftest="param.sports = 0">
and (FIND_IN_SET('07',t.illness) = 0 or FIND_IN_SET('07',t.illness) is null)
</if>
</if>
<iftest="param.apoplexyFamily != null">
<iftest="param.apoplexyFamily = 1">
and (FIND_IN_SET('08',t.illness) > 0)
</if>
<iftest="param.apoplexyFamily = 0">
and (FIND_IN_SET('08',t.illness) = 0 or FIND_IN_SET('08',t.illness) is null)
</if>
</if>
<iftest="param.cerebralStroke != null">
<iftest="param.cerebralStroke = 1">
and (FIND_IN_SET('09',t.illness) > 0)
</if>
<iftest="param.cerebralStroke = 0">
and (FIND_IN_SET('09',t.illness) = 0 or FIND_IN_SET('09',t.illness) is null)
</if>
</if>
<iftest="param.cerebralIschemia != null">
<iftest="param.cerebralIschemia = 1">
and (FIND_IN_SET('10',t.illness) > 0)
</if>
<iftest="param.cerebralIschemia = 0">
and (FIND_IN_SET('10',t.illness) = 0 or FIND_IN_SET('10',t.illness) is null)