护理记录FR200统计

master
382696293@qq.com 2 years ago
parent 9daf5ad5a9
commit ea859ae723

@ -66,4 +66,6 @@ public interface WxNursingLogMapper {
List<WxNursingLog> selectWxNursingLogByIdList(@Param("idList") List<Integer> idList);
WxNursingLog selectLastNursingLogByUserId(@Param("userId") Long userId, @Param("instrumentId") Long instrumentId);
List<WxNursingLog> fr200Statistics(@Param("queryNursingLog")WxNursingLog queryNursingLog, @Param("modeClass") Long modeClass);
}

@ -112,6 +112,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LIMIT 1
</select>
<select id="fr200Statistics" resultMap="WxNursingLogResult">
SELECT
nursing.*
FROM
`wx_nursing_log` nursing
inner join wx_instrument instrument on nursing.instrument_id = instrument.id and instrument.model = "FR200"
inner join wx_mode wxMode on nursing.mode_id = wxMode.id AND wxMode.mode_class = #{modeClass}
<where>
<if test="queryNursingLog.userId != null "> and nursing.user_id = #{queryNursingLog.userId}</if>
<if test="queryNursingLog.params != null and queryNursingLog.params.beginTime != null">
and nursing.create_time &gt;= #{queryNursingLog.params.beginTime}
</if>
<if test="queryNursingLog.params != null and queryNursingLog.params.endTime != null">
and nursing.create_time &lt;= #{queryNursingLog.params.endTime}
</if>
</where>
</select>
<insert id="insertWxNursingLog" parameterType="WxNursingLog" useGeneratedKeys="true" keyProperty="id">
<selectKey keyProperty="id" resultType="Long" order="AFTER">
SELECT LAST_INSERT_ID()

@ -49,6 +49,14 @@ public class WxNursingLogController extends BaseController {
return R.ok(wxNursingLogService.selectWxNursingLogById(id));
}
/**
*
*/
@GetMapping("/fr200/statistics")
public R fr200Statistics(@RequestParam("nursingId") Long nursingId) {
return R.ok(wxNursingLogService.fr200Statistics(nursingId));
}
/**
* WL200
*/

@ -30,4 +30,5 @@ public interface IWxNursingLogService {
WxNursingLog selectWxNursingLogById(Long id);
WxNursingStatisticsRet fr200Statistics(Long nursingId);
}

@ -141,6 +141,48 @@ public class WxNursingLogServiceImpl implements IWxNursingLogService {
return nursingLog;
}
@Override
public WxNursingStatisticsRet fr200Statistics(Long nursingId) {
// 查询护理记录
WxNursingLog wxNursingLog = wxNursingLogMapper.selectWxNursingLogById(nursingId);
if (wxNursingLog == null) {
throw new ServiceException("参数有误");
}
// 查询模式信息
WxMode wxMode = wxModeMapper.selectWxModeById(wxNursingLog.getModeId());
// 获取模式分类
Long modeClass = wxMode.getModeClass();
// 获取用户ID
Long userId = wxNursingLog.getUserId();
// 构建查询条件
WxNursingLog queryNursingLog = new WxNursingLog();
LocalDateTime selectTime = LocalDateTime.ofInstant(wxNursingLog.getCreateTime().toInstant(), ZoneId.systemDefault());
queryNursingLog.getParams().put("beginTime", selectTime.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN));
queryNursingLog.getParams().put("endTime", selectTime.with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX));
queryNursingLog.setUserId(userId);
List<WxNursingLog> wxNursingLogList = wxNursingLogMapper.fr200Statistics(queryNursingLog, modeClass);
// 结果封装
WxNursingStatisticsRet wxNursingStatisticsRet = new WxNursingStatisticsRet();
if (wxNursingLogList != null && wxNursingLogList.size() > 0) {
Map<LocalDate, Long> collect = wxNursingLogList.stream().collect(
Collectors.groupingBy(
log -> log.getCreateTime().toInstant()
.atZone(ZoneId.systemDefault()).toLocalDate(), Collectors.counting()
)
);
wxNursingStatisticsRet.setNursingNum(collect.size());
Integer totalNursingSecond = 0;
for (WxNursingLog nursingLog : wxNursingLogList) {
if (nursingLog.getNursingTime() != null) {
totalNursingSecond += nursingLog.getNursingTime().toSecondOfDay();
}
}
wxNursingStatisticsRet.setNursingTime(DateUtils.formatHMS(totalNursingSecond));
}
return wxNursingStatisticsRet;
}
/**
*
*/

Loading…
Cancel
Save