package com.ruoyi.app.patrolplan.service.impl; import java.text.ParseException; import java.text.SimpleDateFormat; 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.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.common.utils.SecurityUtils; import com.ruoyi.common.utils.uuid.IdUtils; 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; /** * 查询app巡检计划记录 * * @param id app巡检计划记录主键 * @return app巡检计划记录 */ @Override public ArdAppPatrolpointRecord selectArdAppPatrolpointRecordById(String id) { return ardAppPatrolpointRecordMapper.selectArdAppPatrolpointRecordById(id); } /** * 查询app巡检计划记录列表 * * @param ardAppPatrolpointRecord app巡检计划记录 * @return app巡检计划记录 */ @Override public List selectArdAppPatrolpointRecordList(ArdAppPatrolpointRecord ardAppPatrolpointRecord) { return ardAppPatrolpointRecordMapper.selectArdAppPatrolpointRecordList(ardAppPatrolpointRecord); } /** * 新增app巡检计划记录 * * @param ardAppPatrolpointRecord app巡检计划记录 * @return 结果 */ @Override public int insertArdAppPatrolpointRecord(ArdAppPatrolpointRecord ardAppPatrolpointRecord) { ardAppPatrolpointRecord.setUserId(SecurityUtils.getUserId()); return ardAppPatrolpointRecordMapper.insertArdAppPatrolpointRecord(ardAppPatrolpointRecord); } /** * 修改app巡检计划记录 * * @param ardAppPatrolpointRecord app巡检计划记录 * @return 结果 */ @Override public int updateArdAppPatrolpointRecord(ArdAppPatrolpointRecord ardAppPatrolpointRecord) { return ardAppPatrolpointRecordMapper.updateArdAppPatrolpointRecord(ardAppPatrolpointRecord); } /** * 批量删除app巡检计划记录 * * @param ids 需要删除的app巡检计划记录主键 * @return 结果 */ @Override public int deleteArdAppPatrolpointRecordByIds(String[] ids) { return ardAppPatrolpointRecordMapper.deleteArdAppPatrolpointRecordByIds(ids); } /** * 删除app巡检计划记录信息 * * @param id app巡检计划记录主键 * @return 结果 */ @Override public int deleteArdAppPatrolpointRecordById(String id) { return ardAppPatrolpointRecordMapper.deleteArdAppPatrolpointRecordById(id); } @Override public Results record(ArdAppPatrolpointRecord ardAppPatrolpointRecord) { String id = IdUtils.simpleUUID(); ardAppPatrolpointRecord.setId(id); int num = ardAppPatrolpointRecordMapper.insert(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.insert(recordImg); } if(num>0){ return Results.succeed("打卡成功!"); }else { return Results.error("打开失败!"); } } @Override public Results recordMonth(ArdAppPatrolpointRecordParam ardAppPatrolpointRecordParam) throws ParseException { //获取前端参数 String begin = ardAppPatrolpointRecordParam.getBegin(); String end = ardAppPatrolpointRecordParam.getEnd(); String planId = ardAppPatrolpointRecordParam.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(); 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; // Date ymdDate = dateFormat.parse(ymd); //匹配计划时间 String cycle = ardAppPatrolplan.getCycle(); if(cycle.equals("day")){ String createTime = ardAppPatrolplan.getCreateTime(); // 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); String onceEnd = ardAppPatrolplan.getPatroEndTime(); // Date onceEndDate = dateFormat.parse(onceEnd); 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 recordDetails(ArdAppPatrolpointRecordParam ardAppPatrolpointRecordParam) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); //获取参数 String planId = ardAppPatrolpointRecordParam.getPlanId(); String toDay = ardAppPatrolpointRecordParam.getToDay(); Date toDayDate = dateFormat.parse(toDay); //查询计划表 ArdAppPatrolplan ardAppPatrolplan = patrolplanMapper.selectById(planId); String cycle = ardAppPatrolplan.getCycle(); String begin = ardAppPatrolplan.getPatroBeginTime(); Date beginDate = dateFormat.parse(begin); String end = ardAppPatrolplan.getPatroEndTime(); Date endDate = dateFormat.parse(end); String create = ardAppPatrolplan.getCreateTime(); Date createDate = dateFormat.parse(create); if(cycle.equals("day")){ }else if(cycle.equals("once")){ int bd = toDayDate.compareTo(beginDate); int en = toDayDate.compareTo(endDate); if(bd>=0 && en<=0){ //传入时间为该计划内时间 String date = dateFormat.format(new Date()); Date dateDate = dateFormat.parse(date); int d = toDayDate.compareTo(dateDate); if(d < 0) { //查询计划内的历史数据 QueryWrapper recordQueryWrapper = new QueryWrapper<>(); recordQueryWrapper.eq("plan_id", planId).like("record_time", toDay).groupBy("user_id"); List list = ardAppPatrolpointRecordMapper.selectList(recordQueryWrapper); return Results.succeed(list); }else if(d > 0){ //查询计划内的未来数据 QueryWrapper appPatroluserQueryWrapper = new QueryWrapper<>(); appPatroluserQueryWrapper.eq("patrolplan_id",planId).groupBy("app_user_id"); } }else { return Results.succeed("[]"); } } return Results.succeed(); } }