MsTripService.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. package com.bofeng.service;
  2. import com.baomidou.mybatisplus.toolkit.IdWorker;
  3. import com.bofeng.dao.*;
  4. import com.bofeng.entity.*;
  5. import com.yvan.platform.Conv;
  6. import org.joda.time.DateTime;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Service;
  9. import org.springframework.transaction.annotation.Propagation;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import java.math.BigDecimal;
  12. import java.text.SimpleDateFormat;
  13. import java.util.Date;
  14. import java.util.List;
  15. /**
  16. * @Author: xielianghe
  17. * @Date: 2020/2/22 13:33
  18. */
  19. @Service
  20. @Transactional(readOnly = true)
  21. public class MsTripService {
  22. @Autowired
  23. private MsSuspectedMapper msSuspectedMapper;
  24. @Autowired
  25. private MsReportMapper msReportMapper;
  26. @Autowired
  27. private MsTripMapper msTripMapper;
  28. @Autowired
  29. private MsTripDetMapper msTripDetMapper;
  30. @Autowired
  31. private MsSuspectedService msSuspectedService;
  32. @Autowired
  33. private MsReportService msReportService;
  34. @Autowired
  35. private UptownUnitMapper uptownUnitMapper;
  36. //添加家人
  37. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  38. public Long addSuspectedTrip(Long suspectedId, String userName, Integer grender, Integer age, String familyStatus,
  39. String statusDesp, Integer medical, BigDecimal temperature, Integer cough, Integer muscle,
  40. Integer dyspnea, Integer fatigue, Integer diarrhea, Integer singleRoom, String others, Long userCreate, Integer scoreRezult, Integer temperatureScore, Integer scoreHistroy, Integer score
  41. , Integer workLocal, String workLocalOther, Integer todayLocal, String todayLocalOther, Integer isTrip, List<MsTripDet> listTripDet) {
  42. Long reportId = 0L;
  43. //如果是当前日期 已经添加
  44. Date t = new Date();
  45. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  46. String reportDate = df.format(t);
  47. List<MsReport> listReport = msReportMapper.selectByReportDate(reportDate, userCreate);
  48. Long houseId = msReportMapper.selectHouseIdByUserId(userCreate);
  49. //首次进入。没有今日报告
  50. if (listReport == null || listReport.size() == 0) {
  51. MsReport msReport = new MsReport();
  52. msReport.setReportId(IdWorker.getId());
  53. msReport.setHouseId(houseId);
  54. msReport.setSafetyNum(0);
  55. msReport.setSureNum(0);
  56. msReport.setSuspectedNum(0);
  57. msReport.setNormalNum(0);
  58. msReport.setSingleNum(0);
  59. msReport.setRemarks("");
  60. msReport.setReportDate(DateTime.now().toDate());
  61. msReport.setMsStatus(0);
  62. msReport.setUserCreate(userCreate);
  63. msReport.setTimeCreate(DateTime.now());
  64. msReport.setUserUpdate(userCreate);
  65. msReport.setTimeUpdate(DateTime.now());
  66. msReportMapper.insert(msReport);
  67. reportId = msReport.getReportId();
  68. } else {
  69. reportId = listReport.get(0).getReportId();
  70. }
  71. //判断是否疑似
  72. Integer suspectedStatus = 0;
  73. //确诊
  74. if (medical == 1)
  75. suspectedStatus = 1;
  76. //隔离
  77. if (singleRoom == 1)
  78. suspectedStatus = 1;
  79. //体温
  80. if (Conv.NFloat(temperature) < Conv.NFloat(35) || Conv.NFloat(temperature) > Conv.NFloat(37.3))
  81. suspectedStatus = 1;
  82. //咳嗽
  83. if (cough > 0)
  84. suspectedStatus = 1;
  85. //肌肉酸痛
  86. if (muscle > 0)
  87. suspectedStatus = 1;
  88. //呼吸困难
  89. if (dyspnea > 0)
  90. suspectedStatus = 1;
  91. //乏力
  92. if (fatigue > 0)
  93. suspectedStatus = 1;
  94. //腹泻
  95. if (diarrhea > 0)
  96. suspectedStatus = 1;
  97. if (suspectedId == 0L) {
  98. //判断家人是否同名
  99. List<MsSuspected> list = msSuspectedMapper.selectUserNameNum(reportId, userName, reportDate);
  100. if (list != null && list.size() > 0)
  101. return 2L;
  102. //判断是否评估
  103. if (scoreRezult == 0) {
  104. MsSuspected msSuspected1 = msSuspectedService.getScore(0L, userName, medical, temperature, cough, muscle, dyspnea, fatigue, diarrhea, userCreate);
  105. if (msSuspected1 != null) {
  106. scoreRezult = msSuspected1.getScoreRezult();
  107. score = msSuspected1.getScore();
  108. temperatureScore = msSuspected1.getTemperatureScore();
  109. scoreHistroy = msSuspected1.getScoreHistroy();
  110. }
  111. }
  112. MsSuspected msSuspected = new MsSuspected();
  113. msSuspected.setSuspectedId(IdWorker.getId());
  114. msSuspected.setReportId(reportId);
  115. msSuspected.setUserName(userName);
  116. msSuspected.setGrender(grender);//默认为家人
  117. msSuspected.setAge(age);
  118. msSuspected.setFamilyStatus(familyStatus);
  119. msSuspected.setStatusDesp(statusDesp);
  120. msSuspected.setMedical(medical);
  121. msSuspected.setTemperature(temperature);
  122. msSuspected.setCough(cough);
  123. msSuspected.setMuscle(muscle);
  124. msSuspected.setDiarrhea(dyspnea);
  125. msSuspected.setFatigue(fatigue);
  126. msSuspected.setDiarrhea(diarrhea);
  127. msSuspected.setSingleRoom(singleRoom);
  128. msSuspected.setOthers(others);
  129. msSuspected.setSuspectedStatus(suspectedStatus);
  130. msSuspected.setScoreRezult(scoreRezult);
  131. msSuspected.setScore(score);
  132. msSuspected.setScoreHistroy(scoreHistroy);
  133. msSuspected.setTemperatureScore(temperatureScore);
  134. msSuspected.setUserCreate(userCreate);
  135. msSuspected.setTimeCreate(DateTime.now());
  136. msSuspected.setUserUpdate(userCreate);
  137. msSuspected.setTimeUpdate(DateTime.now());
  138. msSuspectedMapper.insert(msSuspected);
  139. //添加出行
  140. if (todayLocal > 0 && workLocal > 0) {
  141. MsTrip msTrip = new MsTrip();
  142. msTrip.setTripId(msSuspected.getSuspectedId());
  143. msTrip.setIsTrip(isTrip);
  144. msTrip.setTodayLocal(todayLocal);
  145. msTrip.setTodayLocalOther(todayLocalOther);
  146. msTrip.setWorkLocal(workLocal);
  147. msTrip.setWorkLocalOther(workLocalOther);
  148. msTripMapper.insert(msTrip);
  149. //添加出行详细
  150. if (listTripDet != null && listTripDet.size() > 0) {
  151. for (MsTripDet msTripDet : listTripDet) {
  152. MsTripDet msTripDet1 = new MsTripDet();
  153. msTripDet1.setTripDetId(IdWorker.getId());
  154. msTripDet1.setTripId(msSuspected.getSuspectedId());
  155. msTripDet1.setSort(msTripDet.getSort());
  156. msTripDet1.setStartLocal(msTripDet.getStartLocal());
  157. msTripDet1.setStartLocalOther(msTripDet.getStartLocalOther());
  158. msTripDet1.setEndLocal(msTripDet.getEndLocal());
  159. msTripDet1.setEndLocalOther(msTripDet.getEndLocalOther());
  160. msTripDet1.setTripType(msTripDet.getTripType());
  161. msTripDet1.setTripTypeDesp(msTripDet.getTripTypeDesp());
  162. msTripDet1.setTimeCreate(DateTime.now());
  163. msTripDet1.setUserCreate(userCreate);
  164. msTripDet1.setTimeUpdate(DateTime.now());
  165. msTripDet1.setUserUpdate(userCreate);
  166. msTripDetMapper.insert(msTripDet1);
  167. }
  168. }
  169. }
  170. //更新今日日报,直接上报
  171. msSuspectedService.updateReport(reportId, medical, singleRoom, temperature);
  172. } else {
  173. //判断家人是否同名
  174. List<MsSuspected> list = msSuspectedMapper.selectUserNameNum(reportId, userName, reportDate);
  175. if (list != null && list.size() > 0) {
  176. if (list.size() > 1)
  177. return 2L;
  178. else {
  179. if (list.get(0).getSuspectedId().longValue() != suspectedId.longValue())
  180. return 2L;
  181. }
  182. }
  183. MsSuspected msSuspected2 = msSuspectedService.getScore(suspectedId, userName, medical, temperature, cough, muscle, dyspnea, fatigue, diarrhea, userCreate);
  184. if (msSuspected2 != null) {
  185. scoreRezult = msSuspected2.getScoreRezult();
  186. score = msSuspected2.getScore();
  187. temperatureScore = msSuspected2.getTemperatureScore();
  188. scoreHistroy = msSuspected2.getScoreHistroy();
  189. }
  190. MsSuspected msSuspected1 = msSuspectedMapper.selectById(suspectedId);
  191. if (msSuspected1 != null) {
  192. msSuspected1.setUserName(userName);
  193. msSuspected1.setGrender(grender);//默认为家人
  194. msSuspected1.setAge(age);
  195. msSuspected1.setFamilyStatus(familyStatus);
  196. msSuspected1.setStatusDesp(statusDesp);
  197. msSuspected1.setMedical(medical);
  198. msSuspected1.setTemperature(temperature);
  199. msSuspected1.setCough(cough);
  200. msSuspected1.setMuscle(muscle);
  201. msSuspected1.setDiarrhea(dyspnea);
  202. msSuspected1.setFatigue(fatigue);
  203. msSuspected1.setDiarrhea(diarrhea);
  204. msSuspected1.setSingleRoom(singleRoom);
  205. msSuspected1.setOthers(others);
  206. msSuspected1.setScoreRezult(scoreRezult);
  207. msSuspected1.setScore(score);
  208. msSuspected1.setScoreHistroy(scoreHistroy);
  209. msSuspected1.setTemperatureScore(temperatureScore);
  210. msSuspected1.setSuspectedStatus(suspectedStatus);
  211. msSuspectedMapper.updateById(msSuspected1);
  212. }
  213. //编辑行程
  214. MsTrip msTrip = msTripMapper.selectById(suspectedId);
  215. if (msTrip != null) {
  216. msTrip.setWorkLocalOther(workLocalOther);
  217. msTrip.setWorkLocal(workLocal);
  218. msTrip.setTodayLocalOther(todayLocalOther);
  219. msTrip.setTodayLocal(todayLocal);
  220. msTrip.setIsTrip(isTrip);
  221. msTripMapper.updateById(msTrip);
  222. } else {
  223. msTrip = new MsTrip();
  224. msTrip.setTripId(suspectedId);
  225. msTrip.setIsTrip(isTrip);
  226. msTrip.setTodayLocal(todayLocal);
  227. msTrip.setTodayLocalOther(todayLocalOther);
  228. msTrip.setWorkLocal(workLocal);
  229. msTrip.setWorkLocalOther(workLocalOther);
  230. msTripMapper.insert(msTrip);
  231. }
  232. //删除行程详细
  233. msTripDetMapper.deleteByTripId(suspectedId);
  234. //添加出行详细
  235. if (listTripDet != null && listTripDet.size() > 0) {
  236. for (MsTripDet msTripDet : listTripDet) {
  237. MsTripDet msTripDet1 = new MsTripDet();
  238. msTripDet1.setTripDetId(IdWorker.getId());
  239. msTripDet1.setTripId(suspectedId);
  240. msTripDet1.setSort(msTripDet.getSort());
  241. msTripDet1.setStartLocal(msTripDet.getStartLocal());
  242. msTripDet1.setStartLocalOther(msTripDet.getStartLocalOther());
  243. msTripDet1.setEndLocal(msTripDet.getEndLocal());
  244. msTripDet1.setEndLocalOther(msTripDet.getEndLocalOther());
  245. msTripDet1.setTripType(msTripDet.getTripType());
  246. msTripDet1.setTripTypeDesp(msTripDet.getTripTypeDesp());
  247. msTripDet1.setTimeCreate(DateTime.now());
  248. msTripDet1.setUserCreate(userCreate);
  249. msTripDet1.setTimeUpdate(DateTime.now());
  250. msTripDet1.setUserUpdate(userCreate);
  251. msTripDetMapper.insert(msTripDet1);
  252. }
  253. }
  254. //更新今日日报,直接上报
  255. msSuspectedService.updateReport(reportId, medical, singleRoom, temperature);
  256. //是领域
  257. UptownUnit unit = uptownUnitMapper.getUptownUnitByUser(userCreate);
  258. if (unit != null) {
  259. if (unit.getUptownId() == 1238790987234L || unit.getUptownId() == 5) {
  260. Integer rezuitNum = msReportService.addReportLy(reportId,suspectedId,userCreate);
  261. if (rezuitNum == 4)
  262. reportId = 4L;
  263. }
  264. }
  265. }
  266. return reportId;
  267. }
  268. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  269. public Integer deleteTrip(Long suspectedId) {
  270. msTripDetMapper.deleteByTripId(suspectedId);
  271. msTripMapper.deleteById(suspectedId);
  272. return 0;
  273. }
  274. //上报
  275. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  276. public Integer addReportTest(Long userCreate, String reportDate) {
  277. List<MsReport> listReport = msReportMapper.selectByReportDate(reportDate, userCreate);
  278. if (listReport == null || listReport.size() == 0)
  279. return 0;
  280. //判断体温是否填写
  281. List<MsSuspected> listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport.get(0).getReportId().toString()));
  282. if (listSuspected == null || listSuspected.size() == 0)
  283. return 3;
  284. else {
  285. for (MsSuspected msSuspected : listSuspected) {
  286. //体温是否填写
  287. if (msSuspected.getTemperature().compareTo(new BigDecimal(0)) == 0)
  288. return 2;
  289. //如果是凌云,判断出行是否填写异常
  290. UptownUnit unit = uptownUnitMapper.getUptownUnitByUser(userCreate);
  291. if (unit != null) {
  292. if (unit.getUptownId() == 1238790987234L || unit.getUptownId() == 5) {
  293. //上一天的上报记录.3天内
  294. List<MsSuspected> listSuspected1 = msSuspectedMapper.selectNext3Suspected(userCreate);
  295. if (listSuspected1 != null && listSuspected1.size() > 0) {
  296. if (listSuspected1.get(0).getTodayLocal() != 0 && msSuspected.getTodayLocal() != 0) {
  297. if (listSuspected1.get(0).getTodayLocalOther() != msSuspected.getTodayLocalOther() && listSuspected1.get(0).getTodayLocal() != msSuspected.getTodayLocal() && msSuspected.getIsTrip() == 0) {
  298. return 4;
  299. }
  300. }
  301. }
  302. }
  303. }
  304. }
  305. }
  306. MsReport msReport = msReportMapper.selectById(Long.parseLong(listReport.get(0).getReportId().toString()));
  307. if (msReport != null) {
  308. msReport.setReportStatus(1);
  309. msReport.setUserUpdate(userCreate);
  310. msReport.setTimeUpdate(DateTime.now());
  311. msReportMapper.updateById(msReport);
  312. }
  313. return 1;
  314. }
  315. }