zhizhi wu 4 years ago
parent
commit
60ad66444e
  1. 9
      src/main/java/com/ccsens/carbasics/bean/vo/FirstAidLogVo.java
  2. 21
      src/main/java/com/ccsens/carbasics/service/StatisticalService.java
  3. 10
      src/main/resources/mapper_dao/FirstAidLogDao.xml
  4. 27
      src/main/resources/mapper_dao/FirstAidRecordDao.xml

9
src/main/java/com/ccsens/carbasics/bean/vo/FirstAidLogVo.java

@ -31,5 +31,14 @@ public class FirstAidLogVo {
private Byte role;
@ApiModelProperty("医生名字")
private String name;
@ApiModelProperty("是否是当前的医生 -1:非医生 0:参与过的医生 1:当前医生 ")
private Byte currentDoctor;
public Byte getCurrentDoctor() {
if (role != null && role == 0) {
currentDoctor = -1;
}
return currentDoctor;
}
}
}

21
src/main/java/com/ccsens/carbasics/service/StatisticalService.java

@ -19,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@ -168,6 +169,9 @@ public class StatisticalService implements IStatisticalService {
Map<String, StatisticalVo.Item> map = new HashMap<>();
List<StatisticalVo.Item> newItems = new ArrayList<>();
items.forEach(item -> map.put(item.getName(), item));
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(startTime);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int unit = Calendar.DAY_OF_YEAR;
if (countType == Constant.Param.COUNT_TYPE_HOUR) {
@ -176,19 +180,28 @@ public class StatisticalService implements IStatisticalService {
} else if (countType == Constant.Param.COUNT_TYPE_MONTH) {
sdf = new SimpleDateFormat("yyyy-MM");
unit = Calendar.MONTH;
calendar.set(Calendar.DAY_OF_MONTH, 1);
} else if (countType == Constant.Param.COUNT_TYPE_DAY) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
}
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(startTime);
try {
while (calendar.getTimeInMillis() <= endTime) {
String format = sdf.format(calendar.getTime());
long time = sdf.parse(format).getTime();
if (map.containsKey(format)) {
newItems.add(new StatisticalVo.Item(calendar.getTimeInMillis() + "", map.get(format).getValue()));
newItems.add(new StatisticalVo.Item( time + "", map.get(format).getValue()));
} else {
newItems.add(new StatisticalVo.Item(calendar.getTimeInMillis() + "", null));
newItems.add(new StatisticalVo.Item(time + "", null));
}
calendar.add(unit, 1);
}
} catch (ParseException e) {
log.error("时间戳转换异常", e);
}
return newItems;
}

10
src/main/resources/mapper_dao/FirstAidLogDao.xml

@ -8,6 +8,7 @@
<id column="id" property="id"/>
<result column="role" property="role"/>
<result column="name" property="name"/>
<result column="currentDoctor" property="currentDoctor"/>
</collection>
</resultMap>
@ -17,12 +18,15 @@
l.id,
l.first_aid_id,
l.operation_role as role,
m.name
m.name,
if (am.record_user_id = l.operation_user_id, 1 , 0) as currentDoctor
FROM
t_qcp_first_aid_log l,
t_organization_member m
t_organization_member m,
t_qcp_first_aid_member am
WHERE
l.operation_user_id = m.user_id
AND l.first_aid_id = am.first_aid_id
AND l.operation_type IN ( 0, 7 )
AND l.operation_role IN ( 0, 1, 2 )
AND l.first_aid_id IN
@ -31,6 +35,8 @@
</foreach>
AND l.rec_status = 0
AND m.rec_status = 0
AND am.rec_status = 0
group by l.first_aid_id, l.operation_role, l.operation_user_id
</select>
<select id="countUpdateNumber" resultType="java.lang.Integer">

27
src/main/resources/mapper_dao/FirstAidRecordDao.xml

@ -155,21 +155,23 @@
WHERE
a.id = r1.first_aid_id
and a.id = r2.first_aid_id
AND r2.question_code = #{param.accordCode}
AND r1.question_code = #{param.questionCode}
AND r2.question_code = #{param.accordCode}
AND a.hospital_id IN
<foreach collection="hospitalIds" open="(" close=")" separator="," item="hospitalId">
#{hospitalId}
</foreach>
AND a.value_type = 0 and a.data_status in (1, 3, 5, 6)
AND a.rec_status = 0
AND r1.rec_status = 0
<if test="param.startTime!=null and param.startTime!=0">
AND r2.answer + 0 &gt;= #{param.startTime}
</if>
<if test="param.endTime!=null and param.endTime!=0">
AND r2.answer + 0 &lt;= #{param.endTime}
</if>
AND r1.answer != ''
AND a.rec_status = 0
AND r1.rec_status = 0
AND r2.rec_status = 0
GROUP BY
r1.answer
</select>
@ -215,7 +217,7 @@
<otherwise>FROM_UNIXTIME(r1.answer/1000,'%Y-%m-%d') as date,</otherwise>
</choose>
ROUND((r1.answer - r2.answer)/60000, 2) as val
from t_qcp_first_aid a, t_qcp_first_aid_record r1 , t_qcp_first_aid_record r2
from t_qcp_first_aid a, t_qcp_first_aid_record r1 , t_qcp_first_aid_record r2, (select @rk := 0, @team := '') t
where a.id = r1.first_aid_id and r1.question_code = #{minuendCode}
and a.id = r2.first_aid_id and r2.question_code = #{subtractionCode}
and r1.answer + 0 &gt;= #{startTime} and r1.answer + 0 &lt;= #{endTime}
@ -224,9 +226,9 @@
</foreach>
AND a.value_type = 0 and a.data_status in (1, 3, 5, 6)
and a.rec_status = 0 and r1.rec_status = 0 and r2.rec_status = 0
) d,
(select @rk := 0, @team := '') t
order by date, val) t1
order by r1.answer/1000, r1.answer/1000
) d
) t1
left join (
select
<choose>
@ -259,11 +261,11 @@
<select id="countAreaMedian" resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$Item">
select b.id,b.shortName as name, avg(b.val) as value from
(select id,shortName,val,@team,
case @team when id then @rk := @rk + 1 else @rk := 1 end rk,
if(val is null, 0, CASE @team WHEN id THEN @rk := @rk + 1 ELSE @rk := 1 END) rk,
@team := id
from (
select city.id, city.short_name as shortName, aid.val from
(select city.id, city.short_name from t_organization o, t_organization_parent p, t_organization city
(select city.id, city.short_name from t_organization o, t_organization_parent p, t_organization city,(select @rk := 0, @team := '') a
where o.id = p.parent_id and p.organization_id = city.id AND city.organization_type = 2
and o.code = #{param.code} and o.rec_status = 0 and p.rec_status = 0 and city.rec_status = 0) city
left join
@ -272,6 +274,7 @@
(
select
a.hospital_id,
r1.id as recordId,
ROUND((r1.answer - r2.answer)/60000, 2) as val
from t_qcp_first_aid a, t_qcp_first_aid_record r1 , t_qcp_first_aid_record r2
where a.id = r1.first_aid_id and r1.question_code = #{param.minuendCode}
@ -280,10 +283,12 @@
AND a.value_type = 0 and a.data_status in (1, 3, 5, 6)
and a.rec_status = 0 and r1.rec_status = 0 and r2.rec_status = 0
) aid on hospital.id = aid.hospital_id
) t1, (select @rk := 0, @team := '') a order by id,val) b
group by city.id,aid.recordId
order by city.id,aid.val
) t1) b
left join
(
select city.id, city.short_name as shortName, count(aid.id) as cnt from
select city.id, city.short_name as shortName, count(aid.id)/2 as cnt from
(select city.id, city.short_name from t_organization o, t_organization_parent p, t_organization city
where o.id = p.parent_id and p.organization_id = city.id
and o.code = #{param.code} and o.rec_status = 0 and p.rec_status = 0 and city.rec_status = 0) city

Loading…
Cancel
Save