MsReportService.java 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777
  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 io.swagger.models.auth.In;
  7. import javassist.expr.NewArray;
  8. import org.apache.commons.lang3.tuple.Triple;
  9. import org.joda.time.DateTime;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.transaction.annotation.Propagation;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import org.springframework.web.servlet.ModelAndView;
  15. import java.math.BigDecimal;
  16. import java.text.ParseException;
  17. import java.text.SimpleDateFormat;
  18. import java.util.*;
  19. /**
  20. * @Author: xielianghe
  21. * @Date: 2020/2/4 15:44
  22. */
  23. @Service
  24. @Transactional()
  25. public class MsReportService {
  26. @Autowired
  27. private MsSuspectedMapper msSuspectedMapper;
  28. @Autowired
  29. private MsReportMapper msReportMapper;
  30. @Autowired
  31. private MsReportService msReportService;
  32. @Autowired
  33. private MsTripDetMapper msTripDetMapper;
  34. @Autowired
  35. private MsTripMapper msTripMapper;
  36. @Autowired
  37. private UptownUnitMapper uptownUnitMapper;
  38. public List<MsSuspected> getByReportId(Long reportId) {
  39. List<MsSuspected> listSuspected = null;
  40. listSuspected = msSuspectedMapper.selectByReportId(reportId);
  41. if (listSuspected != null && listSuspected.size() > 0) {
  42. String tripDet;
  43. for (MsSuspected msSuspected : listSuspected) {
  44. tripDet = "";
  45. //出行详细
  46. List<MsTripDet> listDet = msSuspectedMapper.selectTripSuspected(msSuspected.getSuspectedId());
  47. if (listDet != null && listDet.size() > 0) {
  48. for (MsTripDet msTripDet : listDet) {
  49. tripDet += "出发地:" + getLocalOther(msTripDet.getStartLocal(), msTripDet.getStartLocalOther()) + ",";
  50. tripDet += "目的地:" + getLocalOther(msTripDet.getEndLocal(), msTripDet.getEndLocalOther()) + ",";
  51. tripDet += "出行方式:" + getTripType(msTripDet.getTripType()) + ",";
  52. tripDet += "车次/航班/车牌:" + msTripDet.getTripTypeDesp() + ",";
  53. }
  54. msSuspected.setTripDet(tripDet.substring(0, tripDet.length() - 1));
  55. }
  56. }
  57. }
  58. return listSuspected;
  59. }
  60. public MsReport getByReport(Long reportId) {
  61. return msReportMapper.selectById(reportId);
  62. }
  63. //获取前一天数据
  64. public List<MsSuspected> getByReportReportDate(String reportDate, Long userCreate) {
  65. List<MsReport> listReport = msReportMapper.selectByReportDate(reportDate, userCreate);
  66. List<MsSuspected> listSuspected = null;
  67. if (listReport != null && listReport.size() > 0) {
  68. listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport.get(0).getReportId().toString()));
  69. if (listSuspected != null && listSuspected.size() > 0) {
  70. String tripDet;
  71. for (MsSuspected msSuspected : listSuspected) {
  72. tripDet = "";
  73. //出行详细
  74. List<MsTripDet> listDet = msSuspectedMapper.selectTripSuspected(msSuspected.getSuspectedId());
  75. if (listDet != null && listDet.size() > 0) {
  76. for (MsTripDet msTripDet : listDet) {
  77. tripDet += "出发地:" + getLocalOther(msTripDet.getStartLocal(), msTripDet.getStartLocalOther()) + ",";
  78. tripDet += "目的地:" + getLocalOther(msTripDet.getEndLocal(), msTripDet.getEndLocalOther()) + ",";
  79. tripDet += "出行方式:" + getTripType(msTripDet.getTripType()) + ",";
  80. tripDet += "车次/航班/车牌:" + msTripDet.getTripTypeDesp() + ",";
  81. }
  82. msSuspected.setTripDet(tripDet.substring(0, tripDet.length() - 1));
  83. }
  84. }
  85. }
  86. }
  87. return listSuspected;
  88. }
  89. //获取日历前一天数据
  90. public List<MsSuspected> getByReportReportDateStatus(String reportDate, Long userCreate) {
  91. List<MsReport> listReport = msReportMapper.selectByReportDateStatus(reportDate, userCreate);
  92. List<MsSuspected> listSuspected = null;
  93. if (listReport != null && listReport.size() > 0) {
  94. listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport.get(0).getReportId().toString()));
  95. if (listSuspected != null && listSuspected.size() > 0) {
  96. String tripDet;
  97. for (MsSuspected msSuspected : listSuspected) {
  98. tripDet = "";
  99. //出行详细
  100. List<MsTripDet> listDet = msSuspectedMapper.selectTripSuspected(msSuspected.getSuspectedId());
  101. if (listDet != null && listDet.size() > 0) {
  102. for (MsTripDet msTripDet : listDet) {
  103. tripDet += "出发地:" + getLocalOther(msTripDet.getStartLocal(), msTripDet.getStartLocalOther()) + ",";
  104. tripDet += "目的地:" + getLocalOther(msTripDet.getEndLocal(), msTripDet.getEndLocalOther()) + ",";
  105. tripDet += "出行方式:" + getTripType(msTripDet.getTripType()) + ",";
  106. tripDet += "车次/航班/车牌:" + msTripDet.getTripTypeDesp() + ",";
  107. }
  108. msSuspected.setTripDet(tripDet.substring(0, tripDet.length() - 1));
  109. }
  110. }
  111. }
  112. }
  113. return listSuspected;
  114. }
  115. public String getLocalOther(Integer local, String localOther) {
  116. String localDet = "";
  117. if (local == 1) {
  118. localDet = "武汉市";
  119. } else if (local == 2)
  120. localDet = "宜昌市";
  121. else if (local == 3)
  122. localDet = "当阳市";
  123. else if (local == 4)
  124. localDet = "其它地点_" + localOther;
  125. return localDet;
  126. }
  127. public String getTripType(Integer tripType) {
  128. String tripTypeDet = "";
  129. if (tripType == 1) {
  130. tripTypeDet = "长途汽车";
  131. } else if (tripType == 2)
  132. tripTypeDet = "火车";
  133. else if (tripType == 3)
  134. tripTypeDet = "飞机";
  135. else if (tripType == 4)
  136. tripTypeDet = "自驾";
  137. return tripTypeDet;
  138. }
  139. //获取今天数据
  140. public MsReport getReportByDateNow(Long userCreate) {
  141. //根据昨天的获取今天的
  142. //msReportService.getNowByYesterday(userCreate);
  143. //msReportService.getNowByYesterdayDate();
  144. //msReportService.addReport250();
  145. Date t = new Date();
  146. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  147. String reportDate = df.format(t);
  148. List<MsReport> listReport = msReportMapper.selectByReportDate(reportDate, userCreate);
  149. MsReport msReport = new MsReport();
  150. //今天不存在
  151. if (listReport == null || listReport.size() == 0) {
  152. //最近一天数据复制到今天
  153. msReportService.getNowByNextDat(userCreate);
  154. List<MsReport> listReport1 = msReportMapper.selectByReportDate(reportDate, userCreate);
  155. //今天不存在
  156. if (listReport1 != null && listReport1.size() > 0)
  157. msReport = msReportMapper.selectById(Long.parseLong(listReport1.get(0).getReportId().toString()));
  158. } else {
  159. msReport = msReportMapper.selectById(Long.parseLong(listReport.get(0).getReportId().toString()));
  160. }
  161. return msReport;
  162. }
  163. //上报
  164. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  165. public Integer addReport(Long userCreate) {
  166. Date t = new Date();
  167. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  168. String reportDate = df.format(t);
  169. List<MsReport> listReport = msReportMapper.selectByReportDate(reportDate, userCreate);
  170. if (listReport == null || listReport.size() == 0)
  171. return 0;
  172. //判断体温是否填写
  173. List<MsSuspected> listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport.get(0).getReportId().toString()));
  174. if (listSuspected == null || listSuspected.size() == 0)
  175. return 3;
  176. // if (unit != null) {
  177. // if (unit.getUptownId() == 1238790987234L || unit.getUptownId() == 5) {
  178. // if (listSuspected != null && listSuspected.size() > 1)
  179. // return 5;
  180. // }
  181. // }
  182. else {
  183. for (MsSuspected msSuspected : listSuspected) {
  184. //体温是否填写
  185. if (msSuspected.getTemperature().compareTo(new BigDecimal(0)) == 0)
  186. return 2;
  187. //如果是凌云,判断出行是否填写异常
  188. UptownUnit unit = uptownUnitMapper.getUptownUnitByUser(userCreate);
  189. if (unit != null) {
  190. if (unit.getUptownId() == 1238790987234L || unit.getUptownId() == 5) {
  191. //上一天的上报记录.3天内
  192. List<MsSuspected> listSuspected1 = msSuspectedMapper.selectNext3Suspected(userCreate);
  193. if (listSuspected1 != null && listSuspected1.size() == 1) {
  194. if (listSuspected1.get(0).getTodayLocal() != null && msSuspected.getTodayLocal() != null && msSuspected.getIsTrip() != null && listSuspected1.get(0).getTodayLocal() != 0 && msSuspected.getTodayLocal() != 0) {
  195. if (listSuspected1.get(0).getTodayLocalOther() != msSuspected.getTodayLocalOther() && listSuspected1.get(0).getTodayLocal() != msSuspected.getTodayLocal() && msSuspected.getIsTrip() == 0) {
  196. return 4;
  197. }
  198. }
  199. }
  200. }
  201. }
  202. }
  203. }
  204. MsReport msReport = msReportMapper.selectById(Long.parseLong(listReport.get(0).getReportId().toString()));
  205. if (msReport != null) {
  206. msReport.setReportStatus(1);
  207. msReport.setUserUpdate(userCreate);
  208. msReport.setTimeUpdate(DateTime.now());
  209. msReportMapper.updateById(msReport);
  210. }
  211. return 1;
  212. }
  213. //ly修改上报
  214. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  215. public Integer addReportLy(Long reportId, Long suspectedId, Long userCreate) {
  216. //如果是凌云,判断出行是否填写异常
  217. MsTrip msTrip = msTripMapper.selectById(suspectedId);
  218. if (msTrip != null) {
  219. //上一天的上报记录.3天内
  220. List<MsSuspected> listSuspected1 = msSuspectedMapper.selectNext3Suspected(userCreate);
  221. if (listSuspected1 != null && listSuspected1.size() == 1) {
  222. if (listSuspected1.get(0).getTodayLocal() != null && msTrip.getTodayLocal() != null && msTrip.getIsTrip() != null && listSuspected1.get(0).getTodayLocal() != 0 && msTrip.getTodayLocal() != 0) {
  223. if (listSuspected1.get(0).getTodayLocalOther() != msTrip.getTodayLocalOther() && listSuspected1.get(0).getTodayLocal() != msTrip.getTodayLocal() && msTrip.getIsTrip() == 0) {
  224. return 4;
  225. }
  226. }
  227. }
  228. MsReport msReport = msReportMapper.selectById(reportId);
  229. if (msReport != null) {
  230. msReport.setReportStatus(1);
  231. msReport.setUserUpdate(userCreate);
  232. msReport.setTimeUpdate(DateTime.now());
  233. msReportMapper.updateById(msReport);
  234. }
  235. }
  236. return 1;
  237. }
  238. //通过昨天数据更新今天数据
  239. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  240. public void getNowByYesterday(Long userCreate) {
  241. SimpleDateFormat sj = new SimpleDateFormat("yyyy-MM-dd");
  242. Date d = new Date();
  243. //判断今天是否有数据
  244. String DateNow = sj.format(d);
  245. List<MsReport> listReport = msReportMapper.selectByReportDate(DateNow, userCreate);
  246. if (listReport != null && listReport.size() > 0)
  247. return;
  248. //判断昨天是否有数据
  249. Calendar calendar = Calendar.getInstance();
  250. calendar.setTime(d);
  251. calendar.add(Calendar.DATE, -1);
  252. String reportDate = sj.format(calendar.getTime());
  253. List<MsReport> listReport1 = msReportMapper.selectByReportDate(reportDate, userCreate);
  254. //有数据
  255. if (listReport1 != null && listReport1.size() > 0) {
  256. //添加到今天日报
  257. MsReport msReport = msReportMapper.selectById(Long.parseLong(listReport1.get(0).getReportId().toString()));
  258. Long reportId = 0L;
  259. if (msReport != null) {
  260. MsReport msReport1 = new MsReport();
  261. msReport1.setReportId(IdWorker.getId());
  262. msReport1.setHouseId(msReport.getHouseId());
  263. msReport1.setSafetyNum(msReport.getSafetyNum());
  264. msReport1.setSureNum(msReport.getSureNum());
  265. msReport1.setSuspectedNum(msReport.getSuspectedNum());
  266. msReport1.setNormalNum(msReport.getNormalNum());
  267. msReport1.setSingleNum(msReport.getSingleNum());
  268. msReport1.setRemarks(msReport.getRemarks());
  269. msReport1.setReportDate(DateTime.now().toDate());
  270. msReport1.setReportStatus(0);//未上报
  271. msReport1.setMsStatus(msReport.getMsStatus());
  272. msReport1.setUserCreate(userCreate);
  273. msReport1.setTimeCreate(DateTime.now());
  274. msReport1.setUserUpdate(userCreate);
  275. msReport1.setTimeUpdate(DateTime.now());
  276. msReportMapper.insert(msReport1);
  277. reportId = msReport1.getReportId();
  278. }
  279. //添加今日家庭
  280. List<MsSuspected> listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport1.get(0).getReportId().toString()));
  281. if (listSuspected != null && listSuspected.size() > 0) {
  282. for (MsSuspected msSuspected : listSuspected) {
  283. MsSuspected msSuspected1 = new MsSuspected();
  284. msSuspected1.setSuspectedId(IdWorker.getId());
  285. msSuspected1.setReportId(reportId);
  286. msSuspected1.setUserName(msSuspected.getUserName());
  287. msSuspected1.setGrender(msSuspected.getGrender());
  288. msSuspected1.setAge(msSuspected.getAge());
  289. msSuspected1.setFamilyStatus(msSuspected.getFamilyStatus());
  290. msSuspected1.setStatusDesp(msSuspected.getStatusDesp());
  291. msSuspected1.setMedical(msSuspected.getMedical());
  292. msSuspected1.setTemperature(new BigDecimal(0));
  293. msSuspected1.setCough(msSuspected.getCough());
  294. msSuspected1.setMuscle(msSuspected.getMuscle());
  295. msSuspected1.setDyspnea(msSuspected.getDyspnea());
  296. msSuspected1.setFatigue(msSuspected.getFatigue());
  297. msSuspected1.setDiarrhea(msSuspected.getDiarrhea());
  298. msSuspected1.setSingleRoom(msSuspected.getSingleRoom());
  299. msSuspected1.setOthers(msSuspected.getOthers());
  300. // msSuspected1.setScoreRezult(msSuspected.getScoreRezult());
  301. // msSuspected1.setScore(msSuspected.getScore());
  302. // msSuspected1.setScoreHistroy(msSuspected.getScoreHistroy());
  303. // msSuspected1.setTemperatureScore(msSuspected.getTemperatureScore());
  304. msSuspected1.setSuspectedStatus(0);
  305. msSuspected1.setUserCreate(userCreate);
  306. msSuspected1.setTimeCreate(DateTime.now());
  307. msSuspected1.setUserUpdate(userCreate);
  308. msSuspected1.setTimeUpdate(DateTime.now());
  309. msSuspectedMapper.insert(msSuspected1);
  310. }
  311. }
  312. }
  313. }
  314. //自动将用户最新的数据更新到今天
  315. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  316. public void getNowByYesterdayDate() {
  317. //每次执行100条
  318. Long start = 0L, count = 100L;
  319. while (true) {
  320. //今天以前一共有多少用户
  321. List<Long> listUser = msReportMapper.getUserByYesterdayDate(start, count);
  322. if (listUser != null && listUser.size() > 0) {
  323. for (Long userCreate : listUser) {
  324. //判断用户今天是否有数据
  325. SimpleDateFormat sj = new SimpleDateFormat("yyyy-MM-dd");
  326. Date d = new Date();
  327. String DateNow = sj.format(d);
  328. List<MsReport> listReport = msReportMapper.selectByReportDate(DateNow, userCreate);
  329. if (listReport != null && listReport.size() > 0)
  330. continue;
  331. //查询改用户今天以前的最近一条记录
  332. List<MsReport> listReport1 = msReportMapper.getNowByYesterdayDate(userCreate);
  333. if (listReport1 != null && listReport1.size() > 0) {
  334. for (MsReport msReport : listReport1) {
  335. if (msReport != null) {
  336. //添加日报
  337. MsReport msReport1 = new MsReport();
  338. msReport1.setReportId(IdWorker.getId());
  339. msReport1.setHouseId(msReport.getHouseId());
  340. msReport1.setSafetyNum(msReport.getSafetyNum());
  341. msReport1.setSureNum(msReport.getSureNum());
  342. msReport1.setSuspectedNum(msReport.getSuspectedNum());
  343. msReport1.setNormalNum(msReport.getNormalNum());
  344. msReport1.setSingleNum(msReport.getSingleNum());
  345. msReport1.setRemarks(msReport.getRemarks());
  346. msReport1.setReportDate(DateTime.now().toDate());
  347. msReport1.setReportStatus(0);//未上报
  348. msReport1.setMsStatus(msReport.getMsStatus());
  349. msReport1.setUserCreate(msReport.getUserCreate());
  350. msReport1.setTimeCreate(DateTime.now());
  351. msReport1.setUserUpdate(msReport.getUserCreate());
  352. msReport1.setTimeUpdate(DateTime.now());
  353. msReportMapper.insert(msReport1);
  354. //添加家人
  355. List<MsSuspected> listSuspected = msSuspectedMapper.selectByReportId(msReport.getReportId());
  356. if (listSuspected != null && listSuspected.size() > 0) {
  357. for (MsSuspected msSuspected : listSuspected) {
  358. MsSuspected msSuspected1 = new MsSuspected();
  359. msSuspected1.setSuspectedId(IdWorker.getId());
  360. msSuspected1.setReportId(msReport1.getReportId());
  361. msSuspected1.setUserName(msSuspected.getUserName());
  362. msSuspected1.setGrender(msSuspected.getGrender());
  363. msSuspected1.setAge(msSuspected.getAge());
  364. msSuspected1.setFamilyStatus(msSuspected.getFamilyStatus());
  365. msSuspected1.setStatusDesp(msSuspected.getStatusDesp());
  366. msSuspected1.setMedical(msSuspected.getMedical());
  367. msSuspected1.setTemperature(new BigDecimal(0));//温度0
  368. msSuspected1.setCough(msSuspected.getCough());
  369. msSuspected1.setMuscle(msSuspected.getMuscle());
  370. msSuspected1.setDyspnea(msSuspected.getDyspnea());
  371. msSuspected1.setFatigue(msSuspected.getFatigue());
  372. msSuspected1.setDiarrhea(msSuspected.getDiarrhea());
  373. msSuspected1.setSingleRoom(msSuspected.getSingleRoom());
  374. msSuspected1.setOthers(msSuspected.getOthers());
  375. // msSuspected1.setScoreRezult(msSuspected.getScoreRezult());
  376. // msSuspected1.setScore(msSuspected.getScore());
  377. // msSuspected1.setScoreHistroy(msSuspected.getScoreHistroy());
  378. // msSuspected1.setTemperatureScore(msSuspected.getTemperatureScore());
  379. msSuspected1.setSuspectedStatus(0);
  380. msSuspected1.setUserCreate(msSuspected.getUserCreate());
  381. msSuspected1.setTimeCreate(DateTime.now());
  382. msSuspected1.setUserUpdate(msSuspected.getUserUpdate());
  383. msSuspected1.setTimeUpdate(DateTime.now());
  384. msSuspectedMapper.insert(msSuspected1);
  385. }
  386. }
  387. }
  388. }
  389. }
  390. }
  391. }
  392. start += count;
  393. if (listUser == null || listUser.size() < count) {
  394. break;
  395. }
  396. }
  397. }
  398. //添加250条记录
  399. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  400. public void addReport250() {
  401. //每次执行100条
  402. Long count = 0L;
  403. while (true) {
  404. //添加日报
  405. MsReport msReport1 = new MsReport();
  406. msReport1.setReportId(IdWorker.getId());
  407. msReport1.setHouseId(0L);
  408. msReport1.setSafetyNum(0);
  409. msReport1.setSureNum(0);
  410. msReport1.setSuspectedNum(0);
  411. msReport1.setNormalNum(0);
  412. msReport1.setSingleNum(0);
  413. msReport1.setRemarks("");
  414. msReport1.setReportDate(DateTime.now().toDate());
  415. msReport1.setReportStatus(0);//未上报
  416. msReport1.setMsStatus(0);
  417. msReport1.setUserCreate(count);
  418. msReport1.setTimeCreate(DateTime.now());
  419. msReport1.setUserUpdate(count);
  420. msReport1.setTimeUpdate(DateTime.now());
  421. count += msReportMapper.insert(msReport1);
  422. if (count > 250) {
  423. break;
  424. }
  425. }
  426. }
  427. //通过最近一天数据更新今天数据
  428. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  429. public void getNowByNextDat(Long userCreate) {
  430. SimpleDateFormat sj = new SimpleDateFormat("yyyy-MM-dd");
  431. Date d = new Date();
  432. //判断今天是否有数据
  433. String DateNow = sj.format(d);
  434. List<MsReport> listReport = msReportMapper.selectByReportDate(DateNow, userCreate);
  435. if (listReport != null && listReport.size() > 0)
  436. return;
  437. UptownUnit unit = uptownUnitMapper.getUptownUnitByUser(userCreate);
  438. //判断最近一天是否有数据
  439. List<MsSuspected> listSuspected = msSuspectedMapper.selectNextSuspected(userCreate);
  440. //有数据
  441. if (listSuspected != null && listSuspected.size() > 0) {
  442. //添加到今天日报
  443. MsReport msReport = msReportMapper.selectById(Long.parseLong(listSuspected.get(0).getReportId().toString()));
  444. Long reportId = 0L;
  445. Long houseId = 0L;
  446. if (msReport != null) {
  447. MsReport msReport1 = new MsReport();
  448. msReport1.setReportId(IdWorker.getId());
  449. if (msReport.getHouseId().longValue() == 0L)
  450. houseId = msReportMapper.selectHouseIdByUserId(userCreate);
  451. else
  452. houseId = msReport.getHouseId();
  453. msReport1.setHouseId(houseId);
  454. msReport1.setSafetyNum(msReport.getSafetyNum());
  455. msReport1.setSureNum(msReport.getSureNum());
  456. msReport1.setSuspectedNum(msReport.getSuspectedNum());
  457. msReport1.setNormalNum(msReport.getNormalNum());
  458. msReport1.setSingleNum(msReport.getSingleNum());
  459. msReport1.setRemarks(msReport.getRemarks());
  460. msReport1.setReportDate(DateTime.now().toDate());
  461. msReport1.setReportStatus(0);//未上报
  462. msReport1.setMsStatus(msReport.getMsStatus());
  463. msReport1.setUserCreate(userCreate);
  464. msReport1.setTimeCreate(DateTime.now());
  465. msReport1.setUserUpdate(userCreate);
  466. msReport1.setTimeUpdate(DateTime.now());
  467. msReportMapper.insert(msReport1);
  468. reportId = msReport1.getReportId();
  469. }
  470. //添加今日家人
  471. for (MsSuspected msSuspected : listSuspected) {
  472. MsSuspected msSuspected1 = new MsSuspected();
  473. msSuspected1.setSuspectedId(IdWorker.getId());
  474. msSuspected1.setReportId(reportId);
  475. msSuspected1.setUserName(msSuspected.getUserName());
  476. msSuspected1.setGrender(msSuspected.getGrender());
  477. msSuspected1.setAge(msSuspected.getAge());
  478. msSuspected1.setFamilyStatus(msSuspected.getFamilyStatus());
  479. msSuspected1.setStatusDesp(msSuspected.getStatusDesp());
  480. msSuspected1.setMedical(msSuspected.getMedical());
  481. msSuspected1.setTemperature(new BigDecimal(0));
  482. msSuspected1.setCough(msSuspected.getCough());
  483. msSuspected1.setMuscle(msSuspected.getMuscle());
  484. msSuspected1.setDyspnea(msSuspected.getDyspnea());
  485. msSuspected1.setFatigue(msSuspected.getFatigue());
  486. msSuspected1.setDiarrhea(msSuspected.getDiarrhea());
  487. //如果是凌云的,不需要复制单间隔离
  488. if (unit != null) {
  489. if (unit.getUptownId() == 1238790987234L || unit.getUptownId() == 5)
  490. msSuspected1.setSingleRoom(0);
  491. } else
  492. msSuspected1.setSingleRoom(msSuspected.getSingleRoom());
  493. msSuspected1.setOthers(msSuspected.getOthers());
  494. // msSuspected1.setScoreRezult(msSuspected.getScoreRezult());
  495. // msSuspected1.setScore(msSuspected.getScore());
  496. // msSuspected1.setScoreHistroy(msSuspected.getScoreHistroy());
  497. // msSuspected1.setTemperatureScore(msSuspected.getTemperatureScore());
  498. msSuspected1.setIsContact(msSuspected.getIsContact());
  499. msSuspected1.setSuspectedStatus(0);
  500. msSuspected1.setUserCreate(userCreate);
  501. msSuspected1.setTimeCreate(DateTime.now());
  502. msSuspected1.setUserUpdate(userCreate);
  503. msSuspected1.setTimeUpdate(DateTime.now());
  504. msSuspectedMapper.insert(msSuspected1);
  505. //添加行程
  506. MsTrip msTrip = new MsTrip();
  507. msTrip.setTripId(msSuspected1.getSuspectedId());
  508. msTrip.setIsTrip(0);
  509. msTrip.setTodayLocal(msSuspected.getTodayLocal());
  510. msTrip.setTodayLocalOther(msSuspected.getTodayLocalOther());
  511. msTrip.setWorkLocal(msSuspected.getWorkLocal());
  512. msTrip.setWorkLocalOther(msSuspected.getWorkLocalOther());
  513. msTripMapper.insert(msTrip);
  514. //添加出行详细
  515. // List<MsTripDet> listTripDet = msSuspectedMapper.selectTripSuspected(msSuspected.getSuspectedId());
  516. // if (listTripDet != null && listTripDet.size() > 0) {
  517. // for (MsTripDet msTripDet : listTripDet) {
  518. // MsTripDet msTripDet1 = new MsTripDet();
  519. // msTripDet1.setTripDetId(IdWorker.getId());
  520. // msTripDet1.setTripId(msSuspected1.getSuspectedId());
  521. // msTripDet1.setSort(msTripDet.getSort());
  522. // msTripDet1.setStartLocal(msTripDet.getStartLocal());
  523. // msTripDet1.setStartLocalOther(msTripDet.getStartLocalOther());
  524. // msTripDet1.setEndLocal(msTripDet.getEndLocal());
  525. // msTripDet1.setEndLocalOther(msTripDet.getEndLocalOther());
  526. // msTripDet1.setTripType(msTripDet.getTripType());
  527. // msTripDet1.setTripTypeDesp(msTripDet.getTripTypeDesp());
  528. // msTripDet1.setTimeCreate(DateTime.now());
  529. // msTripDet1.setUserCreate(userCreate);
  530. // msTripDet1.setTimeUpdate(DateTime.now());
  531. // msTripDet1.setUserUpdate(userCreate);
  532. // msTripDetMapper.insert(msTripDet1);
  533. // }
  534. // }
  535. }
  536. }
  537. }
  538. //获取时间
  539. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  540. public String getTimeByDate(Integer numdate) {
  541. String reportDate = "";
  542. SimpleDateFormat sj = new SimpleDateFormat("yyyy-MM-dd");
  543. Date d = new Date();
  544. if (numdate == 0) {
  545. reportDate = sj.format(d);
  546. } else {
  547. Calendar calendar = Calendar.getInstance();
  548. calendar.setTime(d);
  549. calendar.add(Calendar.DATE, numdate);
  550. reportDate = sj.format(calendar.getTime());
  551. }
  552. return reportDate;
  553. }
  554. //获取温度
  555. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  556. public String getTemperature(Long userId, Integer numdate) {
  557. String temperature = "-";
  558. MsSuspected msSuspected = msReportMapper.select5ByReportrId(userId, getTimeByDate(numdate));
  559. if (msSuspected != null)
  560. temperature = msSuspected.getTemperature().toString();
  561. return temperature;
  562. }
  563. //后台专用
  564. public List<MsReport> getByReportReportDateTest(Long userCreate, Map<String, Object> queryParam) {
  565. Map<String, Object> mm = queryParam;
  566. queryParam.put("userCreate", userCreate);
  567. return msReportMapper.selectByReportDateTest(queryParam);
  568. }
  569. public List<MsSuspected> getByReportReportDateTestxq(Map<String, Object> queryParam) {
  570. List<MsSuspected> msReports = msReportMapper.selectByReportDateTestxq(queryParam);
  571. if (msReports.size() != 0) {
  572. for (int i = 0; i < msReports.size(); i++) {
  573. if (msReports.get(i).getWorkLocal() == 1) {
  574. msReports.get(i).setWorkLocalOtherStr("武汉市");
  575. } else if (msReports.get(i).getWorkLocal() == 2) {
  576. msReports.get(i).setWorkLocalOtherStr("宜昌市");
  577. } else if (msReports.get(i).getWorkLocal() == 3) {
  578. msReports.get(i).setWorkLocalOtherStr("当阳市");
  579. }
  580. if (msReports.get(i).getTodayLocal() == 1) {
  581. msReports.get(i).setTodayLocalOtherStr("武汉市");
  582. } else if (msReports.get(i).getTodayLocal() == 2) {
  583. msReports.get(i).setTodayLocalOtherStr("宜昌市");
  584. } else if (msReports.get(i).getTodayLocal() == 3) {
  585. msReports.get(i).setTodayLocalOtherStr("当阳市");
  586. }
  587. if (msReports.get(i).getEndLocal() != null) {
  588. if (msReports.get(i).getEndLocal() == 1) {
  589. msReports.get(i).setEndLocalOtherStr("武汉市");
  590. } else if (msReports.get(i).getEndLocal() == 2) {
  591. msReports.get(i).setEndLocalOtherStr("宜昌市");
  592. } else if (msReports.get(i).getEndLocal() == 3) {
  593. msReports.get(i).setEndLocalOtherStr("当阳市");
  594. }
  595. }
  596. if (msReports.get(i).getStartLocal() != null) {
  597. if (msReports.get(i).getStartLocal() == 1) {
  598. msReports.get(i).setStartLocalOtherStr("武汉市");
  599. } else if (msReports.get(i).getStartLocal() == 2) {
  600. msReports.get(i).setStartLocalOtherStr("宜昌市");
  601. } else if (msReports.get(i).getStartLocal() == 3) {
  602. msReports.get(i).setStartLocalOtherStr("当阳市");
  603. }
  604. }
  605. }
  606. }
  607. return msReports;
  608. }
  609. //统计LY异常情况
  610. public List<MsReport> getByReportSuspected() throws ParseException {
  611. //获取所有的ly人员
  612. List<MsReport> list = msReportMapper.selectByReportSuspected();
  613. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  614. SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
  615. List<MsReport> listReport = new ArrayList<>();
  616. if (list != null && list.size() > 0) {
  617. for (MsReport msReport : list) {
  618. //是否确诊
  619. Integer isSure = msReportMapper.selectNum(msReport.getUserId(), 1) > 0 ? 1 : 0;
  620. //是否疑似
  621. Integer isSuspected = msReportMapper.selectNum(msReport.getUserId(), 2) > 0 ? 1 : 0;
  622. //是否有异常症状
  623. String isSymptom = "";
  624. List<MsSuspected> listSuspected = msReportMapper.selectSymptomNum(msReport.getUserId());
  625. if (listSuspected != null && listSuspected.size() > 0) {
  626. for (MsSuspected msSuspected : listSuspected) {
  627. isSymptom += s.format(msSuspected.getReportDate().getTime()) + ",";
  628. if (Conv.NFloat(msSuspected.getTemperature()) < Conv.NFloat(35) || Conv.NFloat(msSuspected.getTemperature()) > Conv.NFloat(37.3))
  629. isSymptom += "体温:异常,";
  630. if (msSuspected.getCough() > 0)
  631. isSymptom += "咳嗽现象:" + getCough(msSuspected.getCough()) + ",";
  632. if (msSuspected.getMuscle() > 0)
  633. isSymptom += "肌肉酸痛:" + getMuscle(msSuspected.getMuscle()) + ",";
  634. if (msSuspected.getDyspnea() > 0)
  635. isSymptom += "呼吸困难:" + getDyspnea(msSuspected.getDyspnea()) + ",";
  636. if (msSuspected.getFatigue() > 0)
  637. isSymptom += "乏力现象:" + getFatigue(msSuspected.getFatigue()) + ",";
  638. if (msSuspected.getDiarrhea() > 0)
  639. isSymptom += "腹泻现象:" + getDiarrhea(msSuspected.getDiarrhea()) + ",";
  640. }
  641. }
  642. //是否有接触史
  643. Integer isContact = msReportMapper.selectNum(msReport.getUserId(), 3) > 0 ? 1 : 0;
  644. //家人是否有接触史
  645. Integer isFamliyContact = msReportMapper.selectFamilyContactNum(msReport.getUserId()) > 0 ? 1 : 0;
  646. //异地返工
  647. Integer isWork = 0;
  648. String returnWork = msReportMapper.returnWork(msReport.getUserId());
  649. if (returnWork != null) {
  650. if (sdf.parse(returnWork + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
  651. isWork = 1;
  652. }
  653. }
  654. //判断只要存在一种情况,就写进数据库
  655. if (isSure > 0 || isSuspected > 0 || isSymptom != "" || isContact > 0 || isFamliyContact > 0 || isWork > 0) {
  656. msReport.setIsSure(isSure);
  657. msReport.setIsSuspected(isSuspected);
  658. msReport.setIsSymptom(isSymptom);
  659. msReport.setIsContact(isContact);
  660. msReport.setIsFamliyContact(isFamliyContact);
  661. msReport.setIsWork(isWork);
  662. listReport.add(msReport);
  663. }
  664. }
  665. }
  666. return listReport;
  667. }
  668. public String getCough(Integer cough) {
  669. if (cough == 0)
  670. return "无咳嗽";
  671. else if (cough == 1)
  672. return "偶尔短暂咳嗽";
  673. else if (cough == 2)
  674. return "咳嗽轻度影响生活";
  675. else if (cough == 3)
  676. return "咳嗽严重影响生活";
  677. return "";
  678. }
  679. public String getMuscle(Integer muscle) {
  680. if (muscle == 0)
  681. return "无";
  682. else if (muscle == 1)
  683. return "按压有";
  684. else if (muscle == 2)
  685. return "偶尔";
  686. else if (muscle == 3)
  687. return "持续有";
  688. return "";
  689. }
  690. public String getDyspnea(Integer dyspnea) {
  691. if (dyspnea == 0)
  692. return "无";
  693. else if (dyspnea == 1)
  694. return "急走或上坡气短";
  695. else if (dyspnea == 2)
  696. return "气短而走路变慢";
  697. else if (dyspnea == 3)
  698. return "走路数分钟后气短";
  699. else if (dyspnea == 4)
  700. return "气短无法离开房间";
  701. return "";
  702. }
  703. public String getFatigue(Integer fatigue) {
  704. if (fatigue == 0)
  705. return "无";
  706. else if (fatigue == 1)
  707. return "体力劳动后不能恢复";
  708. else if (fatigue == 2)
  709. return "轻体力活非常累";
  710. else if (fatigue == 3)
  711. return "不能正常生活";
  712. return "";
  713. }
  714. public String getDiarrhea(Integer diarrhea) {
  715. if (diarrhea == 0)
  716. return "无";
  717. else if (diarrhea == 1)
  718. return "轻度腹泻(少于3次)";
  719. else if (diarrhea == 2)
  720. return "中度腹泻(4-6次)";
  721. else if (diarrhea == 3)
  722. return "重度腹泻(超过6次)";
  723. return "";
  724. }
  725. }