123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- package com.bofeng.service;
- import com.baomidou.mybatisplus.toolkit.IdWorker;
- import com.bofeng.dao.*;
- import com.bofeng.entity.*;
- import lombok.SneakyThrows;
- import org.gavaghan.geodesy.Ellipsoid;
- import org.gavaghan.geodesy.GeodeticCalculator;
- import org.gavaghan.geodesy.GlobalCoordinates;
- 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.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.List;
- @Service
- @Transactional(readOnly = true)
- public class ScanService {
- @Autowired
- private OutScanMapper outScanMapper;
- @Autowired
- private OutScanEstateMapper outScanEstateMapper;
- @Autowired
- private UserOpenMapper userOpenMapper;
- @Autowired
- private OutUserMapper outUserMapper;
- @Autowired
- private MsReportMapper msReportMapper;
- @Autowired
- private ReturnWorkLyMapper returnWorkLyMapper;
- @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
- public void saveOutScan(Long userId, Integer inType, String coord, String address, Long uptownId, Long doorId, Integer status, String errorInfo) {
- String longitude = "";
- String latitude = "";
- if (!"".equals(coord)) {
- String[] coor = coord.split(",");
- longitude = coor[0];
- latitude = coor[1];
- }
- OutScan outScan = new OutScan();
- outScan.setScanId(IdWorker.getId());
- outScan.setUserId(userId);
- outScan.setUptownId(uptownId);
- outScan.setDoorId(doorId);
- outScan.setInType(inType);
- outScan.setDayDate(new Date());
- outScan.setDate(new DateTime());
- outScan.setLongitude(longitude);
- outScan.setLatitude(latitude);
- outScan.setAddress(address);
- outScan.setGoStatus(status);
- outScan.setErrorInfo(errorInfo);
- outScan.setUserCreate(userId);
- outScan.setUserUpdate(userId);
- outScanMapper.insert(outScan);
- }
- @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
- public void saveOutScanEstate(Long userId, Integer status, String errorInfo) {
- OutScanEstate o = new OutScanEstate();
- o.setSeId(IdWorker.getId());
- o.setUserId(userId);
- o.setDayDate(new Date());
- o.setScanDate(new DateTime());
- o.setGoStatus(status);
- o.setErrorInfo(errorInfo);
- o.setUserCreate(userId);
- o.setUserUpdate(userId);
- outScanEstateMapper.insert(o);
- }
- /**
- * 根据经纬度查询距离
- *
- * @param longitudeFrom
- * @param latitudeFrom
- * @param longitudeTo
- * @param latitudeTo
- * @return
- */
- public double getDistance(double longitudeFrom, double latitudeFrom, double longitudeTo, double latitudeTo) {
- GlobalCoordinates source = new GlobalCoordinates(latitudeFrom, longitudeFrom);
- GlobalCoordinates target = new GlobalCoordinates(latitudeTo, longitudeTo);
- return new GeodeticCalculator().calculateGeodeticCurve(Ellipsoid.Sphere, source, target).getEllipsoidalDistance();
- }
- /**
- * 复工导出
- * @param unitId
- */
- @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
- public void returnWorkLY(Long unitId) {
- new Runnable() {
- @SneakyThrows
- @Override
- public void run() {
- returnWorkLyMapper.deleteReturnWork();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
- List<UserOpen> opens = userOpenMapper.getUsersByunitId(1238790987234L, unitId);
- ReturnWorkLy r = new ReturnWorkLy();
- for (int i = 0; i < opens.size(); i++) {
- OutUser outUser1 = outUserMapper.getOutUserByPhone(4, opens.get(i).getLinkman(), Long.parseLong(opens.get(i).getPhone()));
- if (outUser1 != null) {
- continue;
- }
- OutUser outUser = outUserMapper.getOutUserByPhone(1, opens.get(i).getLinkman(), Long.parseLong(opens.get(i).getPhone()));
- if (outUser != null) {
- r.setRwId(IdWorker.getId());
- r.setUserId(opens.get(i).getUserId());
- r.setTimeCreate(new DateTime());
- returnWorkLyMapper.insert(r);
- continue;
- }
- Boolean ly2 = false;
- String startDate = "";
- int intSize = 3;
- OutUser outUser2 = outUserMapper.getOutUserByPhoneNotTime(5, opens.get(i).getLinkman(), Long.parseLong(opens.get(i).getPhone()));
- if (outUser2 != null) {
- ly2 = true;
- startDate = s.format(outUser2.getStartDate());
- Long day = (new Date().getTime() - outUser2.getStartDate().getTime()) / (1000 * 60 * 60 * 24) -1;
- intSize = Integer.parseInt(Long.toString(day)) < 3 ? Integer.parseInt(Long.toString(day)) : 3;
- }
- MsReport msReport = msReportMapper.queryMsReportIsXG(opens.get(i).getUserId());
- if (msReport != null) {
- if (ly2 && outUser2.getStartDate().getTime() < msReport.getReportDate().getTime()) {
- continue;
- } else if (!ly2) {
- continue;
- }
- }
- List<MsReport> msReportList = msReportMapper.queryMsReportIsXGHome(opens.get(i).getUserId());
- if (msReportList.size() > 0) {
- if (ly2 && outUser2.getStartDate().getTime() < msReportList.get(0).getReportDate().getTime()) {
- continue;
- } else if (!ly2) {
- continue;
- }
- }
- List<MsReport> msReports = msReportMapper.selectMsReportLate(opens.get(i).getUserId(), startDate);
- if (msReports.size() < intSize) {
- continue;
- }
- List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(opens.get(i).getUserId(), startDate);
- if (msReports2.size() > 0) {
- continue;
- }
- List<MsReport> msReports3 = msReportMapper.selectMsReportThereErrorFamily(opens.get(i).getUserId(), startDate);
- if (msReports3.size() > 0) {
- continue;
- }
- // MsTripDet work = msReportMapper.returnWork(opens.get(i).getUserId());
- // if (work != null) {
- // if (ly2 && outUser2.getStartDate().getTime() < s.parse(work.getReturnWork()).getTime()) {
- // if (sdf.parse(work.getReturnWork() + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
- // continue;
- // }
- // } else if (!ly2) {
- // if (sdf.parse(work.getReturnWork() + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
- // continue;
- // }
- // }
- // }
- // MsReport msReport1 = msReportMapper.msAddr(opens.get(i).getUserId());
- // if (msReport1 != null &&msReport1.getWorkMsg() != null &&msReport1.getTodayMsg() != null && !msReport1.getWorkMsg().equals(msReport1.getTodayMsg()) && !compareWhere(msReport1.getWorkMsg(), msReport1.getTodayMsg())) {
- // continue;
- // }
- r.setRwId(IdWorker.getId());
- r.setUserId(opens.get(i).getUserId());
- r.setTimeCreate(new DateTime());
- returnWorkLyMapper.insert(r);
- }
- }
- }.run();
- }
- /**
- * 页面复工检索
- */
- public int returnWorkLYlist(Long userId, String linkman, String phone, String workAddr) throws ParseException {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
- OutUser outUser1 = outUserMapper.getOutUserByPhone(4, linkman, Long.parseLong(phone));
- if (outUser1 != null) {
- return 0;
- }
- OutUser outUser = outUserMapper.getOutUserByPhone(1, linkman, Long.parseLong(phone));
- if (outUser != null) {
- // 六类
- return 1;
- }
- Boolean ly2 = false;
- String startDate = "";
- int intSize = 3;
- OutUser outUser2 = outUserMapper.getOutUserByPhoneNotTime(5, linkman, Long.parseLong(phone));
- if (outUser2 != null) {
- ly2 = true;
- startDate = s.format(outUser2.getStartDate());
- Long day = (new Date().getTime() - outUser2.getStartDate().getTime()) / (1000 * 60 * 60 * 24) -1;
- intSize = Integer.parseInt(Long.toString(day)) < 3 ? Integer.parseInt(Long.toString(day)) : 3;
- }
- MsReport msReport = msReportMapper.queryMsReportIsXG(userId);
- if (msReport != null) {
- if (ly2 && outUser2.getStartDate().getTime() < msReport.getReportDate().getTime()) {
- return 0;
- } else if (!ly2) {
- return 0;
- }
- }
- List<MsReport> msReportList = msReportMapper.queryMsReportIsXGHome(userId);
- if (msReportList.size() > 0) {
- if (ly2 && outUser2.getStartDate().getTime() < msReportList.get(0).getReportDate().getTime()) {
- return 0;
- } else if (!ly2) {
- return 0;
- }
- }
- List<MsReport> msReports = msReportMapper.selectMsReportLate(userId, startDate);
- if (msReports.size() < intSize) {
- return 0;
- }
- List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userId, startDate);
- if (msReports2.size() > 0) {
- return 0;
- }
- List<MsReport> msReports3 = msReportMapper.selectMsReportThereErrorFamily(userId, startDate);
- if (msReports3.size() > 0) {
- return 0;
- }
- List<MsReport> msReports4 = msReportMapper.selectMsReportThirtyError(userId);
- if (msReports4.size() > 0) {
- return 0;
- }
- MsReport msReport1 = msReportMapper.msAddr(userId);
- if (msReport1 != null && !msReport1.getAutoLocal().equals(workAddr)) {
- return 0;
- }
- // MsTripDet work = msReportMapper.returnWork(userId);
- // if (work != null) {
- // if (ly2 && outUser2.getStartDate().getTime() < s.parse(work.getReturnWork()).getTime()) {
- // if (sdf.parse(work.getReturnWork() + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
- // return 0;
- // }
- // } else if (!ly2) {
- // if (sdf.parse(work.getReturnWork() + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
- // return 0;
- // }
- // }
- // }
- // MsReport msReport1 = msReportMapper.msAddr(userId);
- // if (msReport1 != null &&msReport1.getWorkMsg() != null &&msReport1.getTodayMsg() != null && !msReport1.getWorkMsg().equals(msReport1.getTodayMsg()) && !compareWhere(msReport1.getWorkMsg(), msReport1.getTodayMsg())) {
- // return 0;
- // }
- return 1;
- }
- /**
- * 比较出发地和目地地是否一样, 一样返回true,不一样返回false
- */
- public Boolean compareWhere(String str1, String str2) {
- Boolean type = false;
- if ((str1.equals("2") || str1.equals("3")) && (str2.equals("2") || str2.equals("3"))) {
- type = true;
- }
- return type;
- }
- }
|