package com.bofeng.service; import com.baomidou.mybatisplus.toolkit.IdWorker; import com.bofeng.dao.MsReportMapper; import com.bofeng.dao.MsSuspectedMapper; import com.bofeng.entity.MsReport; import com.bofeng.entity.MsSuspected; import com.bofeng.entity.MsTripDet; import com.bofeng.entity.UserOpen; import org.apache.commons.lang3.tuple.Triple; import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; /** * @Author: xielianghe * @Date: 2020/2/4 15:44 */ @Service @Transactional() public class MsReportService { @Autowired private MsSuspectedMapper msSuspectedMapper; @Autowired private MsReportMapper msReportMapper; @Autowired private MsReportService msReportService; @Autowired private MsSuspectedService msSuspectedService; public List getByReportId(Long reportId) { List listSuspected = null; listSuspected=msSuspectedMapper.selectByReportId(reportId); if (listSuspected != null && listSuspected.size() > 0) { String tripDet; for (MsSuspected msSuspected : listSuspected) { tripDet=""; //出行详细 List listDet = msSuspectedMapper.selectTripSuspected(msSuspected.getSuspectedId()); if (listDet != null && listDet.size() > 0) { for (MsTripDet msTripDet : listDet) { tripDet += "出发地:" + getLocalOther(msTripDet.getStartLocal(), msTripDet.getEndLocalOther()) + ","; tripDet += "目的地:" + getLocalOther(msTripDet.getEndLocal(), msTripDet.getEndLocalOther()) + ","; tripDet += "出行方式:" + getTripType(msTripDet.getTripType()) + ","; tripDet += "车次/航班/车牌:" + msTripDet.getTripTypeDesp() + ","; } msSuspected.setTripDet(tripDet.substring(0, tripDet.length() - 1)); } } } return listSuspected ; } public MsReport getByReport(Long reportId) { return msReportMapper.selectById(reportId); } //获取前一天数据 public List getByReportReportDate(String reportDate, Long userCreate) { List listReport = msReportMapper.selectByReportDate(reportDate, userCreate); List listSuspected = null; if (listReport != null && listReport.size() > 0) { listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport.get(0).getReportId().toString())); if (listSuspected != null && listSuspected.size() > 0) { String tripDet; for (MsSuspected msSuspected : listSuspected) { tripDet=""; //出行详细 List listDet = msSuspectedMapper.selectTripSuspected(msSuspected.getSuspectedId()); if (listDet != null && listDet.size() > 0) { for (MsTripDet msTripDet : listDet) { tripDet += "出发地:" + getLocalOther(msTripDet.getStartLocal(), msTripDet.getEndLocalOther()) + ","; tripDet += "目的地:" + getLocalOther(msTripDet.getEndLocal(), msTripDet.getEndLocalOther()) + ","; tripDet += "出行方式:" + getTripType(msTripDet.getTripType()) + ","; tripDet += "车次/航班/车牌:" + msTripDet.getTripTypeDesp() + ","; } msSuspected.setTripDet(tripDet.substring(0, tripDet.length() - 1)); } } } } return listSuspected; } public String getLocalOther(Integer local, String localOther) { String localDet = ""; if (local == 1) { localDet = "武汉"; } else if (local == 2) localDet = "宜昌"; else if (local == 3) localDet = "当阳"; else if (local == 4) localDet = localOther; return localDet; } public String getTripType(Integer tripType) { String tripTypeDet = ""; if (tripType == 1) { tripTypeDet = "长途汽车"; } else if (tripType == 2) tripTypeDet = "火车"; else if (tripType == 3) tripTypeDet = "飞机"; else if (tripType == 4) tripTypeDet = "自驾"; return tripTypeDet; } //获取今天数据 public MsReport getReportByDateNow(Long userCreate) { //根据昨天的获取今天的 // msReportService.getNowByYesterday(userCreate); //msReportService.getNowByYesterdayDate(); //msReportService.addReport250(); Date t = new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String reportDate = df.format(t); List listReport = msReportMapper.selectByReportDate(reportDate, userCreate); MsReport msReport = new MsReport(); if (listReport != null && listReport.size() > 0) { msReport = msReportMapper.selectById(Long.parseLong(listReport.get(0).getReportId().toString())); } return msReport; } //上报 @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public Integer addReport(Long userCreate) { Date t = new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String reportDate = df.format(t); List listReport = msReportMapper.selectByReportDate(reportDate, userCreate); if (listReport == null || listReport.size() == 0) return 0; //判断体温是否填写 List listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport.get(0).getReportId().toString())); if (listSuspected == null || listSuspected.size() == 0) return 3; else { for (MsSuspected msSuspected : listSuspected) { if (msSuspected.getTemperature().compareTo(new BigDecimal(0)) == 0) return 2; } } MsReport msReport = msReportMapper.selectById(Long.parseLong(listReport.get(0).getReportId().toString())); if (msReport != null) { msReport.setReportStatus(1); msReport.setUserUpdate(userCreate); msReport.setTimeUpdate(DateTime.now()); msReportMapper.updateById(msReport); } return 1; } //通过昨天数据更新今天数据 @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public void getNowByYesterday(Long userCreate) { SimpleDateFormat sj = new SimpleDateFormat("yyyy-MM-dd"); Date d = new Date(); //判断今天是否有数据 String DateNow = sj.format(d); List listReport = msReportMapper.selectByReportDate(DateNow, userCreate); if (listReport != null && listReport.size() > 0) return; //判断昨天是否有数据 Calendar calendar = Calendar.getInstance(); calendar.setTime(d); calendar.add(Calendar.DATE, -1); String reportDate = sj.format(calendar.getTime()); List listReport1 = msReportMapper.selectByReportDate(reportDate, userCreate); //有数据 if (listReport1 != null && listReport1.size() > 0) { //添加到今天日报 MsReport msReport = msReportMapper.selectById(Long.parseLong(listReport1.get(0).getReportId().toString())); Long reportId = 0L; if (msReport != null) { MsReport msReport1 = new MsReport(); msReport1.setReportId(IdWorker.getId()); msReport1.setHouseId(msReport.getHouseId()); msReport1.setSafetyNum(msReport.getSafetyNum()); msReport1.setSureNum(msReport.getSureNum()); msReport1.setSuspectedNum(msReport.getSuspectedNum()); msReport1.setNormalNum(msReport.getNormalNum()); msReport1.setSingleNum(msReport.getSingleNum()); msReport1.setRemarks(msReport.getRemarks()); msReport1.setReportDate(DateTime.now().toDate()); msReport1.setReportStatus(0);//未上报 msReport1.setMsStatus(msReport.getMsStatus()); msReport1.setUserCreate(userCreate); msReport1.setTimeCreate(DateTime.now()); msReport1.setUserUpdate(userCreate); msReport1.setTimeUpdate(DateTime.now()); msReportMapper.insert(msReport1); reportId = msReport1.getReportId(); } //添加今日家庭 List listSuspected = msSuspectedMapper.selectByReportId(Long.parseLong(listReport1.get(0).getReportId().toString())); if (listSuspected != null && listSuspected.size() > 0) { for (MsSuspected msSuspected : listSuspected) { MsSuspected msSuspected1 = new MsSuspected(); msSuspected1.setSuspectedId(IdWorker.getId()); msSuspected1.setReportId(reportId); msSuspected1.setUserName(msSuspected.getUserName()); msSuspected1.setGrender(msSuspected.getGrender()); msSuspected1.setAge(msSuspected.getAge()); msSuspected1.setFamilyStatus(msSuspected.getFamilyStatus()); msSuspected1.setStatusDesp(msSuspected.getStatusDesp()); msSuspected1.setMedical(msSuspected.getMedical()); msSuspected1.setTemperature(new BigDecimal(0)); msSuspected1.setCough(msSuspected.getCough()); msSuspected1.setMuscle(msSuspected.getMuscle()); msSuspected1.setDiarrhea(msSuspected.getDiarrhea()); msSuspected1.setFatigue(msSuspected.getFatigue()); msSuspected1.setDiarrhea(msSuspected.getDiarrhea()); msSuspected1.setSingleRoom(msSuspected.getSingleRoom()); msSuspected1.setOthers(msSuspected.getOthers()); // msSuspected1.setScoreRezult(msSuspected.getScoreRezult()); // msSuspected1.setScore(msSuspected.getScore()); // msSuspected1.setScoreHistroy(msSuspected.getScoreHistroy()); // msSuspected1.setTemperatureScore(msSuspected.getTemperatureScore()); msSuspected1.setSuspectedStatus(0); msSuspected1.setUserCreate(userCreate); msSuspected1.setTimeCreate(DateTime.now()); msSuspected1.setUserUpdate(userCreate); msSuspected1.setTimeUpdate(DateTime.now()); msSuspectedMapper.insert(msSuspected1); } } } } //自动将用户最新的数据更新到今天 @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public void getNowByYesterdayDate() { //每次执行100条 Long start = 0L, count = 100L; while (true) { //今天以前一共有多少用户 List listUser = msReportMapper.getUserByYesterdayDate(start, count); if (listUser != null && listUser.size() > 0) { for (Long userCreate : listUser) { //判断用户今天是否有数据 SimpleDateFormat sj = new SimpleDateFormat("yyyy-MM-dd"); Date d = new Date(); String DateNow = sj.format(d); List listReport = msReportMapper.selectByReportDate(DateNow, userCreate); if (listReport != null && listReport.size() > 0) continue; //查询改用户今天以前的最近一条记录 List listReport1 = msReportMapper.getNowByYesterdayDate(userCreate); if (listReport1 != null && listReport1.size() > 0) { for (MsReport msReport : listReport1) { if (msReport != null) { //添加日报 MsReport msReport1 = new MsReport(); msReport1.setReportId(IdWorker.getId()); msReport1.setHouseId(msReport.getHouseId()); msReport1.setSafetyNum(msReport.getSafetyNum()); msReport1.setSureNum(msReport.getSureNum()); msReport1.setSuspectedNum(msReport.getSuspectedNum()); msReport1.setNormalNum(msReport.getNormalNum()); msReport1.setSingleNum(msReport.getSingleNum()); msReport1.setRemarks(msReport.getRemarks()); msReport1.setReportDate(DateTime.now().toDate()); msReport1.setReportStatus(0);//未上报 msReport1.setMsStatus(msReport.getMsStatus()); msReport1.setUserCreate(msReport.getUserCreate()); msReport1.setTimeCreate(DateTime.now()); msReport1.setUserUpdate(msReport.getUserCreate()); msReport1.setTimeUpdate(DateTime.now()); msReportMapper.insert(msReport1); //添加家人 List listSuspected = msSuspectedMapper.selectByReportId(msReport.getReportId()); if (listSuspected != null && listSuspected.size() > 0) { for (MsSuspected msSuspected : listSuspected) { MsSuspected msSuspected1 = new MsSuspected(); msSuspected1.setSuspectedId(IdWorker.getId()); msSuspected1.setReportId(msReport1.getReportId()); msSuspected1.setUserName(msSuspected.getUserName()); msSuspected1.setGrender(msSuspected.getGrender()); msSuspected1.setAge(msSuspected.getAge()); msSuspected1.setFamilyStatus(msSuspected.getFamilyStatus()); msSuspected1.setStatusDesp(msSuspected.getStatusDesp()); msSuspected1.setMedical(msSuspected.getMedical()); msSuspected1.setTemperature(new BigDecimal(0));//温度0 msSuspected1.setCough(msSuspected.getCough()); msSuspected1.setMuscle(msSuspected.getMuscle()); msSuspected1.setDiarrhea(msSuspected.getDiarrhea()); msSuspected1.setFatigue(msSuspected.getFatigue()); msSuspected1.setDiarrhea(msSuspected.getDiarrhea()); msSuspected1.setSingleRoom(msSuspected.getSingleRoom()); msSuspected1.setOthers(msSuspected.getOthers()); // msSuspected1.setScoreRezult(msSuspected.getScoreRezult()); // msSuspected1.setScore(msSuspected.getScore()); // msSuspected1.setScoreHistroy(msSuspected.getScoreHistroy()); // msSuspected1.setTemperatureScore(msSuspected.getTemperatureScore()); msSuspected1.setSuspectedStatus(0); msSuspected1.setUserCreate(msSuspected.getUserCreate()); msSuspected1.setTimeCreate(DateTime.now()); msSuspected1.setUserUpdate(msSuspected.getUserUpdate()); msSuspected1.setTimeUpdate(DateTime.now()); msSuspectedMapper.insert(msSuspected1); } } } } } } } start += count; if (listUser == null || listUser.size() < count) { break; } } } //添加250条记录 @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public void addReport250() { //每次执行100条 Long count = 0L; while (true) { //添加日报 MsReport msReport1 = new MsReport(); msReport1.setReportId(IdWorker.getId()); msReport1.setHouseId(0L); msReport1.setSafetyNum(0); msReport1.setSureNum(0); msReport1.setSuspectedNum(0); msReport1.setNormalNum(0); msReport1.setSingleNum(0); msReport1.setRemarks(""); msReport1.setReportDate(DateTime.now().toDate()); msReport1.setReportStatus(0);//未上报 msReport1.setMsStatus(0); msReport1.setUserCreate(count); msReport1.setTimeCreate(DateTime.now()); msReport1.setUserUpdate(count); msReport1.setTimeUpdate(DateTime.now()); count += msReportMapper.insert(msReport1); if (count > 250) { break; } } } }