MsReportService.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  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.entity.MsReport;
  6. import com.bofeng.entity.MsSuspected;
  7. import com.bofeng.entity.MsTripDet;
  8. import com.bofeng.entity.UserOpen;
  9. import org.apache.commons.lang3.tuple.Triple;
  10. import org.joda.time.DateTime;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Propagation;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import java.math.BigDecimal;
  16. import java.text.SimpleDateFormat;
  17. import java.util.Calendar;
  18. import java.util.Date;
  19. import java.util.List;
  20. /**
  21. * @Author: xielianghe
  22. * @Date: 2020/2/4 15:44
  23. */
  24. @Service
  25. @Transactional()
  26. public class MsReportService {
  27. @Autowired
  28. private MsSuspectedMapper msSuspectedMapper;
  29. @Autowired
  30. private MsReportMapper msReportMapper;
  31. @Autowired
  32. private MsReportService msReportService;
  33. @Autowired
  34. private MsSuspectedService msSuspectedService;
  35. public List<MsSuspected> getByReportId(Long reportId) {
  36. List<MsSuspected> listSuspected = null;
  37. listSuspected=msSuspectedMapper.selectByReportId(reportId);
  38. if (listSuspected != null && listSuspected.size() > 0) {
  39. String tripDet;
  40. for (MsSuspected msSuspected : listSuspected) {
  41. tripDet="";
  42. //出行详细
  43. List<MsTripDet> listDet = msSuspectedMapper.selectTripSuspected(msSuspected.getSuspectedId());
  44. if (listDet != null && listDet.size() > 0) {
  45. for (MsTripDet msTripDet : listDet) {
  46. tripDet += "出发地:" + getLocalOther(msTripDet.getStartLocal(), msTripDet.getEndLocalOther()) + ",";
  47. tripDet += "目的地:" + getLocalOther(msTripDet.getEndLocal(), msTripDet.getEndLocalOther()) + ",";
  48. tripDet += "出行方式:" + getTripType(msTripDet.getTripType()) + ",";
  49. tripDet += "车次/航班/车牌:" + msTripDet.getTripTypeDesp() + ",";
  50. }
  51. msSuspected.setTripDet(tripDet.substring(0, tripDet.length() - 1));
  52. }
  53. }
  54. }
  55. return listSuspected ;
  56. }
  57. public MsReport getByReport(Long reportId) {
  58. return msReportMapper.selectById(reportId);
  59. }
  60. //获取前一天数据
  61. public List<MsSuspected> getByReportReportDate(String reportDate, Long userCreate) {
  62. List<MsReport> listReport = msReportMapper.selectByReportDate(reportDate, userCreate);
  63. List<MsSuspected> listSuspected = null;
  64. if (listReport != null && listReport.size() > 0) {
  65. listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport.get(0).getReportId().toString()));
  66. if (listSuspected != null && listSuspected.size() > 0) {
  67. String tripDet;
  68. for (MsSuspected msSuspected : listSuspected) {
  69. tripDet="";
  70. //出行详细
  71. List<MsTripDet> listDet = msSuspectedMapper.selectTripSuspected(msSuspected.getSuspectedId());
  72. if (listDet != null && listDet.size() > 0) {
  73. for (MsTripDet msTripDet : listDet) {
  74. tripDet += "出发地:" + getLocalOther(msTripDet.getStartLocal(), msTripDet.getEndLocalOther()) + ",";
  75. tripDet += "目的地:" + getLocalOther(msTripDet.getEndLocal(), msTripDet.getEndLocalOther()) + ",";
  76. tripDet += "出行方式:" + getTripType(msTripDet.getTripType()) + ",";
  77. tripDet += "车次/航班/车牌:" + msTripDet.getTripTypeDesp() + ",";
  78. }
  79. msSuspected.setTripDet(tripDet.substring(0, tripDet.length() - 1));
  80. }
  81. }
  82. }
  83. }
  84. return listSuspected;
  85. }
  86. public String getLocalOther(Integer local, String localOther) {
  87. String localDet = "";
  88. if (local == 1) {
  89. localDet = "武汉";
  90. } else if (local == 2)
  91. localDet = "宜昌";
  92. else if (local == 3)
  93. localDet = "当阳";
  94. else if (local == 4)
  95. localDet = localOther;
  96. return localDet;
  97. }
  98. public String getTripType(Integer tripType) {
  99. String tripTypeDet = "";
  100. if (tripType == 1) {
  101. tripTypeDet = "长途汽车";
  102. } else if (tripType == 2)
  103. tripTypeDet = "火车";
  104. else if (tripType == 3)
  105. tripTypeDet = "飞机";
  106. else if (tripType == 4)
  107. tripTypeDet = "自驾";
  108. return tripTypeDet;
  109. }
  110. //获取今天数据
  111. public MsReport getReportByDateNow(Long userCreate) {
  112. //根据昨天的获取今天的
  113. // msReportService.getNowByYesterday(userCreate);
  114. //msReportService.getNowByYesterdayDate();
  115. //msReportService.addReport250();
  116. Date t = new Date();
  117. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  118. String reportDate = df.format(t);
  119. List<MsReport> listReport = msReportMapper.selectByReportDate(reportDate, userCreate);
  120. MsReport msReport = new MsReport();
  121. if (listReport != null && listReport.size() > 0) {
  122. msReport = msReportMapper.selectById(Long.parseLong(listReport.get(0).getReportId().toString()));
  123. }
  124. return msReport;
  125. }
  126. //上报
  127. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  128. public Integer addReport(Long userCreate) {
  129. Date t = new Date();
  130. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  131. String reportDate = df.format(t);
  132. List<MsReport> listReport = msReportMapper.selectByReportDate(reportDate, userCreate);
  133. if (listReport == null || listReport.size() == 0)
  134. return 0;
  135. //判断体温是否填写
  136. List<MsSuspected> listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport.get(0).getReportId().toString()));
  137. if (listSuspected == null || listSuspected.size() == 0)
  138. return 3;
  139. else {
  140. for (MsSuspected msSuspected : listSuspected) {
  141. if (msSuspected.getTemperature().compareTo(new BigDecimal(0)) == 0)
  142. return 2;
  143. }
  144. }
  145. MsReport msReport = msReportMapper.selectById(Long.parseLong(listReport.get(0).getReportId().toString()));
  146. if (msReport != null) {
  147. msReport.setReportStatus(1);
  148. msReport.setUserUpdate(userCreate);
  149. msReport.setTimeUpdate(DateTime.now());
  150. msReportMapper.updateById(msReport);
  151. }
  152. return 1;
  153. }
  154. //通过昨天数据更新今天数据
  155. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  156. public void getNowByYesterday(Long userCreate) {
  157. SimpleDateFormat sj = new SimpleDateFormat("yyyy-MM-dd");
  158. Date d = new Date();
  159. //判断今天是否有数据
  160. String DateNow = sj.format(d);
  161. List<MsReport> listReport = msReportMapper.selectByReportDate(DateNow, userCreate);
  162. if (listReport != null && listReport.size() > 0)
  163. return;
  164. //判断昨天是否有数据
  165. Calendar calendar = Calendar.getInstance();
  166. calendar.setTime(d);
  167. calendar.add(Calendar.DATE, -1);
  168. String reportDate = sj.format(calendar.getTime());
  169. List<MsReport> listReport1 = msReportMapper.selectByReportDate(reportDate, userCreate);
  170. //有数据
  171. if (listReport1 != null && listReport1.size() > 0) {
  172. //添加到今天日报
  173. MsReport msReport = msReportMapper.selectById(Long.parseLong(listReport1.get(0).getReportId().toString()));
  174. Long reportId = 0L;
  175. if (msReport != null) {
  176. MsReport msReport1 = new MsReport();
  177. msReport1.setReportId(IdWorker.getId());
  178. msReport1.setHouseId(msReport.getHouseId());
  179. msReport1.setSafetyNum(msReport.getSafetyNum());
  180. msReport1.setSureNum(msReport.getSureNum());
  181. msReport1.setSuspectedNum(msReport.getSuspectedNum());
  182. msReport1.setNormalNum(msReport.getNormalNum());
  183. msReport1.setSingleNum(msReport.getSingleNum());
  184. msReport1.setRemarks(msReport.getRemarks());
  185. msReport1.setReportDate(DateTime.now().toDate());
  186. msReport1.setReportStatus(0);//未上报
  187. msReport1.setMsStatus(msReport.getMsStatus());
  188. msReport1.setUserCreate(userCreate);
  189. msReport1.setTimeCreate(DateTime.now());
  190. msReport1.setUserUpdate(userCreate);
  191. msReport1.setTimeUpdate(DateTime.now());
  192. msReportMapper.insert(msReport1);
  193. reportId = msReport1.getReportId();
  194. }
  195. //添加今日家庭
  196. List<MsSuspected> listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport1.get(0).getReportId().toString()));
  197. if (listSuspected != null && listSuspected.size() > 0) {
  198. for (MsSuspected msSuspected : listSuspected) {
  199. MsSuspected msSuspected1 = new MsSuspected();
  200. msSuspected1.setSuspectedId(IdWorker.getId());
  201. msSuspected1.setReportId(reportId);
  202. msSuspected1.setUserName(msSuspected.getUserName());
  203. msSuspected1.setGrender(msSuspected.getGrender());
  204. msSuspected1.setAge(msSuspected.getAge());
  205. msSuspected1.setFamilyStatus(msSuspected.getFamilyStatus());
  206. msSuspected1.setStatusDesp(msSuspected.getStatusDesp());
  207. msSuspected1.setMedical(msSuspected.getMedical());
  208. msSuspected1.setTemperature(new BigDecimal(0));
  209. msSuspected1.setCough(msSuspected.getCough());
  210. msSuspected1.setMuscle(msSuspected.getMuscle());
  211. msSuspected1.setDiarrhea(msSuspected.getDiarrhea());
  212. msSuspected1.setFatigue(msSuspected.getFatigue());
  213. msSuspected1.setDiarrhea(msSuspected.getDiarrhea());
  214. msSuspected1.setSingleRoom(msSuspected.getSingleRoom());
  215. msSuspected1.setOthers(msSuspected.getOthers());
  216. // msSuspected1.setScoreRezult(msSuspected.getScoreRezult());
  217. // msSuspected1.setScore(msSuspected.getScore());
  218. // msSuspected1.setScoreHistroy(msSuspected.getScoreHistroy());
  219. // msSuspected1.setTemperatureScore(msSuspected.getTemperatureScore());
  220. msSuspected1.setSuspectedStatus(0);
  221. msSuspected1.setUserCreate(userCreate);
  222. msSuspected1.setTimeCreate(DateTime.now());
  223. msSuspected1.setUserUpdate(userCreate);
  224. msSuspected1.setTimeUpdate(DateTime.now());
  225. msSuspectedMapper.insert(msSuspected1);
  226. }
  227. }
  228. }
  229. }
  230. //自动将用户最新的数据更新到今天
  231. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  232. public void getNowByYesterdayDate() {
  233. //每次执行100条
  234. Long start = 0L, count = 100L;
  235. while (true) {
  236. //今天以前一共有多少用户
  237. List<Long> listUser = msReportMapper.getUserByYesterdayDate(start, count);
  238. if (listUser != null && listUser.size() > 0) {
  239. for (Long userCreate : listUser) {
  240. //判断用户今天是否有数据
  241. SimpleDateFormat sj = new SimpleDateFormat("yyyy-MM-dd");
  242. Date d = new Date();
  243. String DateNow = sj.format(d);
  244. List<MsReport> listReport = msReportMapper.selectByReportDate(DateNow, userCreate);
  245. if (listReport != null && listReport.size() > 0)
  246. continue;
  247. //查询改用户今天以前的最近一条记录
  248. List<MsReport> listReport1 = msReportMapper.getNowByYesterdayDate(userCreate);
  249. if (listReport1 != null && listReport1.size() > 0) {
  250. for (MsReport msReport : listReport1) {
  251. if (msReport != null) {
  252. //添加日报
  253. MsReport msReport1 = new MsReport();
  254. msReport1.setReportId(IdWorker.getId());
  255. msReport1.setHouseId(msReport.getHouseId());
  256. msReport1.setSafetyNum(msReport.getSafetyNum());
  257. msReport1.setSureNum(msReport.getSureNum());
  258. msReport1.setSuspectedNum(msReport.getSuspectedNum());
  259. msReport1.setNormalNum(msReport.getNormalNum());
  260. msReport1.setSingleNum(msReport.getSingleNum());
  261. msReport1.setRemarks(msReport.getRemarks());
  262. msReport1.setReportDate(DateTime.now().toDate());
  263. msReport1.setReportStatus(0);//未上报
  264. msReport1.setMsStatus(msReport.getMsStatus());
  265. msReport1.setUserCreate(msReport.getUserCreate());
  266. msReport1.setTimeCreate(DateTime.now());
  267. msReport1.setUserUpdate(msReport.getUserCreate());
  268. msReport1.setTimeUpdate(DateTime.now());
  269. msReportMapper.insert(msReport1);
  270. //添加家人
  271. List<MsSuspected> listSuspected = msSuspectedMapper.selectByReportId(msReport.getReportId());
  272. if (listSuspected != null && listSuspected.size() > 0) {
  273. for (MsSuspected msSuspected : listSuspected) {
  274. MsSuspected msSuspected1 = new MsSuspected();
  275. msSuspected1.setSuspectedId(IdWorker.getId());
  276. msSuspected1.setReportId(msReport1.getReportId());
  277. msSuspected1.setUserName(msSuspected.getUserName());
  278. msSuspected1.setGrender(msSuspected.getGrender());
  279. msSuspected1.setAge(msSuspected.getAge());
  280. msSuspected1.setFamilyStatus(msSuspected.getFamilyStatus());
  281. msSuspected1.setStatusDesp(msSuspected.getStatusDesp());
  282. msSuspected1.setMedical(msSuspected.getMedical());
  283. msSuspected1.setTemperature(new BigDecimal(0));//温度0
  284. msSuspected1.setCough(msSuspected.getCough());
  285. msSuspected1.setMuscle(msSuspected.getMuscle());
  286. msSuspected1.setDiarrhea(msSuspected.getDiarrhea());
  287. msSuspected1.setFatigue(msSuspected.getFatigue());
  288. msSuspected1.setDiarrhea(msSuspected.getDiarrhea());
  289. msSuspected1.setSingleRoom(msSuspected.getSingleRoom());
  290. msSuspected1.setOthers(msSuspected.getOthers());
  291. // msSuspected1.setScoreRezult(msSuspected.getScoreRezult());
  292. // msSuspected1.setScore(msSuspected.getScore());
  293. // msSuspected1.setScoreHistroy(msSuspected.getScoreHistroy());
  294. // msSuspected1.setTemperatureScore(msSuspected.getTemperatureScore());
  295. msSuspected1.setSuspectedStatus(0);
  296. msSuspected1.setUserCreate(msSuspected.getUserCreate());
  297. msSuspected1.setTimeCreate(DateTime.now());
  298. msSuspected1.setUserUpdate(msSuspected.getUserUpdate());
  299. msSuspected1.setTimeUpdate(DateTime.now());
  300. msSuspectedMapper.insert(msSuspected1);
  301. }
  302. }
  303. }
  304. }
  305. }
  306. }
  307. }
  308. start += count;
  309. if (listUser == null || listUser.size() < count) {
  310. break;
  311. }
  312. }
  313. }
  314. //添加250条记录
  315. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  316. public void addReport250() {
  317. //每次执行100条
  318. Long count = 0L;
  319. while (true) {
  320. //添加日报
  321. MsReport msReport1 = new MsReport();
  322. msReport1.setReportId(IdWorker.getId());
  323. msReport1.setHouseId(0L);
  324. msReport1.setSafetyNum(0);
  325. msReport1.setSureNum(0);
  326. msReport1.setSuspectedNum(0);
  327. msReport1.setNormalNum(0);
  328. msReport1.setSingleNum(0);
  329. msReport1.setRemarks("");
  330. msReport1.setReportDate(DateTime.now().toDate());
  331. msReport1.setReportStatus(0);//未上报
  332. msReport1.setMsStatus(0);
  333. msReport1.setUserCreate(count);
  334. msReport1.setTimeCreate(DateTime.now());
  335. msReport1.setUserUpdate(count);
  336. msReport1.setTimeUpdate(DateTime.now());
  337. count += msReportMapper.insert(msReport1);
  338. if (count > 250) {
  339. break;
  340. }
  341. }
  342. }
  343. }