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<ArdAppPatrolpointRecord> 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<String> 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<ArdAppPatrolpointRecord> queryWrapper = new QueryWrapper<>();
|
queryWrapper.between("record_time",begin,end).eq("plan_id",planId);
|
List<ArdAppPatrolpointRecord> 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<ArdAppPatrolpointRecord> recordQueryWrapper = new QueryWrapper<>();
|
recordQueryWrapper.eq("plan_id", planId).like("record_time", toDay).groupBy("user_id");
|
List<ArdAppPatrolpointRecord> list = ardAppPatrolpointRecordMapper.selectList(recordQueryWrapper);
|
return Results.succeed(list);
|
}else if(d > 0){
|
//查询计划内的未来数据
|
QueryWrapper<ArdAppPatroluser> appPatroluserQueryWrapper = new QueryWrapper<>();
|
appPatroluserQueryWrapper.eq("patrolplan_id",planId).groupBy("app_user_id");
|
|
}
|
}else {
|
return Results.succeed("[]");
|
}
|
}
|
return Results.succeed();
|
}
|
|
}
|