package com.ruoyi.app.patrolplan.service.impl; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper; import com.ruoyi.app.patrolplan.domain.ArdAppPatrolplan; import com.ruoyi.app.patrolplan.domain.ArdAppPatrolpointRecordImg; import com.ruoyi.app.patrolplan.domain.ArdAppPatroluser; import com.ruoyi.app.patrolplan.domain.param.*; import com.ruoyi.app.patrolplan.mapper.ArdAppPatrolplanMapper; import com.ruoyi.app.patrolplan.mapper.ArdAppPatrolpointRecordImgMapper; import com.ruoyi.app.patrolplan.mapper.ArdAppPatroluserMapper; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.utils.result.Results; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.app.patrolplan.mapper.ArdAppPatrolpointRecordMapper; import com.ruoyi.app.patrolplan.domain.ArdAppPatrolpointRecord; import com.ruoyi.app.patrolplan.service.IArdAppPatrolpointRecordService; import javax.annotation.Resource; import javax.xml.crypto.Data; /** * app巡检计划记录Service业务层处理 * * @author ard * @date 2023-08-02 */ @Service public class ArdAppPatrolpointRecordServiceImpl implements IArdAppPatrolpointRecordService { @Resource private ArdAppPatrolpointRecordMapper ardAppPatrolpointRecordMapper; @Resource private ArdAppPatrolpointRecordImgMapper recordImgMapper; @Resource private ArdAppPatrolplanMapper patrolplanMapper; @Resource private ArdAppPatroluserMapper userMapper; @Resource private SysUserMapper sysUserMapper; @Resource private ArdAlarmpointsWellMapper wellMapper; @Override public Results record(ArdAppPatrolpointRecord ardAppPatrolpointRecord) { String id = IdUtils.simpleUUID(); ardAppPatrolpointRecord.setId(id); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); //查询该用户今天的打卡数据 QueryWrapper recordQueryWrapper = new QueryWrapper<>(); recordQueryWrapper.eq("plan_id", ardAppPatrolpointRecord.getPlanId()) .like("record_time", dateFormat.format(new Date())) .eq("user_id",ardAppPatrolpointRecord.getUserId()); List recordList = ardAppPatrolpointRecordMapper.selectList(recordQueryWrapper); ardAppPatrolpointRecord.setPointsNum(recordList.size()+1); // int num = ardAppPatrolpointRecordMapper.insert(ardAppPatrolpointRecord); int num = ardAppPatrolpointRecordMapper.insertArdAppPatrolpointRecord(ardAppPatrolpointRecord); List list = ardAppPatrolpointRecord.getImg(); for (int i = 0; i < list.size(); i++) { ArdAppPatrolpointRecordImg recordImg = new ArdAppPatrolpointRecordImg(); String imgId = IdUtils.simpleUUID(); recordImg.setId(imgId); recordImg.setAppPatrolponitRecordId(id); recordImg.setImg(list.get(i)); recordImgMapper.insertArdAppPatrolpointRecordImg(recordImg); } if(num>0){ return Results.succeed("打卡成功!"); }else { return Results.error("打开失败!"); } } @Override public Results recordMonth(RecordMonthParam recordMonthParam) throws ParseException { //获取前端参数 String begin = recordMonthParam.getBegin(); String end = recordMonthParam.getEnd(); String planId = recordMonthParam.getPlanId(); //查询计划表 ArdAppPatrolplan ardAppPatrolplan = patrolplanMapper.selectById(planId); //查询出有效打卡数据 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.between("record_time",begin,end).eq("plan_id",planId); List list = ardAppPatrolpointRecordMapper.selectList(queryWrapper); //时间拆分 String[] parts = end.split("[-\\s:]"); int year = Integer.parseInt(parts[0]); int month = Integer.parseInt(parts[1]); int day = Integer.parseInt(parts[2]); String monthZero; if(month<10){ monthZero = String.format("%02d", month); }else { monthZero = String.valueOf(month); } JSONArray jsonArray = new JSONArray(); for (int i = 1; i <= day; i++) { String di; if(i<10){ di = String.format("%02d", i); }else { di = String.valueOf(i); } JSONObject jsonObject = new JSONObject(); Boolean planBoolean = false; //循环每一天 String ymd = year+"-"+monthZero+"-"+di; //匹配计划时间 String cycle = ardAppPatrolplan.getCycle(); if(cycle.equals("day")){ String createTime = ardAppPatrolplan.getCreateTime(); String st = createTime.substring(0,10); int d = ymd.compareTo(st); if(d>=0){ planBoolean = true; } }else if(cycle.equals("once")){ String onceBegin = ardAppPatrolplan.getPatroBeginTime(); String onceT = onceBegin.substring(0,10); int num = ymd.compareTo(onceT); if(num==0){ planBoolean = true; } } //匹配打卡时间 Boolean or = false; if(planBoolean){ for (int j = 0; j < list.size(); j++) { //获取打卡时间 String toDayRecord = list.get(j).getRecordTime(); String dr = toDayRecord.substring(0,10); //如果打开日期和这天相同 if(ymd.equals(dr)){ //查询该计划的所有兴趣点 List wellList = wellMapper.wellByPlanId(planId); //查询该计划的所有执行人 List userList = sysUserMapper.userByPlanId(planId); //满勤多少条打卡记录 int maxNum = wellList.size()*userList.size(); //对比应打卡记录相等则true if(list.size()==maxNum){ or = true; } } } // for (int j = 0; j < list.size(); j++) { // //打卡时间拆分 // String recordTime = list.get(j).getRecordTime(); // String[] part = recordTime.split("[-\\s:]"); // int recordYear = Integer.parseInt(part[0]); // int recordMonth = Integer.parseInt(part[1]); // String recordMonthZero; // if(recordMonth<10){ // recordMonthZero = String.format("%02d", recordMonth); // }else { // recordMonthZero = String.valueOf(recordMonth); // } // int recordDay = Integer.parseInt(part[2]); // String recordDayZero; // if(recordDay<10){ // recordDayZero = String.format("%02d", recordDay); // }else { // recordDayZero = String.valueOf(recordDay); // } // String recordDate = recordYear+"-"+recordMonthZero+"-"+recordDayZero; // //如果相等说明这天有打卡记录记录 // if(ymd.equals(recordDate)){ // or = true; // break; // } // } } jsonObject.put("toDay",ymd ); jsonObject.put("plan",planBoolean); jsonObject.put("record",or); jsonArray.add(jsonObject); } return Results.succeed(jsonArray); } @Override public Results recordDetails(RecordDetailsParam recordDetailsParam) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat dateFormatTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //获取参数 String planId = recordDetailsParam.getPlanId(); String toDay = recordDetailsParam.getToDay(); //查询计划表 ArdAppPatrolplan ardAppPatrolplan = patrolplanMapper.selectById(planId); String cycle = ardAppPatrolplan.getCycle(); String begin = ardAppPatrolplan.getPatroBeginTime(); String end = ardAppPatrolplan.getPatroEndTime(); String create = ardAppPatrolplan.getCreateTime(); JSONArray jsonArray = new JSONArray(); int c = 0; if(cycle.equals("day")){ //每天计划取创建时间 c = toDay.compareTo(create.substring(0,10)); }else if(cycle.equals("once")){ //单次计划取开始时间 c = toDay.compareTo(begin.substring(0,10)); } if(cycle.equals("once") && c>0){ //单次计划大于开始时间==跨天,在计划时间外 return Results.succeed("[]"); } if(c<0){ //每日计划小于创建时间或单次计划小于开始时间,在计划时间外 return Results.succeed("[]"); }else{ //在每日计划的时间范围内 String date = dateFormat.format(new Date()); //比较选中的日期和今天日期 int d = toDay.compareTo(date); //查询该计划的所有人员 List users = sysUserMapper.userByPlanId(planId); //大于0代表查询以后的记录 if(d>0){ //查询计划内的每日未来数据 for (int i = 0; i < users.size(); i++) { JSONObject jsonObject = new JSONObject(); jsonObject.put("userId",users.get(i).getUserId()); jsonObject.put("userName",users.get(i).getNickName()); jsonObject.put("type",false); jsonArray.add(jsonObject); } return Results.succeed(jsonArray); }else{ //查询计划内的实际历史打卡数据 QueryWrapper recordQueryWrapper = new QueryWrapper<>(); if(d<0){ //小于0是历史 recordQueryWrapper.select("max(points_num) pointsNum","user_id","user_name").eq("plan_id", planId).like("record_time", toDay).groupBy("user_id","user_name"); }else{ String u = dateFormatTime.format(new Date()); //等于0选中的日期就是今天,需要进一步判断小于当前时分秒的记录 recordQueryWrapper.select("max(points_num) pointsNum","user_id","user_name").eq("plan_id", planId).le("record_time", u).groupBy("user_id","user_name"); } List list = ardAppPatrolpointRecordMapper.selectList(recordQueryWrapper); //选中这天该计划下没有任何打卡记录 if(list.size()==0){ for (int i = 0; i < users.size(); i++) { JSONObject jsonObject = new JSONObject(); jsonObject.put("userId",users.get(i).getUserId()); jsonObject.put("userName",users.get(i).getNickName()); jsonObject.put("type",false); jsonArray.add(jsonObject); } return Results.succeed(jsonArray); } //查询该计划的所有兴趣点 List wellList = wellMapper.wellByPlanId(planId); Integer wellNum = wellList.size(); //取出所有打了卡的userId List userIdList = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { userIdList.add(list.get(i).getUserId()); } //有打卡记录时的打卡情况查出一次都没打卡的人员 for (int i = 0; i < users.size(); i++) { String userId = users.get(i).getUserId(); String userName = users.get(i).getNickName(); //如果该计划的所有人员userId不在所有打了卡的userId中 if (!userIdList.contains(userId)) { //记录该人员未完成打卡 JSONObject jsonObject = new JSONObject(); jsonObject.put("userId", userId); jsonObject.put("userName", userName); jsonObject.put("type", false); jsonArray.add(jsonObject); continue; } } //全部打完卡或打了部分卡的人员 for (ArdAppPatrolpointRecord ardAppPatrolpointRecord : list) { JSONObject jsonObject = new JSONObject(); jsonObject.put("userId", ardAppPatrolpointRecord.getUserId()); jsonObject.put("userName", ardAppPatrolpointRecord.getUserName()); if (ardAppPatrolpointRecord.getPointsNum().equals(wellNum)) { jsonObject.put("type", true); } else { jsonObject.put("type", false); } jsonArray.add(jsonObject); } return Results.succeed(jsonArray); } } } @Override public Results recordSolo(RecordSoloParam recordSoloParam) { String toDay = recordSoloParam.getToDay(); String planId = recordSoloParam.getPlanId(); String userId = recordSoloParam.getUserId(); String planName = recordSoloParam.getPlanName(); String userName = recordSoloParam.getUserName(); //根据计划ID获取制定人ID ArdAppPatrolplan ardAppPatrolplan = patrolplanMapper.selectById(planId); //根据姓名ID查询计划制定人的姓名 String planUserId = ardAppPatrolplan.getUserId(); SysUser sysUser = sysUserMapper.selectById(planUserId); String nikeName = sysUser.getNickName(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("plan_id", planId).eq("user_id",userId).like("record_time", toDay); //当前计划选中时间里此用户的打卡记录 List list = ardAppPatrolpointRecordMapper.selectList(queryWrapper); for (int i = 0; i < list.size(); i++) { ArdAppPatrolpointRecord ardAppPatrolpointRecord = list.get(i); ardAppPatrolpointRecord.setPlanUserName(nikeName); } //查询该计划的所有兴趣点 List wellList = wellMapper.wellByPlanId(planId); if(list.size()==0){ for (ArdAlarmpointsWell ardAlarmpointsWell : wellList) { ArdAppPatrolpointRecord ardAppPatrolpointRecord = new ArdAppPatrolpointRecord(); ardAppPatrolpointRecord.setAppPatrolpointsId(ardAlarmpointsWell.getId()); ardAppPatrolpointRecord.setAppPatrolpointsName(ardAlarmpointsWell.getWellId()); ardAppPatrolpointRecord.setPlanId(planId); ardAppPatrolpointRecord.setPlanName(planName); ardAppPatrolpointRecord.setUserId(userId); ardAppPatrolpointRecord.setUserName(userName); ardAppPatrolpointRecord.setLatitude(String.valueOf(ardAlarmpointsWell.getLatitude())); ardAppPatrolpointRecord.setLongitude(String.valueOf(ardAlarmpointsWell.getLongitude().toString())); ardAppPatrolpointRecord.setPlanUserName(nikeName); list.add(ardAppPatrolpointRecord); } return Results.succeed(list); } for (ArdAppPatrolpointRecord appPatrolpointRecord : list) { QueryWrapper queryWrapper1 = new QueryWrapper<>(); queryWrapper1.eq("app_patrolponit_record_id", appPatrolpointRecord.getId()); List list1 = recordImgMapper.selectList(queryWrapper1); List strings = new ArrayList<>(); for (ArdAppPatrolpointRecordImg ardAppPatrolpointRecordImg : list1) { strings.add(ardAppPatrolpointRecordImg.getImg()); } appPatrolpointRecord.setImg(strings); } //打过卡的地点 List pointList = new ArrayList<>(); for (ArdAppPatrolpointRecord appPatrolpointRecord : list) { pointList.add(appPatrolpointRecord.getAppPatrolpointsId()); } for (ArdAlarmpointsWell ardAlarmpointsWell : wellList) { //所有应该打卡的地点ID String well = ardAlarmpointsWell.getId(); //如果打卡地点不包含应打卡地点,那说名这块儿没打卡 if (!pointList.contains(well)) { ArdAppPatrolpointRecord ardAppPatrolpointRecord = new ArdAppPatrolpointRecord(); ardAppPatrolpointRecord.setAppPatrolpointsId(well); ardAppPatrolpointRecord.setAppPatrolpointsName(ardAlarmpointsWell.getWellId()); ardAppPatrolpointRecord.setPlanId(planId); ardAppPatrolpointRecord.setPlanName(planName); ardAppPatrolpointRecord.setUserId(userId); ardAppPatrolpointRecord.setUserName(userName); ardAppPatrolpointRecord.setLatitude(String.valueOf(ardAlarmpointsWell.getLatitude())); ardAppPatrolpointRecord.setLongitude(String.valueOf(ardAlarmpointsWell.getLongitude().toString())); ardAppPatrolpointRecord.setPlanUserName(nikeName); list.add(ardAppPatrolpointRecord); } } return Results.succeed(list); } @Override public Results executeMonthOld(RecordMonthParam RecordMonthParam) throws ParseException { //获取前端参数 String begin = RecordMonthParam.getBegin(); String end = RecordMonthParam.getEnd(); String planId = RecordMonthParam.getPlanId(); //查询计划表 ArdAppPatrolplan ardAppPatrolplan = patrolplanMapper.selectById(planId); //查询出有效打卡数据 String userId = SecurityUtils.getUserId(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.between("record_time",begin,end).eq("plan_id",planId).eq("user_id",userId); List list = ardAppPatrolpointRecordMapper.selectList(queryWrapper); //时间拆分 String[] parts = end.split("[-\\s:]"); int year = Integer.parseInt(parts[0]); int month = Integer.parseInt(parts[1]); int day = Integer.parseInt(parts[2]); String monthZero; if(month<10){ monthZero = String.format("%02d", month); }else { monthZero = String.valueOf(month); } JSONArray jsonArray = new JSONArray(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); for (int i = 1; i <= day; i++) { String di; if(i<10){ di = String.format("%02d", i); }else { di = String.valueOf(i); } JSONObject jsonObject = new JSONObject(); Boolean planBoolean = false; //循环每一天 String ymd = year+"-"+monthZero+"-"+di; //匹配计划时间 String cycle = ardAppPatrolplan.getCycle(); if(cycle.equals("day")){ String createTime = ardAppPatrolplan.getCreateTime(); int d = ymd.compareTo(createTime); if(d>=0){ planBoolean = true; } }else if(cycle.equals("once")){ String onceBegin = ardAppPatrolplan.getPatroBeginTime(); String onceEnd = ardAppPatrolplan.getPatroEndTime(); int bd = ymd.compareTo(onceBegin); int ed = ymd.compareTo(onceEnd); if(bd>=0 && ed<=0){ planBoolean = true; } } //匹配打卡时间 Boolean or = false; if(planBoolean){ for (int j = 0; j < list.size(); j++) { //打卡时间拆分 String recordTime = list.get(j).getRecordTime(); String[] part = recordTime.split("[-\\s:]"); int recordYear = Integer.parseInt(part[0]); int recordMonth = Integer.parseInt(part[1]); String recordMonthZero; if(recordMonth<10){ recordMonthZero = String.format("%02d", recordMonth); }else { recordMonthZero = String.valueOf(recordMonth); } int recordDay = Integer.parseInt(part[2]); String recordDayZero; if(recordDay<10){ recordDayZero = String.format("%02d", recordDay); }else { recordDayZero = String.valueOf(recordDay); } String recordDate = recordYear+"-"+recordMonthZero+"-"+recordDayZero; //如果相等说明这天有打卡记录记录 if(ymd.equals(recordDate)){ or = true; break; } } } jsonObject.put("toDay",ymd ); jsonObject.put("plan",planBoolean); jsonObject.put("record",or); jsonArray.add(jsonObject); } return Results.succeed(jsonArray); } @Override public Results executeDetailsOld(RecordDetailsParam recordDetailsParam) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat dateFormatTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String userId = SecurityUtils.getUserId(); //获取参数 String planId = recordDetailsParam.getPlanId(); String toDay = recordDetailsParam.getToDay(); //查询计划表 ArdAppPatrolplan ardAppPatrolplan = patrolplanMapper.selectById(planId); String cycle = ardAppPatrolplan.getCycle(); String begin = ardAppPatrolplan.getPatroBeginTime(); String end = ardAppPatrolplan.getPatroEndTime(); String create = ardAppPatrolplan.getCreateTime(); JSONArray jsonArray = new JSONArray(); int c = 0; if(cycle.equals("day")){ //每天计划取创建时间 c = toDay.compareTo(create.substring(0,10)); }else if(cycle.equals("once")){ //单次计划取开始时间 c = toDay.compareTo(begin.substring(0,10)); } if(cycle.equals("once") && c>0){ //单次计划大于开始时间==跨天,在计划时间外 return Results.succeed("[]"); } if(c<0){ //每日计划小于创建时间或单次计划小于开始时间,在计划时间外 return Results.succeed("[]"); }else{ //在每日计划的时间范围内 String date = dateFormat.format(new Date()); //比较选中的日期和今天日期 int d = toDay.compareTo(date); //查询该计划的所有人员 List users = sysUserMapper.userByPlanId(planId); //查询该计划的所有兴趣点 List wellList = wellMapper.wellByPlanId(planId); //大于0代表查询以后的记录 if(d>0){ //查询计划内的每日未来数据 for (int i = 0; i < users.size(); i++) { JSONObject jsonObject = new JSONObject(); jsonObject.put("wellId",wellList.get(i).getId()); jsonObject.put("wellName",wellList.get(i).getWellId()); jsonObject.put("type",false); jsonArray.add(jsonObject); } return Results.succeed(jsonArray); }else{ //查询计划内的实际历史打卡数据 QueryWrapper recordQueryWrapper = new QueryWrapper<>(); if(d<0){ //小于0是历史 recordQueryWrapper.select("app_patrolpoints_id","app_patrolpoints_name").eq("plan_id", planId).eq("user_id",userId).like("record_time", toDay); }else{ //等于0选中的日期就是今天,需要进一步判断小于当前时分秒的记录 recordQueryWrapper.select("app_patrolpoints_id","app_patrolpoints_name").eq("plan_id", planId).eq("user_id",userId).le("record_time", dateFormatTime.format(new Date())); } List list = ardAppPatrolpointRecordMapper.selectList(recordQueryWrapper); //循环打卡地点 for (int i = 0; i < wellList.size(); i++) { String id = wellList.get(i).getId(); JSONObject jsonObject = new JSONObject(); jsonObject.put("wellId",wellList.get(i).getId()); jsonObject.put("wellName",wellList.get(i).getWellId()); if(list.size()>0){ for (int j = 0; j < list.size(); j++) { if(id.equals(list.get(j).getAppPatrolpointsId())){ jsonObject.put("type",true); break; } if(j==list.size()-1){ jsonObject.put("type",false); } } }else { jsonObject.put("type",false); } jsonArray.add(jsonObject); } return Results.succeed(jsonArray); } } } @Override public Results executeSolo(RecordSoloExParam recordSoloExParam) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("plan_id",recordSoloExParam.getPlanId()) .eq("app_patrolpoints_id",recordSoloExParam.getWellId()) .eq("user_id",recordSoloExParam.getUserId()) .like("record_time",recordSoloExParam.getToDay()); List list = ardAppPatrolpointRecordMapper.selectList(queryWrapper); for (ArdAppPatrolpointRecord appPatrolpointRecord : list) { QueryWrapper queryWrapper1 = new QueryWrapper<>(); queryWrapper1.eq("app_patrolponit_record_id", appPatrolpointRecord.getId()); List list1 = recordImgMapper.selectList(queryWrapper1); List strings = new ArrayList<>(); for (ArdAppPatrolpointRecordImg ardAppPatrolpointRecordImg : list1) { strings.add(ardAppPatrolpointRecordImg.getImg()); } appPatrolpointRecord.setImg(strings); } return Results.succeed(list); } @Override public Results executeMonth(RecordMonthExParam recordMonthExParam) throws ParseException { //获取前端参数 String begin = recordMonthExParam.getBegin(); String end = recordMonthExParam.getEnd(); //返回这个 JSONArray jsonArray = new JSONArray(); //时间拆分 String[] parts = end.split("[-\\s:]"); int year = Integer.parseInt(parts[0]); int month = Integer.parseInt(parts[1]); int day = Integer.parseInt(parts[2]); String monthZero; if(month<10){ monthZero = String.format("%02d", month); }else { monthZero = String.valueOf(month); } String userId = SecurityUtils.getUserId(); recordMonthExParam.setUserId(userId); //查询该用户下需要执行的单次计划 List onceList = patrolplanMapper.oncePlan(recordMonthExParam); //查询该用户下需要执行的每日计划 List dayList = patrolplanMapper.dayPlan(recordMonthExParam); //循环一个月中的每一天 for (int i = 1; i <= day; i++) { String di; Boolean planBoolean = false; Boolean recordBoolean = false; //记录这天计划条数 int dayNum = 0; int onceNum = 0; //记录这天的打开地点数 int dayWell = 0; int onceWell = 0; if (i < 10) { di = String.format("%02d", i); } else { di = String.valueOf(i); } //每一天 String ymd = year + "-" + monthZero + "-" + di; JSONObject jsonObject = new JSONObject(); jsonObject.put("toDay",ymd ); //如果每日计划有数据 if (dayList.size() > 0) { for (int j = 0; j < dayList.size(); j++) { String dayTime = dayList.get(j).getCreateTime(); String dt = dayTime.substring(0,10); //如果每日计划日期等于这一天,那从这一天之后的每一天都是有计划的 if(dt.compareTo(ymd)<=0){ planBoolean =true; dayNum+=1; String id = dayList.get(j).getId(); List dayWells = wellMapper.wellByPlanId(id); dayWell = dayWells.size(); } } } //如果单次计划有数据 if(onceList.size()>0){ for (int j = 0; j < onceList.size(); j++) { String beginTime = onceList.get(j).getPatroBeginTime(); String bt = beginTime.substring(0,10); if(bt.equals(ymd)){ planBoolean = true; onceNum+=1; List onceWells = wellMapper.wellByPlanId(onceList.get(j).getId()); onceWell = onceWells.size(); } } } if(planBoolean){ //这天总任务条数 int planNum = dayNum+onceNum; //这天总兴趣点数 int wellNum = dayWell+onceWell; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id",userId).like("record_time",ymd); List list = ardAppPatrolpointRecordMapper.selectList(queryWrapper); //已打卡总条数 int num = list.size(); //应打卡总条数 int record = planNum*wellNum; if(num==record){ recordBoolean = true; } } jsonObject.put("toDay",ymd ); jsonObject.put("plan",planBoolean); jsonObject.put("record",recordBoolean); jsonArray.add(jsonObject); } return Results.succeed(jsonArray); } @Override public Results executeDetails(RecordDetailsExParam recordDetailsExParam) throws ParseException { String userId = SecurityUtils.getUserId(); //获取参数 Boolean plan = recordDetailsExParam.getPlan(); String toDay = recordDetailsExParam.getToDay(); JSONArray jsonArray = new JSONArray(); if(plan){ //查询这个用户下为执行人的所有巡检计划 ArdAppPatrolplan ardAppPatrolplan = new ArdAppPatrolplan(); ardAppPatrolplan.setUserId(SecurityUtils.getUserId()); List list = patrolplanMapper.executeList(ardAppPatrolplan); //找出今天的单次和每日计划 List patrolplanList = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { String cycle = list.get(i).getCycle(); //如果是单次任务 if(cycle.equals("once")){ String begin = list.get(i).getPatroBeginTime(); String b = begin.substring(0,10); if(b.equals(toDay)){ //是今天的计划 patrolplanList.add(list.get(i)); } } //如果是每日任务 else if(cycle.equals("day")){ String create = list.get(i).getCreateTime(); String c = create.substring(0,10); if(c.compareTo(toDay)<=0){ //有今天的计划 patrolplanList.add(list.get(i)); } } } if(patrolplanList.size()>0){ //遍历今天的计划 for (int i = 0; i < patrolplanList.size(); i++) { String planId = patrolplanList.get(i).getId(); String planName = patrolplanList.get(i).getPlanName(); JSONObject jsonObject = new JSONObject(); jsonObject.put("planId",planId); jsonObject.put("planName",planName); //查询这天有多少点 List dayWells = wellMapper.wellByPlanId(planId); int dayWellNum = dayWells.size(); //查询这个用户的这个计划在今天打卡的条数 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id",userId).eq("plan_id",planId).like("record_time",toDay); List recordList = ardAppPatrolpointRecordMapper.selectList(queryWrapper); int recordNum = recordList.size(); //如果相等那这条今天的计划就是全部完成了 if(recordNum==dayWellNum){ jsonObject.put("type",true); }else { jsonObject.put("type",false); } jsonArray.add(jsonObject); } } }else { //没有计划 return Results.succeed("[]"); } return Results.succeed(jsonArray); } @Override public Results recordBefore(RecordBeforeParam recordBeforeParam) { String planId = recordBeforeParam.getPlanId(); String wellId = recordBeforeParam.getWellId(); String toDay = recordBeforeParam.getToDay(); String userId = SecurityUtils.getUserId(); JSONArray jsonArray = new JSONArray(); ArdAppPatrolplan plan = patrolplanMapper.selectById(planId); jsonArray.add(plan); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("plan_id",planId).eq("app_patrolpoints_id",wellId).eq("user_id",userId).like("record_time",toDay); ArdAppPatrolpointRecord record = ardAppPatrolpointRecordMapper.selectOne(queryWrapper); //根据姓名ID查询计划制定人的姓名 String planUserId = plan.getUserId(); SysUser sysUser = sysUserMapper.selectById(planUserId); String nikeName = sysUser.getNickName(); if(record==null){ //根据姓名ID查询执行人姓名 SysUser user = sysUserMapper.selectById(userId); String userName = user.getNickName(); //查询该计划的所有兴趣点 ArdAlarmpointsWell ardAlarmpointsWell = wellMapper.selectById(wellId); //没打卡的数据 ArdAppPatrolpointRecord record1 = new ArdAppPatrolpointRecord(); record1.setAppPatrolpointsId(ardAlarmpointsWell.getId()); record1.setAppPatrolpointsName(ardAlarmpointsWell.getWellId()); record1.setPlanId(planId); record1.setPlanName(plan.getPlanName()); record1.setUserId(userId); record1.setUserName(userName); record1.setLatitude(String.valueOf(ardAlarmpointsWell.getLatitude())); record1.setLongitude(String.valueOf(ardAlarmpointsWell.getLongitude().toString())); record1.setPlanUserName(nikeName); jsonArray.add(record1); }else { jsonArray.add(record); } return Results.succeed(jsonArray); } @Override public Results son() { DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); //获取用户执行人 String userId = SecurityUtils.getUserId(); // 减少 10 秒 LocalDateTime now = LocalDateTime.now(); // 获取当前日期时间 LocalDateTime earlier = now.minusSeconds(10); // 减少30秒 System.out.println("当前日期时间:" + now); System.out.println("减少10秒后的日期时间:" + earlier); RecordSonParam recordSonParam = new RecordSonParam(); recordSonParam.setUserId(userId); recordSonParam.setTime(fmt.format(now)); recordSonParam.setBeforeTime(fmt.format(earlier)); //根据姓名ID为执行人获取所有对应的计划名称 List list = patrolplanMapper.planUser(recordSonParam); JSONArray jsonArray = new JSONArray(); JSONObject jsonObject = new JSONObject(); if(list.size()>0){ jsonObject.put("plan",true); jsonObject.put("user",list.get(0).getNickName()); jsonObject.put("name",list.get(0).getPlanName()); // list.get(0).setSon("已通知"); // patrolplanMapper.updateById(list.get(0)); }else { jsonObject.put("plan",false); jsonObject.put("user",null); jsonObject.put("name",null); } jsonArray.add(jsonObject); return Results.succeed(jsonArray); } }