package com.ruoyi.app.patrolplan.service.impl; import java.io.Serializable; import java.text.SimpleDateFormat; import java.time.LocalDate; 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.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWellVo; import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper; import com.ruoyi.app.patrolplan.domain.ArdAppPatrolpoint; import com.ruoyi.app.patrolplan.domain.ArdAppPatrolpointRecord; import com.ruoyi.app.patrolplan.domain.ArdAppPatroluser; import com.ruoyi.app.patrolplan.mapper.ArdAppPatrolpointMapper; import com.ruoyi.app.patrolplan.mapper.ArdAppPatrolpointRecordMapper; import com.ruoyi.app.patrolplan.mapper.ArdAppPatroluserMapper; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUserVo; import com.ruoyi.common.utils.DateUtils; 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.apache.logging.log4j.util.Strings; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.app.patrolplan.mapper.ArdAppPatrolplanMapper; import com.ruoyi.app.patrolplan.domain.ArdAppPatrolplan; import com.ruoyi.app.patrolplan.service.IArdAppPatrolplanService; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; /** * app巡检计划Service业务层处理 * * @author ard * @date 2023-08-02 */ @Service public class ArdAppPatrolplanServiceImpl implements IArdAppPatrolplanService { @Resource private ArdAppPatrolplanMapper ardAppPatrolplanMapper; @Resource private ArdAppPatrolpointMapper ardAppPatrolpointMapper; @Resource private ArdAppPatroluserMapper ardAppPatroluserMapper; @Resource private ArdAlarmpointsWellMapper ardAlarmpointsWellMapper; @Resource private SysUserMapper sysUserMapper; @Resource private ArdAppPatrolpointRecordMapper recordMapper; /** * 查询app巡检计划 * * @param patroEndTime app巡检计划主键 * @return app巡检计划 */ @Override public ArdAppPatrolplan selectArdAppPatrolplanByPatroEndTime(String patroEndTime) { return ardAppPatrolplanMapper.selectArdAppPatrolplanByPatroEndTime(patroEndTime); } /** * 查询app巡检计划列表 * * @param ardAppPatrolplan app巡检计划 * @return app巡检计划 */ @Override public List selectArdAppPatrolplanList(ArdAppPatrolplan ardAppPatrolplan) { return ardAppPatrolplanMapper.selectArdAppPatrolplanList(ardAppPatrolplan); } /** * 新增app巡检计划 * * @param ardAppPatrolplan app巡检计划 * @return 结果 */ @Override public int insertArdAppPatrolplan(ArdAppPatrolplan ardAppPatrolplan) { ardAppPatrolplan.setUserId(SecurityUtils.getUserId()); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ardAppPatrolplan.setCreateTime(sdf.format(date)); return ardAppPatrolplanMapper.insertArdAppPatrolplan(ardAppPatrolplan); } /** * 修改app巡检计划 * * @return 结果 */ @Override public Results BeforeUpdateArdAppPatrolplan(Map para) { if(para.get("id").toString().isEmpty()){ return Results.error("ID无效!"); } //修改主表 ArdAppPatrolplan ardAppPatrolplan = new ArdAppPatrolplan(); ardAppPatrolplan.setId(para.get("id").toString()); ardAppPatrolplan.setUserId(para.get("userId").toString()); ardAppPatrolplan.setCycle(para.get("cycle").toString()); ardAppPatrolplan.setPatroBeginTime(para.get("patroBeginTime").toString()); ardAppPatrolplan.setPatroEndTime(para.get("patroEndTime").toString()); ardAppPatrolplan.setPlanName(para.get("planName").toString()); int num = ardAppPatrolplanMapper.updateById(ardAppPatrolplan); //修改兴趣点 ardAppPatrolpointMapper.deleteArdAppPatrolpointByPlanId(para.get("id").toString());//删除巡检计划下挂点位 List alarmpointIdList = (List) para.get("alarmpointIdList"); List ardAppPatrolpointList = new ArrayList(); for(String alarmpointId : alarmpointIdList){ String patrolpointId = IdUtils.simpleUUID(); ArdAppPatrolpoint ardAppPatrolpoint = new ArdAppPatrolpoint(); ardAppPatrolpoint.setId(patrolpointId); ardAppPatrolpoint.setPatrolplanId(para.get("id").toString()); ardAppPatrolpoint.setAlarmpointsId(alarmpointId); ardAppPatrolpoint.setType((String) para.get("type")); ardAppPatrolpointList.add(ardAppPatrolpoint); } ardAppPatrolpointMapper.insertArdAppPatrolpointList(ardAppPatrolpointList);//新增关联兴趣点 //修改用户 ardAppPatroluserMapper.deleteArdAppPatroluserByPlanId(para.get("id").toString());//删除巡检计划下挂用户 List appUserIdList = (List) para.get("appUserIdList"); List ardAppPatroluserList = new ArrayList(); for(String appUserId : appUserIdList){ String patroluserId = IdUtils.simpleUUID(); ArdAppPatroluser ardAppPatroluser = new ArdAppPatroluser(); ardAppPatroluser.setId(patroluserId); ardAppPatroluser.setPatrolplanId(para.get("id").toString()); ardAppPatroluser.setAppUserId(appUserId); ardAppPatroluserList.add(ardAppPatroluser); } ardAppPatroluserMapper.insertArdAppPatroluserList(ardAppPatroluserList);//新增关联人员 if(num>0){ return Results.succeed("修改成功!"); }else { return Results.error("修改失败!"); } } /** * 删除app巡检计划信息 * @return 结果 */ @Override @Transactional public int deleteArdApp(String id) { try { Boolean del = false; //查询计划时间是否结束 ArdAppPatrolplan planList = ardAppPatrolplanMapper.selectById(id); String cycle = planList.getCycle(); String end = planList.getPatroEndTime(); if(cycle.equals("day")){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String date = dateFormat.format(new Date()); end = date +" "+end; } SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String toDay = dateFormat.format(new Date()); int once = toDay.compareTo(end); if(once<0){ del = true; } if(!del){ //查询是否有打卡记录 QueryWrapper recordQueryWrapper = new QueryWrapper<>(); recordQueryWrapper.eq("plan_id",id); List recordList = recordMapper.selectList(recordQueryWrapper); if(recordList.size()>0){ del = true; } } if(del){ int result = ardAppPatrolplanMapper.deleteArdAppPatrolplanById(id);//删除巡检计划 ardAppPatrolpointMapper.deleteArdAppPatrolpointByPlanId(id);//删除巡检计划下挂点位 ardAppPatroluserMapper.deleteArdAppPatroluserByPlanId(id);//删除巡检计划下挂用户 return result; }else { String userId = SecurityUtils.getUserId(); SysUser sysUser = sysUserMapper.selectUserById(userId); String userName = sysUser.getNickName(); planList.setDelName(userName); planList.setDelTime(dateFormat.format(new Date())); int result = ardAppPatrolplanMapper.updateById(planList); return result; } } catch (Exception e){ e.printStackTrace(); return 0; } } @Override @Transactional public int insertArdAppPatrolplan(Map para) { String id = IdUtils.simpleUUID(); ArdAppPatrolplan ardAppPatrolplan = new ArdAppPatrolplan(); ardAppPatrolplan.setId(id); ardAppPatrolplan.setPlanName((String) para.get("planName")); ardAppPatrolplan.setPatroBeginTime((String) para.get("patroBeginTime")); ardAppPatrolplan.setPatroEndTime((String) para.get("patroEndTime")); String userId = SecurityUtils.getUserId(); ardAppPatrolplan.setUserId(userId); ardAppPatrolplan.setCycle((String) para.get("cycle")); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ardAppPatrolplan.setCreateTime(sdf.format(date)); int result = ardAppPatrolplanMapper.insertArdAppPatrolplan(ardAppPatrolplan);//新增主表 List alarmpointIdList = (List) para.get("alarmpointIdList"); List ardAppPatrolpointList = new ArrayList(); for(String alarmpointId : alarmpointIdList){ String patrolpointId = IdUtils.simpleUUID(); ArdAppPatrolpoint ardAppPatrolpoint = new ArdAppPatrolpoint(); ardAppPatrolpoint.setId(patrolpointId); ardAppPatrolpoint.setPatrolplanId(id); ardAppPatrolpoint.setAlarmpointsId(alarmpointId); ardAppPatrolpoint.setType((String) para.get("type")); ardAppPatrolpointList.add(ardAppPatrolpoint); } ardAppPatrolpointMapper.insertArdAppPatrolpointList(ardAppPatrolpointList);//新增关联兴趣点 List appUserIdList = (List) para.get("appUserIdList"); List ardAppPatroluserList = new ArrayList(); for(String appUserId : appUserIdList){ String patroluserId = IdUtils.simpleUUID(); ArdAppPatroluser ardAppPatroluser = new ArdAppPatroluser(); ardAppPatroluser.setId(patroluserId); ardAppPatroluser.setPatrolplanId(id); ardAppPatroluser.setAppUserId(appUserId); ardAppPatroluserList.add(ardAppPatroluser); } ardAppPatroluserMapper.insertArdAppPatroluserList(ardAppPatroluserList);//新增关联人员 return result; } @Override public Results oneById(String id) { JSONObject jsonObject = new JSONObject(); ArdAppPatrolplan ardAppPatrolplan = ardAppPatrolplanMapper.selectById(id); jsonObject.put("plan",ardAppPatrolplan); List ardAlarmpointsWellList = ardAlarmpointsWellMapper.wellByPlanId(id); List wellVos = new ArrayList<>(); for (ArdAlarmpointsWell ardAlarmpointsWell : ardAlarmpointsWellList) { ArdAlarmpointsWellVo wellVo = new ArdAlarmpointsWellVo(); wellVo.setId(ardAlarmpointsWell.getId()); wellVo.setType(ardAlarmpointsWell.getType()); wellVo.setWellId(ardAlarmpointsWell.getWellId()); wellVos.add(wellVo); } jsonObject.put("well",wellVos); List sysUserList = sysUserMapper.userByPlanId(id); List sysUserVos = new ArrayList<>(); for (int i = 0; i < sysUserList.size(); i++) { SysUserVo sysUserVo = new SysUserVo(); sysUserVo.setUserId(sysUserList.get(i).getUserId()); sysUserVo.setNickName(sysUserList.get(i).getNickName()); sysUserVos.add(sysUserVo); } jsonObject.put("user",sysUserVos); return Results.succeed(jsonObject); } @Override public Results updateArdAppPatrolplan(Map para){ if(para.get("id").toString().isEmpty()){ return Results.error("ID无效!"); } SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //查询该条记录 ArdAppPatrolplan planList = ardAppPatrolplanMapper.selectById(para.get("id").toString()); String userId = SecurityUtils.getUserId(); SysUser sysUser = sysUserMapper.selectUserById(userId); String userName = sysUser.getNickName(); planList.setDelName(userName); planList.setDelTime(dateFormat.format(new Date())); int result = ardAppPatrolplanMapper.updateById(planList); if(result<1){ return Results.error("修改失败,原数据停用出错!"); } int num = insertArdAppPatrolplan(para); if(num==1){ return Results.succeed("修改成功,已重新部署任务!"); }else { return Results.error("修改失败,重新部署任务失败!"); } } @Override public List executeList(ArdAppPatrolplan ardAppPatrolplan) { return ardAppPatrolplanMapper.executeList(ardAppPatrolplan); } @Override public Results executeOneById(String id) { return Results.succeed(ardAppPatrolplanMapper.selectById(id)); } }