| | |
| | | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | 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.ArdAppPatrolpointRecordParam; |
| | | 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; |
| | |
| | | |
| | | @Resource |
| | | private ArdAppPatrolplanMapper patrolplanMapper; |
| | | |
| | | @Resource |
| | | private ArdAppPatroluserMapper userMapper; |
| | | |
| | | @Resource |
| | | private SysUserMapper sysUserMapper; |
| | | |
| | | @Resource |
| | | private ArdAlarmpointsWellMapper wellMapper; |
| | | |
| | | /** |
| | | * 查询app巡检计划记录 |
| | |
| | | public Results record(ArdAppPatrolpointRecord ardAppPatrolpointRecord) { |
| | | String id = IdUtils.simpleUUID(); |
| | | ardAppPatrolpointRecord.setId(id); |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | //查询该用户今天的打卡数据 |
| | | QueryWrapper<ArdAppPatrolpointRecord> recordQueryWrapper = new QueryWrapper<>(); |
| | | recordQueryWrapper.eq("plan_id", ardAppPatrolpointRecord.getPlanId()) |
| | | .like("record_time", dateFormat.format(new Date())) |
| | | .eq("user_id",ardAppPatrolpointRecord.getUserId()); |
| | | List<ArdAppPatrolpointRecord> recordList = ardAppPatrolpointRecordMapper.selectList(recordQueryWrapper); |
| | | ardAppPatrolpointRecord.setPointsNum(recordList.size()+1); |
| | | int num = ardAppPatrolpointRecordMapper.insert(ardAppPatrolpointRecord); |
| | | List<String> list = ardAppPatrolpointRecord.getImg(); |
| | | for (int i = 0; i < list.size(); i++) { |
| | |
| | | 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+"-"+month+"-"+i; |
| | | Date ymdDate = dateFormat.parse(ymd); |
| | | String ymd = year+"-"+monthZero+"-"+di; |
| | | // Date ymdDate = dateFormat.parse(ymd); |
| | | //匹配计划时间 |
| | | String cycle = ardAppPatrolplan.getCycle(); |
| | | if(cycle.equals("day")){ |
| | | String createTime = ardAppPatrolplan.getCreateTime(); |
| | | Date beginCreateDate = dateFormat.parse(createTime); |
| | | int d = ymdDate.compareTo(beginCreateDate); |
| | | // Date beginCreateDate = dateFormat.parse(createTime); |
| | | int d = ymd.compareTo(createTime); |
| | | if(d>=0){ |
| | | planBoolean = true; |
| | | } |
| | | }else if(cycle.equals("once")){ |
| | | String onceBegin = ardAppPatrolplan.getPatroBeginTime(); |
| | | Date onceBeginDate = dateFormat.parse(onceBegin); |
| | | // Date onceBeginDate = dateFormat.parse(onceBegin); |
| | | String onceEnd = ardAppPatrolplan.getPatroEndTime(); |
| | | Date onceEndDate = dateFormat.parse(onceEnd); |
| | | int bd = ymdDate.compareTo(onceBeginDate); |
| | | int ed = ymdDate.compareTo(onceEndDate); |
| | | // Date onceEndDate = dateFormat.parse(onceEnd); |
| | | int bd = ymd.compareTo(onceBegin); |
| | | int ed = ymd.compareTo(onceEnd); |
| | | if(bd>=0 && ed<=0){ |
| | | planBoolean = true; |
| | | } |
| | |
| | | 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 recordDate = recordYear+"-"+recordMonth+"-"+recordDay; |
| | | 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; |
| | |
| | | } |
| | | return Results.succeed(jsonArray); |
| | | } |
| | | |
| | | @Override |
| | | public Results recordDetails(ArdAppPatrolpointRecordParam ardAppPatrolpointRecordParam) throws ParseException { |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | SimpleDateFormat dateFormatTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); |
| | | //获取参数 |
| | | String planId = ardAppPatrolpointRecordParam.getPlanId(); |
| | | String toDay = ardAppPatrolpointRecordParam.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<SysUser> 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<ArdAppPatrolpointRecord> 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{ |
| | | //等于0选中的日期就是今天,需要进一步判断小于当前时分秒的记录 |
| | | recordQueryWrapper.select("max(points_num) pointsNum","user_id","user_name").eq("plan_id", planId).le("record_time", dateFormatTime.format(new Date())).groupBy("user_id","user_name");; |
| | | } |
| | | List<ArdAppPatrolpointRecord> 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<ArdAlarmpointsWell> wellList = wellMapper.wellByPlanId(planId); |
| | | Integer wellNum = wellList.size(); |
| | | //取出所有打了卡的userId |
| | | List<String> 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(ArdAppPatrolpointRecordParam ardAppPatrolpointRecordParam) { |
| | | String toDay = ardAppPatrolpointRecordParam.getToDay(); |
| | | String planId = ardAppPatrolpointRecordParam.getPlanId(); |
| | | String userId = ardAppPatrolpointRecordParam.getUserId(); |
| | | QueryWrapper<ArdAppPatrolpointRecord> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("plan_id", planId).eq("user_id",userId).like("record_time", toDay); |
| | | //当前计划选中时间里此用户的打卡记录 |
| | | List<ArdAppPatrolpointRecord> list = ardAppPatrolpointRecordMapper.selectList(queryWrapper); |
| | | for (ArdAppPatrolpointRecord appPatrolpointRecord : list) { |
| | | QueryWrapper<ArdAppPatrolpointRecordImg> queryWrapper1 = new QueryWrapper<>(); |
| | | queryWrapper1.eq("app_patrolponit_record_id", appPatrolpointRecord.getId()); |
| | | List<ArdAppPatrolpointRecordImg> list1 = recordImgMapper.selectList(queryWrapper1); |
| | | List<String> strings = new ArrayList<>(); |
| | | for (ArdAppPatrolpointRecordImg ardAppPatrolpointRecordImg : list1) { |
| | | strings.add(ardAppPatrolpointRecordImg.getImg()); |
| | | } |
| | | appPatrolpointRecord.setImg(strings); |
| | | } |
| | | //打过卡的地点 |
| | | List<String> pointList = new ArrayList<>(); |
| | | for (ArdAppPatrolpointRecord appPatrolpointRecord : list) { |
| | | pointList.add(appPatrolpointRecord.getAppPatrolpointsId()); |
| | | } |
| | | //查询该计划的所有兴趣点 |
| | | List<ArdAlarmpointsWell> wellList = wellMapper.wellByPlanId(planId); |
| | | 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(list.get(0).getPlanName()); |
| | | ardAppPatrolpointRecord.setUserId(userId); |
| | | ardAppPatrolpointRecord.setUserName(list.get(0).getUserName()); |
| | | ardAppPatrolpointRecord.setLatitude(ardAlarmpointsWell.getLatitude().toString()); |
| | | ardAppPatrolpointRecord.setLongitude(ardAlarmpointsWell.getLongitude().toString()); |
| | | list.add(ardAppPatrolpointRecord); |
| | | } |
| | | } |
| | | return Results.succeed(list); |
| | | } |
| | | |
| | | } |