From 63edade94bb54e20e622098ce096a66e7cb641cf Mon Sep 17 00:00:00 2001 From: Administrator <1144154118@qq.com> Date: 星期五, 11 八月 2023 17:29:33 +0800 Subject: [PATCH] 巡检计划日历下指定天数打卡记录 --- ard-work/src/main/java/com/ruoyi/app/patrolplan/service/impl/ArdAppPatrolpointRecordServiceImpl.java | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 168 insertions(+), 10 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/app/patrolplan/service/impl/ArdAppPatrolpointRecordServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/patrolplan/service/impl/ArdAppPatrolpointRecordServiceImpl.java index 226735c..bb94225 100644 --- a/ard-work/src/main/java/com/ruoyi/app/patrolplan/service/impl/ArdAppPatrolpointRecordServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/app/patrolplan/service/impl/ArdAppPatrolpointRecordServiceImpl.java @@ -2,6 +2,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -9,13 +10,19 @@ 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; @@ -42,6 +49,15 @@ @Resource private ArdAppPatrolplanMapper patrolplanMapper; + + @Resource + private ArdAppPatroluserMapper userMapper; + + @Resource + private SysUserMapper sysUserMapper; + + @Resource + private ArdAlarmpointsWellMapper wellMapper; /** * 鏌ヨapp宸℃璁″垝璁板綍 @@ -114,6 +130,14 @@ 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++) { @@ -148,30 +172,42 @@ 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; } @@ -185,8 +221,20 @@ 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; @@ -194,11 +242,121 @@ } } } - jsonObject.put("toDay",ymdDate); + 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"); + 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浠h〃鏌ヨ浠ュ悗鐨勮褰� + 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); + } + //鏌ヨ璇ヨ鍒掔殑鎵�鏈夊叴瓒g偣 + List<ArdAlarmpointsWell> wellList = wellMapper.wellByPlanId(planId); + Integer wellNum = wellList.size(); + //鍙栧嚭鎵�鏈夋墦浜嗗崱鐨剈serId + 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(); + //濡傛灉璇ヨ鍒掔殑鎵�鏈変汉鍛榰serId涓嶅湪鎵�鏈夋墦浜嗗崱鐨剈serId涓� + 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); + } + } + } + } -- Gitblit v1.9.3