RiBaoService.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. package com.bofeng.service;
  2. import com.baomidou.mybatisplus.toolkit.IdWorker;
  3. import com.bofeng.dao.MsReportMapper;
  4. import com.bofeng.dao.MsSuspectedMapper;
  5. import com.bofeng.dao.UptownHouseMapper;
  6. import com.bofeng.dao.UptownUnitMapper;
  7. import com.bofeng.entity.MsReport;
  8. import com.bofeng.entity.MsSuspected;
  9. import com.bofeng.entity.UptownHouse;
  10. import com.bofeng.entity.UptownUnit;
  11. import org.apache.commons.collections.CollectionUtils;
  12. import org.joda.time.DateTime;
  13. import org.springframework.beans.BeanUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Propagation;
  17. import org.springframework.transaction.annotation.Transactional;
  18. import java.math.BigDecimal;
  19. import java.text.SimpleDateFormat;
  20. import java.util.ArrayList;
  21. import java.util.Calendar;
  22. import java.util.Date;
  23. import java.util.List;
  24. /**
  25. * @Author: xielianghe
  26. * @Date: 2020/2/4 15:44
  27. */
  28. @Service
  29. @Transactional()
  30. public class RiBaoService {
  31. @Autowired
  32. private MsSuspectedMapper msSuspectedMapper;
  33. @Autowired
  34. private MsReportMapper msReportMapper;
  35. @Autowired
  36. private RiBaoService msReportService;
  37. @Autowired
  38. private UptownHouseMapper uptownHouseMapper;
  39. @Autowired
  40. private UptownUnitMapper uptownUnitMapper;
  41. public List<MsSuspected> getByReportId(Long reportId) {
  42. return msSuspectedMapper.selectByReportId(reportId);
  43. }
  44. public MsReport selectById(Long reportId) {
  45. return msReportMapper.selectById(reportId);
  46. }
  47. //获取前一天数据
  48. // public List<MsSuspected> getByReportReportDate(String reportDate, Long userCreate) {
  49. //
  50. // List<MsReport> listReport = msReportMapper.selectByReportDate(reportDate, userCreate);
  51. // List<MsSuspected> listSuspected = null;
  52. // if (listReport != null && listReport.size() > 0) {
  53. // listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport.get(0).getReportId().toString()));
  54. // }
  55. // return listSuspected;
  56. // }
  57. //获取今天数据
  58. public MsReport getReportByDateNow(Long userCreate) {
  59. //根据昨天的获取今天的
  60. msReportService.getNowByYesterday(userCreate);
  61. Date t = new Date();
  62. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  63. String reportDate = df.format(t);
  64. List<MsReport> listReport = msReportMapper.selectByReportDate(reportDate, userCreate);
  65. MsReport msReport = new MsReport();
  66. if (listReport != null && listReport.size() > 0) {
  67. msReport = msReportMapper.selectById(Long.parseLong(listReport.get(0).getReportId().toString()));
  68. }
  69. return msReport;
  70. }
  71. //获取今天数据
  72. public String getHouseStr(Long houseId) {
  73. UptownHouse house = uptownHouseMapper.selectById(houseId);
  74. UptownUnit unit = uptownUnitMapper.selectById(house.getUnitId());
  75. StringBuffer sb = new StringBuffer();
  76. sb.append(unit.getRidgepole()).append("栋").append(unit.getUnit()).append("单元").append(house.getDoorplate()).append("室");
  77. String houseStr = sb.toString();
  78. return houseStr;
  79. }
  80. //上报
  81. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  82. public Integer addReport(Long userCreate) {
  83. Date t = new Date();
  84. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  85. String reportDate = df.format(t);
  86. List<MsReport> listReport = msReportMapper.selectByReportDate(reportDate, userCreate);
  87. if (listReport == null || listReport.size() == 0)
  88. return 0;
  89. //判断体温是否填写
  90. List<MsSuspected> listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport.get(0).getReportId().toString()));
  91. for (MsSuspected msSuspected : listSuspected) {
  92. if (msSuspected.getTemperature().compareTo(new BigDecimal(0)) == 0)
  93. return 2;
  94. }
  95. MsReport msReport = msReportMapper.selectById(Long.parseLong(listReport.get(0).getReportId().toString()));
  96. if (msReport != null) {
  97. msReport.setReportStatus(1);
  98. msReport.setUserUpdate(userCreate);
  99. msReport.setTimeUpdate(DateTime.now());
  100. msReportMapper.updateById(msReport);
  101. }
  102. return 1;
  103. }
  104. // @Pd(name = "userName") String userName,// 家人姓名
  105. // @Pd(name = "grender") Integer grender,// 性别:0未设置,1男,2女
  106. // @Pd(name = "age") Integer age,// 年龄
  107. // @Pd(name = "familyStatus") Integer familyStatus,// 基本状态:0正常,1心血管疾病(服用ARB),2心血管疾病(未服用ARB),3呼吸系统病史,4肿瘤病史,5糖尿病史,6服用过激素药物,7妊娠期,8其他
  108. // @Pd(name = "statusDesp") String statusDesp,// 状态描述
  109. // @Pd(name = "medical") Integer medical,// 是否确诊:0否,1是
  110. // @Pd(name = "temperature") BigDecimal temperature,// 体温
  111. // @Pd(name = "cough") Integer cough,// 咳嗽:0无咳嗽,1偶有短暂咳嗽,2咳嗽轻度影响生活,3咳嗽严重影响生活
  112. // @Pd(name = "muscle") Integer muscle,// 肌肉酸痛:0无,1按压有,2偶尔,3持续有
  113. // @Pd(name = "dyspnea") Integer dyspnea,// 呼吸困难:0无,1急走或上坡气短,2气短而走路变慢,3走路数分钟后气短,4气短无法离开房间
  114. // @Pd(name = "fatigue") Integer fatigue,// 乏力:0无,1可体力劳动但觉得累,2轻体力劳动后长时间不能恢复,3不能正常生活
  115. // @Pd(name = "diarrhea") Integer diarrhea,// 腹泻:0无,1轻度腹泻少于于3次,2中度腹泻4-6次,3重度腹泻超过6次
  116. // @Pd(name = "singleRoom") Integer singleRoom,// 单间隔离:0否,1是
  117. // // @Pd(name = "suspectedStatus") String suspectedStatus,// 是否疑似:0否,1是
  118. // @Pd(name = "others") String others,// 其他
  119. //获取前一天数据
  120. public List<MsSuspected> queryRibaoDetailList(Long reportId) {
  121. List<MsSuspected> listSuspected = msSuspectedMapper.selectByReportId(reportId);
  122. if (CollectionUtils.isEmpty(listSuspected)) {
  123. listSuspected = new ArrayList<MsSuspected>();
  124. } else {
  125. for (MsSuspected obj : listSuspected) {
  126. if (obj.getGrender().intValue() == 1) {
  127. obj.setGrenderStr("男");
  128. } else if (obj.getGrender().intValue() == 2) {
  129. obj.setGrenderStr("女");
  130. }
  131. if (obj.getFamilyStatus().intValue() == 0) {
  132. obj.setFamilyStatusStr("正常");
  133. } else if (obj.getFamilyStatus().intValue() == 1) {
  134. obj.setFamilyStatusStr("心血管疾病(服用ARB)");
  135. } else if (obj.getFamilyStatus().intValue() == 2) {
  136. obj.setFamilyStatusStr("心血管疾病(未服用ARB)");
  137. } else if (obj.getFamilyStatus().intValue() == 3) {
  138. obj.setFamilyStatusStr("呼吸系统病史");
  139. } else if (obj.getFamilyStatus().intValue() == 4) {
  140. obj.setFamilyStatusStr("肿瘤病史");
  141. } else if (obj.getFamilyStatus().intValue() == 5) {
  142. obj.setFamilyStatusStr("糖尿病史");
  143. } else if (obj.getFamilyStatus().intValue() == 6) {
  144. obj.setFamilyStatusStr("服用过激素药物");
  145. } else if (obj.getFamilyStatus().intValue() == 7) {
  146. obj.setFamilyStatusStr("妊娠期");
  147. } else if (obj.getFamilyStatus().intValue() == 8) {
  148. obj.setFamilyStatusStr("其他");
  149. }
  150. if (obj.getMedical().intValue() == 0) {
  151. obj.setMedicalStr("否");
  152. } else if (obj.getMedical().intValue() == 1) {
  153. obj.setMedicalStr("是");
  154. }
  155. if (obj.getCough().intValue() == 0) {
  156. obj.setCoughStr("无咳嗽");
  157. } else if (obj.getCough().intValue() == 1) {
  158. obj.setCoughStr("偶有短暂咳嗽");
  159. } else if (obj.getCough().intValue() == 2) {
  160. obj.setCoughStr("咳嗽轻度影响生活");
  161. } else if (obj.getCough().intValue() == 3) {
  162. obj.setCoughStr("咳嗽严重影响生活");
  163. }
  164. if (obj.getMuscle().intValue() == 0) {
  165. obj.setMuscleStr("无");
  166. } else if (obj.getMuscle().intValue() == 1) {
  167. obj.setMuscleStr("按压有");
  168. } else if (obj.getMuscle().intValue() == 2) {
  169. obj.setMuscleStr("偶尔");
  170. } else if (obj.getMuscle().intValue() == 3) {
  171. obj.setMuscleStr("持续有");
  172. }
  173. if (obj.getDyspnea().intValue() == 0) {
  174. obj.setDyspneaStr("无");
  175. } else if (obj.getDyspnea().intValue() == 1) {
  176. obj.setDyspneaStr("急走或上坡气短");
  177. } else if (obj.getDyspnea().intValue() == 2) {
  178. obj.setDyspneaStr("气短而走路变慢");
  179. } else if (obj.getDyspnea().intValue() == 3) {
  180. obj.setDyspneaStr("走路数分钟后气短");
  181. } else if (obj.getDyspnea().intValue() == 4) {
  182. obj.setDyspneaStr("气短无法离开房间");
  183. }
  184. if (obj.getFatigue().intValue() == 0) {
  185. obj.setFatigueStr("无");
  186. } else if (obj.getFatigue().intValue() == 1) {
  187. obj.setFatigueStr("可体力劳动但觉得累");
  188. } else if (obj.getFatigue().intValue() == 2) {
  189. obj.setFatigueStr("轻体力劳动后长时间不能恢复");
  190. } else if (obj.getFatigue().intValue() == 3) {
  191. obj.setFatigueStr("不能正常生活");
  192. }
  193. if (obj.getDiarrhea().intValue() == 0) {
  194. obj.setDiarrheaStr("无");
  195. } else if (obj.getDiarrhea().intValue() == 1) {
  196. obj.setDiarrheaStr("轻度腹泻少于于3次");
  197. } else if (obj.getDiarrhea().intValue() == 2) {
  198. obj.setDiarrheaStr("中度腹泻4-6次");
  199. } else if (obj.getDiarrhea().intValue() == 3) {
  200. obj.setDiarrheaStr("重度腹泻超过6次");
  201. }
  202. if (obj.getSingleRoom().intValue() == 0) {
  203. obj.setSingleRoomStr("否");
  204. } else if (obj.getSingleRoom().intValue() == 1) {
  205. obj.setSingleRoomStr("是");
  206. }
  207. if (obj.getSuspectedStatus().intValue() == 0) {
  208. obj.setSuspectedStatusStr("否");
  209. } else if (obj.getSuspectedStatus().intValue() == 1) {
  210. obj.setSuspectedStatusStr("是");
  211. }
  212. }
  213. }
  214. return listSuspected;
  215. }
  216. //通过昨天数据更新今天数据
  217. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  218. public Long getNowByYesterday(Long userCreate) {
  219. // 判断今天是否有数据
  220. Date today = new Date();
  221. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  222. String todayStr = sdf.format(today);
  223. List<MsReport> listReportDb = msReportMapper.selectByReportDate(todayStr, userCreate);
  224. if (CollectionUtils.isNotEmpty(listReportDb)) {
  225. Long reportId = listReportDb.get(0).getReportId();
  226. return reportId;
  227. }
  228. // 判断昨天是否有数据
  229. Calendar calendar = Calendar.getInstance();
  230. calendar.setTime(today);
  231. calendar.add(Calendar.DATE, -1);
  232. String yestodayStr = sdf.format(calendar.getTime());
  233. listReportDb = msReportMapper.selectByReportDate(yestodayStr, userCreate);
  234. //有数据
  235. Long reportId = 0L;
  236. DateTime dateTime = new DateTime();
  237. if (CollectionUtils.isNotEmpty(listReportDb)) {
  238. Long reportIdDb = listReportDb.get(0).getReportId();
  239. //添加到今天日报
  240. MsReport msReportDb = msReportMapper.selectById(reportIdDb);
  241. if (msReportDb != null) {
  242. MsReport msReport = new MsReport();
  243. BeanUtils.copyProperties(msReportDb, msReport);
  244. reportId = IdWorker.getId();
  245. msReport.setReportId(reportId);
  246. msReport.setReportDate(dateTime.toDate());
  247. msReport.setReportStatus(0);//未上报
  248. msReport.setUserCreate(userCreate);
  249. msReport.setTimeCreate(dateTime);
  250. msReport.setUserUpdate(userCreate);
  251. msReport.setTimeUpdate(dateTime);
  252. msReportMapper.insert(msReport);
  253. //添加今日家庭
  254. List<MsSuspected> suspectedListDb = msSuspectedMapper.selectByReportId(reportIdDb);
  255. if (CollectionUtils.isNotEmpty(suspectedListDb)) {
  256. for (MsSuspected msSuspectedDb : suspectedListDb) {
  257. MsSuspected msSuspected = new MsSuspected();
  258. BeanUtils.copyProperties(msSuspectedDb, msSuspected);
  259. msSuspected.setSuspectedId(IdWorker.getId());
  260. msSuspected.setReportId(reportId);
  261. msSuspected.setSuspectedStatus(0);
  262. msSuspected.setUserCreate(userCreate);
  263. msSuspected.setTimeCreate(dateTime);
  264. msSuspected.setUserUpdate(userCreate);
  265. msSuspected.setTimeUpdate(dateTime);
  266. msSuspectedMapper.insert(msSuspected);
  267. }
  268. }
  269. } else {
  270. Long houseId = msReportMapper.selectHouseIdByUserId(userCreate);
  271. reportId = IdWorker.getId();
  272. MsReport msReport = new MsReport();
  273. msReport.setReportId(reportId);
  274. msReport.setHouseId(houseId);
  275. msReport.setSafetyNum(0);
  276. msReport.setSureNum(0);
  277. msReport.setSuspectedNum(0);
  278. msReport.setNormalNum(0);
  279. msReport.setSingleNum(0);
  280. msReport.setRemarks("");
  281. msReport.setReportDate(dateTime.toDate());
  282. msReport.setMsStatus(0);
  283. msReport.setUserCreate(userCreate);
  284. msReport.setTimeCreate(dateTime);
  285. msReport.setUserUpdate(userCreate);
  286. msReport.setTimeUpdate(dateTime);
  287. msReportMapper.insert(msReport);
  288. }
  289. } else {
  290. Long houseId = msReportMapper.selectHouseIdByUserId(userCreate);
  291. reportId = IdWorker.getId();
  292. MsReport msReport = new MsReport();
  293. msReport.setReportId(reportId);
  294. msReport.setHouseId(houseId);
  295. msReport.setSafetyNum(0);
  296. msReport.setSureNum(0);
  297. msReport.setSuspectedNum(0);
  298. msReport.setNormalNum(0);
  299. msReport.setSingleNum(0);
  300. msReport.setRemarks("");
  301. msReport.setReportDate(dateTime.toDate());
  302. msReport.setMsStatus(0);
  303. msReport.setUserCreate(userCreate);
  304. msReport.setTimeCreate(dateTime);
  305. msReport.setUserUpdate(userCreate);
  306. msReport.setTimeUpdate(dateTime);
  307. msReportMapper.insert(msReport);
  308. }
  309. return reportId;
  310. }
  311. }