ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java
@@ -227,6 +227,7 @@ progressListVOPageInfo.setRecords(records); return R.ok(progressListVOPageInfo); } @ApiOperation(value = "任务进度导出") @Log(title = "任务进度导出", businessType = BusinessType.OTHER) @PostMapping(value = "/taskProgressExport") @@ -502,6 +503,7 @@ } return R.ok(res); } @ApiOperation(value = "任务报表导出") @PostMapping(value = "/taskDetailsExport") public void taskDetailsExport(@RequestBody TaskDetailsQuery query,HttpServletResponse response) throws IOException { @@ -889,6 +891,7 @@ } return R.ok(res); } @ApiOperation(value = "巡检人员报表导出") @PostMapping(value = "/patrolInspectorListExport") @Log(title = "巡检人员报表导出", businessType = BusinessType.OTHER) @@ -1161,7 +1164,8 @@ if (tDept!=null) inspectorVO.setDeptName(tDept.getDeptName()); } List<TInspector> collect = inspectors.stream().filter(e -> listAllTaskIds.contains(e.getTaskId())).collect(Collectors.toList()); List<String> collect1 = listAll.stream().filter(e -> e.getPatrolInspector().equals(sysUser.getUserId() + "")).map(TTask::getId).collect(Collectors.toList()); List<TInspector> collect = inspectors.stream().filter(e -> collect1.contains(e.getTaskId())).collect(Collectors.toList()); inspectorVO.setTotal(collect.size()); List<TInspector> status1 = collect.stream().filter(e -> e.getClearStatus() == 1).collect(Collectors.toList()); List<TInspector> status2 = collect.stream().filter(e -> e.getClearStatus() == 2).collect(Collectors.toList()); @@ -1180,11 +1184,15 @@ } return R.ok(res); } @ApiOperation(value = "随机督察报表导出") @PostMapping(value = "/inspectorListExport") @Log(title = "随机督察报表导出", businessType = BusinessType.OTHER) public void inspectorListExport(@RequestBody InspectorQuery query) { query.setPatrolInspectorIds(null); List<SysUser> sysUsers = sysUserService.selectAllList(); List<TTask> listAll = taskCleanerService.list(); List<String> listAllTaskIds = listAll.stream().map(TTask::getId).collect(Collectors.toList()); if (StringUtils.hasLength(query.getDeptName())){ List<String> projectIds = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list() .stream().map(TProjectDept::getId).collect(Collectors.toList()); @@ -1255,12 +1263,14 @@ if (tDept!=null) inspectorVO.setDeptName(tDept.getDeptName()); } inspectorVO.setTotal(inspectors.size()); List<TInspector> status1 = inspectors.stream().filter(e -> e.getClearStatus() == 1).collect(Collectors.toList()); List<TInspector> status2 = inspectors.stream().filter(e -> e.getClearStatus() == 2).collect(Collectors.toList()); List<TInspector> status4 = inspectors.stream().filter(e -> e.getStatus() == 1).collect(Collectors.toList()); List<TInspector> status5 = inspectors.stream().filter(e -> e.getStatus() == 2).collect(Collectors.toList()); List<TInspector> status6 = inspectors.stream().filter(e -> e.getStatus() == 3).collect(Collectors.toList()); List<String> collect1 = listAll.stream().filter(e -> e.getPatrolInspector().equals(sysUser.getUserId() + "")).map(TTask::getId).collect(Collectors.toList()); List<TInspector> collect = inspectors.stream().filter(e -> collect1.contains(e.getTaskId())).collect(Collectors.toList()); inspectorVO.setTotal(collect.size()); List<TInspector> status1 = collect.stream().filter(e -> e.getClearStatus() == 1).collect(Collectors.toList()); List<TInspector> status2 = collect.stream().filter(e -> e.getClearStatus() == 2).collect(Collectors.toList()); List<TInspector> status4 = collect.stream().filter(e -> e.getStatus() == 1).collect(Collectors.toList()); List<TInspector> status5 = collect.stream().filter(e -> e.getStatus() == 2).collect(Collectors.toList()); List<TInspector> status6 = collect.stream().filter(e -> e.getStatus() == 3).collect(Collectors.toList()); inspectorVO.setNum1(status1.size()); inspectorVO.setNum2(status2.size()); ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java
@@ -35,6 +35,7 @@ import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import oshi.driver.mac.net.NetStat; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; @@ -62,6 +63,8 @@ private TNoticeService noticeService; @Resource private TNoticeSetService noticeSetService; @Resource private TEarlyWarningService earlyWarningService; @Resource private TTaskDetailService taskDetailService; @@ -205,6 +208,21 @@ tNotice.setDataId(task.getId()); tNotice.setNoticeSetType(noticeSet.getNoticeType()); if (dto.getAuditStatus()==2){ if (StringUtils.hasLength(location.getUnqualifiedTaskId())){ if (location.getUnqualifiedTaskId().split(",").length==2){ // 已经两条不合格了 生成点位不合格预警记录 location.setUnqualifiedTaskId(location.getUnqualifiedTaskId()+","+dto.getTaskId()); TEarlyWarning tEarlyWarning = new TEarlyWarning(); tEarlyWarning.setWarningType(2); tEarlyWarning.setTaskId(location.getUnqualifiedTaskId()); earlyWarningService.save(tEarlyWarning); location.setUnqualifiedTaskId(""); locationService.updateById(location); } }else{ location.setUnqualifiedTaskId(dto.getTaskId()); locationService.updateById(location); } dto.setHandleType(3); // 将任务修改为待整改 task.setStatus(4); @@ -212,9 +230,24 @@ // 增加消息 tNotice.setNoticeType(1); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务不合格,请重新上传!"); }else{ if (dto.getClearStatus()==2){ if (StringUtils.hasLength(location.getUnqualifiedTaskId())){ if (location.getUnqualifiedTaskId().split(",").length==2){ // 已经两条不合格了 生成点位不合格预警记录 location.setUnqualifiedTaskId(location.getUnqualifiedTaskId()+","+dto.getTaskId()); TEarlyWarning tEarlyWarning = new TEarlyWarning(); tEarlyWarning.setWarningType(2); tEarlyWarning.setTaskId(location.getUnqualifiedTaskId()); earlyWarningService.save(tEarlyWarning); location.setUnqualifiedTaskId(""); locationService.updateById(location); } }else{ location.setUnqualifiedTaskId(dto.getTaskId()); locationService.updateById(location); } } dto.setHandleType(2); // 如果是初次审核就通过 将状态设置为已完成 List<TTaskDetail> list = tTaskDetailService.lambdaQuery() ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
@@ -120,6 +120,14 @@ } } /** * 生成点位预警 */ // 每分钟执行一次 public void earning() { } public void createInspection(TTemplate template) { // 查询所有的模板详情 List<TTemplateDetail> list = templateDetailService.list(Wrappers.lambdaQuery(TTemplateDetail.class) ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java
@@ -330,7 +330,9 @@ List<TLocation> locationList = locationService.list(); List<TLocationType> locationTypeList = locationTypeService.list(); List<TTask> taskAll = taskCleanerService.lambdaQuery().eq(TTask::getPatrolInspector, userId).list(); dto.setUserId(userId); List<TTask> taskAll = taskCleanerService.indexTask(dto); // List<TTask> taskAll = taskCleanerService.lambdaQuery().eq(TTask::getPatrolInspector, userId).list(); // 获取今天凌晨00:00:00 和今天23:59:59 类型为LocalDateTime LocalDateTime startOfToday = LocalDateTime.of(LocalDate.now(), LocalTime.MIN); LocalDateTime endOfToday = LocalDateTime.of(LocalDate.now(), LocalTime.MAX); @@ -470,12 +472,13 @@ taskTodayVO.setLocationLat(tLocation.getLocationLat()); taskTodayVO.setLocationName(tLocation.getLocationName()); if(StringUtils.hasLength(dto.getLon())){ Map<String, String> distance = amapApiClient.getDistance(dto.getLon() + "," + dto.getLat(), tLocation.getLocationLon() + "," + tLocation.getLocationLat(), 1); if (distance != null) { taskTodayVO.setDistance(new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN)); } else { taskTodayVO.setDistance(new BigDecimal("0")); } taskTodayVO.setDistance(tTask.getDistance().divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN)); // Map<String, String> distance = amapApiClient.getDistance(dto.getLon() + "," + dto.getLat(), tLocation.getLocationLon() + "," + tLocation.getLocationLat(), 1); // if (distance != null) { // taskTodayVO.setDistance(new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN)); // } else { // taskTodayVO.setDistance(new BigDecimal("0")); // } }else { taskTodayVO.setDistance(new BigDecimal("0")); } ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
@@ -562,8 +562,18 @@ for (SysUser sysUser : collect) { Long userRole1 = sysUserService.getUserRole(sysUser.getUserId()); SysRole sysRole1 = roleService.selectRoleById(userRole1); // if (sysRole1 != null && sysRole1.getRoleName().equals("项目部负责人")) { // if (userDept.getId().equals(sysUser.getDeptId())){ // LeaveAuditVO tLeaveAudit = new LeaveAuditVO(); // tLeaveAudit.setAvatar(sysUser.getAvatar()); // tLeaveAudit.setNickName(sysUser.getNickName()); // res.setAuditPerson(tLeaveAudit); // res.setAuditPersonId(sysUser.getUserId() + ""); // break; // } // } if (sysRole1 != null && sysRole1.getRoleName().equals("项目部负责人")) { if (!sysRole.getRoleName().contains("项目部助理")){ if (userDept.getParentId().equals(sysUser.getDeptId())){ LeaveAuditVO tLeaveAudit = new LeaveAuditVO(); tLeaveAudit.setAvatar(sysUser.getAvatar()); @@ -572,6 +582,17 @@ res.setAuditPersonId(sysUser.getUserId() + ""); break; } }else{ if (userDept.getId().equals(sysUser.getDeptId())){ LeaveAuditVO tLeaveAudit = new LeaveAuditVO(); tLeaveAudit.setAvatar(sysUser.getAvatar()); tLeaveAudit.setNickName(sysUser.getNickName()); res.setAuditPerson(tLeaveAudit); res.setAuditPersonId(sysUser.getUserId() + ""); break; } } } } } @@ -645,6 +666,13 @@ tLeaveAudit1.setAuditId(auditPerson.getUserId() + ""); tLeaveAudit1.setAuditType(1); leaveAuditService.save(tLeaveAudit1); TLeaveAudit tLeaveAudit2 = new TLeaveAudit(); tLeaveAudit2.setLeaveId(leaveDTO.getId()); tLeaveAudit2.setAuditStatus(2); tLeaveAudit2.setAuditId(user.getUserId() + "," + auditPerson.getUserId()); tLeaveAudit2.setAuditType(2); tLeaveAudit2.setAuditTime(LocalDateTime.now()); leaveAuditService.save(tLeaveAudit2); } else if (!sysRole.getRoleName().equals("部门助理")) { // 审批人根据当前角色类型来 if (sysRole.getRoleName().contains("片区负责人") || sysRole.getRoleName().contains("组长")|| sysRole.getRoleName().contains("队长") @@ -657,6 +685,7 @@ SysRole sysRole1 = roleService.selectRoleById(userRole1); if (sysRole1 != null && sysRole1.getRoleName().equals("项目部负责人")) { if (!sysRole.getRoleName().contains("项目部助理")){ if (userDept.getParentId().equals(sysUser.getDeptId())){ LeaveAuditVO tLeaveAudit = new LeaveAuditVO(); tLeaveAudit.setAvatar(sysUser.getAvatar()); @@ -676,6 +705,28 @@ leaveAuditService.save(tLeaveAudit2); break; } }else{ if (userDept.getId().equals(sysUser.getDeptId())){ LeaveAuditVO tLeaveAudit = new LeaveAuditVO(); tLeaveAudit.setAvatar(sysUser.getAvatar()); tLeaveAudit.setNickName(sysUser.getNickName()); TLeaveAudit tLeaveAudit1 = new TLeaveAudit(); tLeaveAudit1.setLeaveId(leaveDTO.getId()); tLeaveAudit1.setAuditStatus(1); tLeaveAudit1.setAuditId(sysUser.getUserId() + ""); tLeaveAudit1.setAuditType(1); leaveAuditService.save(tLeaveAudit1); TLeaveAudit tLeaveAudit2 = new TLeaveAudit(); tLeaveAudit2.setLeaveId(leaveDTO.getId()); tLeaveAudit2.setAuditStatus(2); tLeaveAudit2.setAuditId(user.getUserId() + "," + sysUser.getUserId()); tLeaveAudit2.setAuditType(2); tLeaveAudit2.setAuditTime(LocalDateTime.now()); leaveAuditService.save(tLeaveAudit2); break; } } } } } ruoyi-common/src/main/java/com/ruoyi/common/utils/CodeGenerateUtils.java
@@ -69,7 +69,7 @@ dateTime = dateTime.substring(0); String timestampPart = "" + (Math.random() * 10000) * (System.currentTimeMillis() / 10000); timestampPart = timestampPart.replace(".", "").replace("E", ""); timestampPart = timestampPart.substring(0, 0); timestampPart = timestampPart.substring(0, 6); return dateTime + timestampPart; } /** @@ -89,7 +89,10 @@ } public static void main(String[] args) { System.err.println(generateVolumeSn("2")); for (int i = 0; i < 5; i++) { System.err.println(generateVolumeSn()); } } } ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/IndexDTO.java
@@ -13,4 +13,6 @@ private String lon; @ApiModelProperty(value = "纬度") private String lat; @ApiModelProperty(value = "用户id 前端忽略") private Long userId; } ruoyi-system/src/main/java/com/ruoyi/system/mapper/TTaskMapper.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.applet.dto.IndexDTO; import com.ruoyi.system.applet.query.TaskUserListQuery; import com.ruoyi.system.applet.vo.TaskUserListVO; import com.ruoyi.system.model.TTask; @@ -43,4 +44,6 @@ List<ProgressListVO> taskProgressExport(@Param("query")TaskProgressQuery query); List<TLocationTaskListVO> pointInspectionHeatDetailTaskList(@Param("query")PointDetailQuery query, @Param("pageInfo")PageInfo<TLocationTaskListVO> pageInfo); List<TTask> indexTask(@Param("query") IndexDTO dto); } ruoyi-system/src/main/java/com/ruoyi/system/model/TLocation.java
@@ -76,6 +76,9 @@ @ApiModelProperty(value = "点位纬度 终点") @TableField("location_lat_end") private String locationLatEnd; @ApiModelProperty(value = "不合格任务id 用于生成点位不合格预警,多个逗号拼接") @TableField("unqualified_task_id") private String unqualifiedTaskId; @ApiModelProperty(value = "任务数量") @TableField(exist = false) ruoyi-system/src/main/java/com/ruoyi/system/model/TTask.java
@@ -10,6 +10,7 @@ import lombok.EqualsAndHashCode; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -47,6 +48,9 @@ @ApiModelProperty(value = "点位id") @TableField("location_id") private String locationId; @ApiModelProperty(value = "距离 米") @TableField(exist = false) private BigDecimal distance; @ApiModelProperty(value = "巡检员id 对应sys_user表") @TableField("patrol_inspector") ruoyi-system/src/main/java/com/ruoyi/system/service/TTaskCleanService.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.applet.dto.IndexDTO; import com.ruoyi.system.applet.query.TaskUserListQuery; import com.ruoyi.system.applet.vo.TaskUserListVO; import com.ruoyi.system.model.TTask; @@ -47,4 +48,7 @@ * @return */ PageInfo<TLocationTaskListVO> pointInspectionHeatDetailTaskList(PointDetailQuery query); List<TTask> indexTask(IndexDTO dto); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTaskCleanServiceImpl.java
@@ -7,6 +7,7 @@ import com.ruoyi.common.core.domain.BaseModel; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.system.applet.dto.IndexDTO; import com.ruoyi.system.applet.query.TaskUserListQuery; import com.ruoyi.system.applet.vo.TaskUserListVO; import com.ruoyi.system.mapper.*; @@ -198,5 +199,10 @@ return pageInfo; } @Override public List<TTask> indexTask(IndexDTO dto) { return this.baseMapper.indexTask(dto); } } ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml
@@ -242,5 +242,34 @@ </where> order by t1.implement_time desc </select> <select id="indexTask" resultType="com.ruoyi.system.model.TTask"> select t1.*, ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( #{query.lat} * PI() / 180 - t2.location_lat * PI() / 180 ) / 2 ), 2 ) + COS(#{query.lat} * PI() / 180) * COS(t2.location_lat * PI() / 180) * POW( SIN( ( #{query.lon} * PI() / 180 - t2.location_lon * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS distance from t_task t1 left join t_location t2 on t1.location_id = t2.id where t1.`disabled` = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} and t1.patrol_inspector = #{query.userId} </select> </mapper>